diff --git a/auto/gui.files.go b/auto/gui.files.go index d62c03e0..79e952bb 100644 --- a/auto/gui.files.go +++ b/auto/gui.files.go @@ -28,7 +28,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["angular.min.js"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffec3d6173dbb692dffd2b505d5a51b64c3949aff32e8ed34b9df49d5fd32413c7bd9b71dd194a8424d614a902641c4de2ff7ebb00480204405171927b6fe634efc512b0582c168bc56277814e26e4345f6f58b2581624381d910747f7bf27ff88aef329f929670b1265314064054ba66591334e024e292996949cbe7af9f6cdd94f176f5fbd3927f324a5a3700fd03d4d5322d071c228a7ec1d8d4372c129c9e7d02ce184e7259b5132cb634ae0e7227f4759466332dd4067e4d7b3b787bcd8a41471a5c98c661cbb8b0a3283da2925f3bc0492924cd0f0e2ecf4f9cbf3e7a2fb706f6fb2ff274f93ac205396df40df8f48c14a3a86beb222c94a5afd5ea725c7ffcbdf647f022d17693e8d5272ef1199472907a0285b9469c4d46f04da1b96f085032f66c5f0786fef5dc408df64331856b62027558b7095c7654a83615d371c93cbe13ae2b3285d333a5b1661c1a28ca751418757a36381a864e93402f42764087c13f8ebf6210c609e2c82790905499e91e0deb228d6af59fe2e89291b937b35beaa6c443eec11f81880614ce75199163c7ccfd9fcbf6804652fa395e8f47f0e4fcfdffc7cf836bfa61974bea5ed699e5f27b46a6bb4944d2d8242e0dd791115c9ec67982cfe22c7ce0349247e8031f3e4fd23324c818d87c3715dc1cbb9ac08ffe4793614e5b7a3635f3788873246e317381dd102e601c802786c63b2b460799a0211c3f3aaf4b460294c96c6673ecbd7200c82153a9fe17b9acf2284aa588db308bdbf7b06d5c095a3e3ba74418b57bf40114a5b538ad31cb142ca8e10b28a79a253a430a3820e0e001f6e8f5b95201176f96a73f60ca764689466b0d810c9e59503c95986e337c853f56b9617f92c4f4f97c04b58a235991a0cf01ad582851bd444f61ceb6c6a607dd0d4269dd175ee182916b302981af9ea5e03d3137ae324af5c2f1848da5936cf5573bdf65e9e05837a22e530cfcbd98c723ed0c5a09ae26aea5046015ddd12461bb1d932188558735cc32673126089dede945b5c1612a469755bcbb8318794c64f1b71a8a1876c3584d5f18ca6daa281c23861aa9c04f07da4d7e232c04a9c78bdbcc8cbd9122b2ed6312a275975db26e36ce62182d115a873271d765545449cdf6429a8032721112f284bf8754d8af853cf0cac2c315f34a6b1314bc8f96fc4bab3782fc791644911684c1755c1f0df325adce4ec5a88ee7084b21aa5c17009ba65d882b65775c3ac8a84668def4846d3b09b0884e5cbb240267643bad48d49b483b93f47a0ac6dcefa87c56851b2ccc70ef784f8b8fe611acdae6396af410eb8d83a40375fd3cd348f58acf6e55bcfa4740db0561e7318c712819d0b5de8fc101006d5de7c408613be01895c018d5cea096d53862513b507670ae8b14b0424462003db6b248fa46e0ddcd429e4d504e9ed9aefafa67fc20e1202cf78a06bd95138cfd9f3083456833c89dbe871c68acd9a82e5a66beecb24be222727a0d6c112834d1b8cb761bb297ec0807b49c1b823735acc9668e151e8955a706e3e8bae7e446a4f8650403334182fde9c9de6ab759ed1ac4082fbce428be3da305a4c773151fc26148d401b6b07f113183b07923ef720705ab03e54f8c9136b5c55950fc55766fbceecf74d435dbe7dc29cebc13d66cdd0eabdaed10ac872b439d0dc0303eb26188d0d8802eda500610e6bb3704426e4fed1d1910999c46aa7af3e9a1509edcd81c112c2b58a27201fcbc5de27246419f1573719d8c66bca8a8d983acf14554724c752b04a0ab6f160c14e85fc25d9748d16c2af51b10c57d1fbe0684cfe46f6252f05c459f6d3a6a0fc6d5ec0a9ebd061f35a50c8bc22f648448d372f8b6d5dbf2a8b3e7d1b60dece6fe1600aea8d04d4c75a8b29477d87e000bcf548397e9ce786f6a6b26d31487bbef73a689f02dcddb5cc6e542f78162cb9b1f96271dbd270ed3f08b7750792860858b2d97586b6916e0b183dd8a861a2de4529acb16fb00b2fe6f3225fafa1672766e11b28e41a1ea226757423ea9bd615b8f87b79741516f90574c04e616a60eb3f9015302f535eb0e0fee8d81c876a7e420668d5836936201f3f92a6f42c4ee9a03d16597d00d524183454a269fe9ab219e87b3c41cb893920836f4703e768154bb4013966fc348df85798f0048e7a5f60b6633c1bb2cf36d9c68c0d13981b6fcf6a210e7d46758386cb89f7625ab36415b18d1393837dad393485e28b4f24ec93be113bd82bdd77425f0bfc47fdb01a53b89e15302a8080ddc22927b8b0641713178046c3719baf62379aa739d8f3d08d5b2da297c6a116b1f874be68fb2050cda30fc2debc5483f025fc3d7b76650a1d02ba0c7d2c0fd1ca4ba9e8169908ac706d6ab56a5d932217f6cfb0a7b55cab4e29a824c0c5d2ee1976a16f476d8c1d5a67f82ce16af8b5367670169d16ff1a7ccdaf77e5a73acaeec2b415587bdccf2d5b59ffd3b2cbd68fbd78662bc3ad3cf3eb461cebd338665f99638a30c134ec1ed8d0a5db7fec986f8de5ff6743682981ce7dca3f94dfe8d66940624c4a85a0693e740f990a421daf5df47d49f6a409ecbdbff9fbde32cfb0ddc6d8b1c51d73b83882159e6944c8408f200086b4a0ba470ae9adbacd1a561289f5d8386fe01015de30a5d9a25882c945ee7b465cdb071d0355d8c056f60a830a516d950665ada8da9e26ca60e0b350ea7986ee3d8d75908e319a125359ff70a6fdc16d44608cf5a56be0ed29cea424b49a05ad09d3f8d2972941298f5ca2d1a89345dbf8d38739bd3943e3a438a7057aadb997339309986ad7944404fdd168a340db4d5d5d716bb57eb5ae4ed855d817010323b2162a20fdd0dd46105ebc799e45d35484d70257f553d8ded660da902760d5ba30fdfde2ac9b0c00d01b62c840f1a1afaf1d631c9ec33c8fdec1eea1a29115532d699be1a222ff387ff532c4007ab648e62d2a350ab141be2e44886929a2d4fc11f930c43c045080876f4126456c68bd4e1319809b88d8f0ed6ddbbbb1ceb9e5eb83be606c40d05874e2f274585e0e9fdf10704d441c6b1797a83bfa2a1c767a59cb3071b8f81d33d15bc079c9e09f7c4565f6c24c8678cd39abc3bedf54c245ff2aa394bba57c6c0bf7887cfc680d5f7eba5182c48e4d096fe925455b9bbd98cfb2a4b36b8429391e5365881887b88c3899529a11aad65bce489c70f1ddb243bbd6e977df399771bd4e1f3b8e9fda34b91b0933f7c869c30a7fee5d0842c5b1333987f7db96b197d3559e00b949d2946084180f86535a4b1008a10a19b6186d4f7b78c1e9db17e7c21b630880aaf00fc4ce563023b3ee413c0525b2019a6f48a5130946f5d374b3e7e8c394788fd6d5e4ffb803895f6d5b12efa5207c9170d089caf6376c4e1beabc602107955904c3312afe68ad29abf79a25f73e0415bd0253a049426851d1287d23f4b8d7bdc90c302e3df0f984857c78f59611be3627d6c400106f932245db66f0a62e1af8a17fcae30d516e53a90c13ae75170e8c413902f3bbc6a93d5b93c23cb4f778679e8eaed1cf6f128c41dcd0e91a755ebd1e616d6622f4ace9cec0bd5c5aeb4a2633293460f621c9c3962c742c5f7b95b69159e7751337c8cedb6445f3b2081a9bc25efa3770a4c96fc23a0f47eba5fadaea662cf4ac47ac3b139e2495e25f5374558e913f91c02b9f17a2e52788675935fc6ad2a906e934746c0bdebb56fb0f51439264b09d60be27aa6975f6d606de2353a26f4a8dcfb25219369fa49ddcfcd492767ad89fae2c9f5d27f6b6a762718c1f8f4e4ecf41eb245da12d1903435db5b817d2f7b0fbc4c107587c55238b14ec02d8f7fc3d6c551d4a5e819dd3742ec3eb2d278ee1c3b1c7db1056f9cb28876d919cd4e7ecba38fc334f32d82989432123f073a02467e13dd054af9920da383ce394556cfb0ca7acc4f6dc188c87de92f82f2d638d2ff39ba11b57146f41e69ac50f3abf306b6f93452ba0ffb6c74cb694a8732add305f9fd1314d6941b732dbead15225bad5de62c9f6a439171ffa79e39cae946a7d6846b5be14646d0f4d2120db74685ba9484e41d34126a8182967eec4015127b21e5aa85b153d067b8701b7076d4f806df03a0edf9d5253f9dc4ed1f110e7191d93e4786f47a1aafd938e515950b5566c3b1181b76934a3c1844c8096217457971c562545fe22bfa9920faaf380d543ad145c1af4aee70d6492ad19640294c88e2109796c2e09e957868a830357744987bd4cae74dfbfc9a28ee37bd5b819f1b105aa28b74d1ffc4c198dae7b449d641a1760f22c1d39e275c99781bdab7a5448c873560455c02762f453577adf659183d9c62a5c3edb490fad78555b6fcd865bff568baef277772ed704ec95b676fb04c9cb5a6c04e139b64433eb1988d207ef1722c788a334ed9e874a4169b3decc5e7bf12bc1b3a2071a98e6a3e76eab128d76744df4140d996466cb862f8240433c4236e9b1f59594add2314b69c49e57396d9d56927ecfc5a0f3d2a45a45bc0ec9fd2b41d6d603826837119478ecb8394bc0ac4e37f6b4f282e9a436dbf2eec2db38ef3b45980b231afeadb79259ad4cc7ed801cd68dac0b2fdacc011e8f93689df711980ace4c7af71e6dde40f56e471bd5c270de798f365a1b109754e4a95473f6c1b69f757065fb58c9fa96f1b3adabcb4abf5cd937565a46ab03958a39a335dff89add0021466784121bf004c3f956cea18b5401891703b59e3a5c0776db5f285d438b836eda5e472c5af1f01a805dd2b70d7b77fdc78fe4df3ff5588b02daf39c83dd7e86730e1c022db1df2aef1f0c997a04d2fbe9c7bfaf3f6434563ac72c6f65aef32d26ba418e65a22b044e71b1a06a33ebf2caae3317b06613d86bb8d6f032f1020f5f4e2c2ea3d8dd5d56698b13d997db0ed106210d820f52cb3c5284745ccb68cc7c71e276d3dbca71ae611cfac2360224aca151ec310cab68b2c4391cdb10526b008cdd5ad4a33a410c98cc6852887ac146d8cae13739d4e68663a43d1afc626a38572e5cab9d0bbd7d8890a7f2aa8d9444f5cb779040b9e7b8cc1321e8bead79f703f7128e2fbcb59e2b09b1ec5ab03a7ccbccbbc762fa4adb94473c86e95bdb349551a692ac022d376534f2b861253a71267318cea25278210763e2099bc959ecd6e4bdd4d6e7715729a132a4c5b16b1aa96f5f495c68f1f4f5d92f7463f069668a0adaac35148bb2385f9d8b6c95e0e1d1983c7ce0f1cd6649e1cb7d71678ea818c6aeb76caa0b7fae6b365b7adcf1da6ac534f7d5540d42bd37209257ec83f716a25432ce8e44d54f1f7889f245bfb7c4c795e3ca70fc7b1d2f16ae97cd39d705eff2bcb880ab5710f0efafd13af0af0e2f02910b1eb4ab75d3de1cbd9ef6e1495d994cc85947464d4613f41490a8c293616e0d9da59828686f8080ed86929b282b304f24e2d722b85772c000bf5732ff6eb6cc93190dc94f6581d0608e0d0bd1c6850ed34dca05a25991b8643268084a2c4a31925caec784e788057e206af17a09b901a29dc88098023d07e2c91a4ae6098323e7bb04181f92ff5ed24c3d4823b1241cef6b72ea260cdfcfa9f101e82a67e23d9b0c1fb2616409ff70122df23152a738e1c2f35749b98870ef59b5b8bf09127f430a715de4b37205f48492c2c6b91bfcf808fef7c7c770fff877be3f6a1ac1afdf4fe09fe0f28fe3abfd51b87f6ff4f10ff87702fbcebdfb03c7b547b15d3408bc771f4d5230c8db343ac11b67cdf559bc6076bc8ade1f829089aa8747fb0fbedf7ff8433b2d0a3fdef4fe8ab8038d258ff55e0e89c4b92ff200dc08f083db6679b7c7086a62b79980bb2bcdddb20edde1de8e8cc31e744835b02b09c66b2e3bef625d49081d9d9a8fc0ecfccc82138beeb8f11db18536bc78b3f58ced57c732291015c08b882d503fa2ea408592e26f504bb43a674bce56e911dbed235169cab861145a86a6d0e6771b8d9e53f8b908c340f74b2a9375bc1712ab9d58244389b7a71cc93df2211284f81467834f6a0713c4299f5418b89f5410d4ee28d392d02e2ba83558b7d3af7d65a27e64c860a778dead75a49a3f93b6fe09f9fee83f7e386ed5250c0ef139433bfafe0f0ffff67deb202f30863fa7d18293ef00bfc475d0b41b8d84e7c151e1b9db2a1f1ab2cebc76670aa581df8fb41fc6863889741bb1f279a32d07f4fa7e1b6afab6bbb21d668365cf92b8fb56ae33d030508f9554183e4d50bddabeb645b7085e34cd4bbf5b1f57a680e895dfa2bfa90406df595650f60eda9844c944c0a3ea65b8ba63cd440fa23199567468b76122712f455e186feec3a06b5c014c9d00ed3b470acd63053e72cdbeae3155916af64435532cd8d3b04a1fa0c06b45b35b7865bb06b36cfaa46e0adcd178235c261ede4461b3e8b16be722e8eebd41f0444760d38007a3b4c22beeab693b72eaf0e518e1b0d525ab5c578a0c252cd5b532bb43e18258e93da69a37a995f6b2d23b4ba5b76885a92c237dd4a93c116a2c35a9484d2a60ff4d5678510224794cb2d220264e1649c1c70854b94c714a00d4be0cafd01f55b4883f120139d1efa98baf69be905fa2a9e87a840fa1d435f78f2acf16f64ccc4757804630b625667368924c83c7baaf25a519c816b6da93644f256de2cfc78fe4a1da6dc435a1b29007fbc1608ce9a1e755e4f066092a9a04b2be8abe3e26f045aeb38621b25545bca404535e72458ea024e4f81869f040d364aaeb8313854181c0c82517922c5015b2f731c191014b0c9a6adfa0b116148891842338d63c60a9c2e0c32c821691f96c6535df0a9bf6c857b62e8b31110f5e3884425443af3f27ef691cd42267b46a746eeb45cd8aa06992e1bdeafef4b4f5a22814825beb4edf467a44bccf62482c4f40cb3ff89eeceb7fac2088809c9c38408f5dbd7673e9c1084fb243f2f76417d2fad07407627eed474c271577e8fe1777f7fadb180cdff5ade401db0cb7c9d98ae24bbcff4472261e0ed1fe7470b30d7a1739db85b23e24dd45cc7ad1d249c41d7abffe02420666262b3e51c60ce29dd7933d9d46e94db4e12fcbd594b2af22dfce977674f27bb1e935b0f83393eb2256bf752fae29454c98078acf22e17472f9fbe4f7dfaf26ed009784051b427ca9cd8213f2d0c3196df44eee0cc2309ce06949229426808efcf0c148c5f02683ed5b276cf418f6fbd7e4a2f72d876d4c14682e0daeddbfdac62bcc8ccbeeb6325daf5b0ad0c665feadca87f651138b434af28e06c35c78bc644a4b175d3a19f231f9476478aa251ea8ced56bf575b178337a9696b15523ceb5edf40475fb12709fa8af5a17b71a5aba5ae34bd400f8580a0f1e624f06057d5f0c48b63814fe819381e9d7bb54384338d60c9e3c9e88964faa579abbd85466c95fa588586b4ceae2d15f253406eab2c5af4889368a34c9ae1f3538041bc684a6ab31898a82c1816856b0b42d945816de0369e394f1b0ccf832996bb70cf129f1dfa2d49df122de5beb1323af3e32d405eab14c630c60091b1ab8ed04969401677f43a8a4d8b4b825f2708eada69a634a8fbbd703b9ea200e5dc9082efdc89c4429a351bcf924f2843bd54fdf761af062a340f859b963952819abf963b6b9b512533bc5594c28fa4a92589767e16bfb7fa1764f9bc9b36ea97653e00e0f6502e58f497c323c6846ec705782e25dfb06577104616468a80bb2d7087d0ba3d750efcac7ba13678d2b64f985578c70e0eebc413e1fda5bd6054ba146e00b97c52afdec7b688117b5a18bff6ca50572f14aa3a322815dd2513c4b73eec2238278adf2dbeabf74801cfc5f000000ffff010000ffff9ab7716ba0670000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffec3d6173dbb692dffd2b505d5a51b64c3949aff32e8ed34b9df49d5fd32413c7bd9b71dd194a8424d614a902641c4de2ff7ebb00480204405171927b6fe634efc512b0582c168bc56277814e26e4345f6f58b2581624381d910747f7bf27ff88aef329f929670b1265314064054ba66591334e024e292996949cbe7af9f6cdd94f176f5fbd3927f324a5a3700fd03d4d5322d071c228a7ec1d8d4372c129c9e7d02ce184e7259b5132cb634ae0e7227f4759466332dd4067e4d7b3b787bcd8a41471a5c98c661cbb8b0a3283da2925f3bc0492924cd0f0e2ecf4f9cbf3e7a2fb706f6fb2ff274f93ac205396df40df8f48c14a3a86beb222c94a5afd5ea725c7ffcbdf647f022d17693e8d5272ef1199472907a0285b9469c4d46f04da1b96f085032f66c5f0786fef5dc408df64331856b62027558b7095c7654a83615d371c93cbe13ae2b3285d333a5b1661c1a28ca751418757a36381a864e93402f42764087c13f8ebf6210c609e2c82790905499e91e0deb228d6af59fe2e89291b937b35beaa6c443eec11f81880614ce75199163c7ccfd9fcbf6804652fa395e8f47f0e4fcfdffc7cf836bfa61974bea5ed699e5f27b46a6bb4944d2d8242e0dd791115c9ec67982cfe22c7ce0349247e8031f3e4fd23324c818d87c3715dc1cbb9ac08ffe4793614e5b7a3635f3788873246e317381dd102e601c802786c63b2b460799a0211c3f3aaf4b460294c96c6673ecbd7200c82153a9fe17b9acf2284aa588db308bdbf7b06d5c095a3e3ba74418b57bf40114a5b538ad31cb142ca8e10b28a79a253a430a3820e0e001f6e8f5b95201176f96a73f60ca764689466b0d810c9e59503c95986e337c853f56b9617f92c4f4f97c04b58a235991a0cf01ad582851bd444f61ceb6c6a607dd0d4269dd175ee182916b302981af9ea5e03d3137ae324af5c2f1848da5936cf5573bdf65e9e05837a22e530cfcbd98c723ed0c5a09ae26aea5046015ddd12461bb1d932188558735cc32673126089dede945b5c1612a469755bcbb8318794c64f1b71a8a1876c3584d5f18ca6daa281c23861aa9c04f07da4d7e232c04a9c78bdbcc8cbd9122b2ed6312a275975db26e36ce62182d115a873271d765545449cdf6429a8032721112f284bf8754d8af853cf0cac2c315f34a6b1314bc8f96fc4bab3782fc791644911684c1755c1f0df325adce4ec5a88ee7084b21aa5c17009ba65d882b65775c3ac8a84668def4846d3b09b0884e5cbb240267643bad48d49b483b93f47a0ac6dcefa87c56851b2ccc70ef784f8b8fe611acdae6396af410eb8d83a40375fd3cd348f58acf6e55bcfa4740db0561e7318c712819d0b5de8fc101006d5de7c408613be01895c018d5cea096d53862513b507670ae8b14b0424462003db6b248fa46e0ddcd429e4d504e9ed9aefafa67fc20e1202cf78a06bd95138cfd9f3083456833c89dbe871c68acd9a82e5a66beecb24be222727a0d6c112834d1b8cb761bb297ec0807b49c1b823735acc9668e151e8955a706e3e8bae7e446a4f8650403334182fde9c9de6ab759ed1ac4082fbce428be3da305a4c773151fc26148d401b6b07f113183b07923ef720705ab03e54f8c9136b5c55950fc55766fbceecf74d435dbe7dc29cebc13d66cdd0eabdaed10ac872b439d0dc0303eb26188d0d8802eda500610e6bb3704426e4fed1d1910999c46aa7af3e9a1509edcd81c112c2b58a27201fcbc5de27246419f1573719d8c66bca8a8d983acf14554724c752b04a0ab6f160c14e85fc25d9748d16c2af51b10c57d1fbe0684cfe46f6252f05c459f6d3a6a0fc6d5ec0a9ebd061f35a50c8bc22f648448d372f8b6d5dbf2a8b3e7d1b60dece6fe1600aea8d04d4c75a8b29477d87e000bcf548397e9ce786f6a6b26d31487bbef73a689f02dcddb5cc6e542f78162cb9b1f96271dbd270ed3f08b7750792860858b2d97586b6916e0b183dd8a861a2de4529acb16fb00b2fe6f3225fafa1672766e11b28e41a1ea226757423ea9bd615b8f87b79741516f90574c04e616a60eb3f9015302f535eb0e0fee8d81c876a7e420668d5836936201f3f92a6f42c4ee9a03d16597d00d524183454a269fe9ab219e87b3c41cb893920836f4703e768154bb4013966fc348df85798f0048e7a5f60b6633c1bb2cf36d9c68c0d13981b6fcf6a210e7d46758386cb89f7625ab36415b18d1393837dad393485e28b4f24ec93be113bd82bdd77425f0bfc47fdb01a53b89e15302a8080ddc22927b8b0641713178046c3719baf62379aa739d8f3d08d5b2da297c6a116b1f874be68fb2050cda30fc2debc5483f025fc3d7b76650a1d02ba0c7d2c0fd1ca4ba9e8169908ac706d6ab56a5d932217f6cfb0a7b55cab4e29a824c0c5d2ee1976a16f476d8c1d5a67f82ce16af8b5367670169d16ff1a7ccdaf77e5a73acaeec2b415587bdccf2d5b59ffd3b2cbd68fbd78662bc3ad3cf3eb461cebd338665f99638a30c134ec1ed8d0a5db7fec986f8de5ff6743682981ce7dca3f94dfe8d66940624c4a85a0693e740f990a421daf5df47d49f6a409ecbdbff9fbde32cfb0ddc6d8b1c51d73b83882159e6944c8408f200086b4a0ba470ae9adbacd1a561289f5d8386fe01015de30a5d9a25882c945ee7b465cdb071d0355d8c056f60a830a516d950665ada8da9e26ca60e0b350ea7986ee3d8d75908e319a125359ff70a6fdc16d44608cf5a56be0ed29cea424b49a05ad09d3f8d2972941298f5ca2d1a89345dbf8d38739bd3943e3a438a7057aadb997339309986ad7944404fdd168a340db4d5d5d716bb57eb5ae4ed855d817010323b2162a20fdd0dd46105ebc799e45d35484d70257f553d8ded660da902760d5ba30fdfde2ac9b0c00d01b62c840f1a1afaf1d631c9ec33c8fdec1eea1a29115532d699be1a222ff387ff532c4007ab648e62d2a350ab141be2e44886929a2d4fc11f930c43c045080876f4126456c68bd4e1319809b88d8f0ed6ddbbbb1ceb9e5eb83be606c40d05874e2f274585e0e9fdf10704d441c6b1797a83bfa2a1c767a59cb3071b8f81d33d15bc079c9e09f7c4565f6c24c8678cd39abc3bedf54c245ff2aa394bba57c6c0bf7887cfc680d5f7eba5182c48e4d096fe925455b9bbd98cfb2a4b36b8429391e5365881887b88c3899529a11aad65bce489c70f1ddb243bbd6e977df399771bd4e1f3b8e9fda34b91b0933f7c869c30a7fee5d0842c5b1333987f7db96b197d3559e00b949d2946084180f86535a4b1008a10a19b6186d4f7b78c1e9db17e7c21b630880aaf00fc4ce563023b3ee413c0525b2019a6f48a5130946f5d374b3e7e8c394788fd6d5e4ffb803895f6d5b12efa5207c9170d089caf6376c4e1beabc602107955904c3312afe68ad29abf79a25f73e0415bd0253a049426851d1287d23f4b8d7bdc90c302e3df0f984857c78f59611be3627d6c400106f932245db66f0a62e1af8a17fcae30d516e53a90c13ae75170e8c413902f3bbc6a93d5b93c23cb4f778679e8eaed1cf6f128c41dcd0e91a755ebd1e616d6622f4ace9cec0bd5c5aeb4a2633293460f621c9c3962c742c5f7b95b69159e7751337c8cedb6445f3b2081a9bc25efa3770a4c96fc23a0f47eba5fadaea662cf4ac47ac3b139e2495e25f5374558e913f91c02b9f17a2e52788675935fc6ad2a906e934746c0bdebb56fb0f51439264b09d60be27aa6975f6d606de2353a26f4a8dcfb25219369fa49ddcfcd492767ad89fae2c9f5d27f6b6a762718c1f8f4e4ecf41eb245da12d1903435db5b817d2f7b0fbc4c107587c55238b14ec02d8f7fc3d6c551d4a5e819dd3742ec3eb2d278ee1c3b1c7db1056f9cb28876d919cd4e7ecba38fc334f32d82989432123f073a02467e13dd054af9920da383ce394556cfb0ca7acc4f6dc188c87de92f82f2d638d2ff39ba11b57146f41e69ac50f3abf306b6f93452ba0ffb6c74cb694a8732add305f9fd1314d6941b732dbead15225bad5de62c9f6a439171ffa79e39cae946a7d6846b5be14646d0f4d2120db74685ba9484e41d34126a8182967eec4015127b21e5aa85b153d067b8701b7076d4f806df03a0edf9d5253f9dc4ed1f110e7191d93e4786f47a1aafd938e5159508d2e73e9b7bb9e067008f6ba95e94922778524e4b129b0d2eb0b150707aed88f0e7b995ce99e7953cf771caeabc6cd888f2d5045b96d98e067ca6874dd23262493ac009347b0e588d7255f06f69ee759e021cf591154e19888d14f5d877d853607a38a55b87c968d1ef8f02a9ede7a0737e6adf656e58dee5c4c0958136dddf3099297b5d808c2736c8966d6334ca40fde2f448e114769da3d0f95fad066bd99bda0a52294e059be7d0d4cf3a073b7cd8726353a0e7a8a864c01b365c3e7dfa7211ef09ae4d5fac2c856e998a53462cfab8cb34e1b46bf8562d0796952ade25187e4fe95206babf92eda4d04251e2b6bce12307ad38d3dadbc603aa9cda6b9bbf036aef54e11e6c2c4857f715b4da3190d66b5321db7c3655837b2aea3683307783c2e9c75de47602a383325dd7bf07803d5bb1d3c540bc3b5e63d78686d405c52914552cdd907dbbad5c1956562a5d25ba6c9b6ae2e2bfd7265df276999940e542a228cb676e309760384183b114a6cc0130cb65b19812e5205245edbd37aea38d8db6d7fa1740d2d0eba697b1db168c5c36b007649df36ecddf51f3f927fffd443270a68cf530876fb194e217044b3c47eabbc7f3064ea1148efa71fcebefe90d158e91cb3bc33b9ceb718d006399601ad1038c5c582aacdaccb2bbbce5cc09a4d60afe15ac3cbb4083c1a39b1b88c62777759a52d4e645f6e3b441b8434083e482df34811d27169a231f3c579d84d6f2b03b98671e80bdb0890b08646b1c730ac62bd12e7706c4348ad0130766b518fea043160aaa14921ea051b612bc3dee4509b1b8e91f668f08ba9e15c996aad762ef4f621429e99ab365212d52fdf4102e59ee3324f84a0fbb6e6dd8fc34b38bef0d67aae24c4b26bc1eaf02d33ef1e8bc9256d531ef118a66f6dd35446994a810ab4cc91d1c8e32495e8c499cc61388b4ae1231c8c8927a82567b15b93f7525b9fc799a484ca9016c7ae6924a67d2571a1c5d3d767bfd08dc1a799292a68b3d6502ccae27c752e724982874763f2f081c7739a25852f33c59dd7a1220cbbde81a9aee3b92ec16ce971c74ba515d3dc17473508f51a80482db10fde5b8852a9323b12553f4ce025ca179bde12bd568e2bc32def75bc58b85e36e75c17bccbf3e202aede28c0bfbf46ebc0bf3abc0844a676d0aed64d7b73f47a528627b1643221671df92e194dd05340a20a4f86992f7496621a9fbd0102b61b4a6ea2acc02c8e885f8bd05bc90103fc5ec9ecb8d9324f6634243f9505428339362c441b173a4c062917886645e292c9901e28b128c5386fb91e139e2316f881a8c5db22e40688762203620af41c8807652899270c8e9cef12607c48fe7b4933f55c8cc49270bc4dc9a99b307cdda6c607a0ab9c89d766327c66869125fcc349b4c8c7489de2840bcf5f25e522febc67d5e2fe2648fc0d29c47591cfca15d0134a0aeb13f924f8f111fcef8f8fe1fef1ef7c7fd434825fbf9fc03fc1e51fc757fba370ffdee8e31ff0ef04f69d7bf7078e4b8962bb6810786f269aa46008b6697482f7c19acbad78fdeb7815bd3f042113550f8ff61f7cbffff08776d2127ebcc9f71571071a4b1eebbd1c1289735f44e9dd08f083db6679b7a7026a62b79980bb2bcddd7202ddc1d88e7cc01e744835b02b09c65b2b3bef625d29021d9d9a4fb4ecfc0882138beeb8f11db18536bc78b3f58ced57c732650f15c08b882d503fa2ea408592e26f504bb43a674bce56c90bdbed235169cab861145a86a6d0e6771b8d9ef1f7b908c330f44b2a5369bcd705ab9d58a42a8997a11ca937f2991084f81467834f6a0713c4291f3c18b81f3c10d4ee28d392d02e2ba83558b7d3af7da1a17e02c860a7787cad75a49a3f93b6fe09f9fee83f7e386ed5250c0ef139433bfafe0f0ffff67deb202f30863fa7d18293ef00bfc475d0b41b8d84e7c151e1b9792a9f01b2cebc76670aa581df8fb41fc6863889741bb1f2f1a12d07f4faf6196afab6bbb21d668365cf92b8fbceac33d030504f8954183e4d50bddabeb645b7085e34cd4bbf5b1f57a680e8957da2bf780406df595650f60eda9844c934bda3eaddb6ba63cd440fa23199567468775522716b445ee76e6eaba06b5c014c9d00ed1b410acd63053e72cdbeae3155916af64435532cd8d3b04a1fa0c06b45b35b7865bb06b36cfaa46e0adcd178235c261ede4461b3e8b16be722e8eebd41f0444760d38007a3b4c22b6e93693b72eaf0e518e1b0d525ab5c578a0c252cd5a52fbb43e18258e93da69a37a99594b2d23b4ba5b768858926237dd4a93c116a2c35a9484d2a60ff4d56788d0124794cb2d220264e1649c1c70854b94c714a00d4beaaaed01f55b4883f120139d16f918baf69be905fa2a9e87a84cf94d435f78f2acf16f64ccc2751804630b625667368924c83c7baaf25a519c816b6da93644f256de2cfc78fe4a1da6dc4259eb29007fbc1608cc99be755e4f066092a9a04b2be8abe3e26f045aeb38621b25545bca424188545aec81194841c9f0a0d1e689a4c757d70a230281018b9e4429205aa42f63e26383260894153ed1b34d6820229f217f94df53e87e058f3bca40a830fb3085a44e6a392d57c2b6cda135cd9ba2cc6443c47e1100a510dbdfe9cbca771508b9cd1aad1b9adf72e2b82a64986b79efbd3d3d68ba250086ead3b7d1be911f13e5a21b13c012dffe07bb2afffb18220027272e2003d76f5dacda507233cc90ec9df935d48eb43d31d88f9b51f319d54dca1fb5fdcddeb2f57307c75b792076c33dc26672b8aefe4fe13c99978d643fbd3c1cd36e85de46c17cafa90741731eb454b271177e8fdfa0b08199899acf844193388775e1ef6741aa537d186bf2c5753cabe8a7c3bdfc1d1c9efc5a6d7c0e2cf4cae8b58fd4ebcb8441431611e283e8b84d3c9e5ef93df7fbf9ab4035c12166c08f1a5360b4ec8430f67b4d13bb93308c37082a72589509a003af2c3072315c39b0cb66f9db0d163d8ef5f938bde9716b63151a0b934b876ff6a1baf30332ebbdbca74bd3d29401b97f9b793c518dfecf251138b434af28e06c35c78bc644a4b175d3a19f2a9f7476478aa251ea8ced55bf275b178d1799696b15523ceb5edf404753712709fa8af5a17b71a5aba5ae33bd100f8580a0f1e624f06057d5f0c48b63814fe819381e9d7bb54384338d60c9e3c9e88964faa3794bbd85466c95fa588586b4ceae2d15f253406eab2c5af4889368a34c9ae1f3538041bc684a6ab31898a82c1816856b0b42d945816de0369e394f1b0ccf832996b7700f1a1efdfa2d49df1225e43eb1323af3e32d405eab14c630c60091b1ab8ed04969401677f43a8a4d8b4b825f2708eada69a634a8fbbd703b9ea200e5dc9082efdc89c4429a351bcf924f2843bd54fdf761af0daa140f859b963952819abf963b6b9b512533bc5594c28fa4a92589767e16bfb7fa1764f9bc9b36ea97653e00e0f6502e58f497c323c6846ec705782e25dfb06577104616468a80bb2d7087d0ba3d750ab8fef8e91c815005293d8df412f2a3df35013e9ac71853cbff08a130ee09d37d8e7437bcbbb6029d4087ce1b258a59f7d0f2ef01a3674f19fadb4422ede60745424b0cb3a8a6769ce5d784410b0557e5bfd770c9083ff0b0000ffff010000ffff7298cd1a7e670000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["app.js"] = bs @@ -83,11 +83,21 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["jquery-2.0.3.min.js"] = bs + bs, _ = hex.DecodeString("1f8b080000096e8800ff8c59dd6e1cb7f5bfcf5310060248c0eee6ff0fd25ef8a281e4af2852e4ad578a51c340c1dde1ccb23b436e488e369291a2177d8c02b9310af40572e5abee9bf449fa3b87e47cac25d701026bc943f2f07cfcf83b67de7d21f0dfa393f9993857b78f1ef39fd3c56a5def3f78afea479324b0b46da0e9fd3f96ca75a345212e6da168e2dcd8a08c586b73d796fb0f953243a9576a6bbd0ed6f1198badd2abb5720f483be53dabc27fa98319359ceb97d5b5dd891363cd6d635b2faebdac141feb8236d5b79deec1c9aa3595b8b146481687d6976db8c3a0f74106ed83de604cb95ab64b65beed8e30c6b666a5c442b91b1881b4309bfd075368dad14fd37827fe802e71219fecba93a1194c12f2e2d3b6e26b3e57ebbadff2c9fc5a5c075deb3ba8690d09cc9dbd8321ac93adafa50fd8ab93aead67d7903bb5daffda5beb89ddde3a5dad83f8f7bfc4d7fff7ffdf88efe5c62ec5a97515ac5288b056a2b46453282c9e58139c5eb6f09f7f4c3b7e727d8bf5580b9f164a5c9ba09c0ffb0fe14eb9c7f9fca7aa568175bbd8ffe6110a9d664fedaa85474277c1a7763318e8a476a6b6127125e33679a052d80d3ac3251ba53b733e2b3447efa9926e89f1fe3c9a398ce1e5fd520fc4f0fe3deee97a51239735ee3d377376f426e81bad5c1ae9846015b1b24d2385575be9708d42bc7da4b78f2948de3e123207bbb00e13c5ad918d5e612258b155aeb4ae11120e6960979528b45f59c4deadb025fb2e2d9f910a578ec2af68dd6a2d9436e29c8fad5470ca400fec7e367f3c8fc7e6b412b0c8f85c5ad9f66792d3b2b443ba18ca293e83137a8dbd67dd6d9db3eee3687eae61a71f111d706c4a8ba7b083be4943ca0d82998571f1467b9a144b1dbc9030abae8c7530de0e41246a6b3714b0308f58ada54138cc907e4a60c5f3932b5162177feb836aa269f8bcbbb672ba2cbd53484005efeb462c5a0a4a61246c0615a38fa10ec6f840f2a8998953a569df29ef133786042eb0a3e0ef2d40da47751bb8a920271658228037cd16bfd395bd8091a598f9d00d2091c8137c3ba7b6b55c411cb72b38830ab1bc15fed6ac0290b4eaaf04e19d7205c7326e93932c7af599f30ad988936a4f6ae02ea173045dd090b3f1c7508fe94b57182ca681d5da2eefbddcd6217f56a456e96c933d201a59b0076ca07c3150c24f04d0e42301dcc2f3bcd8e9ba86ee480e13c85a14d388b590e37b55b730b61bddd823ed01eb6ee4b014f7927e2a91129c518220294c10d025d24779d5e4595e51298ee26898a1fb935d25003baec58f57a4196e252e6158086cbcd87f486fcdd050ec4b52391a338fbfb83e13272dae6590cb8c73622ebddf595730c4c7bf8380464ebc692b184ddcb50ed1675a825578c395f5fe3d5cfc892d91067cf625af415aabcfd97036dcf1026f23ae7bdf437c648ee376b0e5271553b878026dfe9b32a99baced52d6e269463316e231604d5b9670f0001292f4189693b813199fb3f419e384987710e2e383c059cf0ff828b7f3b273a5b6393778459f27caad653d78242e702d4fcf44ad647c782f100e29827e2b4bf8a2864a831b5cd8d5e1752fece6fedb1ec80a02ec7e81a3157181a71764bc6a6ca2bce2d0423f484a291626b1ef64bb0dfe23999f0543f1134e5d7e7fc5d1b93efdca1fd322cceb862e404969babcf16e2837d8eb651b808178ae1181afd44f2d0ce8d33e33a41708995a338f38312527535e7cc93a5e02a8fa11889d3deddff1297e0ce72e11f28359fed9cd234d540c08c27ce6621c1459e2e539e7eda6fb5d9635409207d39f79c6741366340ec07b598a05d09a55a72318bbd70e8f9d27141e8856964d4266bbd00dd8c7c0c827adafa2597cb43359b71e49e58d102a4e17d95d6cdafddf7b30639402163aa597bd6de732ac7bd0cda113015ae18da5900277d9b684c0e27582ea9553cc627429a0486115417910ea6780c64c5c6125982b5401e83bb9a2483bfaebb158497aa344ebb152e215117e8df05dc15665e40cf31234ef0ecca3235c11751b284271dc206e566b13357105b2f24eb555004e1ba42874603bb31664e2192ce6c5156962a66f7847c38a888d34f1493c5982d43b62e5d08c802c64d02780eb8cc4592e7632314b1d02fd720340983b05eab71bf17f86104b36976d7c32c60580cf8b5f9dfc70c8f57f4cbc826c77c20cd51fe6276c618dc11b2cce8862dec0534731685e6b55707db24c30a1934094e8d677ee8ea994ad3e48a6814c848c07d16220493135dc6f0bb7f6629ec2e05063e2600f2809cc88a6bc546dfc7b3c858718b72d8612148c643ddda5f442dea8a14a9ddf1640705890829dc90ae5825f13c161823248899d0e6be620aff7ef416df9f14b2c02e035119492081c26159165883fb6aa8624284b4d6c02c983f4e84f0e5421729e3ed306c6ad6bced44e80d5788d63b96861c12bda2a1e452798a4c16849c16be2a34b470792ef25885d002640164a2409d3e771f2cfc40f3023652a8d7b220f543fc32f8989454bb12dce5ba420c2a7e703f1cebc87e7f4c542e889785ea258f4d34ccb6a7204389fee391374dba550c48ed2dc293d3207ea3ec186024a801ba6478038ec802612cf0e6dd48e41421a1a21df38d13d16024cb95369c12b04a1261d3970d1ba0d054ee5a0271cc5fea55c0f28c3c2824002725351c9975fd18f3ccfe178eaec2e31321e50dd48166bb70418e22bf1dcbab68919311eca927844c41cdcdbae6cfd79240d18b8183e3dcc1b68870d8afee1be2cd143d0e1a2a128d720628dad978ae8380c25c852b3bc300aec5a60a95827d38167cb51b1d80b6a03f771fa8d9a11de966147598020e58e0a95275459285b3e1e1f85805eefdfd79c187d4b62d16d40ee8fd953c81b6b1e7fac8357281529ff11f974978988a9418527bd56b0d992de200202710bc74714330ac54d0462a83703f607778bfdfef3b77f8e35a4b20c18975f29e7280396d2e1c5e33c883ac206955e06aec1e7e944caf73358ae3fb1c7f61933562a6105cdb46136ebec4b0fb1ac2aa72a7ead73c76b952ab876098e5adf0a792375cd9d0c19c4bb77adab7ff9858b2d9d9773d968c462d032e30a6c4075a95aa4ee1e5d88bddded345006762a41b55cac52faf09154285395482c028441df90c233d11baf21487209f1e1a32c14911b0fef68eb5956ff7c74600c4770a3f40a504948b55df4884ced9b70702e780558463c5a75fc002c85220d5387a7c09d79ab41acd3f59559b9db2db9a2659ae09826507471ed5bc00d40df331e619644c40c046ac3ed236cbdad65a076109e1b5a0b27dc51390e4fc8edb6eb2c608bb2c37447c7a1f2a7e6136f1c0bf18222b82bbd11da0debc5b1cd2f5fa1656d2bf85fea64ceae2390fac521177f034a830d00b961ffbee298a8e88d02899989672e4e659605f381909210ed1250882d7d6aaa4cd21b62a62f504b512b93db8c4886cac9a699f655192ccdac76ebf61f4aead1bc26224859749ad449bd0066ce0c115cc501576afc3b892a15dac5d7d48be7caf01b1233e99e17217a1122b09549ef4f477fa92325406074c14e04bb6d6bba31b0e3775f0fb8b0c775115a88584fd9843ff19ad5a003b8183bd3b40d71f5497487dfca55f232b07cad286978d196c24dd65db0d3a8aa144cac062fdd1876aafd871ad54ec61c843a164673702788345d0436bfa8b9ec4bc47943fa11d311a7001b24c332f9e5b26d1ad82b6d77a1889447aa4db38be0d8c70c17bdc6037366338216921161ae250edef429dcdda490ae4cd7a815d971481e865b216dd84982c13b951da5257d1259781bdbbc7f108973bc7d94033e553e7dff0a26fac801fca2a4cb88a3d4963cee545e13b152f4bd2376858ae12db8f600fd783be85043913744765893694ebd54fbc418367d43ab6ca9e19880e8334d2e8e126ee5b647381e9b8e438e02d1d6831e252cb9516a3ba1762c775467f18bc69d5cd79c68319fba949c3028d2f796bf5009c289a787889be19342ee001d7b15bae39b4444659e241f3c1428492b3abc8708c66f0eec3734c9ef6ccb8efc1fb1e486d5d1836766a4fa9ce81cefd85fcd1f52f2a3df7fd3a3057f14a8c1e88eef078c49468bee5b0efd5f40d9a3d9f18403561c4d8f7996e206004e5972f4e7e3d119062fcf3d97eacdb761a67f9ebaffa462aea899b6a0dc42fcbae30403a72a75730e1063c26e48814a71306fcd264ca3ae3170a7a4ee8405d207a5340a8dd3919f61d6d6e89f5ad55d6950da76772a00f1bafaa49fb6d41db9d7f7b8723613772d38ab0fbc9f37bddee2e182cdafac78f7658aed2f9961e5194af577efd2544f99aeb7a30f5ff1e7039fbdb8f190ba5af14dee6794f8eeea6abee05aefc5f5592fd54d50a1f0894e6ecaa7414f34cfbca608900537f5241331c2cc09a306816da3392a651834fcbbd02f0afac031045c4f0dac60ed2c7dc1ebbfd20c3e1f7340322b2354b40812e339d27d7cc75d5f97d3e7008651d7c1e88210376ec78dffaac3240a8cd9c317ebe3e2feeb2931eaa88c489c1e8495e62e43a5f8c24b1576448163494dadb35b7e5d56d4700279c20a7da3387bd96c8d0cf469ef67e42d987b5e4dc5795f949fde672f97ec15a376421f3ed9b8d96c6328033dc85fb622a7eb4899b8dbe9f8812919398a5235a2329d20a3c825ca3153e9f8f5fd85b3fb5fa79cd4e7a8fc4dea431294d058c38cd20cfa059f6813fc29d6b9dfcb6e004c968dc35e919481923e1f01b5524ac59c6529b221e94a857382b614d23049a487dd499a3e1ea6fe4c7020b5ead117bffc170000ffff010000ffffa42caa1d47210000") + gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) + bs, _ = ioutil.ReadAll(gr) + Assets["lang-de.json"] = bs + bs, _ = hex.DecodeString("1f8b080000096e8800ffd4595f6e1cb9d17fdf5314042c2001fa66fd6d3679f04b20dbf146b12d0f6c2986010101a79b3343a89bec25bb359e151ce43401728d1c2527c9af8aecbf3363797763aff7c11e76d5af8ac562b15845dd7d45444767f3737aa6b7470ffbe169642c5c530b59068998e774e1722df476dcb35ee9ca05533bbf6d01034a07f33a84c497e188a1872cdd318bc26de8cc3abb2d5d13e82aa89516e5be3676f54791b90f935459eb1a9b697aadfdadf6223921b5c0039aa2c82166147ed4ac6421f21b498fe75774559bc2fca86ae32c73a7a4042c5c100fc74122ba6aebcd6a5dd3bfff45df3ef8ffefe82feac62de891f32b5236a77aad69e9d807b0821e3b5b7bb368e0f9f05074fd12f968c2135de85a0c4ba3447659536a5b77ab1a135ad0c6164e21205452312244d09f72231127bf3da98bb8fe63c01cc7dc949480562d0a4d57733b17d0e0b305d4da53e6ca5251d095f2302aa7eb23533de47dbd3e22d54624390f46beb5aa341918b5a34afba5f32529b8abc4aa33ca4dc81c42694b6e299e4de2b338fde79a2c2dce7b27711e0791f8d4c0037fd53e608f524c4f490320262d4d60062d4c1d48794d66659d87e19bb5b6543877c37103d3285b2bbbd26186a3a109124fcf2e69092d611b6a5d461f7c02adbdb95153099fe4ecb11cfea550abb2c2f76d5c5f206349d12cd41d01c19f635f6462afab42658063e25c823da7c596c2d666f51a16756bf81c534d17567957eb8c714befcad63154aa5c1ce310029e2c8e4938259ce01d00d406e1d3c614052d60314e2b9bcfc183c8a9db40ca8a06cef593d5fe0af3271788dbc498388ae4efafcee9ac01dee23448d2a1b90a61e37cced80fb10f2a4090f903c2c2ea059f1b986869747deda527116db54f39b01b2756e116aaa027ed7116c89436828e73df2e3182cfe548d1bc3b6d62e31e6a843fd3ba6ad38020c784087a0eb30367da42ab78594d2809e6b2e98aa6a4bd409a2311ee4147fa5064ec821d5a84be501c464267d4f0b305bc2349498f2556e552a2e367e6d137e1244a7c80dfab78d9d438fc36e79cf54affd0c021a115dfcb8ba21762d585eb3e7134ce9f445a1c0e1817aad41d4b3e5a262234716414c92f9f3109ffa7cfe5b2305660ed30316c47b74332ceefcb25bd463612dee0b303ac9cac895df2dc94b87f078efb103b29c0be7a93b7ae157fedd02274aeea759f26da3d8e2945e3b2e0bdc7b55a359c33e84d4a2e99d772c19a2561f2dc694e3e35e97738a033ba84242a30cc8534e555c68171fcf713ca9465e126405221ef515823f432ac7f192fd32fc798e41c3977b451b1861a7e2680d7b7466f4605ab20f7d1a3c8abb317d392754a4a409d396b7129d0391737b758fb710c80039c56acf35b8cf7316107140fee0498883b60dea00954482d30b05777cddd257702b58a1e6b8723065d689deb7cc06f2911f65addcaf192df4442ae8463385ee4bae4700a6bbe62e58a1c44d5c6d46bb9857faa483b51cdbd49881ad238b144f80dc0525947c8943680e642ef50e9b305207408e71697e5d22076b96e1b9f8f19bdc095cec1ccf480f4c52746e170a4bb3e2e2baef57fa8ae33709322ad1df60c8b3a0d226849507da4c4cba5dba010e1d2ae6e3aeb7e92483b5153e7108c1ad238b15ce3d1833e4ecdcef0330124a81e79b749c5c99890404dc50798bea1a7ce37a5c026a404440ea7394a3997b9626f15730fa257b3f66818fa143125f5402968698d14b6d0d015e000620fcc5ab1c380a91263e1603900a3be35b865bde1e845a84847cee53617a4da2d1f8e67f9591aa666048dde830f2142900d3da518a3dcc970a246ad8c56b394d3485b6c694c2d56a32c8e7911fa67c8bab5df42df7ffef1cfb1919f407f5c025f356ab5f27a25f711472936d864a9c46f1685c98a2da95b650ae996554d77778d2fdebf670b7f89786f004c5c9a55e36361dd6fbbe2768a5b07be1b710d9a5b9e6546bd5f4a3ef63ee559b8a705c5cc88db6ca47ad69afcf926ec17a96de6b7157ba9911bd6cb0dcbdb276d4f0e0f218f9d0b456e782e2a70f9dfc81301cc447f5873cb8f768a6529981fb913b3a805aaaaeb32a162d96547cfd3a119e50706511c7bb09c43a4ebba103ba5d825c123f7476e54e156d859657aa7fd761730dc049c0a206d4ad25de5c54f0c849bdee4b20414564d91b37245bfff76508685da7318609703073a8648f9e8d6c18b4bb14db9c0f8341a132af4f49191abb0d61c6822547178a862e0dc2fcdb0de69ad4da888d822ccbd2894bde96c3fc8df558190909592a4ae54cf2e5d0333d27d791ddfeeae9b070f7ea7295dcfd747ed8ea6baba7f5cc0e1dc598aa4edb4103a4e4f49273bf6febac60c9c233bc3fbe58ac17311ccbb41cb7dcaef63f2c4d52fe0a305f64dd2e1cb5433a996c9561fdce49f2bdf9be08755fdc189ee411d52d71b13a6f5e2f11fbeeb0f8abca516285d4ef69f95d3f6a074afe1fc2f870dc7b39353d9543afebf13e1225200cc389c8eff76329ac32217ee5fd19768e87d4e6dacf9a1d1f72ca805ed5556719bfc115bbe1f17555e552bcf6f87978eeebe4e51f8b5942143ce5de27415c65535fa8bc3f03301f83a13960c5aa2a63f5f5ece5f4bbbf1fdd579044c89119c5ec518d20e23e30d3fedaa5c5e7b94d4079c264ee59c7292298dec9daa07afa15d80e4393f070f734ce0c790da39f1dc27d37dc8f47e9bf64fa269d4b78fea0033d86523fdea4acbb40b5d6fb8f68a0d1a3f7d6c256566fc6c81c20212e6564b148bf1a5aab335e977885f1496ad34b77a7dc7f85b353d3afe6d6cbbde76bdd55bd43aa2402c87bdfca65363f7749b8b65d51f038b0a0dffa58445e2e0abf7ff050000ffff010000ffff84efef43041e0000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["lang-en.json"] = bs + bs, _ = hex.DecodeString("1f8b080000096e8800ff9459df6e1cb7d5bfcf531002024980b2f9be20df77e18b04b615a7aa2d5bb0ac04050c14dc19ee2ee319724c7256de182972dbebbe40afda6c2efa105df445fa24fd9d437286b35ad9698058b3c343f2fcfd9d3ff3fe1381ff8e1e5e5d88a76a73f4401c3d6e765b81df476769696efb400bbb9f45e76c67fdb052d7e2b9ad152d3efc0154ca89de08f3afbff47549f35261930ed66df628dd6edb2917ac76aaa077ca7b26e4a7fd1555ae8dac348dbd150f8d359bd6f65edc78b9547cb10bda2cbfe63d3d58d01e57374a38d9d19a90bc45895a091f64d03ee8b7bdf2a23eee836eb4c72b6bbe1eae31c6f6a652e25ab9b572742a3ff50e1b2416b136d2dec30ced7af9df5c9f4f7cd42f5978fe9bde3dbeba113744fa6324c5f2cdb853d4bd00c540dc58cfd67aa25c0bf6f36bdb6d9c5eae82f8e7567cf13ffffba5f8bd7c63e7e291754b70588bb052626149c5605f3cb626383d276dfa07ec311fdaaf02d4ed45953741575ef85eafa509d89e5838578d0accda75df754e17dc9ddbaa6f9509837cd31703d5ad69ac84b3c978cef96e3bd741e4f799ee9b5a4767fe331ec64be8f5e0cb698ddc64e2cb4c3475e682f480337f63e41c2b3757e68a1db00a7a4dc4c7fc6620a2032adbb65278d54907016af1fa48770fc8455e1f09993d5f5887857a6364ab2b2c042b70e5c2ba564898a385462a516b5f595cb31176c1964bdb67c4022e73ccaec7eb7468799587101292e035fe224695586bb7ec2185ed2777cb8536e4f45926299caa56ca5574636206ae4c9edd1ca7bb6683ccce598e1e3cc021f2eb271af77ca79c876153a0a45f9ece59e86aa5d5941af2b7da138980b9219553422f8d75d0e1ed4a19d158fb86bc165a12d54a9aa5f2334424e431e2c9c3573814cad8f8a0daa8a16724fa706879aff0f0e178382ba881ffb378a5e8f81d6f210fc54d00cd18c9b4bf8f9aa7eb76bfb4aa3cdc0bc5fccc4ae9a2382dac5993ad6b7806c144dbe1f73a2b06669062e6c3f002915ae33696dea9ae9115c8217dcd31568bf9061c982aaca09641e4810d161237edb69e62b78643e004fa554b1c0e95d716aac105e59d832e38bc9d6af95ad601398ea7a05649a3e458050377e4459209aa224e17ceb6d968a295351bcdc2a79d3088557f260028770870aee77571ab9b46cca133f0410aa468001b214746d5f430bcbb4709c4c76ebb64d109c146b352ac4bd89496b251e1f3383a0206186ba5f611f8eedf56257c017f8e2e0c0e1a5eecb68e0864cfac2a82f081cfac2bb670c442b6455ef8f6e64220cdc1f240829801aea4f7b7d6d5447d690319a9c32b45b19b28179916db3f701282c68df905f04b694fc6a48a92616ff33390c0010f656d12a9a45646b984dadfeeb6060a28246aec5c36e23c831a27cf21da96bcaaf688a710fd72c4e5449fc92f1827c4d518ed441fdf46a3164090373d55aacb18e563f6339eab01de912322933f83609eb246a364ccbde7ca19bdfb051727da81d456f74bdad0a2ba87545c01bd899efe9285dd07f74df5935c285266c24b490ec794254d2b77ff08637ebb94ef04a3f0637672cebde2e4a97ef4b93f2d72702bdfe9b66fa7d858026bde521cfba20f7031531374bf54541305d6f673dbce0913c7236bd5822e961855d53b9c3dd685cf6ddc64c617d87271ce863e27479c64785e7d2e5b95ae3a40807048ab63e0e4d5174f6905ffe6df8b45a30d93e7c7bc62860533790f3c7bb110d780c7c43843e50af8404156902d2dab8634fe4cb7d072a1777ec16156470b78f805eaad7d45bf80f3385d67fbf958d1544efae4cd0578e53d5732ac462ccd8e147137b91b15331dd5f833f17d42e0ca292e6bf442809dda1252028cd43ba0c44cbcc24e804af40f8792827ce24fa7a2928636f71e3b252051f81504a9a0a3452c1f1eaf54abb9ca2daaaf08c9c7c03c6d224831573371d110d24a30b3db02b0bc16ba11e6989960549c8967608139e0008d3c11279dc2a5bb5fe1fb299d633f956cd4485495ed5da5399c072d71b88b5b19abcd4b45040cbd4193830ef876e5d45aabdb498fc0500969767fef59b4d42bfca61ee1e5c3cb0ff6035cae8068a057081b83742b2e88ad35ac77129d28ff6e544214a27b47879c8c1e3442c924a80ed4c2056504977d6cdec396829e5cee5e6b8ff49edce5635230d14400e834aafca542b4b4d215d927ad8ae74ad5aa9e1091b990aa2a243459b0712dd7b18d91fd7a3ce71af00f15538470e14201e45754ec70b152c4d1ad0e2bae47ae775bdaa349eb3118636921def69a4aa80006b86aa826adc76cbc3250b39953d4422f7b37f1946bbeff7bdcc78d0f135ea57305a4a88a4b277b6ade34922314887ca4216705aa706581b3a8f29ea2c54c5ca2a0a1d0a6f71e784bf80123e54a276a89f570910e22f8a240435d66fbfd868b63bbb63ac72856dbddaf6d8602850cddced90506351e28abc0f96d72e34b9b1aa563fc2e960dca6dec419f891232e512aac08b6a9283b48fcc3f5c508a8382767fa5b8e3a238764445f2a152cfabe8d87759ea438d6b23320750d585af11ee00bc53db4a7f81f4f46ea060ef7de4ec6daaddceb38773732bd77a1911f256cd873d7d849bcfc513ebfa96c5a01c917f6732a425718512d956b6f958b5d725ba38e81812dad41ff3eb11b9aeefa7e4e641ac9015e60a177be84990a266795f249062b70da4ff2de92eccee1ea10d74ce2139197278bb08b71420705e9edb50e7429d87b28b07d33bf88438e568ec52575a356800d0f5a47d5cf7a8fedd67953ebb3bf918cff10a3d2821c35cb1286722060e75b494fca044f870cb10213614040c6e4651603086e3b2197248701b9cf7ef9fff36e533c5408c90a410e613597083f37b13afa0d63402c0da12e908fcf9be195c1ff046a01ae22066adc46c366897f2b95c2e9d5a72d2cf59ab4afd5d3f6f74d5e0cab5d40d4f486410efdff7aef9e9a7dc8a4d329d5c3a6ec4546e4fb5efe015732ed1e93450714d496196870dc389055355098485f748eab0a997a4a284471ac4f84c8cca6b09b05c4a07b051268a988e043e393a769472efbeec8c1eb901c2c41eb1a3c2860ec39bf242463337a6a4030317938db0777721b03295db7464849e0b0cc70506f913f7c4350c0034bee0375c6651658792e60d5737e019901568c0048fa6bd289a7e248318a056d70ddd0e8e580c18efe8ba5a061a67f1c1b18aacc96787961c9ed6325feccd9c056b2d113f30b6d44981e3987652ebe040bd58c02504b556caaced06cf6f7b54e435aa2bc3be90cb3d768a9c2a9cce8d1dc45224179e734147f3046835402729551419c6e741e6ba1848c1d7baae494d008ca709557f503db725881af6d824023fd70a2e9f9314ab65b73da3f85bd39c988bd3d8ce401e9ea608942e9aa639b58ae646ae586b49493faaab577bf6468442ab26a5a6a1d2a631583c8ccd8d42ba6f6a328414fff7455176fbe0c8fbe0519ec20f8f48740d6a091a8b90d94ddfcef17c160de73b64b4b8504bbf521450bca92395a0e8663b4eb29d511989c8f5a32aa294318babb593ecfa3e923932200d22c1243a25d204713c54e99edb0db47d542110a7c958d149c8a88c65644f95d8a5b916213e5dc475b421af8a3c1ba0f744a5599515cdf7b9689937d2bc392c59d127ac49a2430721c4d84c82a13df5380bdb4387a992781d47cd5f895491bc3ecac191daac710606afbb63024e5bc900e2244d434f0f300cc5a29ce1794bc9797096008a96a12272782ea894a109709e787f25ca1a8938dc1f82513735d1797357e70ce7a3e2c16de3f3382c4d5afde9548bec7fe495b629a6a050ea1ba5ba331ad9f04c372388890303fa3c53313814210c0197d221bcce782899c611f75c37ec6a53ed2af322a9fea0778cb70fc39eb24aa56f65711dcac9ce5304c5be03b9b2d9faa03f96ddf047bc727ae8289bdf2fe34ffeffcb1127f85304ece94f0f43c559c689e1fb11fd5f83df93d9e9193baa38f9ec9457e1f820ac283a4efe783ab9c3203bdd27172b122ad4771a04e6b4c007a49dd6c2d14f4ba420774d687196cc80870e74704f66925d75f054e216660ab81a1a8291c0eb6f502436bfedd58785c8de10290f1fd9d1d8e51e27ab0e4e413ee25037ddd2d1c0fc9515ef3f4dcef929975f69c5b1cba28a4a8b632575d31dfad216df0e34546eec4d1fc635257ef7ead5d535b78634091ee8184ee25a6ef38a49711abb16df85f2caf7f4b143d675acf9a91e23703c634c2054857ec80d6528be0e0cbe5ed7f481a444564f0d4fb0366ad83affb63fce5fb6b9e890f4119b7237e3c78fb1f004d4392882be7a0da37d36b0ecbdd7c90869672a1ffa5860e3c5ec7e514637382c90129331cca496d38517691e3c2c158b3857e1966adfd869d3086ec389a3a2b9158a43eca0aa9e029415d5ca50ad847a87a842e99e7753cf3ef6ea85a652ad523ae46fd15b73204668df30748b5e91cbb849813649576312ba6852d7c04271cf10bb7196944a010b414d0e432e3a6426cb0706aacf8a53b3b1fe105bdd17bd1ede10da90c2d85292b29ea42f4e664801acaaefe840d43ad0414c413405805179aadd97c4e95c4d5f28790cb06dd013f048f6939ffe030000ffff010000ffff86892f6cbf210000") + gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) + bs, _ = ioutil.ReadAll(gr) + Assets["lang-fr.json"] = bs + bs, _ = hex.DecodeString("1f8b080000096e8800ff7c91416eac300c86f7ef1451166f5688cdac5ae8a62731c4402493a0c48c8410776f0269caa84c171013fbf3efdf544a3f444be07d2d47ab8044070ae5c73f217ea50aa5816c2f85e98b74bfde8e0cf5b73741e07adc76f68a6ead61349cf2571503066d2780d0f1f12ed6d533f0ecb72d73811ceecf206b263c1584123f818983eaae963a48cb6fa2a7651ae28dc851508947d4a8ca089e3badebde7ddb7ee4cbe19e4d94c1c56b478d55cbbe2f76607c4bb3c2d7649ab625eb513ef7e9ac6574e715343373f0c0cb84b53c3e32d3b011e129147630134ba18021fc3d3feadc3258dd57f4c7561c8ef6817927ff71f4d3fb679cae2a0fc50b2f394c413abe000000ffff010000ffffe37f5ed168020000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) diff --git a/config/config_test.go b/config/config_test.go index 50dcaa79..aceb2fc1 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -189,7 +189,7 @@ func TestOverriddenValues(t *testing.T) { } } -func TestNodeAddresses(t *testing.T) { +func TestNodeAddressesDynamic(t *testing.T) { data := []byte(` @@ -233,3 +233,52 @@ func TestNodeAddresses(t *testing.T) { t.Errorf("Nodes differ;\n E: %#v\n A: %#v", expected, cfg.Nodes) } } + +func TestNodeAddressesStatic(t *testing.T) { + data := []byte(` + + +
192.0.2.1
+
192.0.2.2
+
+ +
192.0.2.3:6070
+
[2001:db8::42]:4242
+
+ +
[2001:db8::44]:4444
+
192.0.2.4:6090
+
+
+`) + + name, _ := os.Hostname() + expected := []NodeConfiguration{ + { + NodeID: node1, + Addresses: []string{"192.0.2.1", "192.0.2.2"}, + }, + { + NodeID: node2, + Addresses: []string{"192.0.2.3:6070", "[2001:db8::42]:4242"}, + }, + { + NodeID: node3, + Addresses: []string{"[2001:db8::44]:4444", "192.0.2.4:6090"}, + }, + { + NodeID: node4, + Name: name, // Set when auto created + Addresses: []string{"dynamic"}, + }, + } + + cfg, err := Load(bytes.NewReader(data), node4) + if err != nil { + t.Error(err) + } + + if !reflect.DeepEqual(cfg.Nodes, expected) { + t.Errorf("Nodes differ;\n E: %#v\n A: %#v", expected, cfg.Nodes) + } +} diff --git a/gui/app.js b/gui/app.js index 1591267f..6d667146 100644 --- a/gui/app.js +++ b/gui/app.js @@ -413,7 +413,6 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca $('#editNode').modal('hide'); nodeCfg = $scope.currentNode; - nodeCfg.NodeID = nodeCfg.NodeID.replace(/ /g, '').replace(/-/g, '').toLowerCase().trim(); nodeCfg.Addresses = nodeCfg.AddressesStr.split(',').map(function (x) { return x.trim(); }); done = false; @@ -866,6 +865,7 @@ syncthing.directive('validNodeid', function($http) { if (resp.error) { ctrl.$setValidity('validNodeid', false); } else { + scope.currentNode.NodeID = resp.id; ctrl.$setValidity('validNodeid', true); } });