From 423517596622a00c76de24b11d8a42e0b6c71806 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 21 May 2014 19:35:56 +0200 Subject: [PATCH 1/3] Show 'shutdown complete' modal (fixes #251) --- auto/gui.files.go | 4 ++-- gui/app.js | 5 +++-- gui/index.html | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/auto/gui.files.go b/auto/gui.files.go index 7266cddb..4da22b61 100644 --- a/auto/gui.files.go +++ b/auto/gui.files.go @@ -18,7 +18,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["angular.min.js"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffd43c5b73db3697eff915a89a965422534e76b7b363c5e9b44edaf5e6e68993bcb87ea04448624c812a09dad6b8faefdf390048020448d176d2a69ef9bed8b89c3bce0d60c78f3ee749cc389966e9554eb303c2b3828ec82c653c66052dff5e27458eff937f9347e307e3478b249d8609797840e66192c3a2902d8a24ccd4dfb8e88157c02f39cfe219f7260f1e5c8619c9376cc697315b90c37247b04aa322a1be57cd792372763e9c880d45964c43007348bc8ce6024eb52e4042b3344968e67ba7e5e811cf1280302fe0ef3865c47f98cfd23550f870c9f97a486e1e10f841d8eb8c5ebe083902df9f54a30bcadfbd8221e4b51e45e461c625e58245a0042725742485518130870537db4963721e2fecf1d5e6f80572e619a32c8d2802393b77003966c8a8419e9aa75996668e7d39a5ec25ced99840f234b1c9cae83a2db910e3e331390535b2454ea6749e66944cd334c94992a61730c239cd4c8c9c8bc5408b18bf89a303e2bd8e734e190002ed008733b015a1357292a53c9da509912bc82f5104e2ce690e0bf9660d76e8717acde12fa5056988db9106fc4d787d4a59f46abace35f0ef0abe485167ef51cdafe355cc89ff2afe759c0f6bd8ac584d69d609fd3dc00bd93103462fc3e454c32067483945fc5b435696e306ae26ef0eff24cc423820c97bfa67018b74e180c808080876b248c8a85ed21f3e00395ac249a60dc923f0dfe28412392b15d05ff41a86df85a7f985b1972c9c2634d290c8290273299c765ac345f3ec24fb753a6b812966ee02f214c77f959e54b7701c26f5b80eced8fff1849dd8e4c8118293eecde7a61f5a14f1a9fbf8a953a58befe3f17d8edc47935184f64bc1971482c72c14aef7a3c1f24e8027619e5fa559d40d545ba500afeb914e6a3fbcd60f170c90fffbf0e1e49480472380a897ae4b7157e105c2c569319b511ad1c82fa30bfec473e27f2782893eaaa92a6631f7871373caf7be6794033717c2677b4374d261e27bcb38a25e63b51daaf0676b905007ae5b92516fec26c215194d52b6b6c87e0bc137d8f26a2736a3bcc8581b936e31b7c9f2661ace2ea22c5d83aa011f581628fb826ea66998452a81d9b688ba8bc12a7cce818f252eae72109d3691870400d02f939bc7c41be71b38882ba031476bca73bfde1c853c6c32679addc4a5580911c8c0fd1ac943992af86eea14f05241fabefaf777d3cf1095029059eeeb49c33080b3f4329c2d35e0716429c62900918cfc8c600e3d18a06c06031fdf1f1fa5ab75cac00120a4bee2d1c420e09ec5d1b925892657faef6e1ab52cafb7a6307b64e91560c75c13b2bb2b7f383256f008267d5cb357e5a44332264ff6f7f7cd9571a4dc4ff9a3a5b0b0df69063183c85ca7b88dd9b4e0d5b4318f4e11244e6246da042c3c1c4e06cb307f77c5208f5bd38c6f84a21cebf1a7ac2d26d6ecd61ae1d9a6050a22459556ccbd09f9325885d7fefe88fc2f79243521561cb35f379ce61f520e617dcf91ae5bab50f43c1ada141a982bc1b5a386e4aa0f6e63592bf22d81f8375b129fb689d612ca7e5f161c0b6d6d18e6f4f8b081ce86601a98be410e35cea1cb38cda2aae9c6761d565910f53ea7cd32ca8d6e3b79d02c9520c3e3456eb87b1c6ec636cc2dd2b9e995701df8a543a8cc0a16d179cc20f973873e4858d8059c71e6e9d1c7c0608306dd40d100a7f83b44d10af994a7eb3560764216653b973ec643cfec4023e6ebdde572f1efd9fe79c0d38f80203b02d540b0792c27402fd39c67fe93e1c4e4436d3f24032c0f21191890bffe22f5e87194d0419317390d663620fea0a6129b0527349b41fc08175429e63119fc301c38b95522d1186a06f7757a9440c2f9f5f51db379fa15941d613d967d315d1b0af362504d2b66750ebdb62cae06934bbdb7425a67f12acc364e480ef1992a344de2abeb11a2781bc30ee9cabe9a880702fe7e3fa88606d7330e5cc10a88464e33c16325518c5d0b341a264db18a68374f52c81f018ddb296203cbe11471f8686e64f6482d3a7958e7088e6a43f016fe3d7e716eda1c2e6ccaa61c0f30674ca8408b420451b882666929c78ca044bc464422141b99eddb9473223e1e94265a08403f0c9b103b1c8ef722ce15ef95237688f578862cfd1b849a5edc569eaa6eba8dd056904ae6edd2b21df5372b2edb37f69299ed0877ca4cf78bb6c8b011f4374b4c112684a6fa505d7efde70e7d6b22ffc758683881ce18d5ceca27ba530d488c49a93034ed6ea1854cb5e2926639c076d1f735c593c410783fb5e3dea16788b51122b6a463b28b1cacb060125729facd0a404838d5db1f486f8996d5a22412eac428359045053748285bf025a45be4490bc75572d0c1a882066972ab31bc0d5736bf5dd600eb5b28d297741065aab8ccd4a1c2fdc91df2f932cedfba286dea8449d535b6f90d09ab9c4b2eee95650dfc429647629399dc3745b44b3e7d84d35b32348ab9d6916f6909fadef7e5ad59df36a5684a0f9d096e784977a374de2a36da9bc6a2e0dd5a9cff40de1928576db8087bd529cf827c9dc4dcf746c859b8d60edeb576f0ae030eb10c0cc151d9afd3dceac3012a10c7ff9fbe7b1be4e26e329e6f7c8392e188dc2c691881ab392037de51ca801ebef7016ccb0391866b204bde298c3fe729f3b60662974606d8ff1eb4750244ebba55de469bdc6cd8b775dbf3657ae5ed1686da6aacdc7165dca03d5f163cc2b3d3ddb2b63097fb9c3d16ab40a7fc43bca269c17db351ee83a29efecf7e5b23f676ace07173868786bb2cc116590646a1763c0ce835d848e4df6c47a50bb4494114a0a797d760e04e751acb4e693297eddd46a43602b5cd6f4d58505dcec1612287956fae8683cf69cce07c118709e0e29740499a050f4103279920da70b8687ea5d8eee47c4c0d84911d9f774afe46e71150461b16ae00e7b687f4dd3ecb14bf7bcddf2f1c28b229a7ddf27161b46ede44efdd2d92dd57672e39f44b939c21b3b4e9ef6aa3d6cd57cef638dd6265930ead3728ae24308990d712f2c6c9ddc51573a2d9dc80d998e8c1e53d386d726b4b7e47f8fd27a25f33364032d169af6556072e6944a294d1118927b765b497cd2b2cc4257b6b55e5689bb92c584012cea83f266320d80374d5c85e39a252110b66e5a55c6ef88ea94e850465678b46dec3894b1a129367e6199515084c3c7eecea43e86bcfe273bd4a3485d2717d5a6eae399e584b15e566182c7fa6190d2f7af427e46d22406a39d292e3750109831d9a5b7c5a90a719f7cbd64098d1bbba9e6fe124a67c49b392ceb624532ff05bfd786f378eb989edb85b6abf4e0f114342d574e577b06ad6501118e6c4327bd6b31da233df6ea00e8ec324e9d643e913358baab5d7742ccaa8ad92786835df95553a2812b7965871f5340d79cb69db465b594c03ccddc973eb51e94eeb982534cc5e9697aa9d29a1fe52d5a0f3cca45af55df6c8937341d6ce8029f68d05259e9bca791643de9f6c6cb5c2a1d649ad7390db1bafe8aae9f1cb6dc2b9c8f2e1ffabc034ab1cf5a8d916c2b9e1b0a35901705aead575dac760ca75e63b1f57db0103f87b98bd5de9a576d4a5570e29325e82085580c3dc76d5621a9032a1b31e2059199d63af81f4ac7420e7f6dbba3b978328b79eb50652f4650a314b1d3bf5e010ff9d4bb0bf9f654c563b79964ff9d7e99748560d9aad645561b19255dc65adaad28fb3737bceb44d2d9ed9e6597927d9ba2eab240b8a2b5974a363e5413894b8dc3154634206b31b79800e1421cdd794cdf88a3fb23476d36bab48d671e562290bf5575b8a8792cfd11a6321ea36c7f64de57c5228ddc7b897397e997e81d291a1038737352e85eea9847f4b9d8ccfa8351df578f1abeedf6efb404d6d73be50db81f1966f8cabf732ce77c4da0af51d93780a6a970c3b88525aba2551d52755ad44b55d47ecb8b050e5bcd1536d2d472d586feb0cddb5de558fb6b6afd4f17813aefdf633d40a40b5d6efa08a313e90ba9b3eaa032a4c411fdb5927e89f2140b2507ef0d4b82b188947d1785720d8a948d344ea8723322da9d42e134371ad271fc7d5d789e4c71f895a30752e68deb12a30cfd4f2a1ab5ada7b62956e6adb73b5adcc9f35a832620bb8564fa60157eeab21cbadcfabad201d4d36222cb6c8260c5ec419c4d934db08d4d55ffdb1d7009eeb006c1ad09013fdfbcb95f6e961e248dc8dc26b759695615e91a18ca5bc46b7118ac0b2d231265a8ad5e826af746489cc6256d8281e6a4c27f2006b123589484c22223a8b5710aa004d02454c61d012c58b98e7f83dd2accc6f5023f8919ff5f04f81df37ca2e09a07c812edfe4895f9374217f09a702f5101f9557334ff6cb7a1131371eb0038d50574bc8266b92ccadfef9adea1e782c8415a1f9d16d49bddaad7d0ec2d6051f11f152d5c1a2980e78fa5b7c4d23bf12a0b1ab7620c209d8044d63868fa2fad3d33ce46250a8a172046d4f51f749eb7b5609e539b8aca7ff4d1ee9ff58f9b758393e742c9db8b0764be9e9109f387be4f7f836a4f5a1e91ec4bce9474c2715f740ffca8d5e7fd59aa5a0ecd21e708fb7cbce56143f6eff86ec4c3cf9d5fee9906673e97decec3694f521e93e66d68b964e22ee81fde22b1859be849073471b3388773e556a411a2657e1267f5b7e9efdf5eddbf9465e277f17c5b365c12e8e5f7c61625da40eb4c765e2b97d9889302ca52c9ef3f9e3e0e6c9e8a7ed78d12cc1c5e29d60d59058ac2a91bdaa73dd6928276064ffb80ce42de8f8ec8ff11f7f9c8f9d22c02f7a247baa9bffec90fc578b6d68fa77dac7200882317ef32301e650b0535f07bef77428a538180fdaa41889c435bea4be978a8250762ebb64a99f33f99f393920de9137d28645ff5efd7754aa619e852c9f254564cd885ae7c07e38856d1a807da87ed5506c35b07405e8387ec0fe4cea110b9bc3017e773f206cb127bef1381c9865ef99821940aa3b78fe6c2c763e5718ece3a689a960f19f85e84d6942ea92d19f056cc6ffeac3e20d52a27191c4ece2a08621c4302234598d48c8790659f28c6749d33c702c78088ace69960705cb97f19c57f5837f19d3ab4f61e2ee598aef8dfa74c3ca9ff1985c510267ac4822e671998a82b49d8b256520d94fb82ae69b86b4442775626d55cffd6bda6487ad62e4bc8338be94bd534291919c844946c3687327f2447bad9dbedd34c4399100bfa874ac116563957c1a4d66eb5a4c99f37f000000ffff010000ffffe00d9c80f8480000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffd41c5d73db36f23dbf0255d3924a64cae9dd746eac389dd6497bbe7c79e2242fae1f2011921853a00a82b635aefefb2d3e48020448d176d2a69eb98b0d2cf61bbb8b05d8f1a34f799a508ea62cbbca093b409c1564846619e5092d48f9f73a2d72f13ff5377a347e307eb448b3294ed1c30334c7690e40982e8a1433fdb7007a1014f04bce5932e3c1e4c1834bcc50bea133be4ce8021d962ba25516172909836a2e18a1b3f3e1442e28583ac580e610058ce4124f051709465996a68485c169397ac4590a18e605fc9d6414850ff359b6060e1f2e395f0fd1cd03043f02f79a91cbe7980be4fb936a7441f8db97302464ad470571ccb8e25c8a089c8849855db04289249803c0cd76d2989c270b777cb5397e2e240bac519ac54420393bf72039a642508b3d3d4f18cb98675d4e087d21e65c4aa07992ba6c31b2ce4a29e4f8788c4ec18c7491a32999678ca06996a5394ab3ec02463827cca6c8b904065ee4f84d121fa0e05592734201115807249c81af48aba11396f16c96a54841a09fe318d49d931c00f9660d7e187072cde12f6d05e588db9181fc35be3e25347e395de706fab7055f64c266ef84995f25ab84a3f065f2cb381fd6b869b19a12d689fd1de0c3f49882a097383d3528a819544ea1f0d698b5e7f891ebc9bbe33fc10cc30649df913f0a003295032a43a020584963a9a31aa43f7e4072b4849d4c1a9a17c87f4d5282d4ac32407fd51b147e9391e6674a5f503c4d496c10515308e632d8eda4c62bdcb393ed57d9ac05a79cb90bca5331fe8b8aa4a6878b61548f9be8acf51f4ee889cb8e1a4162d2bff8dc8e438b2239f56f3fbdab4cf57d38becf96fb600b2ab0fd5cf02581e431c332f47eb044de89f004e7f955c6e26ea4069446bcae473ab97dffcadc5c3080fefbfefdc92982888680502f5b97eaaed20ba48bd3623623242671586617f193cc51f88d4c26e6a861aa84263c1c4eeca930f896120ed25cc8981d0c4590c669182c9398040d683755899fadc5429db86ec946bdb09b095f66b459d9ba2afb15436c70f5d5ce2c23bc60b44d48bf9adb747933c5b38b98656b3035d003cf02635f90cd34c32cd605ccb645d55d0256e9730e722c0570558398bcc93a2402846159dc3c46c138dfc0465c018fb9f0a63c0febc531e6b8299ced76139f6115466043ac37581eaa5221f473a791970632d7d5bfbf9d7e82ac1481cef2d02c1a8611eca51778b6349027b16318af026431f293407318c000a13318f8f0eef8285bad330a014060eaab1e430d12ef59129f3b9a684a65feeee7d1a8f27a5b4a548f34bb02eaa2d684eaee2a1c8e2c081ec3642860f6aa9a7488c6e8c9fefebe0d99c43afc943f46090bebbd6e9050c8cc7589db98cd0a5e4d5bf3222882c65142519b8265841393d112e76faf28d4716bc2f8461aca032f7ecab3c5c499dd3a239c6d5ab008a2c2a49570af315f462b7c1dee8fd07fd023650909714c7fd97092bfcf38a4f53d4fb9ee4009d5f378e8726851ae14d74e1a8aab3eb42db056e25b04f96fb644216953ada394fdbe2278005d6b58eef4f8b041cec5603b98b9400d35f6a1cf39ed4355338ceddaacea40d47b9f368f517e72dbc983e651092a3c5ee456b817c3cddc266a8b6c6e4725010771e9104e66058dc93ca150fcf9531f142cf402f6380dccec63517051836de0d000bbf81b41a215f329cfd66ba0ecc52c8fed5cc5984044660f19395faf2ec1e5bf67fbe711cf3e00017604a68164f3584d805da63967e193e1c496432f3f4403713c84626080fefc13d5a3c7714a064d59d434b8d90085839a4bd12c38216c06f9032f8836cc6334f86e38f04aab556208d44ceeebec288582f3cbdb3ba1f3ec0b183b16e731f6d96c6d192c48c034ad94f53e0cdaaab81a4daeecde8a69cd9215661b2f268ffa6c13da2ef1c5ed0859bc4d608f76555f4de603897fbf1f56cb82eb1907a90002b291d74dc4b65224c63e0083874953ad32dbcdd30cea4720e30f8aa281e5098a62f8686e55f6825b11e401ce931cf582e80dfc7bfcfcdcf63901d8d44d391e899a312592ac5022a8c297344b4f39a6486824686424444423b37d990e4e28141ba5491612d077c326c68e80133c4f722d7b15883d6a3d9e0991fe094acd2e6eab4f7d6eba8dd256504ae6edda7203f557ab2e3736f6d2991b0877eacc8c8baeca4423e82fd698664c2a4df7a1bae2fa4f1df63654feb789d008029d39aa5d948f64a719043336a7d2d18cbb85163635c4256139e0f6f1f725d5932690783fb6d3de6167c8b5b120ec68c7165748b0120726799562deac00869413b3fd21f82dc9d25a9548619d58470d21a2c61ba5842ef812ca2df4a445e2aa38e81054638332b9d519dee0952b6f9737007c0b4726480753b689cb4a1d4eb83ffa533e5f26f91b1fa74d9b5065bac6b2b0a1615d7329e05e55d6202cd4f1482eb28bfba68a76e9a78f727a6b86c409373af22d2dc130f8b6bc35ebdba6944de9a1b7c0c597643749efad62a3bd6901456fd772ff47eace40876a2b44b850a79c45f93a4d78188c8464786d6cbc6b63e35d471c72193882e764bfce72a70f07a4401dff3b7dfb26cae5dd6432df841627c311ba59121c43a8394037c15146811fbef71e7c2b0095e235b0a5ee14c69ff28c065b8bb0cf2203d1ff1eb4750264ebba55df569bdc6ed8b774db6fdba66ed195c66cb6ed77dd283744cb97058fc5d6ba8b6c7ea64a94deee8caf916f2cb89b76b677975f6c616fca6984e0126dc118389a5ef13022d7e0777178b31d9561d565459000f5bdb8864de355a305764ad2b96a1937b2bf95fc5d796bc6a2eac20f36283aace27d351c7dca120a7b1679fc4600bf004e32163d843d72c224d3561017262bd576a780665b00c76ecedfa9f91b534620196f285e01cd6d0fedfbe3a0ad7e3fcc5faf1c38b8134ebaf5e3a3e8dce6c97ebe5f25bbafe37c7ae8577a79d370e9d3dfd44e6dbaaf9aedb1bb2564930fa3df28af394461a2ae3ad42d96bf332ce76403bb81b331d143ca7b48da94d6d5fc8e94fe7764d466428102a5d35fcb4a1142d208c5192523944c6e2b682f9fd754904ff70e5415689bf53178408a67241ca331301c00b96a64af1cd1e58d83b38a52be307cc7f2a9222274e7aa46ddedc98b1f94a0a7f61e55a71a9878fcd8d7db3061cf9273f3e4692ba5e34ab65c5c4b3c714035e7761a2c7fa68ce08b1e3d0f754309985ab6b492785de4cbd04dcd2d312dca33c6c3b2dd8019b96be8f91a7662c69784957cb6157766d3a0358ef70ee3a236710377cb79b233422450503543f91dbc9a364c048e3971dc9ef66cb198c2b73ba847629ca6dd762863a2e151b5f59a81453bb573cc36c08cc36cee2f7bc54da838c5f5740d7573eafa46db519b44ef931541cf9c87aa3bbd639612cc5e9417b59d25a1f9fad5e2f3cce65af772f6d09373c9d6ce8429d78d2527819fcb394ba0ee4f37ae5961539bacd635c8ed9d5776eaccfce577e15c56f9f0ff55629a55817ad46c3589b9e1b0a30102785acec0ebac8fc39470f6db215f2b4324f077307bbba3975e511fbd722891c5c58a340504cc6dd759cc40521674cea326a7a2f3acb5889e9501e4dc7daf77e7e3a0d05bcfb386e0e8f31cc41c73ecb48347fd773e82fdf5228b62b55366f579c03afb1cc5aac5b353ac6a2a4eb12a56395055f97176eeced9be69e433d73dabe8a4dae1e529c9c1e22b16fde468b9110e152d7f0e358450c9ec466da003cd48f3856633bf8a1f7534f6f3eb9a489de34a60a50bfd575b8927349f0b6f4ca4aadb02db5755f329a5746fe35eeef879fa05da46960d3cd1d4ba68baa711fe29e764f134dbb0518f57c4fa4eefb68fdef432efabb71d146ff96eb97a83e37d9b6c40e86fa3e4f352f7c8b083296da55b32557da6d5ca54db15c78e4b107d9cb77aaaadc75107d79bba42f7c1fbcea3aded2bbd3d5ee375d8be875a11c8f719cd37e1bd4c31168faeee668f6a834a5730c7769e13cc4f1ba058283fa20a6d8146f2a1f53ec049712ad60c95867884a62597c60525965785eac15d7d4589beff1e6980a917a0796fabd13cd5e043df6969ef897374d3cb9ee96565fd6c6055195be2757a320dbc6a5d8d592d7d562d05ed18ba9169b14537387a9e30c8b319db48d2d55ffda9d7089e99085c1e8423a7e6379d2be373c6d453b85b07afd5192bd3bc66433b4b7935ef1294896565524c8d12abd14d5e99c45255c5ac44a37868089daa0d6c68d46622b59988c92c5941aa0232291c620a8b973859243c17df38cdcafa4658447c38e83c26d4e8f7ad63974250be6a57effce4af69b650bfe0a9243d140fd5ab9927fbe57951506e3c8a071ee15cad30dba22936b7e627bdba7b10500c10d8fe90b7e45eaf363e31a1eb828f907cfdea11514e473cfb35b926715829d05a55071019045c86a609150fadfaf3d3dce472509aa10a046dcf5bf751eb1b5985e51984ac1ffe8d1e99ff38f5b7841c1f7a40273eaadd5afa61289e4d07e8b7e436acf5e1e91eccbceec74c2717f720ffd24fde7c29cb323076e90f624db0cbcf56447c30ff15f9997c466cfcd3a1cd26e87dfcec369cf561e93e6ed68b974e26ee41fde20b3859be849473471fb398f73e7f6a218ad32bbcc9df949f7c7f79fff6bebb37d9dfc5f16c59d08be3e79f99591fab03e3c19a7cc28f994cc34acbf28960388e6e9e8c7edc8e17cd23b804de89560f49607d12d9ab3ad79d8e72024ef6b7eb40dd828ecf7e1ffffefbf9d8ab02f19590124f77f39f1ea27fb5f886617faf7f0ca2281a8bef8814c21c0eec243491effd30545a1c8c076d5a8c65e19a5c9230c8e48150752ebb7469ee33f59f4e3940c15130328665ff5effb759aa61ce30cd6769113b33f2ac73d0fc5a4a3d6d03dc87fa5783c4d6404b56408e8b8fe29f2a3b8a83cde1407ccb3f4074b127bf1b391cd8c7de338d33825277f0ece958ae7ca629b8dbcd505341933f0ad99b3294d4a5a33f0a582cfe4b128bd78213438a34a11707350ea9861122e96a8430e70caae4196769d33dc458f4100c9d13964705cd97c99c57e787f03221571f71eaef59ca6f98fa74c3ca9ff1185d11047bac48631a70558a82b6bdc08a33d0ec470195f04d435bb2933a7196ea4f086ade5487ad12e4bc8339be54bd5344842039c2292338dedc893dd95e6be76f370f498e14c2cfaa1d6744fb58a59f4693d9b916d3eefc7f000000ffff010000ffff0ac69e0c4c490000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["app.js"] = bs @@ -63,7 +63,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["favicon.png"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffec5ceb731b3792ffeebf029eddf3a34e43ca8fec6dc914ab1cc9d9b8367e94155f6e2b950fe00cc84134034c008c249eacfddbaf1b98f7831cd192ec5cf2c11639001ae8463f7e0d366676fff8ddd18fff7aff8a442689e7f766f887c454ac0e3d263c22563e4dd3434faf4560222e56f651208551328e993af44e8a9623a3628f0431d5fad0c34eb1a4a71e9264349cdf2364963043491051a59939f432b3f4ffee550d9131a9cf7ecbf8d9a1f73ffec797fe914c526af82266401666640246bd7e75c8c215ab8d13346187de1967e7a954a6d6f59c87263a0cd9190f986fbfec112eb8e134f675406376f864b2df2114321d289e1a2e458d56a71bcd4c2455a747ccc529512c068941b309324378809422c59687de929ee1d7490a829cdfc301869b98cd4b21924fe4f2123ee9b732646f61a6478fafae6653d7ab9cc0115b4869b451349d065a4fcb6f93848b093cf1f2759875cc74c498712bb4df8959a7c08461170607db164216325c934bfb91909486212cc85f4863647240fe6b3fbd7891b72d81697f49131eaf0f88f73d8bcf98e101256f59c6bc3d523ed8232f15487b8f682ab4af99e24b47e2ea9efd93c5ff197d53ce9850b5e2c237323d204f26dfb0a4d177828bf51329a44e69c0ca518db5bc6122967be48d143480bf475268090ab947bc239929ce142cf11c565892694d4141d950bb4326340be7c6aaae5173549d6e2bca6bb875091b32dc5a520e3752ee6d2d2987a5141652854c39d909295a7cc572255b623e20fb2f9a3b5d7b62c9f8df541b9e4acdd1220e50a7c026cfda13706d7c21fd45064ec19453d9c756e17c5438b7b4d640602cce12518e09b94e630a7bc905e83af317b10c4e8b75806a3b4b067d2cf4a3541cc5579101d5a91a1634385d2999891067910a96bf5a3c7afaec6f7be4e9f37dfcefc9e3174d092a1af24c1f906735e60bf93c492fc8f3ea7921c8a7f0f869f1f8aacd17a8999884141c474bcf63b684d5ee578ade60efc97ef5d86a3e8df90ae58f4cbed82eab42c08523eeca17f782dce7097a4d2a4c8f25101335cdec9c39113fdfdfefed1e76bc8763f229f88e9ea9c01b4dad76409098ba28716f6655dfbac6fbbe4f7e9429eca222beef9e097a5686187a862dee0f6a7ef131644b9ac51009204431db8fafa8f5e7cecdcd425e1241f74d41742a6f4307091bd69cc35f282a426f3ee3c9aa684193f28856017a581fbff94f9efedd3a76e2028ff7ec29b87d2b31f7793a27a59f9fe984c671412ce221d8b67f018eb839bff379996130fb27101634cd7b03842537cf7b149c64718d8f423ab58f56972ac6635e740f954c43792eca36db4ef3b8f317afdd0fa4bf5a6198463dcfbfd4a9bc0ab97920163a7d315b9492a70a43d26cba807fb43151b5ee72828489acb11abbde39acc92a380f4e212487e10796ca478f816a5d88ab789d46187649f9c98f42dc4f27ae072c8195bd0c4382c3c1d149b5c625cda630c3d629711f464d09ec9e33c7726b5a24313861290a7ec643d4d311cb6220ef13660c289a1eb5b640ae5aeb2a86dfe8ba749419dcce516b92cb657b4df9f0919ba398365499919bb384ee516bc20f8e42df7cb3691657df9bad55db6c0ae2b1b06b0a36e75cd880f771fdd1e77dc79536e0bccef78814f19a00923c17842f896001d39aaaf50b92af8c9c53251036e6fe31270f32e060a8f781fe92af5e0b743ba5d102e1cae61b8b89fd24042f56b3b37a3b8885c5c4feefe7d336fd43bbaf8f2eddf69a45cf9a2d16cf7af3828bb78c852c8418f06c5e4a6c982c4688b62f48e73f468c387e3365bd3d89a8260bc62004d3331692056071210da101e0170a2e7552b963926428f27c3946969d20043290fb7993f464364d9bcab075d188d96a5126ef066b32b05287c6dd97729f164610f8e7ebc4fec9a31a490162e59efb7674dd2da3b5d0ba9ec48caa25bff07af6aaf9a0f1b5f625ffd8d178b6ca6288e8a0a02d7d6e686e410f07560edb624df2086100628ec715855e2dff5baf09b8ad42c4987a848728d69c3e677a84595c5ee280236c78849f26af8f213adb7d82af8c1a4711e01ac1bf3fc09271c7c61951bdd7803d35a375231803df314d7511a35388be98b5fea5c16111e0f161ce0cb0001c34285f27b6929cca31572cb0fbf489d8ccf83d35d1d5d510d99a92cf1d8513434d56976a13eb38b56ac20874275b8db4d8e506bb4de116a223a50cafe99fea5d5c3207f697426e0a7954db2338245def4c5af95ffe1d727d9e222e6c8d77f89990e653d57e840fa3edbec2d03630a899dcebe3d91488f4500e1b00b6b19156c2302eec2c72da5de5ee0b5fca18d3399932d162e03bdbb2cbca4b25be0b06029900e86dc3458c58919282ffaf0d443b70d16348b7cdca2a960bd662e41ff08cc60dc47d2d5612c0ccf1cf3917bf4c5696dc773c661a3c0c8dcfe95abfcd920553575764898ff7c8c0a06fd7c60e5a7041716bbfbd7d81443269cbe30719dca03862a4764d69d8315f4018412cb3d0475c1f4bdacecade0168934b0bd43e4f220220e635058243be803cf00ca7258537540378dc553bbafdec12f224c1b2fb0140c63bc835bcf9bf98ee46d69e61f75be3decac161b72e311d019af169dc7196f83c243f7113dd90c00a14270a0837c1dc5df70cb9bc14c501cd920b774a206c6f70bae8751bc2fc2b2c0226de23c342fc1ce1c2932e2c80870824da0fdb2069089601c0ec4f5452c513b095024c7aad73097b4483a21b93aa40f40e78dcda563c4d7229791701ee96903453923cb7c0bdaa651596ed1b4a2b444b6986f289f224b3ae7a30f668b94205fcb938077cf4f8971db2885179c4f84cc23155a410f8cd774600abcd151f3389eb05c7ba1de5b42c64a16db51d8bf587d6b505f283b8bf62d43f84fb079cea58ecdf392278f9867c343cde083e378464bd8630964ce0cfb688da1f213e931daa4f758ba3a3f71f6f82a320cdde3315801db4d0057c1500b7158d0f9e5c5dfdc75db1ba11521de78fc9076ad8b539e66291e2f6250c3431b8ba826f77cb5596f6f0f431dd9d2399990e4bbd7175034f4520cff501e8bf1442662260effe49ee1f920cac1860408fe18ee61e7f5a8da46a67b3c53ce484a9b3a1b4763cd269057cfbbba51da0b3000f9fbd4d9c7af377f677c821b032483ca462c55449fbfe00f1e5720bf53bf324ed4391ff664aefe23fcedcb8fe247c0026ef8ee56e01cd395c9b07e62f06e8461cccda35da83d90a460ce12a6922a62cb0dfe974f6cbe0aae17d1ef3636463742fe61aa7476e687ec654076cdd59ee1ec4fde1101c168b757f6f0626f4b53d15ca1ac73636f58ee2feee27a15b18ead1d3df3d4003f282052812fd73d3407e99fcff036f9bb8bd0960f7156004640bc6eea4a57f82852da73ff7aacfeed467dafcf5191fbd524a2add5f62c1b0cdfd8e3b8999589988ccc9fed7586bf1561a1eb0cfaab1a8c325601ca1528d7fdc505b857679094f273ff28481ed01966107def707497200d9c3d5d54151ab062863a9381361bc76500b0759515b0dbffdfa8a4aa3497fa9455d7d6dd183538471c54bedb8fbee9f775b59d1d0e9b2cea8aca3c4c7dfdacaee71e59545f549fe1516c9c2bc349cd4aa17ef7515bd535f39549558370557cad52cc2b46026f72c7857e0600a2cea40664ab349793f612298997af3932cc562533225df499525dd0aae5153689863c54d942d260042a6018d93685a4e35550c364ce349ee0fa0e5da900feec18eb36d602800fa2ba9d6d350061982a1bc9ef5b8fef57698e45a67c8e2b7595f31e00dcc009b052c078c1cf594416e2ea5b3c7f490c94875ea3c11496448e3529dcb7cc1f5b1f65bdabfebbaa421ebd15bdbe8879cc672d5ebc15d87fcf6c78017777dd03383e5d198813edaff8bf38e868147cf9bc37a53c66d6e875d406362b5c1d77c25faf3bba31234b9d8d6f033d1f30137d3c75b37654a9b535515769a811fc4d2ba0523087cf7086c1726da8c704d28499504509290735014b2068d20af41b60ab68e54206fd220fe0170dd1a683f88581cf3f445838f74b4b76cb84d5755664be16c5d60af3ea9b2c3d7a04d5c2ce52de852bb4cb025fa420277a23ca02195cc27e4bd75b324927178d37b6f7ff543b03ae84c0a247bfdad7704fdf86674a029ba4d480772aff25809224cc24b521ea18a53df4570483c54063c3c3000ddf48b3ebc829a05a0082b920fbdfb2809d88f571780ff3ab650285d55e05e578e16a9519410f9f790da41cf965225f9ed10fce8e577fa30357965b7be6d2b359a38a0f82dd7e243fbf4f26144b56f63d043bc5a53109a089b8c4efecac5198d79481e3ce86b0db932ebf6211e4657ba803c00a6748b7b7d8c381e14142bef6c5b67041729d639e707e91db9568c02adf22c0d3fd7d9cbef7792e6953baf766bd0f26eeb6540bd32854795b8b03cf7c6ab87bf655cb1109c875d51679df51c6a60f3cfc1b209fe87b8bcb5144cfd3bd342ba114499387515869d7cd6a630396df01aa9bb2eb5ad3ea667b7dc4e7efad4b79390022317b0422c48176eb330ec318c66c4c6bb00a843145ce2c5344ca2b0c6dc2bec04ecd4390be91aec61b425342127c83b044b1816521de1472027ed655570418f20e24b10fae3c9a8129e9ed55b059e149bb749599bfc0147585a0f4c2d622a4e07e66f6575fd870efda6b6d13228160ce071f566a34863905e64ab3f0fbdef6552fc6696db0152e9b382516a4f5dcd42bfaef76add89bbd521b4016f8e356eb961170a11c4992dfad2f68cb27de3e0a66447dd713002fc97c5c76b48315c83d87860c50291058f95c23e87400e0f49b22e5c4e35e9aef22ed77a62d435e5fecada219e2953c0a429557815a4efd65de56b787a80c9645192522e1f11ecc681b9788a81e00552a66cf0a11964ce80d30362533ed0c235ea006e7c4e7ec48ecfa648ab732e321ca09bf47e8a9820ee9e26e06fbce482e6bc474e194b510b130e7ec644d490194be6586b643bcca6f0cd5d9859d8d582f81abe4a73506423e584a08b28d4da729793003c7730a8b95bdc3eaad14647bfe9a8a40f1ef49c1c8dba97531e76d6eeb7d13396df076c5a44cd8b1648609743a413a0df0bcbc6acb73cd5eac381636e0d25f2ac5db57c84c872d38afa433c069642394f58bcf4b6acdca6cbeee6135eeea98b1c5c03336cf4254cd0e9ac5d04746c4974b9b87eda98caeda903f6fa3375189d3ad46b9e6f248118227873690416b7de481a51119ae0c7561ad1d33a228d705df1ea65e31acfc664a2e40a037833fee7e78fbae5ef3adb515cb31ac834b6c4fc0fae24bf4a2b4826f86f19fe1e9fcaeb85ff76a776297c4ba225d4ef69aba0fe09de68031e61a97c896f1959bab32d52deae5b4fc89b3c62e2730d22c5a0e9de01e0809eadf31842ce5b96e970bb138a7530169dabfa1e9711dbf5faac89ea09c2901af62de1d6d384b1a684b70f3719936b1f694ed8b96150f860ac49d9c14da3faf7f4b832abc2705cbf1d4da7bcb8362231ff5cab71a21bb21bd75a590e7e475cdc3496024fda2b4988d561a14c4dc84f1cec05b42750cca276be24e0d143c9b4bdd9cdd0dd38d46938c8d2be6b8a06685cb300a432fff76c6aff161978866539144f9fcbb735a1e5bace6575afa58540d33edec1701cd35b4da7a6741de349514e779f65d77fc98b5870ba90177de725bdaa5e5377a7a12585012dad2e13d5ef75bbbb4fdd3907ec6bfcb18fbb0d860728a9820c2040855a2a99a0d600ded42401a8849a589dc0e83dfb16817687223d7299914d70ce734dd558135eeab7364592973bfddb4aebf30b26f687f52149f5ed6dbb20726335e48d6ebe06108e5b6027b2a53c451d8fd7b904d2ae46bc197d38b12b702f7cc045e0b6d99b652e6fad1923fe44f525d2f36a097d493a2ebc81eaf05713ebe150ff78cd9d70cbdc8a59bd5ed84a5091c30f749e6b6b1401fec202ea8b2ffe3a63f6ccd12288849a2002570b7e355e97a311c8380a5f4f269ebf0ca8894c6b3ef7cf4c1c91f96766dea3dfb8749b9977f1b2a281b45be7cd7fd4b4bb2f1726d50b9e6e380b1e0e5ef56ab8bef6ce25cafe6e2dbc5fc4ab7c97d129961bde1b966a3f3de51d27b8097846fd1051f443c4ad9d16612f743dec25d90cbe001cf3c13cc4cafceabb7db72822c9c19859464dd4db16a14de8bfea8adff3ab0d4598b5af2e9abc4b5d996c45f397c1a3f31e5518d8b27a58ef95e842ca78b3d4fadbf01a424b6e9b64b30165ecc6fe20a4d8209b7eb4d1fbf036d47e95f193dbd3fcdeb61496762e55f83bb68b7f7c7cfd47b589ebb07e9bf6b0153adf3574bcd6cb137fb7e07034ccc28feeadd8ee8da7800af14d6df64dd3bf3a50675be7ed8ebffe9631b5f69f4ef627cfb6f7ae5e68fd6bfb7dd61bc7d1346d75005eedb5070037f6b5e6ff070000ffff010000ffff4521ee30e75c0000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffec5ceb73dc3692ffeebf02e6eef95127cec88fec6dc9a3a9726467e3daf851567cb9ad543e6048cc101109300028794ed6feedd70df0fd98a1c623d9b9e483ad211e0d74a3bbf16bb0c1d9dd176f4f7efcd7bb972432493cbf33c33f24a66275ec31e111b1f2699a1e7b7a2d021371b1b245811446c93866ead83b2d6a4e8c8a3d12c454eb630f1bc5929e794892d1707e879059c20c2541449566e6d8cbccd2ffbb575544c6a43efb2de3e7c7defff81f9efb273249a9e18b980159189109e8f5eae5310b57acd64fd0841d7be79c5da452995ad30b1e9ae83864e73c60be7d38205c70c369eceb80c6ecf8d1e4b04328643a503c355c8a1aad4e339a9948aa4e8b988b33a2580c12836a136486f00029458a2d8fbd253dc7c7490a829cdfc10e869b98cd4b21924fe4f2127ee93732646f60a4070fafae6653d7aa1cc0115b4869b451349d065a4fcba749c2c5044abc7c1e661d331d3166dc0ced3331eb149830eca3c1ceb68690850cd7e4d2fe2424a5610813f217d218991c91ff3a4c3f3ecbeb96c0b4bfa4098fd747c4fb9ec5e7ccf08092372c63de01290b0ec87305d23e209a0aed6ba6f8d291b8ba63ff64f17f46df94232654adb8f08d4c8fc8a3c9372c69b49de064fd440aa9531ab0b257632eaf9988e501792d050de0ef89145a82421e10ef44668a330553bc801996645a43505036d4ee9009cdc2b9b1aa6bd41c55a75b8bf21aae5dc2820cd79694c38d947b6b4bca612985855421534e76428a165fb15cc996988fc8e1b3e64ad74a2c19ff9b6ac153a9395ac411ea14d8e4797b00ae8d2fa4bfc8c0299872285b6c15ce478573536b7504c6e22c11659f90eb34a6b0965c80ae337f11cbe0ac9807a8b6b364d0c7423f4ac5517c1519509daa624183b3959299087114a960faabc583c74ffe76401e3f3dc4ff1e3d7cd694a0a221cff411795263be90cfa3f423795a9517827c0cc58f8be2ab365fa066621252701c2d3d8fd912667b58297a83bd478755b1d57c1af315ca1f997cb65d5685800b47dc952fae05b9cb13f49a54981e4b20266a9ad90573227e7a78d8db3cec780fc7e463f01d3d4381379a5aed804d62ea76893b33abfad635def57df2a34c611515f17d5726e879b9c5d073ac717f50f38b9f215bd22c869d00b62866dbf115b5fedcb9b959c84b22e8be29884ee575e82061c19a63f80b4545e8cd673c59153568521ed12a400febe393ffe8f1dfad63276ee3f19e3c06b76f25e67e4fe7a4f4f3339dd0382e88453c04dbf63f82236e8eef7c5e66188cfe09840555f3de0dc2929be72d0a4eb2b8c647219dda4fab4b15e3312f9a874aa6a1bc10659dada7f9bef317afdd0ea4bf5ae1368d7a9e3fd4a9bc0cb9b927163a7d365b9492a70ab7a4d97401ff6863a06adee500091359633676be73989355701e9cc1961c86ef592a1f3c04aa7521aee2751ae1b64bca5f7e14e27a3a71dd6309ccec791812ec0e8e4eaa354e69368511b60e89eb306a4860f78239965bc32289c1014b51f0731ea29e8e981603799f326340d1f4a8b90572d59a57d17daff3d25166703947cd492e97ed39e5dd472e8e62da5065462ece129a47ad01df3b0a7de3cda6595c3d376babbad914c46361d7146cceb9b001efe3daa3cffb8e2b6dc0795d1c1029e23501247921085f12c102a63555eb67249f19b9a04a206cccfd634e1e64c0c150ef02fd255fbd12e8764aa305c295cd372613fb49085eac6667f57a100b8b89fddfcf876dfa87765b1f5dba6d358b9e346b2c9ef5e605176f180b59087bc0937929b161b2b843b47d413aff3162c4f19b29ebed4944355930065b303d672159001617d2101a007ea1e05227953b26498622cfa76364d908b6400672bf68929ecca6695319b64e1a315b6d97c99bc19c0cccd4a171f750aed3c20802ff7c9dd83ff9ae46528058b9e7be195d77d3684db4ae2731a36ac93f7a3d6bd52c683cd61ef29f1d8d67ab2c861d1d14b4a5cf0dcd2de861c7ca615bac491e200c40ccf1b0a2d0abe57feb3501b7548818538ff010c59ad3e74c8f308bcb4bec7082150ff0d7e4d50bd89ded3ac123a3c65104b846f0ef0f30655cb17146546f35604fcdddbab11903df314d75b147a7b0fb62d4fa970687c5068f853933c00270d0a07c9dbd95e4545e70c502bb4e9f888d8cdf51135d5d0d91ad29f9dc513835d46475a936b18e53ab268c4077b2d5488b556eb0db146e213a52caf09afea9dec40573607f29c4a61047b53d8243d2f5c6a415ffe5cf10ebf3147161abbfc3cf84344b55bb080ba3edbec2d03630a899dcab17b32910e9a11c36006c6321ad84a15fd899e4b43bcbdd27be943186733265a2c5c077b6669799974a7c1b0c043201d0db868bb863454a0afebf7623da818b1e43ba695656b15cb01623ff80321a3710f7b558490033c73fe75cfc32595972dff19869f03034bea06bfd264b164c5d5d9125161f90814edfae8dedb4e082e2d27e7bf3028964d296c70f32d8a33862a4764d69d83e5f4018412cb3d0475c1f4bda8ecade0268934b0bd43e4f220220e63505825dbe803cf00ca72585d7540378dc553bbaedec14f220c1b2fb1e40c65b8835bcf9bf98eeeeac3dddeeb6fabd9183dd6e5c623a0234e3d3b8e32cb13c243f7113ed4960058a1305849b60ecae7bba5c5e8ae28066c9853b2510b635385df4ba0d61fe152601031f9061217e8e70a1a40b0ba0108144bbb00d9286601900ccfe4025553c015b29c0a4d73a97b0473428ba31a10aecde018f5bcb8aa7492e24ef22c0dd0292664892c716b856b5a8c2b2bda7b042b49466289e284f32ebaa077d4f962b54c09f8b73c0070f7fd9218a1815478c8f241c534508814fbe3302986daef818495c6f73acdb514ecb4216da56dbb1587f685e5b203f88fb2b46fd43b87fc0a98ec5fe9d2382e7afc907c3e38de073c396acd7b08d2513f8b36d47eddf213e931daacf748ba393771ff6c1519066ef980ac00e5ae8021e05c06d45e3a3475757ff715bac6e84542ff262f29e1a766d8eb958a4b87c09034d0caeaee0e976b9cad21e9e3ea4bb732433d361a9775fddc053b191e7fa00f49f0b213311b0b7ff24778f4906560c30a0c77047738faf5623a9dad16c310e3965ea7c28ac1d8f745a1bbe7d6f693be82cc0c3676f13a7defcad7d0f39045606898754ac982a69df1d20be5c6ea17e6b9ea47d28f2df4ce95dfcc7b9ebd71f840fc0e4ddb1dc0da039876bf38df98b01ba1107b3768ef660b6821143b84a9a88290bec773a9dfd32b86a789dc7bc8c6cf4eec55ce3f4c875cdcf98ea80ad3bcaed83b83f1c82c364b1eefb6660425fdb53a1acb16f63516f69dfdffd24740b433d7afabb0768405eb00045a27f6e1ac82f93ff7fe06d13b7fb00765f014640b6a0ef4e5afa2758d872fa73a7faed4e7da6cdb7cf58f45229a9747f8a05c33af71e771233b132119993c3af31d7e28d343c609f956351874bc03842a51affb8a0360bedf2124a273ff28481ed01966147def747497204d1c3d5d55191ab062863a9381361bc76500b3b59515b0dbff9fc8a4aa3497faa455d7d6dd283538471c94bed7df7ed3f6f37b3a2a1d3659e51994789c5dfdaccee71e99545f649fe089364619e1a4e6ad98b77ba8adec9af1cca4aac9b824be56a26615a30937b16bc2b70340516752033a5d9a4bc9f3011cc4cbdf9699662b2299992efa4ca926e06d7a821348cb1e226ca16130021d380c649342d879a2a060ba6f124f707d0726dc87b57b0e3681b180a80fe4aaaf5349441866028cf677d517fbc1926b9d619b2f86dd6970cb8871160b180e58091939e34c8cda974f6981e2219a9ce9c2722890c695caa73192fb836d67e4bfb774d9734643d7a6b2bfd90d358ae7a3db86b90dffe18f0e2ae0d7a66b03c1a33d047fb7f71ded130f0e869b35b6fc8b8cdedb08f5099586df0355f89fef8eea4044d6e6f6bf899e8e9809be9e3ad1b32a5cda1aa0c3bcdc00f626add821104be0704960b036d46b82694a44a022849c805280a5983469057205b054b472a903769107f0fb86e0db4ef452c8e79faacc1473ada5b36dca6cb2ab3a970362fb0579f54d9e06bd0262e96f20674a99d26d8127d21815b511ed0904ae613f2ceba5912c938dcf7da1739c6032b5f64307f0deb5e1cc9ee7fe9eba9d7cd1529a48377f36266d8adac7e95c80bc35be731d9d772db97bc189b0cee1d45e072fd157704fd783f4bdf94d526600ba176798a088022e125298f50c5a9ef001bc4992a031eee1940eafa591f3c456d020c8c09e8c7de5d94042cc7cb8f00f73baeaf50b4ea3e435d1b5aa44651c240af87d40e8ab5942ac92f03e14f2fbfc28991e84bbbf46dfba8d1c40ec5ab7b1b0ed8d2cbfba093be851cf7f12655416822ecd9c3e4af5c9cd39887e4debdbeda902bb36e9fd92298a20b08fb604837b9572f306c0305c5444b5bd7e9c1458a69edf97b938e5c2b46815679748abfebece5d77949f386a557bb246a79b7e951a05e99c293699c587ed482374d7fcbb86221380d3ba3ce3ceb21f3c0e25f802327f81f8661ada9e0494f6758882e832813672ea1b4737c6123d69c366c12a9bb1db72d1daa67b5dc4a7efad4b792a9b25cc00cf1fe81708b85288721782116de04401d40cf12ef2162cc8c570abcc24ec04e9db390aec2be7bb08426e41479076c04dd42aa23fc09e4a4bd9b0c2ee801003c09427f381995b1d5337babc09362f136296b933fe0086f5200538b988ab381f15b417cff1953bfa96db40c8af921f87662b351a431482fb2c9bec7def732295e91e6768054faac6094da5397a2d2afebbd5a77ea2ef1086dc09b634a636ed8854204716673fcb43d926e5f30d997eca83bfdc778ee79f1f31a520cd720361e58b1c0ce82a788619f4320c7c72459172ea71a74577997733d35ea9a727f69ed105f2150084152aaf0e64fdf25cbcad7f0f408cf0e8a0ca472fa18b06cec988ba7e8085e2065ca6e3e343312c3b280d8081fb4708d3a800b9f931fb1e2b329d2ea1c830d6fd04d7a3f4580a0dcb55c08b7f04e139af30139632c452d4c38f819135143662c99636a996d309bc293bb1fb5b0b305f1357c95e6a0c846ca09411751a8b5e52e2701f0fd685073b7b87d54a38d8e7ed3c9581f3ce839281c750dab3cdbae5d67a4e72cbffed9b4889a172d90c02e6786a740bf17968d996f7988d98703c75c124be4793b49fd0491e5a619f56ff1b8b114ca79cae2a5b765e6f674c45d74c3bb5c7591836b80a863f49d5bd0e9ac9df3f5c292e87271fd5382546e0f1db0d59fa1c3e8d0a19ee2be97006288e0fec208cc65de4b1851119ae0cf5618d1533b228c704df1a66de3d6d6c660a2e40a37f0e6fe9f1f37eb96bfeb2c4771ab6e20d2d8b2e7bf773730aab0826482ff9661fa452aafb7fdb71bb56f3eb4245a42fd9eba0aea9fe20546e011a6ca97f85199a53bca24e565caf584bcce774c2cd72052dc34dd271f1cd0b3693d43c879cb341d6e7742b10ec6a273555fe372c776ad3e6ba07a8030a4867d53b8f13061ac29e165d34dc6e4ea479a13366e1814168c3529dbb96954ff9ebea8ccaa301cd76e47d329ef298e08cc3fd76a9ce886ecc6d5569683cf888b9bc652e0497b030db13a4c94a909f98983bd80f6048a59d4ce9784e3f91fd3f6223f4377e350a7e1204bfb69311aa071cd0290cafcdfb3a9fd5b44e0196661517cd9507e9c0b2dd7352e93b92d2d049ab67807c3714c6f359d9ad2758c274539dd7e945d7f711bb1e06c213ff69d97f4aa7a4ddd9d86961406b4b4ba3b56bfc6efaeba75c71cb0aff1c73eeef21f1ea0a40a228000156aa964825a0378539304a0126a627502a30fec4723da0d8af0c8454636c0b9c83555e3158052bfb52982bcdce9df54589fdf27b279144392ea5bdb76feebc6e4d7bd2ebe06108e4b6007b2995b45da96d7b9f3d34e3edd8f3e9cda19b8ef7be02470d9ec454217b7d68c11df487e89f0bc9a425f908e136fa03a7c49663d1cea1fafb9136e995b31abd70b9bf82b72f881ce736d8d22c0176aa0bef89db77366cf1c2d8248a8092270b5e057e375d91b818ca3f0f544e2f9b79f9ac8b4e673ff8cc411997f66e43dfa035b37197917dfa61a7a479b57ff51c3eebe589854dff3da73143cbc79d5931ffbea3b7766fb9bb5f07eb15fe5ab8c4eb15cf0de6da9f6ea296f38c145c033eafb88a2ef236eedd4087b7fef7e2fc9e6e60bc031efcc43bc88513ddb4fc922921cdc33cb5d13f5b6456813faaf9ae2737e93a5d866ed97aa266f5397155dd1fc65f0e8bc47150696acbeadf74a742165bc596afd7578eba425b74db2d9803276637f10526c904d3fdae82dbc09b55f65fcf4e634bfb72e85a95d4815fe8eede21f1f5efd516de23aacdfa43d6c85ceb70d1daff5adccdf2d381c0db3f0a7fb08bafbc02da042fc309ffdb0f8af0ed4d9da79bbe1afbf654cadfdc793c3c993edadabef97ffdafe7cf9c67e344d5b0d80577bcb05c08dfd8afdff010000ffff010000ffff55879ee8d65e0000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["index.html"] = bs diff --git a/gui/app.js b/gui/app.js index f57a225b..efad5730 100644 --- a/gui/app.js +++ b/gui/app.js @@ -263,14 +263,15 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { $scope.restart = function () { restarting = true; - $('#restarting').modal('show'); + $('#restarting').modal({backdrop: 'static', keyboard: false}); $http.post(urlbase + '/restart'); $scope.configInSync = true; }; $scope.shutdown = function () { + restarting = true; $http.post(urlbase + '/shutdown').success(function () { - setTimeout($scope.refresh(), 250); + $('#shutdown').modal({backdrop: 'static', keyboard: false}); }); $scope.configInSync = true; }; diff --git a/gui/index.html b/gui/index.html index c6db1c26..3c6a11e4 100644 --- a/gui/index.html +++ b/gui/index.html @@ -353,6 +353,26 @@ + + + + + + + +