diff --git a/.gitignore b/.gitignore index 5b1c7081..adf7dccf 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ stcli.exe *.tar.gz *.zip *.asc +Godeps/ +*.sublime* \ No newline at end of file diff --git a/auto/gui.files.go b/auto/gui.files.go index 9f62aa45..8ec36dc7 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("1f8b080000096e8800ffd43c5d73dbb6b2eff915a89a965422534eef9dce1d2b4ea775d25e9f7c79e2242fae1f2811921053a00282b635aefefb597c90040890a2eda44d3d734e6d60b1df58ec2ec08c1f7dca5342399ab2ec2ac7ec007156e0119a6594135ae0f2ef755ae4e27fea6ff468fc60fc689166d338450f0fd03c4e73008ae9a24863a6ff16400f82027ec93923331e4c1e3cb88c19ca3774c697842ed061b9225a654991e230a8e682113a3b1f4ee48282a5d318d01ca280e15ce2a9e022c128cbd214b330382d478f384b01c3bc80bf494651f8309f656be0f0e192f3f510dd3c40f02370af19be7c1e73817c7f528d2e307ffb128684acf5a8201e33ae389722022762526117ac502c09e60070b39d3426e764e18eaf36c7cf856481354ab3040b2467e71e24c754086ab1a7e7316319f3accb31a62fc49c4b09348f53972d86d75929851c1f8fd12998912e7234c5f38c6134cdb2344769965dc008e798d9143997c0c08b1cbf21c9010a5e919c630a88c03a20e10c7c455a0d9db08c67b32c450a02fd9a24a0ee1ce700c8376bf0c380e36b0e7f692b2847dc8e0ce4afe3eb534c9397d3756ea07f5bf045266cf64e98f91559118ec297e4b7713eac71d36235c5ac13fb3bc017d3630a825ec6e9a94141cda0720a85b7c6ac3dc78f5c4fde1dff49cc62d820e93bfcb900205339a032040a829534913aaa41fae30724474bd8c9b8a17981fc779262a4669501faabdea0f0878c34bf52fa82c6d3142706113585602e83dd8e6bbcc23d3bd97e95cd5a70ca99bba03c15e3bfa9486a7ab81846f5b889ce5affe1849eb8eca8112426fd8bcfed38b428c8a97ffbe95d65aaefc3f17db6dc075b5081edd7822f311c1eb35886de0f96c83b119ec4797e95b1a41ba901a511afeb914e6edfbf3237170ca0ff7ffffee41441444340a897ad4b7557c70b1c17a7c56c86718293b03c5dc40f99a3f03b799898a386a908253c1c4eeca930f89e620ed25cc8981d0c45908ed330589204070d68f7a8123f5b8b85fae0ba251bf5c26e267c27a3cdcad655d9ef31c406575fedcc32cc0b46db84f4abb94d9737d3787691b06c0da6067ae05960ec0bbc9966314b7402b36d51759780d5f13907399602b8ca414cde641e1201c2b04c6e1ea3609c6f6023ae80c75c78539e87f5e224e6715338dbed263ec32a8cc086586fb03c54a942e8e74e232f0d64aeab7f7f3bfd04a752043acb4333691846b0975ec4b3a5819c248e61bc0a90c9c82f02cd61000398ce60e0c3bbe3a36cb5ce28040081a9af7a0c3548bc6724397734d194cafcddcfa391e5f5b694c81e697605d445ae09d9dd55381c59103c81c950c0ec5539e9108dd193fdfd7d1b92243afc943f460a0bebbd6e40289ccc758adb98cd0a5e4d5bf3222882c611a1a84dc132c289c96819e76faf28e4716bccf8461aca032f7ecada62e2cc6e9d11ce362d58045161d24ab8d7315f46abf83adc1fa1ff438f942524c431fd6dc371fe3ee370acef79d275074aa89e274397438b72a5b876d2905cf5a16d81b512df2238ff664b14e236d53a4ad9ef2b8207d0b586e54e8f0f1be45c0cb683990bd450631ffa9cd32eaa9a616cd766550551ef7dda2ca3fce4b69307cd5209323c5ee456b817c3cdb34de416d9dc8e4a020ee2d2215466054df09c5048fefc471f242cf402f6380dccd3c7a2e0a206db40d100bbf83b41a215f329cfd66ba0ecc52ccb76ae624c2022b3878c9caf5797e0f2bf67fbe711cf3e00017604a681c3e6b19a00bb4c73cec227c3892d875e7e8806a23c84646080fefa0bd5a3c7498a074d59d434b8d90085839a4bd12c38c16c06e747bcc0da308fd1e087e1c02bad56892150f3705f674729249c5fdfde84ceb3af60ec44d463ec8bd9da325840c034ad94f53e0cdab2b81a4daeecde8a69cdc82a661b2f268ffa6c13da2ef1d5ed08a7789bc01eedaabe9a3c0f24fefd7e582d0bae671ca40208388dbc6e22b6952231f601183c4c9a6a95a7dd3ccd207f0432fea0281a589ea028868fe656662fb815411ee03c87a35e10bd81ff1e3f3fb77d4e003675538e4722674cb1242b9408aaf01d9aa5a71c53243412344e24844523b37d990e4e28141ba549160ea01f864d8c1d0127784e722d7b15883d6a3d9e0991fe0d4acd2e6eab4f5d37dd46692b4825f3766db981fa9b55971b1b7be9cc0d843b7566c6455765a211f4376b4c332695a6fb505d71fd970e7b1b2affc744680481ce33aa5d948f78a719043336a7d2d18cbb85163635c4256639e0f6f1f735d5931238783fb6d3de6167386b1341d8d18e2dae9060250a26799562deac00869463b3fd21f82dc9d25a9548619d58a5861051e38d524c177c09e9167ad22271951c7408aab1419adcea0c6fe2952bafc71b74aaa2677be62783415b7a52d919c8b72c36413a64b43da64cfca160fed99f41f025c9dff8046f9a982a4f682c0b1b0633f4d2572961a1aa2db968d8a9a25dfae9a39cde9ac109e14683bfa5c31806df9797707dbb9eb2c73df4e6cbf125de4dd27b49d9e8965a40d1dbb50c2791ba82d091df8a382ed4296751be4e090f8391902c5e1bfbf8dad8c7d71187a3111cc1d3285867b9d3d60352a08eff9cbe7d13e5f2aa93cc37a1c5c970846e96384e20721da09be028a3c00fdf7b0fbe15804ae335b0a5ae28c69ff28c065b8bb0cf2203d14e1fb435166427bc55df56d7ddeeffb734ef6fdbf56ed195c66cde02ecbaa06e88962f0b9e88ad7517d9fc4c9528bdcd1edfbd80b1e06edad9de5d7eb185bd275823a297680bc6c0d1f48a8711be06bf4bc29beda80cab2e2b8204a8efc5356c1aaf1a2db0539cce5507ba914c58b9842b6fcd5854dd1fc206458755bcaf86a34f19a1b06791c76f04f00be02463d143d823274c326d057161b2526d770a68b605889b4134c327493e1b976ff932bb0afcb8e26407329f156f4c7d01fbc986c62be07fdbc392fe986a9bd20ff3f72b3ac19009e39dca76283a178df2aac1af92dd37853e3df4cb0abd477ab93fbeab3788b915d46c8f4821219b7c18ad50790323921c750b63ddb3f97bd7724eb6d81ba81b133d84bd87c04da15d03ecc812fe8943ba794641ced3e9b665f209516e84928ce2112293db0adacbf5ab6cdea37b07aa8addcd941b3c208d67381ca331301c00b96a64af1cd1199383b30a56bec87ec78cac222274e7aa46dd3ecaab2944d0537babaaba0b261e3ff6755f4cd833726ed6c6b6523a2e8dcbc5b5c4130754736e9face5cf94e1f8a2475746dda102a6962dad245e17f932744ffb96d016e519e361d9108919be6b04fa167662c69798957cb6e58b665ba3359cf78ee622dd71e3774b89da192108e468cd887e07afa60d1381634e1cb7a73d9b40a6f0ed0eea91384ed36e3b9431d1f0a8da7acdc0a29ddaa9dc0d30a33ecefd99b4b8ab1585614fd75077bbae6fb455ef387a4f56183d739ed2eef48e598a63f6a2bc4aeecc0ccdf7b9169f6736d7badbb4879e9c4bb6761e9872dd5872d292bbce19815222ddb866854d6db25aa722b7775ed94b34cf2fbf0be7b27080ffaf0ea65915a847cd6698981b0e3b7a2a80a7a5ac5e677d1ca684b35f37f9ba23e2007f07b3b7abe6f48aba9acb215316573fd2141030b75de59d81a44ce89c67574e46e7596b113d2b03c8b9fba2f0ce15a6d05bcf924370f4054a0ea8c71c73ecb48347fd77aec4fe7e9145b2da29b3fa80619d7d8964d5e2d949563515275915ab1ca82afd383b77e76cdf34ce33d73dabe8a41af6a258f262f1258b7e72b4dc08878a96ff0c35845087d98dda40079a91e61bd2e6f92a7e5485ece7d73591aae34a60a50bfd575b8a27349f0b6f2452d56d81ed9bcaf99452bab7712f77fc326d036d23cb069e686a5d85ddd308ff963a593c1e376cd4e39db3be75bcedb33cbdccfb2e6f07c55bbeacae5e09795f4f1b10faeb2df900d62d197630a5ad744ba6aa0fc95a996abb35d971afa2cb79ab4ddb5a8e3ab8ded419ba0fde578fb6b6aff4f6781dafc3f63dd48a40be2069be5aef658ab1781676377b541b54ba8239b6b34e303fbe8064a1fccc2bb4051ac9a7e0fb0027c5a95833541ac623342db934ee3c6379fba89e04d6b79ee8c71f9106987a019a37cb1acd530d3ef4554b7b4f9cd24d2f7ba69795f9b381559dd812afd39369e055eb6acc6ae9b36a2968c7d08d3c165b741347cf09837336631b49bafaab3ff51ac1331381cb8370e4d4fcea74657c70997a1277abf05a9db1f298d76c6867291f0fb804e5c1b23229a6468ad5682aaf4c62a9ca6256a2513c34844ed50636346a3391da4c2478465670540199148a98c2e225210bc273f115d6accc6f8445c4a78dce73478d7edf2abb1482f2ddbd7a89287f4db385fa259e4ad243f194be9a79b25fd68b8272e3d93ef00875b5c26c8ba6d8dc9a1f1debee4140638088ed4f8d4beef56ae32318ba2ef808c9f7b91e11e574c4b3dfc9354ec24a81d6aa3a80c820e0323425543c05ebcf4f7393cb4169862a10b43dc0dd47adaf7815966710b27efa5ff4c8fc8f937f4bc8f1a10774e2a3daada59f86e2617780fe20b761ad0f4ff760e6753f663ab9b807f9977ef2e65b5e9681b14b7f106b825d7eb6c2e293fe6fc8cfe44367e33f1dda6c82dec7cf6ec3591f96eee366bd78e964e21ed42fbe8293e54b3872eee86316f3de17552d44e3f42adee46fca8fd2bfbe7f7bbf0c30d9dfc5f16c59d08be3e75f98591fabe63341f99141cce431acb42c1f3186e3e8e6c9e8e7ed78d12cc125f04eb47a4802eb4a64afea5c773aca0938d93fae03750b3a3efb73fce79fe763af0ac4774c4a3cddcd7f7a88fea7c5370cfb7bfd631045d1587ce9a410e650b0e3d044bef7d3506971301eb4693191892bb9c46190c98250752ebb7469ee33f58fbb1ca0e0281819c3b27faffff5986a98b398e6b3b4489c1959eb1c34bfe752afe500f7a1fed520b135d0e21590e3e2b3fda7ca8ea2b0391c887f6d6080e8624f7ed97238b0cbde338d33825477f0ece958ae7ca629b8dbcd505341c9e742f6a60c2575e9e873018bc5bf75b1782d3831a44809bd38a87148358c104e57231473ce204b9e719636dd438c450fc1d039667954d07c49e6bcaa1fc24b82af3ec6a9bf6729bfb2ead30d2b7fc663748511ecb1224d68c0552a0adaf6022bce40b31f0514e19b86b6642775e22cd51f39d4bca90e5b25c87907737ca97aa7080b417214a70cc7c9e64eecc9f65a3b7fbb7920395208bfa8769c11ed63957e1a4d66e75a4cbbf37f010000ffff010000ffffd2c46973ee490000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffd41c6b73db36f27b7e05a2a62595c894d3bbe9dc58713aad93f67c7979e2245f5c7fa04448624c910a08c6d6b8faefb70b80244080146d276daa993616b058ec0bfbc043e3871ff3244e3999b2ec32a7ec807056d0119965298fd38296dfd74991e37ff23b7938be377eb848b26998900707641e26390085e9a24842a6be23d03daf803f72cee219f726f7ee7d0e19c937e98c2fe374410ecb11c12a8b8a84fa5ed5e78dc8d9f9702206142c998680e690788ce6024f051720a12c4b12ca7cefb46c3de22c010cf302bec7594afc07f92c5b03850f969caf87e4fa1e810fe25e33faf959c811f9fea46a5d50fee6053421af752b4e1e322e29172c0225d829b12329291513e60070bd9d343ae7f1c26e5f6d8e9f21679ed19a6611452467e70e24c729326a90a7fa296319738ccb294d9f639f3d13489e2636598caeb3920bd13e1e93535063bac8c994ce3346c934cb929c245976012d9c5366cec8b900065a44fb751c1d10ef659c739a0222d00e7038035b115a23272ce3d92c4b888420bf4411883ba73900f2cd1aecd0e3f48ac337a5056988db9186fc5578754ad3e8c5749d6be8df147c91a1cedea29a5fc6ab9813ff45fceb381fd6b8d36235a5ac13fb5bc017a6c72930fa394c4eb519640f29bb887f63ccca72dcc855e7edf19f842c840592bca59f0a00d2850322232020189946424635487ffc80e468092b9936248fc87f8b134a64af54407fd16b33fc2e3ccd2f69fa3c0da7098db449641781be0c563badf1a2797692fd329bb5e0143db741798aedbf4a4faa5b383693ba5d47678c7f7f929ed8e4c816829deec1e7a61f5a14f1a97bf9a955a58beffdf15d96dc7b9351c4f64bc1971482c72c14aef7bdc1f24e8427619e5f662cea46aa4129c4ebbaa593da772ff5c5050de4bfefde9d9c12f0680426eaa5eb52dc55788170715acc66944634f2cbe8829f784efcfb2298e8ad9aaae234e6fe706276f9de7729e5c0cd85f0d9de109d7498f8de328ea8d780b643157eb6060975e0ba2119f5c06e225c91d124656b8becb7107c832daf766219e5054bdb98748bb94d96d7d3707611b16c0daa86f9c0b240d9177433cd4216a90466db22ea2e06abf039073e96085ce5203a6d220f0900a15f26378f8837ce37b0105740638ed694e77e3d380a79d864ce34bb894bb112239081e33592873255f0ddd429e4a582f471f5df6fa61f212a0520b3dcd7938661006be979385b6ac8e3c8528c53002219f919d11c7ad040d31934bc7f7b7c94add6590a0e0031f5158f260681f72c8ece2d4934b9d2ff76d3a86579bd3585d9639a5dc2ec986b427677e90f4706048fa0d34798bd2a271d923179bcbfbf6f42c691723fe5474b6161bcd30ce21422739de2367ab38257dd463f3a4590388953d22660e1e1b0335886f99bcb14f2b835657c2314e580c74f595b4cacdeadd5c2d9a6050b4e8a2aad987b15f265b00aaffcfd11f90f79283521208ed35f379ce6ef320e617dcf91ae5b50287a1e0d6d0a8d992bc1b54f0dc9559fb90db0d6c9b704e2df6c497cda265a4b28fb7d597000dada30cce9d161633a1b836960fa00d9d458872ee3348baaa61bdbb5586541d47b9d36cb28f774dbc9bd66a904191e2f72c3dd637333b6616e91cd4daf8470e0970ea1322bd288cee314923f77e8838425bd80359e7a7af43166b051836ea06880557c1fa768c57ccab3f51a66766216653b973ec643cfec9846f4d7a34b70f1efd9fe79c0b3f730013b02d540b079243b402fd39c33fff17062f2a1861f92019687900c0cc89f7f92baf5384ae8a0c98bec06331b107f5053899b052794cd207e840baa14f3880cbe1f0e9cdc2a91680c3583fb3a3b4a20e1fcfafa8ed379f615941d613dc6be98ae0d857931a8a67566b50ebdb62cae46934bbdb7625ab37815b28d1393437ca60a4d93f8ea7a8428dec6b043ba725f4dc403817fbf1f564383eb1907ae0002a291d34c7059c929c62e008d864953ac22dacd930cf24798c6ed147103cbe114b1f9686e64f6482d3a79807304473520780dff1e3f3b376d0e019bb229db03cc19132aa6452182285c41b3b494e394a044bc464422143732db8729e7447c5c28cd6921007d3f6c62ec7038deb33857bc578ed821d6e319b2f44f106a76715379aabae926425b412a99b74bcb76d4dfacb86cdfd84b66b623dc2933dd2fda22c38da0bf58628a302134b50fd5e5d77feed0b726f2bf8d858613e88c51edac7ca03bd580c498940a43d3ce165ac854109f29cb01b78bbeaf299e2486c0fba17dee1d7a86581be1c496744c76918315164ce228453f59010c09a7faf607d25b4e9bd6a22412ebc42835904585374868bae04b48b7c8e3168eabe4a08351850dd2e45663781dae6c7e1dd6a05215d5db333f190cdad2934acf307dcb601da48347d362cac41f0ae69fdc19045fc6f96b17e34d15a7d2121ac3fc86c234b9f4158a5fc86a4b0c1a768a68977cfa08a7b7646814736d83df2d99f118f2b40b4a42829b9f98a3c0d84dd56d1c28060ae4cdbaacb3cb73591ce39bb00a482fbd5db870d7be130f00e8387cefbbf2ccb0ef26add8921f3ad3fbf033ed2da1bc60f0bf6c45e5a1f44c1c5645a61f946d80ea7ec512fd548449ee16cea853be432865ad682e3f3bd083cc5a509bd28ce7be2279e8dce030a9edd6538376e70e624d5e2f5c92d87644d5017763a7bd9583401e61a9ccc1885836d4296741be4e62ee7b2334b570adc5812b2d0e5c051c522b7024a4791220379bd6596e6d0dc37460a3ff3b7df33ac8c571793c6f08613822d74b1a4610fd0ec8b57794a54013df7b07fec9033b0fd7409a3ce61a7fccb3d4db1adbd3d55fdd2b6780a73483b6fd2a71c0d2ba2e8cc31cf358a9e54ce8a687292de25398bd36d7e2b8f7d0602d5f163c428f7d1bdedc4495289d7b88aee3266dc0eda4b3bd3dff18199c8951235128d1168c81eda9110f027a05a618f9d7db5119ad6d52700a10dff32b584b4e311a60a73499cb838d468e6aa4a836bf356141752c0deb961c566944d51c7ccce214963271d80d023f074a32163c803572c204d1466e802a2bc576abc0636a20b6135343f0305b1c7dd2ce74f36576e9b97185d10e642e2d5eebf202f2a34d1aae80fe6d0f4d36dcad53956e98bf5ed01185028bee14b635a3757e2d4eb0dc22d97d00ed9243bf62c3992996ebe37ebd40f4a5207b7b780a01d9a4438bb8e2600f131b79b8671cdfba8f44449f38b969a06e74f460f60e0c3799b615d09d40fc2d71bb19a32037ed34dbb2a6012f37225196d21189273765b497e95745a243f61654e5bb9b951c584012cea83f266320d883e9aa96bdb245255216ceca59b93cfb2d13b56a12949d2d1a79a82d4e3c494c9e984b5596f3d0f1e8916b534f873d8bcff52d1753281d7711cac135c7130b54516e46d6f2336534bce8b1d9278fe60153cb92961caf8b7ce9dbd1bec5b50579c6b85feeb3858cded6037d0b2b31e34bca4a3adbf2457db7acd59df7f6e698eed8febb65e7a3d343c490a3353dfa2dac3a6da8080c7362997dda736f5167bedd401d1c8749d2ad87d2276a16556bafe95894515b1b421a98b6ed92bb3369bc0280f5624fd39057066cdb68db14a2c1bb7845c953eb86f64eeb98253464cfcb1b0a9d99a17eeddba0f3cca45a6d62ee91c7e782ac9d01538c1b0b4a5a72d7398ba1944836b65a6151eba4d6a9c8cd8d576ccde8f1cb6dc2b9281ce0ff55609a558e7ad4dc63c5bea1b3e2aeae05b096b27a9df5319812cebc34e7dac5c200fe167a6f56cda91175359743a68c278a4215e030b75de59d86a44ce8acdb7c5646e7186b4c7a563a9073fba2eaad2b4c945bcf920329fa022507d463963a76eac121fe5b57627f3dcb98ac76f22cdfc5acb32f91ac1a345bc9aa9ac54a5671940555a51f67e7769f699b5a3cb3cdb3f24ef21c088b25271657b2e89e2e2d17c2a19ccb1d4335266430bb960be84011d2dc906cc657fcc80ad94dafad2259c795c05216ea5b5b8a8792cfd11a6321ea36c7f64de57c5228ddcbb897397e996d03a52343070e6f6a9cb0de5109ff943a19df24683aea717d5e1d66dff4b6a71ae6bceeb963c61b5ed82f9daafb52be06a11e058a7bd576c9b08328a5a51b1255bd4f6c25aaed3065c7718b2ae78d6ddad672d4c2f5baced05df0ae7ab475fb4a2d8f57e1da6f5f43ad08c4c5a4e663885eaa18e36dc3dbe9a35aa0c214f4b69d7582fea6079285f2f5a06f3234122f0cf6014eb05391a689d40f47645a52a91da587e2505bde34ad0fd3c90f3f1005307502342f2c28344f14f8d0552ded3db64a3735eca91a56e6cf1a5619b1055e6b4fa681578eab31cba14faba1201d4d36222cb6c8260c9ec50ce26cc63662eaea5bffd96b044f7504360d68c889fe9879a5bde34d1c89bb5178adce5819e61519ca58ca3b29f68422b0acf419132dc56a6c2aaff4c91299c5ac70a378a8319dc805ac49d42422318988e82c5ee1b1381832143185414b142f629ee3e3be5999dfa046f0c5ac758b56a1df37ca2e89a07cce212fb88a3f936c21ff08a762ea21bed0a87a1eef97f522cedc780d0234425d2d319bac4932b7fa5b76b57be0a5214084e60bf6927a355a7b5b95ae0b3e22e2dab78345d11df0ecb7f88a467e25406354ed408413b0099ac629de30ec4f4f73918b46a186ca11b4ddebde27ad97c32596a7e0b27efc3779a8ff63e5df02727ce8009db866ed96d28f437c2fe091dfe39b90d687a63b10f3aa1f319d54dc61fa17eee9f52be22c036597f68063bc5d76b6a2f84b11df909d89fbf3da3f1dd26c82dec5ce6e42591f92ee6266bd68e924e20eb35f7c0523cb9710726e696306f1ce8b7a2d9386c965b8c95f97bf75f0f5eddbf9e044277f17c5b365915e1c3ffbc2c4ba48d56f9f8ab72b211361584a59dc8df5c7c1f5e3d14fdbf1a259820be09d685593005695c85eb573dd69282760647fbb0ce429e8f8ec8ff11f7f9c8f9d22c0e771923db59bffe490fcabc53634fd3bed631004c1181fd049843914ecd4d791effd3894521c8c076d528c44e21a7fa6be97898250ee5c76c9525f67f237830e8877e48db466b17faf7e94a86ae62c4cf3595244568fa8750e9acf04e56d39c07da8fed4a6d86a68e90aa6e3f86b104fa41eb1b0391ce08f580c48bad8130fa60e0766d97ba6700690ea0e9e3e198b914fd50cf672d3c454a4f1a742ec4d6942ea92d1a70206e34fa82c5e21251a17499c5e1cd4388418468426ab110939679025cf384b9ae6816dc10350744e591e1469be8ce7bcaa1ffccf31bdfc1026ee3d4bf178afcf6e58f9198fc92525b0c68a244a3d2e535190b61358520692fd805031df34a425765227d650f576a6a64deeb0558c9c7710c79772ef945064242761c268186d6e459ed85e6ba76f370d714e24c22f2a1dab45d958259fc626b3752ca6ccf9ff000000ffff010000ffff50674cb0454c0000") 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("1f8b080000096e8800ffec5de973dc36b2ffeebf02e6eef3514fe4c847f66dc9a3a9722467e3daf8282b7e795ba97cc09098212292a00150f23c59fbb76f37c0fb98e18c478ab29b0fb186381ae84677e3d7608399de3f7d77f2e33fdebf22a18ea3d9bd29fe21114d96c70e4b1c922c5d9aa6c78e5a25be0e79b23445be48b41451c4e4b17356d49c681939c48fa852c70e368a043d779024a3c1ec1e21d398694afc904ac5f4b193e985fb57a7aa08b54e5df629e317c7ceffb91f5fba27224ea9e6f3880159189125d0ebf5ab63162c59ad5f426376ec5c7076990aa96b4d2f79a0c3e3805d709fb9e6e180f0846b4e2357f93462c74fbcc30ea180295ff2547391d468759ad14c8742765a443c392792452031a8d67ea609f7915228d9e2d859d00b7cf45210e4ec1e76d05c476c560a917c215757f04bbd15017b0b233d7a7c7d3d9dd856e50096d85c08adb4a4e9c4576a523e79314f3c2871f279e855c454c898b63334cf44af526042b3cf1a3b9b1a42e62258912bf393909406014cc89d0bad457c44fee730fdfc22af5b00d3ee82c63c5a1d11e77b165d30cd7d4adeb28c3907a42c38202f2548fb80289a285731c91796c4f53df3278bfe3bfca61c31a672c913578bf4883cf1be6171a3ad87937563910895529f95bd1a7379c392481c903722a13efc3d118912a09007c4391199e44cc2142f61862599d61014940db53b608962c14c1bd5d57286aad3ad45790dd72e6041866b4bcac15acabdb525e5a094c25cc880492bbb44242dbe22b1142d311f91c317cd95ae951832ee37d582a74271b48823d429b0c98bf6005c693711ee3c03a7a0cba14cb151381715ce4eadd511188bb23829fb045ca51185b5e409e83a73e791f0cf8b79806a5b4b067d2cf4a3541cc997a106d5a92ae6d43f5f4a9125018e22244c7f397ff4f4d95f0ec8d3e787f8cf93c72f9a129434e0993a22cf6acc17f279927e26cfabf242904fa1f869517cdde60bd42cf1020a8ea3a5e7115bc06c0f2b456fb0f7e4b02a369a4f23be44f923932f36cbaa1070e188bbf2c5b520f7798c5e9326bac712880e9b6676c9ac889f1f1ef6360f3adec332f9147c47cf50e08d26463b609398d85de2ded4a8be718df75d97fc28525845495cd79625f4a2dc62e805d6d83fa8f9c5cf802d6816c14e005b1433edf8921a7f6edddc34e0251174df144427f33a7490b060cd31dcb9a449e0cca63c5e163568520e51d2470febe293fbe4e95f8d632776e3719e3d05b76f24667f4f66a4f4f35315d3282a88853c00db763f83236e8e6f7d5ea6198cfe05840555b3de0dc2909be52d0a4eb2a8c647219dda4fa34b15e3112f9a0752a481b84cca3a534ff37de74f4ebb1d487fb9c46d1af53c7fa853791570fd2099abf4c5745e4a9e4adc92a69339fc471b0355f32e07885992356663e63b2be7646149c4fd73d89a83e0034bc5a3c740bd2ecc65b44a43dc7e49f9cb0d035c572bb6072c8619be0c0282ddc1e109b9c2a94d2730d2e8a1715d460d0dec5f322b82d6f0486270e05234fc8207a8b75b4c8fc13a9c31ad4101d5a839fa62d99a5fd17d4bc1f0f172f9247d68da1e361497e4f5a91db5aee47b918b0a338d6a366a7e62b1e84cce76df522692294da51ea92c0b681eb606fe6029f48d3b9d6451f5dcacadeaa6131097818513f009d6c50e7847db1e7df2775c2a0dcef5f28088245a1140ba9709e10b92309f2945e5ea05c967462ea94c10d6e6fe3b270f32e0208cfb407fc197af13748ba55301c2954f6a4c2672e300bc6ccd0fd4eb412c2c22e65f371fb6e9bfda6d5ddc724cab69f8ac5963f0b6332bb878cb58c002d8a39ecd4a890d93c51dacedabd2d98f212396df4c9add8884549139630011e8050bc81c62854468427dc057145cbe576d1724ce50e4f974b4281bc116cd40ee974dd2de7492369561e3a41153d676c1bc19cc49c34c6db4601fca759aeb84c07fae8acd9f7cd7252940c07c67b9195db7d3684db4ae2711a372c13f3b3d6bd52c683cd61ef29f1d8d67cb2c02c4010adad2e786e616f4b063b591182c4c1e214c414cf4b8a2d0abe57fe93501bb5488685387f000c59ad3e74c8d308bab2bec7082158ff097f7fa14d08359277864545b8a002709fefd01a68c2b36ce88eaad06eca989261a6001f88e68aa0a0c91023ac0a8fa4f0d0e0b0082853933c00270d0a0bccd9e4f722aa75c32dfacd3176222f7f75487d7d743646b4a3eb314ce34d5595daadd6daa0d73d09d6c34d262951bec36855b888e9432dcd23fd59bd86013ec2f85d819e2bcb647b048bfde98b4e2d3fc5969c953c4adadfe16df13d22c95ed222c0c37fb0a4ddb00a56672881780480fe5a001b01b0b69240cfd82ce2427dd59ee3ef1858830dc14294b5a0c7c676a769979a9c4b7c1802f6200e56df88a3b562845c2ffdf6c443b70d1634837cdca3212f336e0fc1b94d1a811096cc54a0c1836fa39e7e2176f69c87dc723a6c0c3d0e892aed4db2c9e33797d4d16587c40063a7dbbd2a6d39c271497f6db9b174828e2b63c7e10fe1ec51121b52da561fafc06c2f02391052ee2fb48d076b4f80e409b5818a0f675124900626e2910ecf21bc803cf985a5278431580c75db5a3dbce4c210f120cbb1f0064bc8358c399fd83a9be00b0d3ed7eabdf5b31d8edc625a64240332e8d3ace12cb03f213d7e19e0456a0b8a480701e86ddaaa7cbd555521c202d7862a3f3c4b406a78b5eb721cc3fc32460e003322cc4af112e947461011422906817b641d2102c0380d91fa8a492c7602bcec0f988393a42d18d095560f7f679d45a563cedea3fa8d83520698624796c816b558b2a0cdb7b0a2b9296d20cc513e5496b5df5a0efc962890af873714ef9e8f12f3b4411a3e288f1918465aa0821f0c9b54600b3cd151f2389ed36c7ba1de5b40c64a16db51d8bf587e6b501f283b8ef30ea1fc2fd034e752cf6ef1c11bc7c433e6a1ead059f6bb664b5826d2cf6e0cfa61db57f87f84a76a83a572d8e4ede7fdc07477e9abd67d2073b68a10b784c006e4b1a1d3db9befeafdb62752da43acd8bc907aad9d61cf3649ee2f2c50c34d1bfbe86a7dbe52a4b7b78fa98eece91c87487a5de7d750d4fc5469eeb03d07f9924224b7cf6eeefe4fe31c9c08a0106f418ee68eef1d56f28643b9a2dc621674c5e0c85b5e3914e6bc337ef554d0795f978f8ecace3d499bd33ef4987c0ca20f180264b264bdaf707882f161ba8df9a27691f8afc2f936a17ff7161fbf507e1033079772c770368cee2da7c63fecd00dd888359334773305bc188215c2574c8a401f63b9dcefe36b86a789dc7bc1c6df4eec55ce3f4c876cdcf98ea80ade79de2ad83b8ff380487c96cddf7dfc084dada53a1acb16f63516f69dfdffd247403433d7afabb0768403e613e8a44fddc34905fbc7f3ff0b68edb7d00bb3b8011902de8bb9396fe0116369cfedcab7edb539f49f3ed3316bd925248d59f62c1b0cebec7f522962c754866e4f02ee65abc159afbecab722cea70091847a854e31f17d464c95d5d41a9f7238f19d81e601976e47c7f14c747103d5c5f1f15b97480321692b3248856166a6127236aa3e1379f5f516934e94fb5a8abaf497ab08a302e89a9bdefbefbfbed66563474bacc332af33cb1f85b93793e2efdb3c83ec91f61922cc853d7492dbbf25e57d13bf99f4359937553b0295dcd2451036672cf8277198e26c0a2f2452615f3cafb135ec2f4c4999d652926c39209f94ec82cee66708d1a42c1184baec36cee010899f8348ac34939d4443258308527b93f80962b4d3ed8821d475bc3900ff49742ae2681f033044379beed69fdf16698e44a65c8e2b7595f52e21e4680c502967d464e7ad232d7a7d299637a8864843cb79e88c422a051a9ce65bc60db18fb2deddf365dd080f5e8ada974034e23b1ecf5e0b6417e3b65c08bdb36e899c1f268c4401fcdbfc57947c3c0c3e7cd6ebd21e326b7c33e43656cb4c1557c99f4c777272568b27b5bc3cf84cf07dc4c1f6fdd90296d0e5565d829067e1053ebe68c20f03d20b05c186833c215a124950240494c2e4151c80a3482bc06d94a583a52813caf41fc03e0ba15d07e10b228e2e98b061fe9686fd9709b36abcca4c299bcc05e7d926583bba04d3c59881bd0a5769a604bf485046e457940432a997be4bd71b3241451b0efb52f728d0756bec864be0beb5e1cc9ee7fe9eb29d8cd1529a483770723a6d9adac7e95c80bc31be7e1ed6bb95f9f0e2c340f3eedb05558626eb49fd5be81956d25ff373a9b17deaf01ca69bee0becda17e100754852fea4782d54be7e6a9e0d7ad7fbdc1259834c17f1090b7ae259a477cd3d612cfd555bc82c5fc42fc304bcef13470702a78cb280fdfb04fb9ca96aabde445a0910b88259e271442507b11e9939c748771265b30dd13a58cca012f231273340c2831e625d15119dfb1b868679c9d4402a16a2728d9d6848cda60783f08bf8ad8ffced91368015eae3876eee314c1d5bcfa0ca16c675b2f4cadba3b54d7f416a95194f010a387d40e4e7321649c5fc4c39f4e7e7d1aadf5955993b687a8d1c40e455a8a09754de9d543f0b7ae81d30ff1166341c84bccb99af7679e5cd08807e4c183beda804bbd6abf8fc04081ce19acb9907672607733eb704e01ef635da7074f52bcb291bf13ecc8b562146db8782d50b367c35e7e95bee5469cda056dc3bb49fd031790497ceb8213cb8f11f196f7a78c4b1680f5981975e6593f0e1a58fc351ecd9c627686ad7b989ea339731a93d30600945aa7b529d5af67b5ec4a7ef9d2b792a9345cc00cf16e4d62170b11bcf193c440771fa803a05fe01d603c0fc2eb328ed1ee19c9ef9481d3b2b62c6cb579bb66c879e40c2500e81f3ae33e833f81a8305f07000ff108421801a27fec0d333660c0b39f42000cf6962c4417788507873c20e78ca538d398c3a03aa49a4c593cc34dcd34984ee0c95e0702bea03f0b9a13571ce4a085f0b64ed5dbb014c6e2bc42dbd6595773416009f05a13cc761ed1e47c605ead13b5fe03df7edfb0d69429266b212e586fc569040b1d9accfb63e77b1117f90ab9e122953eb31d65a7d4e68bf51b67af999cd91b7589d2b02f607e71ee890a0df6a3cc24dc2af37ea87ddb6b5fb2a3f6551c1eaebc2c7e6e21c5600562e3be110b20023cd20ffa3c18393e2616e7a0a8ab4177957739d7332db794fb2be338f07d1e258aa554e235bcbe1bd99573e4e9111ee415e980e5f4f1f4606dc75c3c4547705b299366b7a499167846e21373dc065ab8421dc085cfc98f58f1e90469dd02f42bdfa9d4aed3d20b965ff76d2e7ecd6114bbf42e67d56740bfefb4face41d57246fddb2ffad062633863d1c2d93073732a672f58e21dc2bac8c10a20da1d7dc71a3697ac9d6b786a4874b9d8fe742a159bf136b6fa77c0dbf53b0f7b41dd4304f787bd31b97d2fd8bb22e4e1cf16f6eea91d81bd6d53bc7addb8c6b71681975ce126d2dc83f2f70faae5883acb515cb31c80e71bf69d0ff64a4e85c54996f04f19e6e3a462bb2da8dda87d15a625d1121ff7d455f8f80c6fb4028ff6e8047cc8c29e6d93f276edca236f724c89e50a448ab0d27ea3c4820d93e73584de364cd362472b1463f90621cafa1a9798d6b6faaa81ea2075480dfba670e35075ac29e1ede375c664eb479a13366e1814168c3529d3b96954ff9c9c566655188e6db7a3e99417574744b35f6b3556744376636b2bcbc167c4664d6329222e732511f1224c94498ffcc4c15e407b7cc90c72e40bc2f1409829f3650786eec623a8779a832ccdb7f0a88fc635c563cfd93fa713f3b7085b334ccba3f8f6a9fc9a1c5aae6d5c66f71b5a18869be21d0cc732bdd1746a4ad7319e14e574fb915efd4d7ec8fcf3b9f8dc77c8d0abea3575b71a5a5218d0d2ea3261fdbb0ef6ee634f94dd6f5fe3cf4aec6d503c6f482540731f156a21458c5a0340509118300c6a627560a10ecc5744da0d8a03047b7660e2f2cb5c5315de0929f55be922d0c89dfe4d8596f9053393583324a9beb56d2744afcd86deebe22b40c7b804662093ca57e4f1399d4b60ed6ce4fde8c3999981fde00b4e0297cddc2c25e670a8668cf88a7a8710b13a2a1c3ab36ad0eb1e605553e83bc6c28937501dbe35351e0ef58fd7dc0937cc2d99d1ebb9c9044f72f881ce73658cc2c737aca0bef861c20b668ee80c8280c8d90fc1d5825f8d56656f043296c2bd4189dc76889c7fa4ac894c6b3ef78f101991f95786c4a3bf0477932171f1d1b4a197f679f59d8b87fb8254527d016ecfe1e9f0ae524f53edabefdc6eee6fd602e2c546928b1fbd55b912bdfb45ed454aded043edc403cc87086f1f22a0ecd424e6a6e5c35e92cd5d11105dde99077865a67a361f25468837b89995db192a548bd03a585e35c5e7fcce51b1ff996f8a79ef529bbf5ed1fc65f05cb547150696acbedff64a742e44b45e6afd75f8aebd25b775b259b3fdefc6fee05ebf4636fd30a0b7f026d47e99f1b39bd3fcdeba14a6762964f03bb68bbf7d7cfd9f6a13dbb07e93f670e75e7b6cf575d5df2d6a1b8d7ff0a7fd9cbecd5002b8869f50349fa8ffd5a22d533b6b37fcf553c6e4ca7dea1d7acf36b7aebe84ff6bfb43f86bfbd1346d35005ecd7d240037e6ff87f02f000000ffff010000ffff4f4ad8f020610000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffec5de973dc36b2ffeebf02e6eef3514fe4c847f66dc9a3a9722467e3daf8282b7e795ba97cc09098212292a00150f23c59fbb76f37c0fb98e18c478ab29b0fb186381ae84677e3d7608399de3f7d77f2e33fdebf22a18ea3d9bd29fe21114d96c70e4b1c922c5d9aa6c78e5a25be0e79b23445be48b41451c4e4b17356d49c681939c48fa852c70e368a043d779024a3c1ec1e21d398694afc904ac5f4b193e985fb57a7aa08b54e5df629e317c7ceffb91f5fba27224ea9e6f3880159189125d0ebf5ab63162c59ad5f426376ec5c7076990aa96b4d2f79a0c3e3805d709fb9e6e180f0846b4e2357f93462c74fbcc30ea180295ff2547391d468759ad14c8742765a443c392792452031a8d67ea609f7915228d9e2d859d00b7cf45210e4ec1e76d05c476c560a917c215757f04bbd15017b0b233d7a7c7d3d9dd856e50096d85c08adb4a4e9c4576a523e79314f3c2871f279e855c454c898b63334cf44af526042b3cf1a3b9b1a42e62258912bf393909406014cc89d0bad457c44fee730fdfc22af5b00d3ee82c63c5a1d11e77b165d30cd7d4adeb28c3907a42c38202f2548fb80289a285731c91796c4f53df3278bfe3bfca61c31a672c913578bf4883cf1be6171a3ad87937563910895529f95bd1a7379c392481c903722a13efc3d118912a09007c4391199e44cc2142f61862599d61014940db53b608962c14c1bd5d57286aad3ad45790dd72e6041866b4bcac15acabdb525e5a094c25cc880492bbb44242dbe22b1142d311f91c317cd95ae951832ee37d582a74271b48823d429b0c98bf6005c693711ee3c03a7a0cba14cb151381715ce4eadd511188bb23829fb045ca51185b5e409e83a73e791f0cf8b79806a5b4b067d2cf4a3541cc997a106d5a92ae6d43f5f4a9125018e22244c7f397ff4f4d95f0ec8d3e787f8cf93c72f9a129434e0993a22cf6acc17f279927e26cfabf242904fa1f869517cdde60bd42cf1020a8ea3a5e7115bc06c0f2b456fb0f7e4b02a369a4f23be44f923932f36cbaa1070e188bbf2c5b520f7798c5e9326bac712880e9b6676c9ac889f1f1ef6360f3adec332f9147c47cf50e08d26463b609398d85de2ded4a8be718df75d97fc28525845495cd79625f4a2dc62e805d6d83fa8f9c5cf802d6816c14e005b1433edf8921a7f6edddc34e0251174df144427f33a7490b060cd31dcb9a449e0cca63c5e163568520e51d2470febe293fbe4e95f8d632776e3719e3d05b76f24667f4f66a4f4f35315d3282a88853c00db763f83236e8e6f7d5ea6198cfe05840555b3de0dc2909be52d0a4eb2a8c647219dda4fa34b15e3112f9a0752a481b84cca3a534ff37de74f4ebb1d487fb9c46d1af53c7fa853791570fd2099abf4c5745e4a9e4adc92a69339fc471b0355f32e07885992356663e63b2be7646149c4fd73d89a83e0034bc5a3c740bd2ecc65b44a43dc7e49f9cb0d035c572bb6072c8619be0c0282ddc1e109b9c2a94d2730d2e8a1715d460d0dec5f322b82d6f0486270e05234fc8207a8b75b4c8fc13a9c31ad4101d5a839fa62d99a5fd17d4bc1f0f172f9247d68da1e361497e4f5a91db5aee47b918b0a338d6a366a7e62b1e84cce76df522692294da51ea92c0b681eb606fe6029f48d3b9d6451f5dcacadeaa6131097818513f009d6c50e7847db1e7df2775c2a0dcef5f28088245a1140ba9709e10b92309f2945e5ea05c967462ea94c10d6e6fe3b270f32e0208cfb407fc197af13748ba55301c2954f6a4c2672e300bc6ccd0fd4eb412c2c22e65f371fb6e9bfda6d5ddc724cab69f8ac5963f0b6332bb878cb58c002d8a39ecd4a890d93c51dacedabd2d98f212396df4c9add8884549139630011e8050bc81c62854468427dc057145cbe576d1724ce50e4f974b4281bc116cd40ee974dd2de7492369561e3a41153d676c1bc19cc49c34c6db4601fca759aeb84c07fae8acd9f7cd7252940c07c67b9195db7d3684db4ae2711a372c13f3b3d6bd52c683cd61ef29f1d8d67cb2c02c4010adad2e786e616f4b063b591182c4c1e214c414cf4b8a2d0abe57fe93501bb5488685387f000c59ad3e74c8d308bab2bec7082158ff097f7fa14d08359277864545b8a002709fefd01a68c2b36ce88eaad06eca989261a6001f88e68aa0a0c91023ac0a8fa4f0d0e0b0082853933c00270d0a0bccd9e4f722aa75c32dfacd3176222f7f75487d7d743646b4a3eb314ce34d5595daadd6daa0d73d09d6c34d262951bec36855b888e9432dcd23fd59bd86013ec2f85d819e2bcb647b048bfde98b4e2d3fc5969c953c4adadfe16df13d22c95ed222c0c37fb0a4ddb00a56672881780480fe5a001b01b0b69240cfd82ce2427dd59ee3ef1858830dc14294b5a0c7c676a769979a9c4b7c1802f6200e56df88a3b562845c2ffdf6c443b70d1634837cdca3212f336e0fc1b94d1a811096cc54a0c1836fa39e7e2176f69c87dc723a6c0c3d0e892aed4db2c9e33797d4d16587c40063a7dbbd2a6d39c271497f6db9b174828e2b63c7e10fe1ec51121b52da561fafc06c2f02391052ee2fb48d076b4f80e409b5818a0f675124900626e2910ecf21bc803cf985a5278431580c75db5a3dbce4c210f120cbb1f0064bc8358c399fd83a9be00b0d3ed7eabdf5b31d8edc625a64240332e8d3ace12cb03f213d7e19e0456a0b8a480701e86ddaaa7cbd555521c202d7862a3f3c4b406a78b5eb721cc3fc32460e003322cc4af112e947461011422906817b641d2102c0380d91fa8a492c7602bcec0f988393a42d18d095560f7f679d45a563cedea3fa8d83520698624796c816b558b2a0cdb7b0a2b9296d20cc513e5496b5df5a0efc962890af873714ef9e8f12f3b4411a3e288f1918465aa0821f0c9b54600b3cd151f2389ed36c7ba1de5b40c64a16db51d8bf587e6b501f283b8ef30ea1fc2fd034e752cf6ef1c11bc7c433e6a1ead059f6bb664b5826d2cf6e0cfa61db57f87f84a76a83a572d8e4ede7fdc07477e9abd67d2073b68a10b784c006e4b1a1d3db9befeafdb62752da43acd8bc907aad9d61cf3649ee2f2c50c34d1bfbe86a7dbe52a4b7b78fa98eece91c87487a5de7d750d4fc5469eeb03d07f9924224b7cf6eeefe4fe31c9c08a0106f418ee68eef1d56f28643b9a2dc621674c5e0c85b5e3914e6bc337ef554d0795f978f8ecace3d499bd33ef4987c0ca20f180264b264bdaf707882f161ba8df9a27691f8afc2f936a17ff7161fbf507e1033079772c770368cee2da7c63fecd00dd888359334773305bc188215c2574c8a401f63b9dcefe36b86a789dc7bc1c6df4eec55ce3f4c876cdcf98ea80ade79de2ad83b8ff380487c96cddf7dfc084dada53a1acb16f63516f69dfdffd247403433d7afabb0768403e613e8a44fddc34905fbc7f3ff0b68edb7d00bb3b8011902de8bb9396fe0116369cfedcab7edb539f49f3ed3316bd925248d59f62c1b0cebec7f522962c754866e4f02ee65abc159afbecab722cea70091847a854e31f17d464c95d5d41a9f7238f19d81e601976e47c7f14c747103d5c5f1f15b97480321692b3248856166a6127236aa3e1379f5f516934e94fb5a8abaf497ab08a302e89a9bdefbefbfbed66563474bacc332af33cb1f85b93793e2efdb3c83ec91f61922cc853d7492dbbf25e57d13bf99f4359937553b0295dcd2451036672cf8277198e26c0a2f2452615f3cafb135ec2f4c4999d652926c39209f94ec82cee66708d1a42c1184baec36cee010899f8348ac34939d4443258308527b93f80962b4d3ed8821d475bc3900ff49742ae2681f033044379beed69fdf16698e44a65c8e2b7595f52e21e4680c502967d464e7ad232d7a7d299637a8864843cb79e88c422a051a9ce65bc60db18fb2deddf365dd080f5e8ada974034e23b1ecf5e0b6417e3b65c08bdb36e899c1f268c4401fcdbfc57947c3c0c3e7cd6ebd21e326b7c33e43656cb4c1557c99f4c777272568b27b5bc3cf84cf07dc4c1f6fdd90296d0e5565d829067e1053ebe68c20f03d20b05c186833c215a124950240494c2e4151c80a3482bc06d94a583a52813caf41fc03e0ba15d07e10b228e2e98b061fe9686fd9709b36abcca4c299bcc05e7d926583bba04d3c59881bd0a5769a604bf485046e457940432a997be4bd71b3241451b0efb52f728d0756bec864be0beb5e1cc9ee7fe9eb29d8cd1529a483770723a6d9adac7e95c80bc31be7e1ed6bb95f9f0e2c340f3eedb05558626eb49fd5be81956d25ff373a9b17deaf01ca69bee0becda17e100754852fea4782d54be7e6a9e0d7ad7fbdc1259834c17f1090b7ae259a477cd3d612cfd555bc82c5fc42fc304bcef13470702a78cb280fdfb04fb9ca96aabde445a0910b88259e271442507b11e9939c748771265b30dd13a58cca012f231273340c2831e625d15119dfb1b868679c9d4402a16a2728d9d6848cda60783f08bf8ad8ffced91368015eae3876eee314c1d5bcfa0ca16c675b2f4cadba3b54d7f416a95194f010a387d40e4e7321649c5fc4c39f4e7e7d1aadf5955993b687a8d1c40e455a8a09754de9d543f0b7ae81d30ff1166341c84bccb99af7679e5cd08807e4c183beda804bbd6abf8fc04081ce19acb9907672607733eb704e01ef635da7074f52bcb291bf13ecc8b562146db8782d50b367c35e7e95bee5469cda056dc3bb49fd031790497ceb8213cb8f11f196f7a78c4b1680f5981975e6593f0e1a58fc351ecd9c627686ad7b989ea339731a93d30600945aa7b529d5af67b5ec4a7ef9d2b792a9345cc00cf16e4d62170b11bcf193c440771fa803a05fe01d603c0fc2eb328ed1ee19c9ef9481d3b2b62c6cb579bb66c879e40c2500e81f3ae33e833f81a8305f07000ff108421801a27fec0d333660c0b39f42000cf6962c4417788507873c20e78ca538d398c3a03aa49a4c593cc34dcd34984ee0c95e0702bea03f0b9a13571ce4a085f0b64ed5dbb014c6e2bc42dbd6595773416009f05a13cc761ed1e47c605ead13b5fe03df7edfb0d69429266b212e586fc569040b1d9accfb63e77b1117f90ab9e122953eb31d65a7d4e68bf51b67af999cd91b7589d2b02f607e71ee890a0df6a3cc24dc2af37ea87ddb6b5fb2a3f6551c1eaebc2c7e6e21c5600562e3be110b20023cd20ffa3c18393e2616e7a0a8ab4177957739d7332db794fb2be338f07d1e258aa554e235bcbe1bd99573e4e9111ee415e980e5f4f1f4606dc75c3c4547705b299366b7a499167846e21373dc065ab8421dc085cfc98f58f1e90469dd02f42bdfa9d4aed3d20b965ff76d2e7ecd6114bbf42e67d56740bfefb4face41d57246fddb2ffad062633863d1c2d93073732a672f58e21dc2bac8c10a20da1d7dc71a3697ac9d6b786a4874b9d8fe742a159bf136b6fa77c0dbf53b0f7b41dd4304f787bd31b97d2fd8bb22e4e1cf16f6eea91d81bd6d53bc7addb8c6b71681975ce126d2dc83f2f70faae5883acb515cb31c80e71bf69d0ff64a4e85c54996f04f19e6e3a462bb2da8dda87d15a625d1121ff7d455f8f80c6fb4028ff6e8047cc8c29e6d93f276edca236f724c89e50a448ab0d27ea3c4820d93e73584de364cd362472b1463f90621cafa1a9798d6b6faaa81ea2075480dfba670e35075ac29e1ede375c664eb479a13366e1814168c3529d3b96954ff9c9c566655188e6db7a3e99417574744b35f6b3556744376636b2bcbc167c4664d6329222e732511f1224c94498ffcc4c15e407b7cc90c72e40bc2f1409829f3650786eec623a8779a832ccdb7f0a88fc635c563cfd93fa713f3b7085b334ccba3f8f6a9fc9a1c5aae6d5c66f71b5a18869be21d0cc732bdd1746a4ad7319e14e574fb915efd4d7ec8fcf3b9f8dc77c8d0abea3575b71a5a5218d0d2ea3261fdbb0ef6ee634f94dd6f5fe3cf4aec6d503c6f482540731f156a21458c5a0340509118300c6a627560a10ecc5744da0d8a03047b7660e2f2cb5c5315de0929f55be922d0c89dfe4d8596f9053393583324a9beb56d2744afcd86deebe22b40c7b804662093ca57e4f1399d4b60ed6ce4fde8c3999981fde00b4e0297cddc2c25e670a8668cf88a7a8710b13a2a1c3ab36ad0eb1e605553e83bc6c28937501dbe35351e0ef58fd7dc0937cc2d99d1ebb9c9044f72f881ce73658cc2c737aca0bef861c20b668ee80c8280c8d90fc1d5825f8d56656f043296c2bd4189dc76889c7fa4ac894c6b3ef78f101991f95786c4a3bf0477932171f1d1b4a197f679f59d8b87fb8254527d016ecfe1e9f0ae524f53edabefdc6eee6fd602e2c546928b1fbd55b912bdfb45ed454aded043edc403cc87086f1f22a0ecd424e6a6e5c35e92cd5d11105dde99077865a67a361f25468837b89995db192a548bd03a585e35c5e7fcce51b1ff996f8a79989a060ddea5368dbd22fdcbe0f16a8f460cac5c7ddbed15ec5c8868bdf0faebf0957b4b7ceb44b406057c95140677fe3522ea0705bd85376104cb8c9fdd9c1df4d6a530351070f0fbb792bf7d7cfd1f6e21db48e026ade3cebd12d9eacbabbf5b44371a1be14ffba97d9bbd04500e3faf683e5fffab4562a676d66ef8eba78cc995fbd43bf49e6d6e5d7d25ffd7f647f2d7f6a369da6a00bc9abb4a007cccff2be15f000000ffff010000fffffff571603c610000") 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 0df76335..8c73e0b8 100644 --- a/gui/app.js +++ b/gui/app.js @@ -254,13 +254,25 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { }; $scope.editSettings = function () { + // Make a working copy + $scope.config.workingOptions = angular.copy($scope.config.Options); + $scope.config.workingGUI = angular.copy($scope.config.GUI); $('#settings').modal({backdrop: 'static', keyboard: true}); } $scope.saveSettings = function () { - $scope.configInSync = false; - $scope.config.Options.ListenAddress = $scope.config.Options.ListenStr.split(',').map(function (x) { return x.trim(); }); - $http.post(urlbase + '/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); + // Make sure something changed + var changed = ! angular.equals($scope.config.Options, $scope.config.workingOptions) || + ! angular.equals($scope.config.GUI, $scope.config.workingGUI); + if(changed){ + $scope.config.Options = angular.copy($scope.config.workingOptions); + $scope.config.GUI = angular.copy($scope.config.workingGUI); + + $scope.configInSync = false; + $scope.config.Options.ListenAddress = $scope.config.Options.ListenStr.split(',').map(function (x) { return x.trim(); }); + $http.post(urlbase + '/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); + } + $('#settings').modal("hide"); }; diff --git a/gui/index.html b/gui/index.html index 1dc1ac0e..11fa62dc 100644 --- a/gui/index.html +++ b/gui/index.html @@ -515,11 +515,11 @@