diff --git a/cmd/rhoas/pkged.go b/cmd/rhoas/pkged.go index f10358d58..d2b3dbb1d 100644 --- a/cmd/rhoas/pkged.go +++ b/cmd/rhoas/pkged.go @@ -9,4 +9,4 @@ import ( "github.com/markbates/pkger/pkging/mem" ) -var _ = pkger.Apply(mem.UnmarshalEmbed([]byte(`1f8b08000000000000ffec7d5973e2c897ef57b9e1d7e9e9d682c0aa8879b0282384b1aad8b4e48d1bff504a94249302a658c5c4ffbbdfc84d0b88c56e6c57f5f0d45d269579723b79d6dff99fbb78fa63b6b8fbf23f7761bc8c56f04f7f96fc057f483ffcbaef3744d11b8f454ff025ef2f1fc5b8d9d7f8e7dd97bbbfa25932feebe764ee2d97532f9e34ee85bffc59104fc3bf7e8e83c85bfe954cc8177fdc19c97cf673f9dd5b46775f2e1ae48f3bd34bc6775feee83fbecefcbb2f77777fdc0dbd9fe17849ffbf3f9b2d5f47c6b3b7f4a3bb2ffff7eecfbbfff7c7dd60e9a1f1dd97e5cfd598fda33ff616b3e9dd973bb88a51f07f8cafff27891709f9e88f3b7dd68ad178813ff751fcaf9fb3d9f2cf70863ba2b35bdc7d99ae10fae3eeeb789efdff70bc58661fe67fdafbe27916ac3029ff73f7aa257af6e229a7ffd55ba2cf9e67c12b3ef92b9cfd99cc02f2a535feb988c942897f8acaddbffffdef3fee7ed0395e7486befc8566bec7dae3c387ff1b8c975e8cc89fa674ef79a33fee16f16e7cf7a526a8f53fee925930befb2289b546edbe262a0df2977f2d63f2892448e27f0af27f4aca5094bf08ea97dafd9f72bd21dc2b624dfd0f41f9220b777fdcc58b7f0578bde8d22d5232e8d7f1faee4bbd2e0bf53fee8ce9ecee4ba351536541fae3ce44f17472f74514c84e8defbe88f57b55fee36e1407f8af82f0c79d9effaff3af7fcdbd40b8fb22fc71d70f70a7c21f7783c20434345994fe39f3278bbb2ff77fdc3d2ce304933218fb7810b12108825257feb83317f82ff7f7a22ac88d9af2ef3fee9ef79ad6eb4a43bdbfe74db339fffb8fbbe6e54d9d7ffd6b355d2dc6c1dd97ff2bfc21fc21fc3fb2b7d1f8e7eddadfaefdc1b5ffe36e4e08ff9fbbef93f0b55b9cf1807fff7117784b8fafcadcfb399e2ef34ef32fc888af612f7f792b4ade711e435afc6d0623931b24bd89c1c81983913f83bf342491730255c59c4155a44bf80b9bf225fc256f7ae32f37fef2d1fc8532817766327f2d6793f1f434aba14d3e89d7dcd715a926a819af913e87d7489c2bd4ef958622d76eace6c66afe61ac86b1820f61387f79fe325e8fff1c4fff5cce127446d429b7e58c486ac89c0fd5e4fadf60403f3cb438c781b00ec5d529ce816459126a6fe04084f0d731a07b59e5bc4252ee55e95e127f0b06f4979f04fb4ca8c061c88fa7384cce39e869648c83ed5899731419056d7de30ed7e60efbf736631677b6d412033d5c05bafa13d8b595afb7525f1aad80d349a16cb07f5b2d7fda59fb48788292828caf42d891ad956b771660a0ada0dc0bd97721eb67da0ce7d0752cc16b2a02949608c6cad275b4af506fcda1f39cf5ef4adbc8b3c55d9ffcbb1334137505060faad10cd0b8ad2157ee23d0d496aef310f2b686de1183a636c5e31ad365a33b3117ae8d96be2caa46ec3f35d1320a9cfeac3bedaf3dc95a759300058f56cdd7513a1e2888cc2556f2fef96f23dacf195a12a8ab51a0a31548b50d94d02a683ec4c0893646acc581d30b81a40a46b3d3180bb4bf1f8e107736b3a7bbebb265f873b659d0db7d9c09f3469f29068a8dcf16036f2ae74d0efc27737a7ecbdf510864435c43021445f1e32440a9713d099010fe6609506edc24c09b04f8197ce194f887459d60071c6305244b18ca1a8213feb7ce5728894bd75626ddc44afd444dbb536be5cbd6c6d7d534d0ad096eef272dc1b395e94846bb40b7964e6fbe86c928fc3e789806b6b20b1c6d03e58e00ec5e080bed8db6a9f8721fc1c1433c9617aba168aa3f06c6f4ca62928f568be539318937fa4c3149966e96f99b98741393de8f1df25bfe8e62121be2afc90a8e7f4ec7cb73310785766fe13df5a158ff82d94ffd4fa521d46a8adc786dd8c17dbdd15055e1b355b48b2cf50d4591efebbc6536e32ad673bce98df5dc58cf67b19e225ff8502e740dbd4d9655f5ace27611473aabb86196245e4f71a394bf8bedfe97634937cded9fc92f4e2971e622704c012b719e6cc5c0e9ac80d3477eaa2ca0e4af3c5b4960aaec02bd25048e6902c7dcb976808a8a5a27f59f2c3d9afba9f6c2953ea31dcca1be09a18e565eaa2950b65243cfc60a0309095e53fb0a7555044d6d089c8ee4d926f2532d1e0fb4173fb1b89dfc057f032521f4136b87fb71256b67e8ad15686a3b609b2970fabb6e38efc0587b711d1319ba9a186d2d855267016c7167b4b505b05b3b30d0d058b75e02a78f8c6627f574352234b72dac7ca646db145ca72ffaa91106fa7de84a1172a545e8d96e38b655d18f0b6d75b4236310a574ab18bab986099803d94a81dd7beaa43ef563485b112baa7eacfc0cec0ef2130505bab5eb4ed958025a81442df80bfc696733ff0a2565056c53f06c75653cf651a0b7e6b0fd5c6f8673cdd75b2f9e3e0a07522bf1a4c7d0b3c9feac5c6954379a5a639c2a1d88fbb79517305222685bea8fdebc5b1cdf78247fdfe1bec07016b2efbeb9b6887c598b5c897c93ed8bf1d87a71255584d35e38922cbc3fc2b7987c93b5e9d9e60b94ad55d032912b7750f0c8c79e9133d244cb6cfdbac95274132b85892580824f07da68e74b680504b69e02351e14cf5bd626d5c89aba92ba02099a1a3a98437d747addb93122d9ae5dbb8fd739f1ece0d0472581c8b3b708343501a6da024aad89a1139a5fe83767f637c1f42bc8957bf80e6d02a7b76274a670a02cabee515fbf27e7cc6807115e677a06d515be07813dfaabb3993d9db8af2ffccce0b981549900bb2382547921e7c0de2e3c5b99f624750513eb256815e62a98114c4c04f5ed1c267e98cf497b299ec373e3d33b6b755d1bfc7447e6205f6b31f2a7e6ccb5b715eb6cae037b3b3174651d105f5d67e7e9ad85f1b88c40b28c327a75b48631d98ba791a07e337435f6f0df9ba7cf153e87aed347f4aeb4be8ee2125f63bc451c00c75c074ee7058ccc14d82d01d8fda20f8fcf89ed697f0ea55a811f8d982f919df781117a7a6b67e81d04ec5ac8690067680da496e04a910ee50e1dcfe2fc28f33b2650ee2c5da75fe617125a05496be1d93d4253606f05430729e699dc6886ef96d1e2fd696b3799e3b3197ace7308135520fccbd130cf8da13ee2fcb9e8bb4c81638ab0dd0bc1b4b38603edebf071b26ac6985f9d3c17b2ebf45fbc47b0f627744f47723f0ada85bbc879a1583817a93f653c210ca408c158dbf889fa82ef0d3100569d8f9759d871dc0b786f1005ba39eb276acacec590be6fcf2ba8abd36e8279f2fdca97ad17fcd6ecd3d59c549ecd5d609b843e30b516b03de17c7901756b62e8eaca68a375e01885fb557bb2f4fb3048100a526d1e34f3f7e95b387b82d27308244b3074f1a79b3e2ce14e545c5b5c184d7165b4b3f34679b823aa85bf619efbb7d681f3e340474b60ab62895fa4fed46f77d6646d526d0d628dee317daf2bef0aeda71742d912aeb53f81d49aefd3d54441e4397dc2c740a216de742df113757984afa4d9fd1fd49e7ad97dad9e8b2bb556f86e1b7a6b81791ea07bfddf984fe239068c8ffbb116f96d6de1d966c4cee7938df9bb6e4630d6620fcb493ae6377d04a7fdb96b6f7746bbbfcece89a36da08e5e5c87ada163e279d59bb11042a9bfc6f294377878ea0eb4efbe6ead46523407e4dd503750daae813ca1676b335b1aba18c1a915417dab186d8bde21f69e05fa266c86f3114c194d78fc81b602b63521f4e851142423fceea741825ec0406be276f41eaa1be074a24057b14cb4f2e53e1e0381afb327afdd17fcf673bd9baa53cfe9cf02dbc06fe0b22b7710c07d36c5097000823aeec358fb59ff62ccfbefda79ff7f8fd774e630c1e722d897b55e5ca7177effba6d0d0537fcd1643285dc5f187a6be3e3f56a8a89d114c266d2da781640fed4c4fb513774dea7bfcaf96c87bcfd7e62ade99b2cac83975604dbdacc1d3e3e79586ef93acbd77294f5f1046d4b70ed7e14e88ff566fc10c2a4b5c4b29947e5bc259773b2df1c73e3da266272d8beecb6f375ebe55b380bd93ce6aed422ef38f95bf3210472671d380f75f27bfbf909ffcdd031ff18d5d97f97507297f42c8be5b3ccfa28bc817543ef235fdfaec7b688cff30ed369343509e0371d8f1b6bd2738f7e877f73f13d7e6cedfa095a00e7b96eb4fb69608f9e0c2cd7737d6037c3742d0d3d48a16c6dd85cdb7ea28a7e5b542bc6c0bfdbfcdf3f1c81cd6b398749af4e7924feff3ee6918416becec49144d655549b13eb7b3f64726b78f2cc65b4ba5cfe6d33f9b799bddb5c363a27ffb076a5bba6b9a48d221859bf67e4081247a530dda857e2992051459894641bdc3ff2e5671e7f15baf616cb409331d197d02e686a44f6c23a872f6bc89550e261dea017de9fc165729845691b56d1c6db8caade5d91c663195cb76832c71fdb2f23e66b87799629d2399949606f17e30b691b09ad37d065227f0ae65806ccf41faccfd27e0ee4c25c163c9017cee913542eb5e83a701d8cc9fa73988075d666c47497b28c4f7e23fa24d18ffb33303858437e664290b4e6586ef9165fb876193fcbf4c43c4e8fb5a9888dc3ebb5004d1a07c8dbe173ced734bb5367ce7cf676d87cfc7ef5f977a2b92f97ce7faee3eab98eebb3f52dbef1f4dbde593dc8d3ad174f404949c6985835cfc1ba19fd6fc55a54cb1a0777d1bf762ca09f04671cdcc4eef7371d4cb55a4da9896f7030dd8b6a9e76267eb6775b52a5baa4dccb17d973d99c2fb1e7e64d6f2ea69b8be9e34dc649f0ae3ea524f8e0589ab7a5d1537653cbd88df20bfbb36f49f43766f3db329b0f09a7c987b98607bb768103fb221674de817d2faacaf51cd8b5bfe7bf562f8f3cfe741674f35fffc3f8c3658e6b571227dda9b50356c9b0c27fdf57ac5fa0dd5bf952b4f6a7fd47e0982f7e823644492b1a664430078e1f5267b686fc04acfd44284421ab2b3f258611eadc7e2c29a421948d9044442373e6d9402838bf2be9014e1441475b94e690fad366fc4c9c8044916c6ab2e7f467078e745d1583a6368789b9086c6afc76652bf5136b151083af89a08e1551621c61cab5b56bc6bdd04fa2b5eb3c573afd8ca6b0f4ec6005e50eeadae61a4efb68dcee3d9da5891aaacbc6a236355c5c32263344a941d25a04f6e8ec78748f4c62a4f62533f51c4da0866b661019e406c582d1f6a9d3d40e8300f4cc711b7607a282f7f27b6e5cfa91191a2c3537524fcd19374e37c3fffaafeb2be8d97df06749323b03dec0da7caa0c5dff65624245b1ae3424a9f17bbc603721faf648befa916417fe8364693ada3544eaba247ca0487dc5643e42f84da4be89d4bf2fb7b854b25697d05657dd042c5cdba7ae0e9b85e6a5cae4a8f42c6cd7dcdd9cbb9b2ac3f50edc29fb6342092450472b30c8e0208e8f4b4240b414ca600ef451e8dab530ff5e63df9330b2180c34d197ac89a1771446dfdad7add475fa6b1e9a43c36f1eb96b7461b4c1dc979060e89110b4b5ddb7f87eed4adb7580358ac49a787a4b20a17f0315f785b58c3998f6d61c22a32a84617fbe63dbda75933ee2922c5ec3529860a2a6ae8462d89ee42e33fd91bad369080e9190a16c093c2cd54f44eab68f6b87da87242ea1545b81641b815459e56104a315d0ad9d2b77e67ebb3f87925274577de561b98392fb4b2b7e1f3ee92861aeed1d707ab956d22cb70b24b480cd7c4f9e0e5cb6e61adae21ac64a02f5d6b49ba0294cd4148c32ade414ad1d20296b3f195da415b1d0e2c897162494c797ac05d14c742b72a530ccc354f09cb4086b83c0de2a9dcdec7d25ffe974ec2fcf89feb4d1a7cafef737d9ff26fbdf64ff8f7acde98dff30e19f0c7715280fe15ef940f15fbd229607a1fc26ffdfe4ffdf98635cac0030b32b3553078e59ca59c97faf10d858fe0b35cf9b33287784fe0981323301b3f8e74cd0729e8920b62768aefdb814f75c21d8f27c1873099aca024acaf4f8f8e5bcab6331d8fb34b138ef726e95aea6242eda56869e8e92a0999b97bbe17ce4e9a3b0ac486989676f11cd29b3763c86bc60f2c60a0b89bf2c98cc2398f4428fc58e83e9240cf40811819f09c4cd496b81c784494bf01c80607bb260b1dd2f5831c27bc9149fae35eab47a82faad3f416d43b75641825228294b40e24e41e4272872932da2f1e91de4dabd3c278ee65089dc2dd20d674fc3893aea0f67e1615e6007f98e35f7136bc7c61e0c1e556d941695af4c414b035b59d158f5eafc8926eacf3ce24ac04a1411dc65cfde2ebe85b3a7e7412dec1514a482e01e6531b554d85fb2b8cd798005ff548bf2585b6d0ea78598fc7cecb039415cb12db80fa2ecfbc318c64de839bda2b293021ba4c03167c0eead9ae12cedc6da571e03ec0e58fec1401b00a72502072b213cef099f8796c073093265b6ecf6888c56a6d8e431fb791f22cda37b782267a7558865cd95c992527cf598feb02a37708f772456cdb5c50dd4adbdfb3a7b29ba6bd8f917fd6907c169af2a3fb27867b3f1ceb9a48e28ed9c2f5285745acc793ca9389338fd8251248bb90dc8fa6933286d273ebbef7c0e2e595facb8a208b69f57efac6c2e96de7275067e84b5f9445553127e1de8919baa795335ffe18223bbf01fa469d2d1ae8319297d5ce896245c117b84527e53346f8ae6efcb2f2ed333fd2c4f93e86a58962dca4c0c7fe4795fc7e37fbf54c7b43ddb920b39c16bc0f2da0a8e898b75b97d99706f0e97e89b941e9d6080a430cbcf6ac5c479c3748bc0e9a4440fbb3cc46c653ccc019447345719eb94033c4fb43b188bea0b990c5d99b71c17c2a788fe57d679b0bed74bac04ca1d94e516b7f7f5b20dc5b6d045d1977ba19b8c42a8ab53401c706845f4ddc1b9b57f782aea5f16d7776d91e8c2589ff533ac991256470812b4200ec0549b33393a190f0e746adc5e004e2474abf4926986c7703664cf6f77e6248f8c9d8982bc9fef67be5fd5a168fc9c6e8ee848d42196eb679342fef5a3887cd98c40f91e315c98ed02d855f612ea082ce4327f8372bff04dbf12ff6748f0230a63efdb82f2753b8b23343c9fd7cced05dfb379bfb0dcdd9c6e861760121c845e6e1b48b11eed391d446d1265bbc57e5e7c7e76d483f0cec299c96d14ad8e31145a4343cff5db6e38ff5eb06b10bb0b3efb256c083e6e21977ed0b6e26e58b8c33a98e3335ec0f308dde9240cda6843becdf08c8cd0b3899d2af2137386ef661fd3af8bc4014a704f288608b567e95b443093da1d04127ce648be7fe6dc2e9c05a2eb7bf6fddad355b9ebf4d75d9beff966e9dab5658136863df13ea190bf4508a4f4f9c5f26e694437d5f49f2e6a7e4ce4e3d5221ee55afd0335d1da1551306baf66403745f4a688fe0adce194024a41820ac27406d84280291e9575d0b2766044db39bd7939f230264235057589b50cd4cf68073302a4923b70e6192023569c8aa0172467c5128a8a55ae2030012b3151675372ba8a50ef51e0b6b689a833a8acc41e8ccb006e18f0442680ff7004a608f028c412782016525302c4296025cd4a5ddb24cec451bbb3868e261c599347fafde19ae0f9f85396a364d7b0402a60a1d795fb7392bfc3fa2dce7754f8e678fb771436fffa81bcf08c3b8436f9548953b979436e22e74de4fc9047855ef78f113cc9585749b8915f593deb6f899ff52b26dcc87fab7a967c133f6fe2e7a7728a5342284dfbc8aaa626d636b0510aecbee3e9d66a98a8ab4149e8b182e65e7a88f155088d09e98720fae67df4387a2eadb43ab5563021513d7338ed233f69bd043a9280bd558c3013b8e2ee406c8c5345877a6bfac311ded8dfec697f6e9ead48aebd9d83168860db42dda413514f4fd57c7254639a9aa2e16f4530300a49fe791b962c4e11f710edff8723c4860ed67efcb0ec3acb4697ac51a0fea0e9252c9584a354f3befa361d475933afcdae68a5ee36353a87a696fd6ee8ad140bd8d42374743fc97a1e119807dc324dabc4b6a6864ee932746ec91f4d0bdea3bdf968731a759645d74d0c9dd0c1aae976a60141e5ec5de19cb552205b4ba6a0ec4a6332219f2a261d11264a85d06e2dc6853da40889799f6f3f6fefa500ccd178195f6071e6ed3e5507f8f47ab937abf34d05f8e73fecfcaebfbf02c046ba86f82fd56b1f97702f09f7d793ff29e537fbf34d01f83df9c4c920a8350922a10ef91296553988bc4644738b1438423c79028ba54b96dd2efa526b0a06059b6b41a4772575e9eb5b44454e8306684824a89e266dd0a0a59da7ab69f078907d5e21b27686a46d53dbfb4d4b48704216745110f526aa18b43531689712364a7450719ddab3818445bb5ae8631150df844f3a5617c285d19eefbce68604408104edbce624e636ec7c8e344807eaea0a0817cde7194aca9480d817455e4a4f9ec012ee05acc896e0b72da194e4a297f69415a220fb35258938b1b6f3746b019b0f33376991b98ca7e6acdb24494d89e798b3a701496e59f3c08f4022c901ec3b4d2181214ea790f0d05f8c0b0933dd26feff5ae8ead68ba7df879daf5ad80d674fa3a9b532f442b05171ed5bcbd875ccd90fbcbeed2da1c3193c2c3dfd81ce81fa23d280150462f867731e20448367f280acd27e4c9fd93af0e42eb2a7ab663827ea074b4c9ab90e40e560221ea475e4bcb4d93ee2f360b77e8281b60bf0bad0fe52e09882eb7484bd718b7bf2e2e9ad15902c567ca31f79d22804364848f2583110ecf0be707fd12eb03bd9fe8f72d5aa187c151160fa245f1f28b921b091e0e9566a343b64ed8d78131a537cbe8d85d1ec903d3062a2dea5b98a58450fb91befc73fc839ade21bc5718f056056a89188b67dc57d8bfb92b5a20152979c07ca877a846e7e6fced09f6cd730090e3001abd67188f94a7a39efa38583020413120c868ede93586363f558e019a1af785f3ae5fba6ae8cc7ed1c4ead1a4f7a3b79c7290f0dbfc7ec77512dfdee4b0f34f93003e3a7494a394d680106b5a7e7381b6717d8984f8992d1eecca0d4da39a5374dd9194d1505faf39a9ca196bab7febd354dbe32437affb4856b9b07e37ad49f4a8a9a78766bc1d7e580c7e8f8de9902943b0ae677832cd08e26b3c1585bbab6f97db49b3d355f1e5746ab23c2582b248095f682dec9af35f6bbf9a33c1ea3394fb8a3453238062143b869be18f938b23581a9b60c8ead7ffab00e1c33ed4a044167d1952cc14d554287b3272b80a64afb607be6eb5b8aa6a247a8700fe6302609891b609b73d7def03bb137ae36c1bcc595fb6b7f5a2aec551a93bc53a520edaabb4d028ee73c890ddf81aebd9de37b1c38c4941592c22184df144d41f36a1e43fe7e1ab7b3ea8e8e48db5eb8ff1b7dcbb2fb17e73cbad306b6428218899ffec87b5ed85fccabbcc2fdac9243eae7f8cbdfe611ad7981c7d52e39d775ca031ee24e7b99f87a4bf05a8bade3086b47a677d848e899ca02550bef70051dec8c5b2ba893a260112449c27da5fc966f8809cfd035e44ad1da6876a2c0e9afa1ae46a0f9b0b4e89a6f3c5b99075f176c2cb4f29c5e6c7cadfd87d1aeadc95968775e5c9a148d60d22205ebf8bb5e297390f5a93d1d3bd354862c25b857c987962f8d88799d269ae23323621e4c82dec97b999b6a8b678abee1e1e9717fc1734de96e9b33606f17e7e83f22679764e5b7bcdf748cc2d94687e7bab29fa6b8c3fc97bd75ffd1a5053213cff6d7b4cfbd77480a66dd04b78f184fcf829b390d7bfcb246829cdfc1e43cf17e4cbcd3061edae4530dcd399e8afac93559e446bd2e09b2d2f82dcc3b374bf3cd8274b10589def37736329341ae625f963e30bc4414ae685e96fe567849e3665dbe59973f87375c14dcfc3eca5a42fba7826169ac77362273657bc32a276f48e667b7491191707b1a704c0d7e3d478b5c2942bcf26f31a8da4f8df78819a03bf3ce796aea506c7c91842f42fdcf464d51e4465d50de22c889e267460c88f775212b83d7a8a98adca8c97205273d68caa65cc1494f34bd09723741ee1399f5c7a4ab15c7ba0e50a7747f56aebb881d5d20d709ea15c38629e56fe647f76243916b8aa0fe16fce826d9fd1399c52d7bed92ec355622bf80a5cf837a953585d06b0d81bd45aedc2765b12bacaa53dab7511076359978a675655d101e779466bf10845cfa3d9b33695bf6ceef80d35be4702ca3d08885a567f76216ac4b221ad87a1e5d4ba31dcc033da456e80cf641fbc9d64cf4a5515cb0021f591f565b81452f54d41ba812d61fab84f4ee405c074e7f13383c50bbe0f514c09ad41ea05e28d9d3d18b472df713cf3137506ff1da0b1567ad16f6a4680d65bc9620859250379a9dfff6257545bde46809a9975c716d7161c4fe1394fb33e018599d0468b7c8dae133edd9e68c5a76fb735fd616aec320532b1583d78fdd444bb607859a0a59e03b0dfeae8e0cf0975d1bf180eda301fc1436722ff89ad656d8f8892a79769f47069ca24383499f40aaf4a4d60adfc15e6259be644d8ad67a98b49660a0457e1288d02677922857dd8138cf03d4cd082664fc422d8d9690796e31bdf87ed9a3d2190c7475e3d9cf877775da5ffb3a7a1926aad04f5411267dca9b8a1e3299b6319a9dc638554650d6e6ae9097d707ba4a6a5060dec4cab513cf711514280d3ccff73c2f83efbfa352f873ec2dc7679442dae68d4ae1fd975afd8bd8f85312c44643adddbf4d29943f532994e446a391c56e8a72e3be7e5f572a85b072533ee54a21ec68d39b5278530a3f53cea3d7fd63944232d6556cfdb25abb44293ccf8e2ea9de707f45504d4af9dfe0478dc6bd2a4bb5df821fdd94c27f22b3b848296456f2770b6b612571477149c16061831feb09d022186b9aafb75e8a98e90561ef148d47703aab321fb76b98f8af08bba13525323c7fbb76d21b414239f5c7d0a7902b2f81bd8d4828acae8aa020e4f3da0f7e624d79bd859e0d6829643a37927549f7b3a838166a3f10cf09a9771017c3c62b144abe1f31181885b0c0ea7356c4c4ac56b2d9efce33097ff67455a6c6835c29cef7da3fc4d5245030bd93d03154c90373a86fc2228eea21de23cd12f6537ac6f6d7ab5817c02be0f0e3b3d30c49ed81bcce42c57e9efaded045a56bb335b40bdf5cd02fab599129dd34dcb3837cd95a30451bf446e2f3c9f19be2da68a308da1b86d558753fa891801638ecf7f2f3775880b172afabee09d98b8765d7e1451aad34cb542ed682a167be30a6d6e9ef29b7ec5ef1c285f49eb43a084824ecf20a34f2bea8c25b3462f568d1c770d4eeac83044df0dd1bb1fb683ca2c7237784659cb7c4405731df3d55276208f8deea0abeab55c6b8bc2e4c6e3c2bfc5ebd5e5057a7dda48fdca935e5b4e1bbcf0c6595bcaf23d0f685b7801b26aae89afba916039b845cf3d2e993d2fa15f8d471e59c2bf6d5f32058a6a9b20b6cf30538e66ec80d774778cf3037eced19a0a8c1b338bea7b77686de41c410caee43891f0915f7921a25887185220fb07db77ba12f5b2fae84c70722d449b1c8aaf33187534d0c9ab40867372962f856ed095af96dc2dfe681be452c6c938c5f5c6b62d818ce8edc71da4737a1754b3cdd5af8470ca403fc1b0bcb1c520311a3b7b02ea2b5f29c960806dc6095e11e579c93a3fb8af95a15df59167083ab8cd91d4a8f26784e7f01062c05e4f0ae9ee6352fe7d6ca5c40d99af0fbfec67de2e30e801de0352ed0d4d9ffadbe1765b17f5ef679df0cd8dbcd913532f06f469bd488622926743e46f6bd5f90b10204a520751d6de6d966049b5aca6822f7df4f46478da8463b206fb09b8cb0ccb481baaa00bb774416cb0d9bfc2cbe0ea922db4f76eecac814dd581b04762d34a62cbc5de7f4f2b57cb82746cf612d3e723739241e0959b71c138d244b28f29c9c3760fe7ebf24f5b50e1c079b3070b44959463b59b3e8c859e4fc9bbf25d63728f787c0a9c6e8ee3996005351c4b27e360696c13227cc26f4a5e5dc6f6b94ae57d2f86e06d3608cc6e70ca6accd6786438b37ecbd9bc1f46630fd101b08bbee1f6230a5635d258a466d7c20f88678cd281a42f90d7def662ffd5d79c525f6d23e82baf59ef6d209b0b768df5e0a746b013ecc5ecae7f83a7be91e8def6d2fed01a7b3746d8507cdf0753b6b3fed36b1ec6a2e029bc34b6f17469b060cf869eda989a89e1fecd7a4a5ba82086356a3a8a0b7b88ef9b3588f17242885cc4ec98224b21a5245fb01eb27c2f232fe365bc370fe1d9f1b7f1acc7dde8ed670ddb88eb9339ac6b2eb20e4a7064de9c6327993d92e9dbc6e0ba51bacfdc49cbbc95631f46c6ff769a9b0d996cffa7bdb6cf9dc2bea595d6433e5df53db687e868fe99c811e16a002c0dc4db54eff6136e1f004b9eec7fb7a200138df87adf9489c4823f4b81b4c969d6fadc7cd50ec2f3dd4d2c15773ed0a6000f25a4cdc6ec1cf27b743ce8f06989db235e6014045db840513b40dec51381851b890e3ba36b1edcb2ea9d74c829cd8dc6ae1c0764b7ade457572f31ac524b0a71b9f9cb3021cf3a8ddb002de839c99ee4054f099a27d146d48e64fcf79c8ef5ba956d9b1338f76953ce108ddd4068a5620b9e7fc6d0e93e0a8fd0624f7158181747c5abb898e5db4bbf5b37e2fb1711ad36a9e9bd99c48ad703f11bffd0ddb20b7c1311b49d627abf356b46ff2df046e838ea03dcacfe025676fcfe698cf89941898c304acf1fc5c494dfdc47aa1b593adaf655e57fdb61cdd13cc931c03aff30b943b140aa43dc9cf52f66e93f914efdaa8c0d309bc12a03626049ada044a160fb6c3749120c6aa37a0bae634816eca219bdafd744c6de3c40ecdcfa4d1d216c06eed282491f5e2a5bcc63762c17ee61adf5957ee51fe8ffb196811905a7318d74ead35b75db1b1d00a082783828f966f008767bab8868f59ff95fe8a8bef221a717bb978c4164d6cff87f4957918e6f5ec2cdabd229d15b43dc4a4865c1604a8cdf01bb46fb7e73e014e2768be63b060305ef83f6378d6fac55a7daafdebd7c19dbdd9bf6ef6af7fb84ecb2efc0759c0e868d7a9c45d3b1f34783d1bd815016829e5371bd8cd06f6fbf28bcbac6044d2b63be8fd7003f231ca5eed83b1dfd71a86c01c383ed70ca60101a622df4c80d38f3c7b4bab36ebad95f1d8dab8b679248ac1284bb559b4dcc700d05a3492ef30ba4d0773606f27048c2da191449e63b03a19589b21fd9eb304ae9ae1bc472c53d45211d3142083d7e4c01a0cb7b428599a558576c8d206179ebd6455c4c9fa13404bae3deda7c3e51e6a2df2659381c1622d8fa61865297d5529835823b4b70b2cb113add0ee2d0c1de1fd945c1b2d5cbb43802c9be8202a929e67961a679048206b4eac76b116f9a9f63412d46fa43a790b69c3d1a6d2c2b67796d1586f1160ba636998fc7756957e06659f580049144116c148cf40d1ca80cf80916a12ad6c7fdec27681b58d685b6e327a6ac6cf7c4d32004990a097727f1d85ed4f1e2dd024fb48cfc8a6daf296f100da567db6d1d01e82c168683e0d84496d34d4be5bbaf8dfa311983c4bea4b1f75a62c3a52f4e5fe1ada28b33ee67bc5d20d8f58fbf2318f473f16e6ff6b59f4d87d311ef119269608964e7ac19e172cdaf83c8166edbdaa73d32707c58be5690991b4f854dc13f5867b72d3586f1aeb4748a0e4b27f88b68a47ba8aa67a2f373e0cf34414ae88654729bf619edc54d5df94515ca2a66ee7bedc7bb75a075047bba05952eb169e630a1f13a441e64683174ea99dce73294883d2fc41354fc8581ac1463e0daf476a98ccbc324e3355cbda3c016814ba036de6d9c1ccd0b72848ac05137589784cd7a1ba6f8b38f23235374be800768f38dabe91a4a10d4b56d88443395801c758182d53709dbee8a79baae480451e085f7bb272f5aba0da17d62617cd29ad393d748fcb8108457413b236a0bca7aca60b47284158b58d69100c88027b4bd14cf4c730d009ee39566fc5a049d557d7deee604a9cf67b6bf11c0e90f97d1893fa322439ac50d7a4ea8cbfb7ba4ac63228ae7cd5d9c6fd1482cffb08242d11b67b17aa7ae40e11f51516ceeaa179c3da196d6b471df8f3e150a891b562815db456114978e92c5da7f7d4696afbc991741e589dd4e73b28d50ed449762f59e2179a1c75b856f08703553aad4cb4e9f49ba71dd0fbc14894a677090c616788260efafaf164ac33c981c47c783067e112e41e2df11375c94d44fcee91242c9df0fc55608b31708c55d96443df14a6f22f3c5b9c076f52fbb7736823a142f5a7010676abe6d9a208733a089fab3e9bfd35355f7550d0b6529858931334ef80dd4a5d297a4b200efb36ac38673451c897acc84f38821298c33649ca3c72e6ac1d310bd1208b85a1ab324cacb4db64c9cc2db590ccbcc9129959622bee43089ce7aa7bb48092bf02ba1507b6bf02095a04ba951692179ff1f97b755043a11f766e187f5293ea33563c936c2d9223410f989f4848e00123be63217f3a61658a4de43a9d17af4d50872aee513150264332ebe47d1f0bba3a16b0942395f9a92603f2d68075b0c7a387c9fd91f31890842f40d0997aabcee61d4d48cbd93cf64feb6eb4c967863d48392ec9fd275741a8d584ba5817efebbf858ff16644bae986afd40de96dff102b1219ea2a28498af471f10e2404ea5a204998f05bb8c3cd86f49bf2890b8c480c6eb21ce79009eb0281962c2bc8ec6fa70b761522a8b33a05059fe2c2685b1ba0d3bf67ca69d22b6649b08c95e3639f2bb6d5e359e2cda2d122cb3cc77fe70a3816b8b30c1b0acd69ee8acac14958de41edfd32bfe93ebe731585fa506c7ca9a95f14f9cf8624d5ef15b52ebd4910fc54c0cc72fc6b4352eaf7f5fb2a0b7ebd5117454c1433cbf3295771dfe34d6f82e04d10fc7406ff91b5148a235e432c94a57afdac5c58624df5fa7d5d106aaf970bebf76a5db99e5c48297f17c1709fdfb0295fc29af2a637c1f0c6372ee11baf920f79790566c4e78e818b10e6e24a63715358161c190bd7f60b59d081ce1c0e04ba3c90a2b92b852c8b18ed7c7d1b8d0765c32b8754371ecd1994d41d185023f8b7f821f6a6e61ac614aa1eda9bb8db7c88c7766b099b04058b169f7f1b543f9549e5378c7b120e9e653c4eb5c89ff6e7ac906f05525e85e1538a106c3f148bfbf75ca72378bc10b94efb2e1a3ba9135111a1dd417e4c1c299bfd6f585fa775020eb54f8df12970b485679b919f1e9e9382711df79bb5e5ce1f971430378af3b8686c8e9ce62796006c85accbd0b970ed4e38084685fe8eae615b437e82d6803ba3280ad7cad0c539d4b7735fb25ea0a44c78bcb83bedac3dc94a796c22a6d9b5511101958db75d03822688cfe7a89481e839bda9f15070881cde595e12650559c6e348b216c036857209866005ab11160952008fad84ed49e867dff7161435e021de8fa1254ed098c646e7288eb963ed18bad7f1d208d6ca752cc1d3d5d473e6a484495e1281c489460489cd26e864332877e6e3c462cee965a33b513780c7b74f45159f298a6041c62bf38137f607a8e3f7b4eeba578e029f6f374113a05b25fd95a222b4528ae0d7893dbb3fa1c80df7a40ccc50d6108f73ffe1081cd121bb23c532206fe80bf952ae0b971c6ec7cfd71c4efbc84f9408b64ce44f01f22774ef8af36288b52bd7dee073940689951a3a6d77e138222d786e8d20c9d056902bf74730cfe6cdc6c27be7265b1a6baff3b6d401fcda6cf4a3e73251d6c1237520b1d23c1536149a596bd1f52ca0639218e604cad60ad037e76856ee20774265df9f592fc9b5b773a0d37d3d81285841af568920f877c683bab502727f767c8db28c7c5e52058d751301bb47cfa8ddaa912096d11691fba69b3397a21f227ffa7c7aafa620823a9a30e49015cd582f9e5bfa7b4f8a227f6a1669cb7ee3f79aa300ec9d9585a1ab2bcc1ba16e09013ecfe9c3ac673f2eede96cde6d72477767876500273568f67ad3581a31e5332e4170d56896f62be6527c27fcf4704e7b778fee51b3f8bed742528e6a4ad77954ec4f16d56e535b7ab632878eb524390e5c1e8949192c82b6eba75a639c2aa6672b255963bf34d5d9b924d606eae885a11ee84c062894ee61f41779bf845641d25a783641032f7c8fe5ccd64ba063f961d9e8a20ef2f5eddc95e8f9ecb3df7e38c282bccf095a06b670bc0f7217f09e8b7378bcafd7ce37932946c4f9ae4e72bec2e7d53f721e3b28d0ad15db0bfc16cda1c4f6b0a2dffd79d21c288ae2d41d3e5e268fb23b0dcfa00ce3f303f5515176fbc6f8c981dc5485cc7b6efc5308bd5e01a19706c8d0fbcae4c222c22ca32997f1f67489f82d32fa1bd6e6ac7c3e9c5a4b97bc936a62b44ae3d5cff0648e8e5b92e7bb09d611b45f567fc864f8f3bced75e5fc283a46250f2cde871cf5c4afe433bc2d5da3f27e505e53fc9ba85eb8472970fa084ec99a997e7a16e9b984f04cce7aabc4132a90a94bbff738cf783ad04f26979eab7d9aafbd4785fe6ba1cf78194582c1f3b0d23d5493027fa4950dd8fdaeece75b4cdead41690e32d9af770eea79ef226817194e2ff1e9fc4298beaff1e97cbae1f4e6d3b9d966df669bfdc05268c511afe1d3b9bfa048f6f55c3a578436b97f6d8dec9b47e7e6d1f9f5b8c6ab3c3a55b5d1f202d52c7ae6881458faf6f228202de256944bfa3d17e1d349fda75e564b2ad3daa8c768cfda7c1233379c3d590778b85b14b49f3936ed01fd5d8a3c10b2da60c43a56d6801e9ecadacba660597866d885d51a3cf17ad8db1d4d2f191da4ff70f4928af4a54c93e27564487a6062d55c5bdc40bd18dd45d03a5eaae6568588c1d736ab9dc5d761f87890ee9369ca599d8efde2c6ad2518a15d7521e8d316c8a3354c32eb5c5ecb84d1b1acac697278e6f2c2f19292e07d0a1e0fadd77c1d68ea42613e142f3182ed0e72edbe62e856cd734cc14faf66d5e57492f40f56f789ae15bf5fe5751c9db63ce775995e5d1cfa65f6de116fbf49c513e917427c3ca51dfd72f1c637ede826e7bc49cef9c8ba27c511afa31d9d87d3b85e22c455b5a357a269dc12216edad1afc7355ea31d555642c9a4409ea7502da995bf3daf1d15aa399cd48ecafd5ea21df5793ec5dfd38e8e6919197af9792de3708ea7b48cfd3c90535a468ef24e13eec758334a8eafcbe8483511125b98a8a92ba118b627390df9da9d19ffb88ff4e28a025c8bb9b09ac0210ddc772cce7d498c02dd9c01bb4fa4fede5e25892aad8621f9231ac7634d5835d7ac1a01ef8b6a10fd35e0d8943a1d8bf9f8f6ab9e728d8ea0ff07edce9c5793c9d6988ea3b9725f74eded194d28bb07159a1047ba7f8d261445b4526f5ecd02d307a69d351c1c079438aa1dc5ef8886cfd9d9bb63e2ab43f1fe4badfe456cfc290962a3a1d6eedf8430287d2ac2a024371a0d2e3248a2dcb8afdfd7954a54af72533ee54a54afa34d6f1ad24d43fa05649d8f44c62f8f7995bca0daf974f18bb8d325a0838dc615d3826aaf4c17dfe34e8dc6bd2a4bb5df823bddd4a47f32eb789da2540d969f095f85e4eb234ac41e58fc250a5306627d5e38cf80aca992b25dc32438de37563290967a58f0d6fb28d05b73a85b135e260cc856ca15062278cab902414b3a3e1e24241d00a31f5fbb22e2dc3e5a5c1179ef52258acf9dff6df9dca3cadc3b0ba8ef087d7d2dd3bd2cde4cf737c1f426987edcebf27100d8f978d710481551f938b3bd7c45fc2242f8cd6c7f93477f678ef11a59f410113b0fde27bf55ca8845d4e8f3b2670199fa74a2671149f848b9f052c9efe7021a304f2abfa6b1fe18b2f12954624e4715ea2f37ea92f6b4284dd5dae4c5824ec9aa740f1e9630d5fedb97d4133233dde362b95498a8d4c02b9712f75e1572c38cc02b981612fa5b47129bf743a1be6ed95a88c4f0fd3da665cbb3df4979fc77370aafe6c1d98402d6e633130ae44f0789cad14215a92e2a35a1cae4f2ebc5eddee4eedb2bfaa657945dfa0f94bce98857099991cfd74abd4e4241e35e546a570c9991dfab54ea2fc7986eb2f73f976bbc42fa9e7248cfea90190ebb5929d5ed7d7b560a17797b2dcaa4e053a1337bfd5f123a63317adf297446f4f5fe6501fa19542a2bf3584c056f6730045929d34b2cc37c2f0ae135617720ee4130891904d351693c5fd72c78deb5951594fb8fc02601e63b601552a127e63ab015a10a02e4706e3c14a6945e1dba526b45434e488d1844a56c521695d5bc5836ba13904249547f0c08fc50639c2a23281f49c3cee7500c27d96149be0885d1231019c7c34aaa93008856414368646b15b445756f3eab57d084d775e6d9cad4d2558b9e9f92a7e51bff9d4214f13e4e9fbfa226c5e07e78df25e810eb74e2c3ab931c4a61379c56bbf77e8905abc539e568f169c904aa240a8af20ba55a8b75a521498ddfc3f877d38c6e32ce2b651c7cd73f44215a2daea20789d2055131d77042504e74c5a8184af9db35a1c6cd0b71d3843e8f4b5ca20059bb3da5a7aac8a4e54b145b8815d65b8181b8f06c85d4e527f837ba887cd98c80342ae0e076441fffbbe8b6704cf4214538918982e641fd03cdd75b2f4762a28fd179c4fd71883d654cb66b98f8e13e6e160dad21d843114c7af19eeb6408ec2dc17574edda49858c1757034e2ff49c5ea1d061252ee9aa19ce1d52348cc6e3e738a695f5e579a13a6b4770517524d0ec65b28e5186f99aaf65116395ee83bd5d18cdce9eaba5b03fede79c26bdb5321ed123c542a2b5f08b85feb0b2ca3140f95e15fab9ac663ea19fcca7c225939f7be0441174b4c5d14287fc77e799e43a78ba2a332565c715dbfc0cfae570acf839f4254bc08ab857558c51bfa735fd8fef6395fb8a64d67707e21c7c15b69e65021375facfc2bc3b1846fde7477504ed79bf9ff4765032f551e22f8eccff972a6a49d7a9b53bd8dba251a25c640faf438e092ab52430cab2de5f87db755823e505cad60234b515c477331985a47f76365d9a8f322de2c8111c4abd5728c879a85c57dca30ac5f3708e2545d731d148b65e5cc9daf962f5991d10a5fba279ca988fe0b5efa40f055771c57da2792e4794e04bf8c4bbd49a41b3303e535e863679a3e3b0fe050ba6f53f9546ad56536ae2dbd4e3fb5f463daedf2b0d45ae4995e6794591efb39aefd98c2bcdf3479bdeb4e39b76fc29722fbde6efac199341ae922a72df389f517f11ffb9482b56af982b42287f1fffe0afc6806e5af13f8a3b9cd288b76b20a1553911a442cb4344ea9f7349074b4ca4643896e21da20117ca361734d284f66f84580a2f8df5be9af08454df98435acd62307854b5516a60097301a5600ee3936ec52a1a9eb1466ce895d546720cb2b0ec921ceaea9422299b084b87c0de2a448b6a758ca1d01a62a9df4f5411486188a552601ba4c248209bc88f6b4f4d442b5ee473d4d6be6ead7c92994daa902037d6623f51655f22a5ca654fb75230a099dbaed45a71d45da2113b0609720314c32c82ed62b24b697f8a0187955a05ffdd4f89c63383b24f349a8056d420da0c5f97a2c6c0821677c036453fb116e381b68092cf5cb5f7e168127def59cfa13b9de0be48c59483b5096713a3cdf1c428dd24a0b1cd1281e8f8a40a084555cfaad458a3c986696456c4aabee0766b9a656f4650df2a86ae6e80ad90b1a9968ab5ad60071ca3a899b2b3f4b0ec3a74dcae63ee602a8a7eb2c9d00fb016e3d959859dc8d751db75fa28905aca6b34d0ee408c7c7db204524b004e108d071ad1644ba8de56e7b990c5af8d1e2761debe16d28a371c65d98c60acc55c9b67dfa6c44aa1b7169eddda7563cd66a8ce11d451e49312f9ad140c67a1dfeeac41db7aa16ed12dd670a79ead4c7fe8089fb769569d44efa320b11650d696782f9836cbef21d7c657be6461edf7d8793bb62658d3a277ab623dfaac9a08c174cbdb917319d84a560dc06807f3400f19a203ab841293f5c23c6fe23926ef47024e670e92bcda0094dcd07adc0e0d1d7fd7e7bfe1b6a442aaa7abbba0491116fcb45675265ea08e109cf63be008427e7720b236bd8205629f1f16cbfb93f3dbe93735fe5de8d914311b2408f9957bd012033db2fc64fbea4a4bf86ce2bbd675ac14360ff62126e7ae650d8605ebc84834bf1b8f644c4257be17d9fac7156bb5741d53c363594e67f1160b0ea948d42477f4c0926320726f088fc8103e1e456d948ac391701ff6483523c23bb3fde71571bab171b8a6d3feda934a5582e29ebd5d605ec22c94f87dcaf91fe777363e5720813a5a11340e698960bcc9aaaa51bede4186aec624e1916059b604438f84a0adedbec5f76b57daae039b54d59a787a4b2048f00395be1f523407d3de3ad0d59fc0aeedbdcf1495c56f77e670da1ffa92fad633b1f113b40a9ae2ce97ee9781d35914cfc488f6bfcbdf0a6507a52de2fc9c9e977cce0cd713f32c86b1791fc2ec7d2dbca93a48a124109c4fcf060970a8753190acb8c0c757468bbeadc4c2ef98084cad85a1a384edcb0ad8ac72949ec912b2e7f467868eef1040ccd2f382d797be31ad05958f5abc72c2fe6f144d8586bee0fee81b5ec409dda7b16a5f2413efe15bf663e74aeaa68a4f0e6580fc69670ef443ecd2a1ac2138418f46db7c81b286bab136826966b9560c5d1461bb3fc7b2006fe3a71b2a07e88ff87e6c5c52756b8f068299da7af19a1afb5b256fdc7912da0cedd60ef38b21f9edf595e0f0b8b89fae2d467e2ab23b7ab80e0c6908ff4edeb2ec6ce53ca04423b95b4e07b972bfe7da01ea9230a1a332d3a8a2fa033bb3ecccb7b16c8652609b0291eda61a96ad8bd5121c606ff1fb858a67be24bf4df33e463a96c795184afd63b2c635680244d674303f52d601958ba699d5d8790ebfb7cd0de669bedc57a03e528d04acf15b1648d61c4891f0edc5df3c378dff20683f8e492b92d996fa63b859fbb216c197daaa2ca38a912ffecd7916f83adbcf30df4f7a177dd26fd1d29f579983892ad3350af87dc6bcdcec59cf4bf2b6e9ad9df175bbf3093f3085b1bd45df079d044a584e0c906707b3e0eb4c7efefa107f27215ad68e56592396e6fbae4cd6ec3ff6e4251eb6b773a50841db323dc7dce1b3da9f76d6d0b252784486a0217c46414f636b81fb8935d61ff578421bed7c09ad40ca43f4a83c89df5dca970b6b229b2f9e6e2dc1405b725a380f263225b5a05ba3c956fd31c07c575b9030c3811601bd17021bd12a7ecdce2c68f7377e6a103c6523a16f99519e3f09af03ba1507b69fe115032a47acfd04d55925aa936f963bb5a605ef2df3c444f8ec524b7e5eb5b0a837142b117dc7ef2899ebc1d835326f56a984cffbe81c0a3c0481567fdd935a0ba87722575abe6e0e741f5360f7e77e82e572fe7e119d26766df3e7c1de15ee1047f872b3f11715f338dc0b16ea48ff864cd1954c4cd311bab3b7741790ea69e6ae308757f114e3f0cec4651e81c7c23a1c5877991d22f32009cabac067de93d6d27b514a82c3ef2a328743f1f89d3df068d1376d9d9d3d1d9fbd90e96ec46b9506b6c9f0cbf7f5011e0a0dd650dfae037abf993e5c23f2955fb02594649f9759c53c0a553eedce0258fdf548ee47feb43f044e07eb4947d6957e573cbbb42a13f5d6952a40b64dc1753a42ae1314f90e1b97cad058ff4c03122980c73668552756cd925779abdc075d9de2b30104540a291ff2bf9333505b752bf850e1ec4f81ddefec259e16df86ec0c613913b62717d1331cb586c7692abf37dd78ff8ddc3fff01028fc7fac4fa03b153f1fb9b04f676311e94c7e86cfeeb3d9222d12c9cadcec18fd0369f19ee5b177e0b7fe62f176477f367de3c16aff158e07bfefe0ecdd9ea3a5823b5f30594ae16e65bbf26d648ed6f1550ba45f9defc999fc51dce39345591a383bc43782f16f6d681d3cb8cd350b6840f746ae2b139d4f1be6313ff761235af42c9888778ee07ce84e37430c5a8828e5a68e9f7216e4fc3efa8c3911ac8d10b20459482c8b36b8b825155a486861cb58309c57141e026f3e2218f5c41b074f599fed63fa5c0513a0f8c1f471509628cc77bfa6d6ffc7d211db7391792481dc0f83c9e5522877b0a420833c11c7fff2e68243f097f3bf5ea91169f2a747f3afac84de8be09ddfff06795dcf27716b9f118d710b8eba2fa8102f715014608e13781fb2670ff6e9ce184b82d77d6f018809fcce2b3be6eb338b0eff1c3bd2f5b7126567ead85b60416ae1dec1cea5b48a1a49e13a7737f2d8b15eb09db0eb17d16e939071c2d88114c881f8cf9e15b1b06cd518c4399bb24e689fb54b60af76db1ec259ee116d2580d6aeff71375cd559062a6d57e96945b8e27417b7182596c20b3cd5f160357ac0f5a91215605339203df894ad766d952b6b9081c53008ef144682dd46dcd44fa8116b9128508e1997aae0310a581c61bb9f676477d098fe10099df87b19678f6b64447d69fdd7a211945d35e3e5e535c1bfa7c07a51aa543525710ef4593eddbe35274132b85892500e7793da47e95996703c1d0b33950dfd680fa073cbbbc0eaeb4157db98f682ca7b202b629647191a5334563303cdd5af84d65721ceec624f190b41d53a54af190ef62475f8c7fae637fecf9fe6c353d23d8efb57d63c519f58b287ea935feac35eea546ad26be1660903eb2398c46e3132ace28b290555fa8dd4b52a3d6a80bd5351d4a4df994ab6b3a1c6b7a93f16f32fea7bce47b17fe9da5fdf26857491d9272ce74aacccc79967491e05fbf62ea90f4069e240a5996cfbda4d464b9d1f82d78d24df4ff67328c534a4026286b5c183c52592613be5cdb7c21f86a4d22f4677fef657fbf14dd9b0bbb1b8648bd2956515914cb5862213dc7d1e3348fc28c9636ad489309a3a34c18bd4ca110393402f96f26ecf929b12bf302ff0b86babdc89289ec0eea36355e9a33248944398660b63686cee9e9efbab106f2049fd6c297ee433fb172b88b7d013cc31aac9877b37662de585153b3e063285b022d9979918fe358d2c63a70fa1b62972741be45df0258fb8918054d1670ada317af49d66fe239e606ea2d85052356ac4b6f653c9a3328a978fd49e0e2b7f821f6a6e61ac6c6c2687614686fe26ef3211edbad256c1ad366a2d2e0c3cf18fbec9af3d2a0e5bdec27680146ad053e4fa08d5a637ceedbc702ee4e075bb98741ea443923672ab126e3818668ff5859ede1f60b28f164aa820f450273a88fc2b1bc5811fa2c2d0af448fd3128622b5a35cf31053fad85966392640c4802cf83d463d89686ae4ac0e9c87e8232fc4c80fbc3f7bb90c441ff261668a1c1dc2ce091ef43b417ac5fa2fd28df91c425946a99bf89425cf4bf41b93fc4ca6daf944067ea78bd5e0bbd51ad40efdf59fcf7ed8441c5c4f8dce1f14b702b52a9cd09e59beccf2bce9cb20e1e01a66b92637f5e76be784071c51da1c1c5040b94f65d0cbeaf5c1396983518f578f9d6470ac341e69be03d03a7de90bdbdf46c45a001a35b1ea448f7a8c8c72592c096c2a4b5c8030f3516787df958a434718226f8ac148d563491a54513d6e44eecd9fd0960c98f043a45d650963ce71043d3dc4f2bd7b3ccbfe43c38bd38360da4c46ba76e0049c4406b381555c2cb48b2e66bdf427e568a0186e5333722b031c7fcb2076f13e11d1c6aa6d247bbff4ddb8c8284053853fcd839d4ad9eebf4673cd8f334edbcf473156fddaeb911b09bf0737d2c4898f673c05f0fdf5f3247a8ab3c71ac184cfeb59a07e7747ca3c96527cf9d672b1be2ffafe04fc37c5c6abc3a1e704cdee592e1aa9c30ccf8f1917740e0c9c6e49ddce0fda07b44fe4de78579a0d34127ded2833103092d608907e277f9fc5dccd68497d21e15df1725e3cb47f877074e35316812fe5dd8dbd21bb5ff7ecee937c53579dddbd8c77c600f26aaf44eea48f8fe8ab9fbb2865c0925e351e12d7c7ce3192f248e64fd1eae41f15dde2fdb5e4a6662705324310eeae8270fe6ce93cb1e43a0a304241683c53ab8477f51236da50eb286b6b82e24cd2c03c71446d97a109ef1da77ad38370293c5d7c1b3add27b46f9bc28fa8536632293d039d0a49396c4e59c4b64820be6ca9279c9dc745aedb2b7021740f99d49a02377b76b6732f261b275a29252f534903c9879b6c9ee3ee6d5a36272f59efeb17f7e6a614f8ad650c63c81385bea46b383e0d425f27341a6def80979d304cfb678a2d0e9b7992615ae83c44a03b9330ff4d1df589b8765d72ef182ca3571251493789ed21d7e3cc657e720d6e641b392375caca7818377ec127ded68923ddbfbbc3f4327e394e29780d3dfd17959bb4057971577f5e0ccef83515c70be4bc9534c9e8b5cb93f0f92119b373ba38fca3a68992838f2d6b13eaae58d34d33158c5d82ce97e4eaa4ee13b2d5942b7a9e133b824fd263e497af5696206beb388eadc1470a1b399bdbfd3e72fffe7f86c5129d6e6537d3e8dcf0cebbaf97c6e3e9fff85265c76ef3fd6f54307bd8607486ad4850b3d40d21745fd53aa098a2cd66ae2db3c40f7d7f30051ca5fc9a11a59ec97a2d4154515eb5591a77b4db3391fe350d54d6f1ea01bfbb8907dbcda11c41c34ef9690c11d2bf151e19845127d4c924621faaa52d9396ec861f378ff048ed49f36cfd2c9d16e0e8cc933e20820069c82110e2bea4460ae3d357b934e73528ea6e3685881aeae894187a3c41d33405620ebc0741fd16d14361312753627c276d27ac9e8e668778eb68107684d241965d50ce7c489061d6b57c0625728029a2a066d62fcc91400ac6cc034770c552830254355a0ab29c5617f08bb03ac10b8e1538eac33ff166b43d2a6ca88146b118ce9374c318c7ca25480b99fa82b689335925ca73327c92bcef393d17c58b248b9bad1320528772a1c816875188947e82b29d3e76833da5a4a907ea6fd39709e33270d476b22f7b88d3619a21ec5a427480383a425b9033105f636622815c895a215a499ebc84f6b197ade05f7f9bd910af9bd2c450f168d95811ea550b6a65e93ec597e167584155da620f68ac881158ef06c9cd7475b56a34dd17d7a9c0f87428dee4faf10319a47b7ee199b304f7858766da2bc2f4166d42944605e461bbe372f9edd598c075ad1e072cc414d8c059eed923a0fc089e6bedcdf31476404da934bd78f3a98f3f1ae16bd7ac2b0f11ada0e8c29df07b5754e93886912ba7699866e42d7ffb27bc19cf5496b09068751aa95e84055f53b9ac292f651811846ff9ea1f955ad69f784418ebf75cc20b7776fff1ecd87b548f6ea359c3074be791e87cee2aff4b7571b98ab1d22c53a0b3ae7ebb4005fc10857aedfc0cf7ce5fb7a7e4ec58447d6d71c264131a087cd91209254d24d9db60ccd6b7022e8213bbbfb4e453cc7fe5e72240aca86c7b3e3666b019a07482cf8cd16bca6d6e9b3da1583519f20559d3046729996397b14824074d691225374b8e27963f7e8c0696410da47758200f82a1a2204db5af5f8f87cb51f5800087933485d0b921dd0b684223a635f226f174319ae94cf887ce23ae61caf61015d94a2f7e884fe0b6472ee882d3b2c32a3ec91fa34968e04a81f75b6e6813c07ceb8ea7787bf73df2eb8ebdcb1563236379519b0b79b233288817fe368d1fbcede827c89fb2dde679d3a828f062615dfff4b1ca9f5579ce97d9e7cce596aeea15455d2b3b797c5b9ee391f1e6650a667d7b53773bc2fef6f3c0fc6687cce78ceda7c6a4eb4facbe444dfea8ede8ce7ff3bac5fecde7facf19c0e7a957aa44a43f9b8bce98670c57aa484f237274e4bea2d71fa663bff35b8c76b6de73c79e1dd6ce73ce9e0a89c0e746b013ecc769e276bbcd276cee7f131b673a4212c8fc304cbd55ba598647224c1e2e9ac3d9cd94d0b36c94af9b999ecdba68239d437a12ff7d77e5393a1dcf9c99061893dcbd3a9dd80d4db64c92fa079da8eb4b7e7ef6d5fcd135faae77cceb6967d4f6a83361fb6e6ce7c79b65b936f034179de7526dd616ff3fcd55fbaf66803624100faa36ceaae00be765e5ca977e15ab0cc6ffb2ac1747350114047abb354d712ad0e8eefaff3b377546fcdee06b3b529c079bec61c146af7dfaf856afef49c87300bb8b5399a02494258fb89397793d29d113c5673f7358949f9be6481dc6b9880b99f888f7cbee76c08c33d24f40afd5bf3135eb3d514f3ffcf0373391da7eeec11fbd289c0d58cef9782ddf858c344157ad9fa5ac7ead8766002d615f64591a03bebe68c065892440a92e4c4ef51d5592b5749a8b29fe73cd09559b01f41a620fd6741c0c0eead8c47abe6393460ce97d002d88ac011914feff521e2749ffd76640d2c98b4621e6c9bed957e607b2deeb958f9cdeb6ca8d99d2bda50795f45d0b8c2bda9b2b1b17eacc92132f3bbd4953d905a16fecf189eb588b0569f69136988379bc8cd2672b3897cb056c36efe475b45e8b057b18b08f7e72bd25ecf2e724500674af9cd2e72b38bfc0338c8eb2d231974c2bbd5aecdc738ee853da0e37d2d2408cc81e373ed6a1af074de18f7d18f3ce2d15493a3512e97cf630125652fc2a25a4b3426db3596e40fa32e886796e3e315ac4e3ed67a6dcfb664f27b02e640b6521ea1071284a04e227f568044d959733fd624d7de8a54e3c4fd56cfaf1bce9e467a6bc7f7da8885a567f76296ae44d38ff2543cee49add4da98a6c7d2ebb7738fd5890a128482b4f6d44424ddfac5b56bec6fec7c31880c52ff4bb7e6811e9134203fd59e4682fa8dd4586d216d38dae4b5772fdb93f7b6c448744f1e0b298dcf95eb5cc4ce2bc0ad50cbc657a1e60e1f2430746be6404cbe7d35e4eeb027b8c9f3d27dd12233155273a8c5ee2e8adc64243e27a31224c8d8161797afcb2f6a9569937b4a34daced939546ab57c4da7af859628d54fd2010a7473762cc29668e5762072b881e2bc5fd10f89d6f9104cc3bf50bc38572808b7788b265a1f8af52f58ceabff9915d67f9326faeb20969fd4441b8a22dfd7b31c133ee52a21ef78d39b267ad3447f053992dcfa8fd542f190d7d1401bb5b31ae845cce9220df48a88e694f277d1407f39e674d340ffc19ce3b5da2701f02ba19e57f99609c819f16d11c91b4b564b56d15d647ea75c7a0bf3d85b0a6478d4d7bdf01cf3a30a0ecd7d0a747020e5fae945f4bdb716f98cc732f4d602566a71fd1dd6082d0aa095693e99cfbcdd5907099a50a0b8680ea43084ba25017bc3353a2ce947a46de51a602df098df8f68b02918e4e081c0ee85ee7482e798b88eb560f1bc91d1ee1349bbdbd462ac0115411ddd64f40474b4f3f56d34b64995ff1dcfe9c1fb668f5ae6f08c3f9f9ea74334faea2ad1ec77e73984921b7aba2a538d86835b8e0a67c53f40b4a763d1351b307479cf567681de5a1124fdb6452b44d33b31013688027b2b54e4db15fdfe3f5d1bfc74071a395b14e59e9e4dd7de2eaa50eefd941796e25a772bbb8739f8248df9ae42c4a7f37858c254fb6f5f52cf68ea941f5415a8c2f4fe3d0deed41d3c5ec48adc8b5702bbb17352ac6cbbc2fdf7135584c9313037e2db2c5615973ddd5a19bab23e327e18481603bfb3ca6748b8f49b8ff07dfe1c2fc6cbfff47f8e83f174197b54923b5128eba0f967c2ab34941bbcca4d07bde9a01f2a491eb2808f55480fc6bf12ecfea5a02b5780dd6f5c1776fff5a02b37d8fd9b7afa6b339557eaaad30ef2254be8ed01edbd97eeca40e8977b798747e3cb69fbfe1e00ee69f0ff2a7a47a4ed417ee109fdb133008e898223debf6bd00f757505848b74f367ac27670501cadea95c6f0dcb1ebbd1db01ff8feac440b25614249ac463af80e387bededaf972b0f693de19efeb5c0314f4b0121bc5d309f0630c6c6b65b4e9b9ec625d713ad9c3695176c44bdaeeafa19463ce645eccde7c3f879600bb92bc785e38c1eeed7b3ef7e772c37ff94df15f4eddb9f7b66ff8723fc27cc6b56be11ef828b1274147631e607abef7d7ff5cd5bb23fc936098f0021f87c0b1593e7f252f2b02145f801b4370965e851bc3eff21e6689d124d117e1f3d0dfb9bb5604be4e96df86cf29680ac2f3d707b96bb7d0b3ee2e4dbd1f99bb7e62eabdd495cc49b1e2df1bce0103404693bf097a7b9d6800ca8739cf2040d781d45ab198fb94bd41af03c33df2a69fceefc8f1323c096d78e40dc115a0f3c6f414317bd257bc8fafdd230ec84df14a1e9575f0c8f0078ededbfd02eeccce742cb2a18883928c0af81f478b6764183dd5f90fafdb8b0aec14045a7b31fcd6b9f87f9a2f4230421c5135624e63553e00c33d7b448f46b3d318a74aa7dfc6df1ccfa139b2371cff610e9a25cc874cc62be47f64eb80c73d51a4809ea5c77d4c239ebb83efeaab704bf0bd3bc44c41019113b23c48bc16ba9a9ce08d7f1d8d883bb9af7de44e2db2bf816ea5ae6d0a9e035019c384600059be74343f6702ec8e08d25c8e2ef2996380eb442667c55e80d35b90775812370c8387e6f610bb312bc4a03f8641d25a04f6f1e22f67ce01a18383bb9fc5b8114b1837afc13a39520483cdffebec4af49f386742e19cbd0a53a68c21f3b701f0776f9e6b9667c57483520e5c4e2ff14b91b7c897adecff2f7c97d83d3cceafcee6b75d74b74ce2c781fa1681166d5f2ca26393e20a11595717eb7e122b7443ef4689fe4b0a2b9cc0f83ac2bb78d41ea52d2f92548dc5755a76bb84f7bf96be028e16a3b132efeca0b00e975b8f63f85c8ae975e4ac96721a591bc1b395e95e61ade25a525d9d81ecff8d357c9708c5a5b75c9df10eb1369f1a96f8a988fba5b0c4fabdd250e45a159cf5af17f873f308dd8cb7971b6fe93d7f6fbf0f19e52ab187b2287d60ece11521f529e56f8e3d94e55bece1cdb9f349fce1a40b47709dbec8cd990cf227af9129f7a3a06ded8cd632f29360e730d88f406f0981c3dd3ae60cca1de130ec2e13a768f215538bd9b7c41c4ac2a97453f4a71d2c122ec6c4dd43cc0d5c8ce735c84a741e717594dc15160da9cbc62321467256178e8c3fb65511ab8d81d349192c0431e1838219ca4f6b4f597db03cd986ab578cae8ad03de79941713cc4990996af67ac117197b900e66e5a1c8f99569a9d0c8686cfa1a0de04060935642e87fdba7505f1d49f5aabbcaf87fb8cbe618d7e9bedad0689494f3603232e984219cd154961d5095dc7f6b9b0a725b334eb9f84d91d5f5ba25ab1bde992f0bcb29998b7fdc97e3b490fdbf7e29acf614c43f7aa68ab341167ebc26bd8b652203f17c3f27ec2449521cae67d58fb55b6569ea4ac8362a98001552332b3d7684ff5c9c63d5b23fb7cad3cbd3ff7656de13a93aa35df83e3b576dd58fbeae9eada9746219876d670380b0d0a15ce6a4d8b0b23de84c61445d0dec47b77775f15db06b6b523a62491b511d4249bb7b3af92b544e098020de73c3c1b205117505765f67b463387d8e53cab682a85893aa47f37912fb45260593b5a47361bf71b2cdf4d52efd695f19e7338ae0ea2631297d3ca6811130c0a9a6577a867d748226da05bb5a0b979c5bdcca0a12bd711262abd0f9689a06ebd043a310116a0d3ef2b4263297c5b691e947e7c4f7f7a8eb6d95be7170ff3aaf4f85afa92b500b629f46c654d925027344cb648cb684a5cb1f4ceea2c8c96b8c21e965d1b4dbe0fb72cf4569cc3a929b8b6f2024892672d77afeaad1594fb33e01855f35abd5362e09abfd2a7c45edee8b314ef06166fef6f8af74df1be29deef2a58f38bfece9a371be62a81958dfac768de8407a9578cab6cbc9a051515efc64df1be29de9fc51f4e69de00f9539354c87fafe0c8006b26125a43ea289780d3d9d1eacc1f011da3a51e0dd6611a5a365f12dc98d3f6418154edce9c063c51cd2e1b3f2c6a91198d9996b74f27d7b62c2cc5b7724dce981ef4412af05bfcfba9a81ae1bb48a69b68e625f1e94781b5f94cc4c4fb5f0731f1945cfacb6191dde4d2dbbb73f1bbc3eef93b8ba574946b48a575e1bc3fe86a6888f75744432484dfc0106f52e9efc71d4e09a501166296defb5580903d5d8da03da142a014ad5d5b9c7fa8409ab99b6886879fe495e3f6e8796f34899e9fa0158f1a2bd042045c966553748d6591ffa46d4cd1208819379bafb6217db6d9be60e1d8e9ac68d5bdd6ce97d417cf66d92a14253e1f7bcf0d0675750a246b62e868d50d67c4c5d3444bbe7facf28555736d71038f579de4bf339cc8681dd0887fd197b2caac7c7da6e5f599bd18ed937b56446ce074e5827bb697c5c8b4feda93acd5406fed86896af99295928aa3a5c868dac6d023dcef0ab228575a99f4fa115db324396755666d3e339aebfed341e644fecca92a7ef654e56655be49efffa4f7995ef2f794dcc908d790daa5fa790cf3eb45715dd1964c08bf01c8dda4f6df8b2b9c90d825223dad619ce7b8b98e79363fc0955a3b1eaf6e917c1d5ab73ad0efa9d9b28d36c011551278908f510a3c28d41e1fba0e40a3c44afcc4da792d2a4159bafa9521fe966a7897f2142492a39d021ba4c03167348f5afd096c85d5c16788dd2c47854abaeaaa8862eccbd6c6c7da806e4d86b28628bab0321dc96817e8d6b2188010d8ca2e70b40d943b440a8685f646db547cb98f200bc0198a2609bab9bac437fd1187e7243ed2e653cdb5f5df43e2fbe5cc253789efc6db2fe4ede492bfabc48747b84af4802c7fa09db671c5e8014cf8cd4e7b93f87e2fae7046e2c3121109036d4d724988846a56861817903a5918a7360731afc7e073c41734d6d18e2376f29a2fdd64bb76ed1c6dd44fac083cd231f724ab1c45b4dd41aeddcbeac6183ac9583eddafde4afd2321d205fa37aed3d9d1ba2284f6729f5392f99cf5096ddc6714c173f4ea62e44fcd996b6f329a33c997ae354130c9d73a483da78f2aa4ec52354726dd66b45e5f929c8efde5d9a8d442bb4f9528f3c054f92651de24ca9b44f90e6f07bfe8ef2b55b251ae624b54d50f942caf694bc484df24cb9b64f9fb718773d2a582584ded5c924a5461c83cc2035b3994d2248283b280523065b87b2ba3d511619c273f425d9d7a762da612574b0cf488e280482d5e4f1e4b4a2b609b8257b4f125ca3a78dcae811420f08856c3516b582179117b62d16b4dc67914b5512a0e47c2fdf5e899121cac399494d6b8adcdfdc49a54d0b3038eb9a3b89a56cdd7514a93c35e45c3f5bdcdd911988c531fcdbcc9bf2e9522ab3ef84c7152153edb40798b27bd4993ff3bde8baabbff311266c5c8d7903a1541f938a95315af277512c26f52e74deafc677091cb25517fcfbb5c0127407f277002ac4d11794eec204090e9228aea669b2f5842c39217edaf42e29b66df8ca0b44470ba871a38e5e364ed106895900f29025eaa09ecfb30a7d39ae436c67c9eccfbfd0dd8d624ef37dc432ba412e57864ce806dfeac903e79b527d9d3896d97da7d69852a4a4bac2122bd4e2775a3bd6c745107b98e491295de4c178faf74cc61a0a3056c8108eaa8044760917e6a2476d8c77deb1b8218ea61e9f89149ca04ae852550e96809465b04a67df5c7492d419c13a93c099a5052055feea7aea359a3c9b6b82e71fedb4368599d678a70cabff569cc6e45852f8672fbcdb545f4c311e277801998783f26de19219c34f954b15bfa6cb1fb66c5bdc9ddffe41793def17714afc900d729252c9d2fd6743d315abe662961e995c59aca72b47293a36f72f4c7738553e2321559ba532a723194bbcc80ebd98ae4dadb3978246862c15e2a5207b2ef2a451f9da4dbac0c26ced17f5b586c1269b1d096e03966321e5420719100cefe9ca4674d9febcd70161a4d8117c18949811ea72f93223d5f1f43521ce8eb736ae8e6cca5c54e903fe5c566e87850521663ea56dfd182bc6a62e8db752059f8bbc897460b52d0568f2238b596c0e9cc5d12fad022e0f9c0e9ec686192876977e097fae60557587a54440ae3b4b5996b7750a0a397125de5b92098547da788d0b652cf7e0e5d298afca4f512e8569a15783db26f34dd280bea5d005b99067a746878178eeed76bd7988452b082b42b2a92f759b18e8c8e393f2723c98afcc49cb1e0e163e95f44342fa40286811461d523ebc7689be8ffb377b53dc9f350f807111ff7aaeca39bd0958c094ce8da6f7b731d7483b8c118c9f3dfefec056e1554f456490c1f48c8d2f674cdd995739db6e7c2766feaec0addab0bafa8c4810407bd10d028bc448b59ea824982515569b19a03d40975f5c93644bf27a85b60812a0f164c0f8c5f8b37e966f96e1b923495ef0059b9950f5514a9f4ad99d38843dd85f3673e82e3fa8a5edfaaaa38668df0d107fdf56dff346adf4ca1e63ff40a9596bed52bc6c99edfc47b07c097ae380295706da7275be8c091a0433ea3fb0b1f84a135de165c679d92e63405ee77e2b91acb9a0a6d7225e6f57293a811efd582ba6ae171b65f50ab8fda1cc7134a74f6495b3b818b82a0ee2cb05499d8c3af3aaa93664e16796f07574d9b7f25750a5f460f9fe17457d2894fe6c857f236086a5f5f2b9c2488d211a155f3c6dc11a1d593a6674e77e6743f16bd35dff63790b97ae44b360fa377366eeb26a78417e5d429a3dd4ead245f2b92289fc1e50c2ebf055c1a08f86688b94cd3f9c563e0478f81975d2c9c30f88f66efa58d5ee9b3832291ff50f6e835083a22797425735f973caae6fd13b9a3d363d03977f45b00e2b50ff86f0a69a0753bf79c394613b50b01e55c94b7b470de76c084925ba9a4b46d17b0a55394542957606272015ad7bb9ef630828016046105c694f375757317b5573e927347a8ee0a6706a7e6d81e95f47649e2b56c882af5f511f36239767576636a92d8d7a4e2f9f3d9128be6064e6bfb3e609c0bc6ad9e8ddb86586bff0dc279db1028c36858cd17c7ca2cb8afdb13c00408cc14dbe66660f57212f153034d324f1fc9865ddd9861cdd821bc5dcf1c1b875858534fec2b30516303f53382f8dcd7675955781f4c1e6cc15cb9c988b9c9301a5429a09bf2d7764a8a0fba1b6fc34524ee6e2020d440190b2cf5a05d9b57165850963052a917336a20ba2060c4dc2917f97a8f27166c0d3465f1ccc66d676f7ecd9a841ec0996bf1292960bd3e42b87edaf798b5b079257285910ca712f3a7f9aaecb31d63a029e5fab4b4e8c9ff69be6ad6fbddddd01a83827320740e84f670eeff3f000000ffff010000ffffc6d3288bb4900200`))) +var _ = pkger.Apply(mem.UnmarshalEmbed([]byte(`1f8b08000000000000ffecbd5973e24ab62ffe554ef8f5ecde5b03b29123ee834519218c55c5a4216fdce8504a94904901a718c589feeeffc8490388c9052e57fd79e8e85d2695b9725ab9c6dffadfbb68fc7d32bb7bfcdfbb309a0f17f06f7f12ff03bf4bdffd7bdf7f10456f30103dc197bc7f7c14e1665fa21f778f77ff0c27f1e09fc1743840def81f7f120cfe297e4f9aff7567c4d3c98ff9376f3ebc7b3c6984bfee4c2f1edc3dded17f7c99f8778f77777fddf5bc1fe1604effbb3399cccfa0e1d59bfbc3bbc7ff7bf7f7ddfffbebae3bf7d0e0ee71fe633160ffe80cbcd9647cf778379eccff2b1acfe61e4283e0bfe062fe5fded28b9007d1e0bfa2f17fc1458482fff23d7f38b8fbeb4e9fd4233498e17e7d14fdfbc76432ff3b9ce011e89c67778fe305427fdd7d194cd3ffee0d66f3f4c3ec4f5b5fbc4e8205a6f17fefce5ab8572f1af3899db74bfae475129cdafe9f70f2773c09c867d6e0c72c226b27fe2d2a77fff9cf7ffebafb4e6777d2817afc074d7c8fb5c72711ff7f30987b11227f1ad3b3c01bfd75378b3683bb47f5feafbb78120cee1e25b1f250a956c48a48fef2ef79443e900449fc9720fd4bbcef89c2a3243fcaf2dfa25ca98aea835205777fdd45b37f077889e86acd1232da97c1f2ee5156ffba33c693bb47591644a92afe7567a2683cba7b14c9c60cee1ec5fbeac3c35f77fd28b87b140541f8eb4ecffed3f9f7bfa75e20dc3d0a7fdd7502dca1f0d75d37a55a43233a858a40ff39f14733d2e6691ec59888eec0c743880f82a03ee036e60cffa55ab9af54d48a70ff9fbfee5eb79aca9507511065de349de87ffebaab9dded4f9f7bf17e3c56c10dc3dfe5fe12fe12fe1ff91ed1c0e7edcaefdedda1fbef67fdd4d09c9ff7bf76d149ebbe5290ff8cf5f778137f7f87a4cbd1f83f13ceb34fb828c780e7bf9c75b50f2f6f318d28233185178178311c96512cf6230d2e5180ca6fa27184c853018e91406c3267a0a83c99ade18cc8dc1fc520643b9c095b9cc3ff3c968303ecc6b6813ce6ca4ea87311bf972cc06537d6336376673633607980d63061fc272fef1fc79b41cfc3d18ff3d9fc4e888b4536c9bb2a20799f3a28a24bc8f097df7d0ec3017aaec72215916abd5f770214cf01e36542d6343a2283d289c6154aa82a4c8f2c36fc086fef1e3609b15e5f80cf9f1109fc958083d838c83b0cd2ab2903c63a0ad6fdce072dc60fb9ea6cce1ce96ea62a0878b40577f00bbb2f0f57ae24bfd05709a09940df66fabee8f9b4b1f092f505290f145089bb2b570ede60c74b50594db21fb2e64fd8c6be114ba8e2578354580d21cc14899bb8ef605eaf529745ed3fe5d693df46c71d321ff6e06b5585d80ee936ad402346868c8953b08d4b4b9eb3c85bcada137c5a0a68df1b8c678fed01a9933d746735f165523f25f6a683e0c9ccea435ee2c3dc95ab4e20005cf56c5d75132e82a88cc2552b2fef96f7ddacf115a62a8abc340470b90682b28a145507b8a80335c199116054e3b04922a18b5e6c340a0fd7d7784a8b99abcdc5d960dc31f93d58c5eeafd4c9737fa05829f7213fc6e82df4df0fb1056cfaff915a53e36c425443e51143f40e4bbbf9cc84708be897c3791ef37e10387e43d2cdb041be0180b2059424fd6101cf1bf35bf40499cbbb6326ac556e2c76ad21a5b0b5fb656beae26816e8d707b3fae0b9ead8cfb32da04ba3577dad3258cfbe1b7eed338b0954de0682b28370560b743986b6f344cc5973b08769fa2813c5bf44453fdde35c617968b7cb498cd8fc945bc512a177d9cf5fde18272d1cdfa7e938b6efc703f3fe4d7fc8a72111be29fd1020e7e8c07f3638105b976672a65f2bfa44a4f941ec587c78af0b72a57544592ce623dd5df4025bb57aa55e95ee04dd93405a184f51c687a633d37d6f329584f9e2f7c2817ba84a226cbaa7a58533bca930ee96995eabdfc50b9a09e46e9bd8aa2f6c9d8d24d51fbd3b8c3219dcd9c058e29609dcd93ad0838cd05703ac84f941994fc85672b314c944da0d785c0314de0981bd70e505e2f6b26fe8ba50fa77ea2bd711dcf680453a8af42a8a38597680a94adc4d0d3b1c240428257d3be405d15414deb01a72979b689fc448b065dedcd8f2d6e077fc3df404908fdd8dae07e5cc9da187a7d016ada06d866029ccea6154e9b30d2de5cc74486aec646434ba0d49c015bdc180d6d06ecfa06743534d0adb7c0e920a3d64c3c5d1d129a1b16d63513a3610aaed311fdc40803bd1abad210b9d22cf46c371cd8aae847b9b63ada9031880eba560cdd5cc2184c816c25c06ebf34139ffa29a4b588f5523f527e047613f9b18202dddab4c66c2c012d40ace6fc01feb8b99a7e8192b200b62978b6ba309e3b28d0eb53d878bdaf8553cdd7eb6f9ede0fbb523df6a4e7d0b3c9fe2c5ca97f6fd4b48741a23421eedf56de405f1942db52bfb7a7adfcf8c633f9fb06f7057a93907df7d5b545e4cbdad095c837e9be18cff537575245386e877dc9c2fb237c8dc837699bb66dbe41d95a047513b9721305cf7cec09392335344fd7af15cf4537b612185b02c8f96ca08d36be84164060eb29505b41febca56d128daca92ba90b10a3b1a18329d4fb87d79ddb1ee2f5d2b53b789d63cf0e767d5012187af61a819a26c0449b41a93e327442f31bfde6c8fec6987e05b9721bdfa155e0b4178cce04769579d93deae85572ce8c4630c4eb4ccfa0bac0f720b0fbff3457939703f7f58d9f193c3790282360374590286fe41cd8eb99672be3b6a42e606cbd05f5dc5c0573086313417d3d85b11f6673d2def2e7f0d8f8f4ce5a2dd7063fdcbed9cdd65a1cfa6373e2daeb9275369781bd1e19bab20c882faeb9f1f4facc789e0f413c1fa6f4ea680923b2172f7d41fd6ae86ae4e1bfd70e9f2b7c0e5da783e85da97fe94705bec6788bd8058eb90c9ce61be89b09b0eb02b03b791f1d9f13dbd3ce144a951c3fea335f213bef5d23f4f4fac6d09b08d89590d3008ed01a4875c195863a949b743c8bf3a3d4af1843b939779d4e915f486811c4f59967b7094d81bd160c1d249867721b19be5b469df7a72ddd788acf66e839af218c5581f02f47c33c37827a9ff3e7bc6f32018e29c2463b04e3e61276b52fbde7d1a216617e75f05cc8aed379f39ec1d21fd13dedcb9d61d0c8dd45ce0bc5dcb948fc31e30961200d118cb4951fab6ff8de107b5fd9f9789b844dc73d81f706c34037279d584dd8b9e8d1f7ed75017575dc8a314fae2e7cd97ac36fcd365db551e9d9dc04b649e803636b061b23ce976750b74686ae2e8c065a068e91bb5f95174baf86418c509068d3a096bd4f5fc3c90b945e43205982a18b3fdce4690e37a2e2dae2cca8890ba3919e37cac31d51cdfd0df3dc9f5a07ce8f031dcd81ad8a057e91f863bfd15c92b549b4258834bac7f4bd2ebd2bb49f7608654bb8d4fe04527dba4d570d0543cfe9103e066235f7a66bb11fabf33d7c2549ef7fb7f2d24eef6bf95c5ca9bec077dbd0eb33ccf300ddebffc17c12cf31607cdc8fb4a1dfd0669e6d0ed9f97cb1317fd7cd218cb4c8c372928ef94d07c17167eadaeb8dd1e82cd373e2682ba8a337d7616be898785ef7b54808a1d4596279caeb3ebdb4bada375fb7167d693805e4dd5057505a2f813ca2676b35991bba3884636b08f5b562342c7a87d87b16e8abb0164efb306134e1f1bbda02d8d688d0a30f8741dcc7ef7e12c4e80d74b51a6e47efa1ba024e7318e82a968916bedcc16320f065f2e2353a82df78bd6f25ead8733a93c036f01b386fc94d04709f3571041c80a08efb30967edabf18f1fe5b76d6ffcff19ae614c6f85c04dbb2d69bebb4c36f5fd6f59ee086df6b4ca6903b3343afaf7cbc5e3531366a42588beb2bcf02c81f9b783fee0d9df7e92f323edb246fbf1f5b4bfa260bcbe0ad3e840d6de2f69e5f3c2cb77c99646bd94ffb7881b625b8766718e8cff7b5e82984717d8e65338fca79732ee7a4bf39e6cab54dc4e4b06dd96de3ebd6dbd77012b2794c5da94ede71f2b7da5308e4e632709eeec9ef8dd717fc3743c7fca37fcffe7f0e25774ecfb2583ccbac8fdc1b786fe81de4ebebe5c016f179de603a8d9a2601fca6e371234d7a6dd3eff06f2ebec7cff54d274633e0bcde1b8d4e12d8fd1703cbf55c1fd84c305d73430f12285b2b36d7861faba2df10d59231f0ef36fff7774760f39a4f61dcbea73c12ff7707f348420b5f67e23722eb2aaab591f5ad1332b9353c78e6525a5d2eff3698fc5b4bdf6d2e1b1d937f58bbc25dd35cd246118cb4df237204899352986ed42ef04c10ab228c0bb20dee1ff9f22b8faf0a5d7b8d65a0d180e84b6813d434227b619dc39735e44a28f6306fd073ef4ff73439cca2b4f5ca68e36dfa65efae48e3ad0cae5bd4989f8fed9711f1b5c33ccb14e99ccc38b0d7b3c189b4f585fa3be832913f06532c03a6fa0fd667693f3b7261260beec80bc7f4092a975a741db80ec664fd298cc1326dd367ba4b51c627bf117d92e8c79d09e8eeac213f332188eb532cb77c8d4e5cbb949fa57a621687c7da94c4bee1f59a811a8df3e3edf039e76b9adea923673e7d3b6c3e7ea7fcfc3bc3a92f17ce7fa6e3ea998eebb3f5cdbff1f4dbf6513dc8d3ad374f407141c6185915cfc1ba19fdff92b528973576eea27fe9583f3f0e8ef8b389c58f85d728d27bfc4915595524497a38c7a3a40a174c25c3645f255975db20cb677a82ed36d7f4e652bab9947eb1d1380eaeea438a83f705cfdc9f961bffd3fe6bf58299f1f73f97197ff35fdf98cd1fcf6c3e247c261be6121eebca0738ac4b02f8deebb0aedcfcd5377ff56fc60d4e7354bb92386a8dad0db00a8614fefbb622fd06edf6c297864b7fdc79068ef9e6c7684594b2bc21460453e0f821755e6bc88fc1d28f855c90b1baf0136208a1ceece782021a42d90849c03332279e0d849cb3bb941ee00c87d0d166853924feb816bd12a71f511c6b9aec399dc98ee35c57c5a0a64d616cce029b1abb5dd94afcd85a04c4c06b22a863c593184398326d6d6a513bf4e3e1d2755e4b9d7c464d987b76b0807213b56c7309c71d3468b45f8ed2440dd345e350831a2a4e1993199ed420aecf02bb7f743cba4726314afb9299788e26504335338074330362ce48fbd2ac69bb4e7f3d75d486adaea8e0bdfc961993bea786054bcd8cd26373c28dd1b5f0fffc9fcb2be4e97df027713c3902bfc0dafc64c4a74218b37c96ccfc3be02fecbc406ca2a73c5659d39bcc7c93993fcf2bc96efc0789ce74b44b48d0f7592acc69127409533a2e439744a2bf5786be3f9005736119fad7b2a59b0cfda77187534569750e6d75d18ac1ccb57deacbb059ec5da28cf68acbc27ac9fdc9993fa9341e6fc75fb23d2694400c75b400dd14cf61ffb824c6434ba00ca640ef87ae5d09b3ef35f63d89138b4057137dc91a197a5361f42d7ddd4a5ca7b3e4b13734bee699fb3e6746034c7d0909863e148286b6f91a5597aeb45e06588588ad91a7d70512dbd755715f58ad9882717bc9312eca6214b6e73bb0ad4d2bee202ebae2352cc401c66ae24a28828d51e613d39fa9bf9cc6d8109118ca96c0e34efd58a47ef9a8b2ab6e48e21c4a950588d74390288b2c4ea0bf00bab571e5e6d46f74a65052f2fea82f3ceeb65bf06f69f9efc3171dc5cc77bd014e3b53436ac576818466b096edc9cb8e4fd65c425b5cc24889a15e1fb7623486b19a807eaa861ca2b5092465e9c7fd93d420163b3cf4a51989d5f1256b465411dd1aba5218667128784eda10ab7fc05e2bcdd5e4baa2fe783cf0e7c7647ddae81708fbbf03e6c6277b556fc2feed39bfc0734eaffc8749fb64b88b60710855e503e47df582601c84e29bc07f13f87f430e71b2c4cf0cabd4101d3866210b25fbbd444263192dd4006f4ea0dc143a0724c8d4c8cb229a53c9ca792592d79664b9f4a34224738924cb335ccc39a829332829e3fde31733a9f645556fd3c422b78bd952ba9a9048675be9793a8a835a66406e85d3bea7f7c3a2e6a4c59ebd46344bccdaf0a8f09c511b6b2824a23267141fc2b81d7a2c1a1c8c4761a00f1191f099045c1bd567784c18d705cf010836463316adfd863521bc974cd36959fd66bd2da85f3b23d430746b11c428819232072492140cfd180ddd788d68c47913b9763bcb72a3595122777cb4c2c94b6fa4f63bbd49b89be9d744be634dfdd8dab0b1bbdd6755eb27796d2bd5c892c0561634fabc3c23a2863a138f380bb0d6442475d9b3d7b3afe1e4e5b55b09db398d2827a90fd328592addcf5924e634c0927ea20db3e8596d0ac7b928fb6cecb036425c93cd390886e9f7bb5189abd073da79ed2601364880634e80dd5ed4c249d28ab42f3caad7edb28c82aed6054e5d040ed63a7826133e0f75816707a4da6bd1b13134eaa9269345e1677d883433eee9859c9d7a2e3a35d31e0b5af0c5a3f4c3b26cbf2dde115b15d7165750b7b6eeebe42def9061e75ff4c74d04c7edb28cc7fc9d4dc73be674daa3a573be4835d0713e8bf1a0a64c22ef735690348a3620eba74da0b41ef9ecbef339b8647db1a68a86b0f1bab8b276399b7bf3c511f810d6e62775cb7b22acdc9fa55b5e12b7e8c3744b36d15304b8ace94db7bce9969f47726437fe83544b3ada65501ea53363b14ab8d251cd522989407f3fcca3f461e158bf9631dd34cb3f8d3f9ca658fa69aa2551ceb0f09a17921884c8ebb652c7ff7eaa52697bb625e7d27a9780a5a6e55c0f272b6fdb42e0d61c4e5130293d3a81f148609a62558f887b86291381d34c88e2757ad4d8c2789a0228f769ba315622bb789e68b33316551052a1b934f538ca45441185afa8e46005af1d5b31949b284d0f6e6c2b622b0a4fa18ba22fb74337ee875057c780b8d8d08228b8dd636bfff49257b82caee0da22517eb102eba7703105b88d10c468465c7c89366582733ce8ee28d1b8bd009ca1d02a5344c629a4c2d1283cbfd19c925430762672027eb69fd97e954797f173badaa314519757a6908d7229d4cf22f26573088af78841bbac67c02e339050575f2e1df92b943bb96f3aa5103e3d0201911b7bdbf893addb5128a0def1d4646e20f896cefb8da5df6674b3947f934019b4336340821567cf69226a84281a2ab653dbb3b3a3ee446ce6ce4c6694a8378d9e50ef197aa6d0b6c2e9b79c2183185af0d92fc03bf07173e9f0dd8615b5c2dc1dd6c1149ff11c2447e88e4761d0402bf26d0a4964849e4d0c53433f3627f86e7630fdba485c9c04ba84c280500396be4604f6a8d14420c6678ea4eca7eeebdc5920cabd6757979eaeca2da7b36cd97ccf5773d7aecc73b431f888eb44379e1fd528bfafb880440063cf737496f813deab8cca1f565c804df41410ddace94d19bd29a39f40d8fc9868c68b4531ca95fbf34a0c9430a163250664e182ba2721f8634a0cfc5a3674533dff146e7048e5a4c83e39f1394559216812cfca32a85b1bd0a7ed9cf6b4184d1811319a22b1445a8ac467348209413fc97c34d3144511ab4a79a40a9278620979552a53099848159ba8b92af85545a8b729da5ac344d4df53545b77c665a8340c2d2215b9bf3b0213fd79646101f10f8ba50941cf14b05a6625ae6d127f61bfd15c424713f6acc933fd7e774df07cfc314b34b22b580415b098ebca9d2949c261fde6e7dbcf7db3bffd15c5cb7fbe232f3ce2f1a04dce77783cf444f151a93c56aa7f2b524515954a553943c694850b669b5fcfe151addc0b04d79d344d275a6657dcdff42663de64cc4ff3aad0fbfe31922619eb225933f29192562730a443f2a62288c2c3c305a3e808c1e7c89b9825a9294bbaaf541445902a9f9f25dde4cd3f8b331c923a69ee465abb34b6d6818d1260771c4fb716bd585d740b528e15d4b6723c8c2f42688c483f047737eba3cd316e69bdd3b1b5803189d499c27107f971fd2dd09104ecb56284a98415b5bae2c3205174a8d7c7df1de19dfd4d5eb6e7e6d98ae4daeb29a883216c58a8153787d49953369f0c7b98e69768f85b11748d5c6a7ed686a578535c3c44fbffee0891a183a51f3dcd5bcefca145d62850bfd31c11960fc2b1a4795f1d9b8ea32c996366933744b76a1a9d434d4b7f37f47a82256aeaf4d9bb9f643df748c85d6e7ca6b55aeb6343a774193a37d6f7c73907d1d67cb4298d244b23e646864ee860356d9be3806067b62f70ceea0990ad39d34836853199544f3591a60863a5444ab76683dc1e521cc3accff79fb76b49fc5334984727189579bbfd42bff270f928274596aa7b847e55fe5442ffe70a26b809fdb7a7fd679e767edbaf2ff2b3912e21f04bf79533f3e41fc8cd53cf8b6e922e27f1538a3f26ba89cdf514869435bd89fc37be70c26d2d44362d496408f5b21730a78aa1e015228c5ba4f010e2291058109db3a474d197ea63d0cd99557342bc2ba9735f5f232a641a34ea4222a1f134f58246226d3c5d4d82e79da4f11221b5d9236d6bdad66f5a4c220ed2488a9c703752c5a0a18941a3907651a0830ae8d4640d242ccc55421f0b7dfa2a7cd1b18210ce8cc674e3d55624aa09c468e3d5461137536773a491375057174038693eaf5052c6045c3e2fe4527ab23494702b0a45b604bf6109855415bdb0a7ac4004d9af3149a789b48da75b33587b9ab8719dcc65303627ad1a494d8a3dc79cbc74498aca924773041209f167df690a89f6709ab9b485ce6c904b7b69d5f07f574257b7de3cbd1a36bf68612b9cbcf4c7d6c2d0731144f9b5afcf23d73127dff1fa36d6840ea7fb34f7f4273a07ea72480256a887e1944d79d40f8d88c9a2ac0afb317e65ebc053b4c89e2e6ae194281c2cbd68e23a0015238478e4d59ef3d260fb88cf835dff01bada26c0eb42fb4b80630aaed314b6c6cdefc99ba7d71740b258518cced093fa21b0414c52c0f2d15dbbf785bb843681dd4cf7bf9f2953f988aa21018c8fb3f581921b021b099e6e2546ad49d6de8856a131c6e7db9819b526d90323220a5d92298565f490bb713dfe41ce6919dfc88fbb2faab2447144b4ed19f72dea48d682463d9d721e281f6a13baf9bd39427fbc5ec238d8c1ee2b5bc71ee62bc9e9bc8f16f409108c498417da7b4f228d8dd566d16484befc7d6916ef9bba309ed75338b62a3c75ede01da73c34fc16b1df45b5f0bb2f3dd114c214249fa61a6534a119e8565e5ea3749c4d60633e254a46a33981527de314de346563d45414e8af4b7286eaead6fab7973485ca0ce9fdd366ae6dee8ceb5197292936e2d9f5195f971d1ea3e37b670a506e2a98df75d3e8399a9206236deedae6b7fe66f2527b7b5e18f5a608232d97c655d80b7a27bf54d8efe6f7e2788ce62c6d8e16afe058810c98a6f66664e3c8d60826da3cd8b7fec9d33270cca42511e09b594bb2043751091dce96ac006a2aed83ed99afaf29088a3e44b97b308511492b5c01db9cbaf68adf89ad71b511e62daedc59fae342c1adc298e49d2a445e97dd6d12453ce5a968f80eb4ecf514dfe3c021c6ab9014f420fc266ffc9996f318f2f7c3f89a6577b44fdab6c3eddfe85b96debf28e3d1cd06b0151299485cf17bdef3dcfe625ee5e5ee67991c727f8cbffc348fa84f733cae72cab9bea73ce0296a36e6b1afd705af3e5b3b8eb074647a878d989ea934fa34f70e97d0c1ceb8b5803a29d6358424d5b7a314dff21531da19ba865c69b8346acd61e07496505787a0f634b7e89aaf3c5b99065f666c2cb4f09c76647ca9fcb7d1a82cc9596834df5c9ada8c605c2785e4f8bb5e2a7390f5a9bcec3bd354862ca4a997c987962ff589419da68be23323621e4c22d9c97b991967f3678abee1e1e1713fe1b9a67437cc09b0d7b363f4ef91b30bb2f27bde6f3a46ee6ca3dd735dda4f4ddc60fecbdebaff6ed1c295b167fb4bdae7d63b240593568cdb0f194f4f2396390d5bfcb2422297af60641e79df47de61830e6d92e19f54de15b42c93c8b8f3024a2e08c54ac8be4ab1949d184036d353c205b3a637e3f2cdb8fceb8d48f4aa5fd9ae4c06b98849593a1a4322547b82fa28dd3f2a0f7fabf71549ac28d593ab17502654b9a045593a3386e46483b222aacabdf8905a89f9544b98d081a63783f28d171cbea6a521cbd7d1cf62da3f95050b635dd96eccf5eb152b62bc22199cad1a8532c2ed691831b5f1b51d6de84a43c48bf0e643a5fdc4b8466000dd998f43d12f71c41d15dd7e4b60cd5feb85bb496e376efd93dcfa63b2cef2635d065233634c570c0d28d126df0fa9798029dd42036e92dca7e50db71cb45372d05875fa1cca3d8fd4559614ebaede03f61ab9728754a42e319c8e69df464eb8d564e27cd695654e58dc509afd5c6471e1f774cea46dd101bf014e7b96c1a8f4432312e69edd8e58042e095a60ebb9772d8d46300df4901a9a53b806ed075b33d197fa51ced0bb677d58d50316a0505209a04c387f2e13ca5b5d7119389d55e0f0e8eb9c6353004b5215803a9a644f476f1e35ce8f3cc75c41bdceab22949cb54ad896864b28e3b5040994847ba3d6fc1f5f5217d4118ee6903ac215d7166746e4bf40b933018e91563080769dac1d3ed39e6d4ea8f1b633f5656de63a0cdbb45411387fec1a9ab33dc8553b48a3d9694477b9f3df9fb76cc4a3b0f746e5537cc7ad886a5af560e5c7aae4d91deefc3f448706e30e8142694bf505be83edd8b27cc91ae50df230aecf41571bfa7120429bdc49a24cb5bae2348b3a37873026e3e7aa5cd485d4398be9c5f7cbee17ce60a0ab2bcf7eddbdabe3ced2d7d15b2f56854eac8a30ee50de947782c9b48d516b3e0c12a50f656dea0a59657ba0aba43a04e64dac523a710e976176d268f26ccfb30af4fe1595c01f036f3e38a204d236e72b812ab3df8beadfd57bb5a228822cffb7203e0ac2399ae02f86c14c53b05441c253509512a16b275b8bcdb644e83ad0f4a609de34c14f23edd14bff319a2019eb22167d59ad1cd5044f624b877343958a50bd606e2825fbbce4d0aa20711ef220552bf782acfc069ce9a60efe590ce2247590d9c3af16b3c2ead2f6a3826ac162023fd6e6af0d61a469be5e7fcbc39ae7c4bc4334ee41d62c4b645c2f61ec9f115343cb3ea490fb76e5a0df81c469eacfa14f2153de027b3d2471aeba2a829c78cfcb33f8b135e62511da36a0f588e9dc481225ddcfbcca982bcf407c24a42441948f092f5125f97e44a06be462fecacf591ec5b25cbd66bf3baf24b6d9d355999a0d327538db6b7f17099340b9b40f42bf50f50e4ca1be0af3c8a7bb088d34e9d74fe819db5eaf3c74bf9783cac767a71692f20059298492fd3cf4bda18b4acb666b68e7be39a15f56562255b7692c6713f9b235632a3668f7c5d783e3d7c4a5d1404368af18ba62d9fda0e6015a74b0d3cecedf6e51c4d2bd2ebb27642f9ee62d87174eb49234f1385fae859ef9dc985ab3b3a5d6b27bc58b09d27b526f22209198ca0bd0c8fba2aa6ede7cd5a68518c37ea3b90c6234c277afcfeea3f18c9ef7dc1196405e17035dc57cf75029871ee07bab2bf8ae9699e1b2d22d99d92cf77bf97a415d1db7e20e72c7d698d386ef3e339195f2bea640dbe7de026e9228a36bea275a046c124fcdeb978f0aeb97e353fbd572aed297cf83a08f26ca26b0cd37e0989b1e37d9ede13dbdcca4b7657aa2a6cefcf89e5edf187a13111328bb0f057e2494dc4b6a8e2066150a24c0f6dd6e87be6cbdb9121e1f885027051ccbcec7148e3531a8d1c298ad388fba5bb62768e137087f9b06fa1ab1984c327e7ead8949a337d973c7691fad989616f1746be6ef318d76f16f2ce6b2474d438cdedcba88d6c273ea22e87253558a545c724ef6ee2be66b657c679e43fa2d336337293d9ae0399d19e8b2fc8eddbb7a98d7bc1d5b2b7306656bc4effb3bf7898fdb057680d738475373fbb7fbad788aedf3b2cdfb26c05eaff6ac91817f331aa48c13cb1fa1f331d2effd9c8c1520280589eb6813cf3687b0a6258c2672fffdb8bfd77c6a3402f206bb711fcb4c2ba8ab0ab0db7b64b1cca4c9cfe279c013e97eb27357049a68455a37b02ba13166b1eb3aa797afe55395983b7b9568cfdde49076241edd724cd4972c21cf7332de80f97b754e4a60edb80c5661e068a3a28c76b0acd09eb3c8f9377f4bacaf50eef480538eaadd762c0126a28865fd740c2c83a5ee9755e84bf3a9dfd0285d67d27835536930408363a652d6e627e365aaaa2249a27456bccc05f1993f2e5e864df414d774d6f46625bd59493f8b1184ddf70fb192d2b12e122fa33e9c09a551c2918ec7cb9484f0bd3b5e8650fc31f132bf9629dd0ca47f166f38c540da4150b7ae69201d017b8db60da440b766e0c30ca47c8ee71948b768bcb681b40d9ce6dcb5151e1fc3d7eda8c1b455c3c2aa390b6c8e07bd9e190d1a1be02795971aa28a7db05d27962a07228c5819a19ca2e23ae68f7c8d5c10a30432c3248b8748cb3ce50d06ac9f211690f1b7e91a86d36ff8dcf8e360eaf376b4aeeaca75cc8d5133e62d07213f3168823616c26bcc58e964a55528dd60e9c7e6d48dd78aa1a77bbb4d4b8991b678d6af6da4e5732f2939759291947f4f8da1d919dea764067a984bfc075337d19a9da7c988830d64ca1eefeb89c4da7cebd5a77d7124f5d1f3a63b9a37bfd69f573db133f7505d075fcca52b802ec8ca257143053f9fdcf038dd1b4b76c8b898c5fae48d11168cd13ab0fb61b74fc13ff62bd7c4982fbba4863289676273ab845ddb2d287627d5aecdea0693189e567470ce0a70ccbd86c212b00e72665a5d51c1678af691371a993f3ce729bb6f857262fbce3cda94f2843d7453a3275a80b8caf9db14c6c15e830d88ab253180747c5a5e898e9d37b475d27e4f316a1ae3729e9b1a9948fd6e3f16bffe8431901bdd985124ed939562cb1b34f96f02373a0fa1ddcfcee029676fcbc898cd89d40498c2182cf1fc5c494dfcd87aa3f58cad2f455e57feb6ecdd13cc931c03aff31b949b14d8a331cace52fa6e93f9e4ef5a3fc7d3095812a04625046ada084a168fabc3749178c5b237a0bc0e340162ca00981a9d64408de1c4f0cccfa451d766c0ae6f28c090f5e625bcee3662717de612df59576e53fe8ffbe96a4320d5a730aa1c5a6b6eac6263a105100ec6ffeeadb70076cf747e0d9fd3fe4b1d1427df45d4e70672718ff19918fb77e92bf230ccebd959b4db793a4b687b8a4899b734de4f9be03768db50cf9d009c4e50bb625c603098f93f2278d4dcc55a9d69f0a2b9fdd2a370ff28487faba224dccb82704e413259fc1d8a45c8958707f13e8dd349275a9edabfafe9cde07533787d1ea596ddf80f3279d1d12e531dbb722434f004ae7424dbbf5a912f99244628be5689b2cfc4986e46af3f8d3f9c66f622a2b5dd44d7c300c8c628faad77c6beaef90b8129707cae0a8c03822b45be1901a733f4ec35ada4acd717c6737de5dae69e3805a328c6a6f1701f831f6bd158bdddf8351d4c81bd1e112cb598c60a798ec10a5b60f585f47bccf4b7a885d336314551d34444d37b0c5e4403ab2cdcb4a2a4295425ea204b099c79f69c55f626eb4ff028b9bab49dea96f9a0b5a12f9b0ccb15ab75347d284dd72b4b07c42aa0bd9e61119da881767b66e808efa7e4da68e6da4d824359433b718ff43cb3b43783c4fa585362a68bb4a19f682f7d41fd4a2a86d791d6ebaf4a4d6a5b67190df43ac195db9762c97f6795e22750f689c98fc409a4318af40ce4cd0af80c188926d16af3c74d6a2798d7887ae5c6fd975af4cad724c57f04317a2bf6d754d8fe64f10035b28ff48cacca4d6d290fa06dd5571bf5ec1ee8f67be64b571855fa3ded9ba58bffd3ef83d1aba4be755073cce21f455fee2ca18d527363b6572c95708f792f1b737f7c636efe9fcb84c7ee8bf18ccf30313db054d113f63c67c2c6e709d42ad7aa984d9f1c14cde6872542d2e26c1555aaf444f951ae3e8acadf8afaa0541ec487ea592aea05e1e7aea6a256c407b9aaa642633ad11249f040d39b8a7a53513f8b084a6efb87a8a778a48ba8a655f921554de5fbf771a383aae9bd223ca8251633599684ca7b545342f15554d34fc6906eaae99fc4174e514bd7535f6e5fad3401d4d126a815d4b899e798c2c7446190b9d1e884436aa6f35a88c2a0347f508912329646a08c0f43e391922313af08ab4cd5b0064fe9e9876e579b78763031f4350a626bc6445b220ed37528efdb229eba54ad4d533480dd269eb4af240d68c5d20f56614f0e16c0316646dd145ca723fac9aa2cdc7f9685b6575eac4cddcaa9f2b9b5c944714a6b460fdde362a4411ea984ac0d28ee292bc1c2d146105665231ae5028681bda6c824fa7318e804a61cabb36250a3eaaa6baf3730215ef9adb5780dbbc8fcd68b48391892ee952b435276c6afad9e92b10c0a035f76b6713fb970f20e02715d848df689aa1db943445d85b9b3ba6bceb03646c3da500ffdb4d7132a64ad58e4162d2d4452589a73d769bf346bda76ba239d07561ff5e9064a951df591dd4b96ca85467b3daa25fc6147754e4a53679a9dda610ff376b411a5e92a911fec0cd154405fdf9f5e7524dd8f980b77e62c9c82c2a3c57eacceb94988df3d9256a5139ebf086c31028eb1289a68e89bc254fc99678bd3e05d6afe7a0a6d2494a8fa3482c0ae573c5b14614607e173e567b3b3a4e6aa260a1a5602636b7480e60db0eb892b0ddf1369c3be0d4bce194dfdf1256be8c71c0d094c6183a459ee3973d68698816814c5ccd05519c656d2aab1f4e4ba9a4b4f5ea5a9c92c5515f72104ce6bd93d9a41c95f00dd8a02db5f8018cd02dd4a72e988aff8fc9d1db590eb879d1bc69fd4b8fc8ce5cf245b8b784f5403e6271212784488ef58c81f8f581d6113b94ef3cd6b1004a1927b948f844951c99a59dffba2aaf6452465a8637ea2c980bc3560196cf1e85e5cdd731e0392c20508d2527bd15c5dd164349f4c23ffb0aa469b640893c289993ca2d01385c74ae55192febe7fa8c855b55a3dcf6a7441e45b42f655cc468afc200b9957309d69195ef8fea637b3d1cd6cf459d4437ae13fc46e4486ba08dc91221db61b9dc08f0ee6f1c855f541a95ece6e4408be4e0183cfc5906e66a33f8a2f9c6037626891c55086543e170832645127667f3b5c522b17159d9615c8b90d6746c35a019dfe3dd547e3763ef38165a1ec1ffb5839ac364ff5aee5ed1469fa38fe3bd7b9b18c9d66cd50644d7393d7070ea2ea762bd74bdfa6fb78cda207b2d013d447b1fa5811feae4a1559ad56aad2d97897e22fc4bb5425594ad31bab525556ab4a452e4595db6aca665b8a2ab7b7e94dfcbb897f9f8bcd7f64fd83fc8897100665e9fefe5856f7692cea20f6a528541fa40b46b952b2cf9109313f1153a7df835c115455153e3f97bac9847f22b3384b34e4851198c99ebb014e42888b4a4dc335619e735bcc5cdbcf2535073a732f10d0f1401a4e5d296449c168e3ebebe1a05b34b3723074e3d99c4049dd802e35797f8d9e226f6c2e614441e6a1bd8a5ab5a76860d7e7b04650ac6865f8f781ec5371547ec7b80781dc5902e3581bfae3ce9455d92d41ba2b31734a43041b4ff9cafb6dd7690a1eaf12aed3bef3a64dea3254446837911f11b7c96afb1bd6d761758083e453d37b021c6de6d9e6d04f76cf49ce948efb4ddb72578f4baa8b1bf9799c3436473ef3634b00b642d6a5e79cb87607dc01fd5c7f7bd7b0a1213f464bc05d4f14456b61e8e214eaeba92f596f5052463c1adc1d37979e64253cf210d3ecda288f60cac65b2f014103c4e7b35f4828f49cf6d878cab93f76ef2c2f66b2802c81b12f5933609b42b17842b080e5088924f19f474ec2c628f4d3efdb330a02f0146d47c812976744239f3314c6cc8db60f9d6b7f51036be13a96e0e96ae23953527c242b6640a240870449cd26e862132837a783d862aee8f9436ba4ae008f5e1f8b2a3e531490828c57e403efec0f5037ef61b575ab90043edf6e8c4640b70aaa2b0539a8271481af19797667448118aaa4804b4fd6108f62ffee081ca021bd23f9021eefe80bf952a60617dc6bfbcfd7148e3bc88f9521ac9bc81f03e48fe8dee5e7c5106717aebdc2e72809622b3174daeec471445a8ddcea439270ad2057eef461969c9b8e85f7ce8dd734925ee76da9bbf7dce4f2bde7325696c1337517b1a23a25e6139a286bd1f5cca15b9208e518cad602d037676f926d377339a5df1f592fc9b5d753a0d37d3d80085842af568a00f833e341dd5a00b933d9bf4669823d2f868206ba8980dda667d4ae5748c84a7f8dc87dd3cd894bd10b913f7e3dbc576330843a1a312090054d40cf9f5bfa7b5b1a0efdb199a72dfd8ddf6b9ed4bf75561e0c5d5d60de08754b08f0794e9e266dfb796e8f27d3568dbbb59b1b2c0338894193d16bc6dc88289f710902ab4693aecf984bfe9df093dd396ddd3dba47b5fcfb5e094921a9315de77ebe3f59545b356deed9ca143ad69c64307079242205ac085aae9f680f8344313d5b29c81adb45a58ece25b65650476f0cc440673240aee80ea33fcffb25b408e2faccb3099a77ee7b2c67d6df021dcb0ff387166a225f5f4f5d899ecf0efbedbb23ccc8fb1ca379600bfbfb207701efb93885fbfb3a77bea94cd127ae767594f1153eafce9ef3d844816e2dd85ee0b7680a25b68725fd6ecf9366385150a656eff9347994dd69780425189f1fa8f7f3b2db57c64f76e4a63264dd63e31f42d8f57208bb341c86de572617e61162194d998cb7a54b44ef91d1dfb13647e5f3ded89abbe49d5463a35e18effe084fe6e8b60579be15631d41fbb4fa432ac31fe76de715e2a36017a53c307f1f321013bf94cff0b6748d8afb41794dfe6fa27ae21e25c0e92038266b66fac951a4e602423339ebf5024f2841962efcdee63ce365473f199d7aaeb669bef41ee5faaf843ee36514d805cfc34ab6404a72fc91562660f7bbb49faf1179b7ba8539c864bfae1cc273ddf26505044c95403d2a6745f2fc9698bc6ca2a7c05f664d6f9e9c9b27e79319673fb07e597ec44b7872aae796b32e614ec7e1794bfccceff5e1543fae9af5af654f3717ce9fc825ce72e1941533cb6a49b348993d625fe1dbd3237eb421379b9cd2efb1689e66e2bfb4d3e24fa99a465d445be6e58398b7e1e4c5dac1b35da3a0f1cab16577e86f5120819015f322e6b0a2caf3f4525457563953c22bc31e2c57d9899bc35e6f68f6487f27bb878391946427a5aa132ffc42b2ff62abe2dae20aeaf9482e02bef15636b732800bbeb669b12bbe0ebde79d6c9e54354e0b6b6cd721aecf411f6dca6b361f3639ee2d3a929ae3b2e2238c8e79691192dd3397d578979418ef53f0bc6baee6eb40331372f3a1788743d86822d7ee28866e553cc714fce462665c4e27c9ee60859ae85af1fb555cc7fe6153735648e9ec3ace6f936b47b77d5c899277a843d2ef80d8f8c9e48d9b3a7413742e22e87c64a192fc889751871e3e401d2acd7278af3a742d708c4fc69e6eead09fc825ce51874a4b97a4621f4f422817cd8adf1e578772e5170eaa43c57e4f51873a3c59e2e7d4a17d6a450a377e5cadd89de321b5623bc9e3905a91c1b2d304fa015685e2fdebd2df53fe83440fc66ae24a28828d514643b67647c6dfef053db90400575b4e84ffdfa5817b87c5a92f89c3403727c0ee1031bfbd55faa14c8d61d0fb8846ea5823566f352d1fc0fba22a43670938b6a44ec7625ebcedbaa45c852370fd41a339e5e55fd235a6e368aedc115d7b7d44f549ef4189eac3a1e9cf517d86435a4b372b3f81e903e3e61276f70344ec5587a22bc2d77376764d107bf95f92da13c54749799485bf654192aa4a5511cf4ef8290ba6ff28bd48941539151164412653a89486d26f3565b32d0da5dfdbf4a617ddf4a2cf26f17c249e7d71cc8b24fd54a4a3ba51814bb12b7e5ece8fa0546541ba60ce4fe5dc34705991d3941fb9aa48d5ea7de5fe143e95b1b4a37c2a6b7a53906eece2acab7b58452a87b94fc5ae5c4ef51ef5610be6fd145529859f3e2e96a710d4543d592f611cecef1bab17484b3c2c72eb1d14e8f529d4ad11afe805642be1aa021139e54c75a0d5179f77928d7620cdf7af5d1e3b6e1bf72d8fa177aafac4e7ceff367f6d5335eecaa2e9b540ab7fbaae927441f8a15b5da59b347a7b5ece785e3e0eba3a1bef1252a8222a1f505aa9249cf2bd022821f85659e92680fe8e1ce21ce17317cc3a8bc427bf950a8579c0e7e3c2660e54fa70d6661e04784f29ef4239eed71c902fcf10bfa45d7e1f28f12140614e4719602fb7df92f6b47e4cd9da64757d0e09a7740f9ee630d1fec797d4034232dde37c295318abd4962b17b2f0ce0aa761f6de054c72d9f9f53d59cadb614e5fd66c2d4462e3fe16d192e2e9efa474fdd5edbf8b6970343b80b5f9b970988a407cab67e17c4abf10e7e9dde1307ca227f89b734d6f82f64dd0fe5ccf28bbf51f286ad3112f120e231fa9637a02733a1e0e7341619b10fc21e130bf983ddd84ed3f914b9c216e8f39166779380cc7cb2c15e3b6be3d2a768bbcbd364cc5de4361315bfd9f121663317aaf141623fa7ae7b468fb14e3949560cc277237521081b4cce829b65fbe17b9d099b0d515b70094c4144069aff89dad6b1a09efdaca02ca9d67609368f10db07289cc237319d88a5006e0b13b371ee652488e0e5da9bea0e124a49e0ba262352959caea53cc1f5a2390404954bf770978d0c32051fa50de93449dcd211f2ab2c1a27b1ec8a24d002ef6878c9447f413358286c7c8d6226888ead67c1667d084d775e2d9cad8d2558b9e9f822fe52bff9d020cf13e0e9fbfbceac4c07a78df05e00feb7016c3d9190b85901a4eabddbe5e96c062764c1b9a9dad0a5dc2e7f07912a5ef892a54e659fe6486bd9b2a7413727e52c8c197fd4334a0c5ec228a8f281d0b76b9849ba1225c4ef3a114dffc0c37d5e7b7e20aa7683cd6664bcb29ab0069f91285026255ef16a02bce3c5b2145f2095c8d2e225f368740eae7606b9ba28fff9d774c3826fa900a99c844416da75281e6ebf5b73d01cefbe8dce3e0d8858a3246eb258cfd701be68a46cb10a8a0218cdbd19673a407ec35816174edca410d8c573e034e3bf49c76ae0a61298ce8a2164e1d52d18b06d767b0a3a5c5de7915396b43604c7524d0dc63b28ec314a2355bcb3c242add077b3d336acd2d674a6e7f1aaf194d7a7d613ca3670a5d440bd3e7abf061ed944376f2bdcaf5735a017b423f994f89d3253bf7c0190ea1a3cdf65621e4bf3baf2471c1d3559969251baec96667d02f465845afa12f5902d6bcbdb24a897a9516d8dfbf8f650e2a9217dfea8a53f045587b96094cd4ecbc0ad356b737ecbc3eab7d684f3b9db8bd8192a9f7637fb667fe9faae2245da7fa66676ff3568862053cbc0e1984a75497403fcd593f0f666bb79ac91b94ad19a8690b88ef66dc0f49ffec6cba34b9649c877d23b0917a3b572d73579b2eb947259ae6ee1c0b9aad63a2be6cbdb992b5f1c5f233db255af649f394311fc16bdf4c9e72cee092fb449356f668bda7f089ab54854193303a5208863639df35f8d013c547a5f258a9fead488a2a2a9587b3f461f9f364caefd787efab957b014bc5ac0e039f6899ed7d7fd39b3e7cd3877fbde44b2ffa95756132c845723e082738e2013cc6830ee77b88c243f5827a30a5f81c3d18b321356543f7958aa208525962da276343373df80fe1068774e0f512486851cce628d1eb1091f3a75cb6c13212a9e08de57687e8bcb92aca391d34a6fd1b2196bb0b635d57f71d91f2185348cb4d74bbcfaad64f0c2c53cea0144c6174d0735846c32bd6810dbdb41c4886191616bd8e3d5d1d53a86313617910d86b85e84df5a6d113ea3d2ce7fbb12a02290cb11c0a6c839400096413f951e5a58668498a6c8edad2d7ad854f12ab499910e4465ae4c7aaec4ba472b8ece95602ba34f1da95ea0b0e8b4b7460c720816b80628e0d61239fb152d89f7c1061a91ec17ff713a2e34ca0ec131d26a0252f88fec2d725af23b040c40db04dd18fadd9a0abcda0e4336f6c35ec8f86dfdad66be88e47b82f52d264676dc2c9c86870fc2f4a3709526cb06c1e3a3e29d34161cfd33232567fb4623a983564655970bb254d923787505f2b86aeae80ad90b1a95e8af5ab60031c23af8bb2b3442af193715b8eb9818928faf12a052fc07a8b67a7257086be8e1aaed341815457ced1395b5d71e8eba33990ea027082e1a0ab11ddb500bb6d355f7349f85aff791466ed2b212d49c36190cd218cb488ebefecdb84d825f4faccb3eb9b56a4d90c7679087534f449c5fa7a027a93d06f3497a061bd51cfe71aebb463cf56c6df7584cfdb382d1fa27750105b33286b73bc174c7fe5f790ebdf0b5fb2b0bebbefbced5b13ac5bd1bb55b21e1d56ee8360b065edc8b90c6c2585eb371ac134d04306c8c04a954464bd30cf1b798ec9fb9180d39c82382b07002537b49ed73d43c7df75f86fb82da95eeae9ea26a85180043fa9949d8937a82304c79d26d80361dfea8aac4d3b6773d8e687f96afbe4fc363b358d7f177a3685b40631427ee91ed4c5401f5a7ebc3ebb14123e9bf8aeb51c2b81b59d7d88c8b9ab5bdd5ece1ed217cd6fc6331993d095ed45bafe51c95acd5dc7d4f05896d39cbdc766434a06d5c81dddb1dd1888dc1bc22352808e6751eb2762af2f54c3362937447867baffbc644d2b3276d774dc597a52a18c4fd4b6d733cc4b984d12bf4f19ffe3fccec6e70ac450470b02a621cd118c5669d933cad79bc8d0d588642d12ecc9ba60e8432168689baf5175e94aeb656093b257234faf0b04aabdabd2f7431a4ec1b8bd0c74f507b02b5bef330555f11bcd291c777abea4bef74cacfc182d829ab8f1a5ea3c709ab3fc99e8d3fe37d95ba16ca0b4469c9fd3f392cd99e170629ec53031ab214cdfd7dc9baa83044a02c1e5f46c100387da1303c98a727c7c61d4e9db4a6cfa8e89c0d89a193a8ad9be2c80cd4a3be9a92c217b4e6762e8f80e01c46c3b6f787de91b539f51f9a8ce4b1b6cff46c15068740bee8fbee1795ccf6d1acbf64532f11ebe673f36aea4aecaf8644f06c81f37a740dfc51aedc91a8223f46c34cc37286ba815697d98a4b66ac5d04511363a532c0bf0367eb2a27280fe8cefc7ca2565b1b6682018a7f537afa6b1bf95f2c68d27a155cfae6f30bfe891dfce2fd586c7c5fdb46c71e82722bba3bbebc08082f0efe42d4bcf56c6030a3492bbe534912b77daae1da0168904da2b33f54bca33b033cbce7c03cb662801b62910d96eac61d93a5fcec001f61abf5f287fe60bf2db38eba3af63795c89a0d4d9276b5c822640644d07f323651950b9689cda899dd7f05bc35c619ee6cb1d05ea7dd588c112bf6581644d813414bebef9abd79af1df04acc73169c930db52bff7564b5fd686f0adb228caa8e2d0177f729e39becef633ccf693de459ff49bb7ed6765e060acca748d027e9f312f37dbd6eb9cbc6d7a7d637c596f7cc20f4c6160afd1b76e338612961303e4d9c124f832915fbf3c45df481496b5a165d0886db9da92c99afdf796bcc423f336ae3444d0b64ccf3137f8ac76c6cd25b4ac04ee912168949e91d3d3d85ae07e228df5477d9cd0461b5f420b90f0283c2a4fe27797f2e5dc9ac8e69ba75b73d0d5e69c16ce83894c496de6567fb456bf7731dfd5662492b0ab0d81de0e818d6899bd5a7312343a2b3f3108feb111d3b7cc28ce9f44d001dd8a02db4ff185019523967e8cee59a9a8836f963bb6c6397f2df3bd0cf1d9a5b6fbacac605e6fc8970afa86df5132d79db12b64deac94089ff7de39e4780802f5ceb22dd567506f0e5d697ede1ce83e26c0ee4cfd18cbe5fcfd223a4de4dae68f9dbdcbdd210ed0e5a6e3cf4ae6b1bb172c9a91fe0d99a22b9998a63d74a76fe92620e5cdcc4d6e0e67f11463f7ce44451e81c7c23a1c58b6981d22f51909ca32c767ae496be1bd2824b6e1771599bd9eb8ffceeef8b0e89bb64ccf9e8ecf5ec87437e2a74a02db6478e3dbfa008f76064ba8af9701bddf4c1fae10f9cacfd9120ab2cfdba4641eb9329c767306acceb22f7786feb8d3034e13eb497bd6957e973fbbb46c12f5cf154a34364cc1759a42a613e4f90e1b97cad058ff4c02121b80c73668d925566e9297612bdd075d1de3b3010454881aeff1bf93335059b44af850eeec8f81dd696e2593e6df86f40c613913364627d1d3ebd77bfb692abe37ad68fb8ddc3eff0102cffbfac4fa03b153f1fb1b07f67a36e816c768aefecf35121dd1249c2c8e6188d036ef8ae8151e25f95196ff1665b92aaa0fca5958dff22fc4b43b27a257144499374d275a1e42b7afe9cd8379f3607e0a9f05bee9d777614e1697410ca91c29717402133a12ca2bca72e5828821956b9538fa646ce8e6c1fc53b8c13117a62a728c8f2b84f062f16e1938edd41c0d654bf84037261e9b63136fbb32f16f07c1ee4ad48aa887e7bee33ed84f0753854ae8a884965e0d717b1a62475d8cd4248ede002973140c3dbb32cb9951456a5ac8b03798181ce5446c322f1ed6c855024b575fe96f9d432a1ba573c7dcb1577520e677bca75fb7c6df16cb719b636187d4e58bcfe351b5b1b7a512843015c5f1f757c114f94138dba1578eb4f80562f6e701ebbb89d93731fbcf7f58c93dbfb2908dc7b884887d2faa1f2062df5f4ec42604df44ec9b88fdbb70820302b6dc5cc27dc07b328bc1fab24e63bdbe454f555fb6a25490fc52096d09cc5c3bd838d47f9040493d2640673e59160fd616d64d62dfccd3730ce15910873026be2ee66bafaf18c2463ed664ea92b826ee37592bdc7fc5729278de5a48e331a84ddf8fd525573af2f953dbb94f6e3166046dc502a6f17fccfe7e5a9c5bbe666749de57195a480658272a2d9be540d9e62c704c0138c60ba135574b3515e2bbdad09528d207cfbf731d80280d34a6c8b5d71bea2f780ebbc8fcd68bb4d8b3d7053ad2feecfa1bc9131ab7b3f16ae2d2d0a71b2855281d92ba80782f6a6cdf9ee7a21b5b098c2d0138afcb1ef59d4c3c1b08869ece81faafbad407e0d9c57570a5b5e8cb1d44e3359505b04d218d7d2c9c291a67e1e9d6ccaf29a3fda835268979a4ed98f2548879bc8aad7c36f8b18cfc81e7fb93c5f88828bfd5364d3e178513d37f64a127a88f62f5b122fc5d95aab25a552af2d95561e40bc20312dacf91ed55499652a8acaa2ce0393c9497852936e5d32d2db7b0b7e94db6bfc9f6bffe45dfbaf85796f28ba35d42deaf08c704fe5379d3c1dc2051a83e48172c9649c93e47ecc77c44cca1970a52e5a1bc16cca7624e37a9ff4fe31187e4ff5446d6b81cb8a7fa4b2a77b9b6f94610d26a44de4fffde4eff7e2a20379773570c447a95af7432cb1799c4f2798684c769ee87292d0d5a35269543fba91c7a9a2e2172ac03f2ffa99ce727c488ccebedcf1850f62ccd15b29ba855d378e14c56f73f45014cd7c6d0393d9d4d2bd24096bf539ff95235f4632bc3afd896bd53b4c09279d72a07e68d7534358d2d86b225d08296273934f6e5642c03a7b322467812c39b772480a51f8bc3a0c6e2a975f4e6d5c8fa8d3cc75c41bdaeb058c39275692f8c6773022515af3f894bfc1a3d45ded85cc2c89819b5a602ed55d4aa3d4503bb3e8735635c8b551a5bf82bc63ebae6bc7067712f3b319a817e7d86cf1368a0fa009ffbc6be78bac3b154ee6e0c3ad1cbc8998aadd1a0ab21da3fd653dbb8fd0c4a3c572ae73091c014eafd7020cf16843e4b1b06fa50fddecda3235a15cf31053fa9849663925c0b48e2ca83c463e89486ae4ac069ca7e8c52044c80fbc3f73b97a341ff26e668a1b1da2c9e91efc3702b16bf40fb5ebe238973285552e712c5ace87c8572a787f5da76213fced4f17a9d8ba551ae3b6fdf59fcf7f58861bf44f8dce1f10bf82952a1cd01bd9beccf19674e5906cf00d335cad03b4f3b5f3c5eb8e48ed0d86182e649fbcec7d697ae09cbbbeaf6dbbcb8ea33c5d520f38df19e81436fc8d65e7ab622d078d0358f41a47b94e7e312c94f4b605c9f6571851a8bab3e7d2c52383846237c56f2f62a9aa752a7f9687233f2ecce08b0dc468285226b28cd8d73888d69ea27a5eb59e45f72167b9e1f9bc649e2b5535780e459a0251c8b2ae1652417f3dcb7909f957cfc60f1ccf5090ecc3e27eccedb447807c78e2975c86e7fd3308741cce2972902ec14ea56db753a131ecb7998765e98b98cb7ae97dcfed78af9b9de17034cfbd9e1afbbef2f9923d4559e17968f15ff52ce83333abed2dcb183e7ceb3951571f697f0a75e362eb55bed8f2726ef72c16655cc0766fc78cf3b20f05c62f24eaef07ed03d22ffa6f3c23cd069a2036fe9ce98818466b0c003f1bb7cfc2ea66bc20b5df7f3ef8b92f2e53dfcbb09c79a18d408ffceed6de18dda7e3fa7f49bfc9a9cf73676301fd8c27d2abc933a12be9d31775fd6902ba178d0cfbd85cfef3ce3b9bc90b4dfdd35c8bfcbdb45d50bb94a0c3f8ae4bd411dfde0b1da59eed87308741483d86238573bf7e81f6a9f2dd54196d01697b99c9879e098423f5d0fc233ce7dd7f27323b8577c1d3cdb2abc6794cf8ba29f6b332032099d03cd29a94b5cce3945263861ae2c5797cc4da71529db0b700236df91fc3872775b762a23efe652c72a29244fe3c48389679becee635eddcfe74e6fe91fdbe7a712b6a5e112ca9827103fcbbd516b22387689fc9c93a9577e4cde34c1b32d9e0774f86da63983cb20b692406e4e03bdff136bf3346fd9055e50ba26ae842212bc53b8c3cffbf8ea1444da34a895f28693f534b0f38e9da2afedcda1677b9ff567e8649c42b012703a1b3a2f6b13e8eabce4aeee9cf96dac8913ce7721378ac9734357ee4c83b8cfe6cdcee8b3b20cea260af6bc75ac8f72792349750c56d535cda99f924251f84e4b96d0aa69f80cce49bfb14f725a7d9a7781ef2ca23a37c55338616e12c152d0f99e294368e7b0fb626b1dd828a172d5ae4d25ff7ec2b83e67782c0970eaa2e734d129727210d7679edd61fc4d217953994eb046300e04ef39c50f3c2cbbeb84fe1c82bf5571250bbfdd0f8344315d674870f27aba45e45c571a0efdb8fe86e507ff84f7ed30ad88fffec5d3eb892f6ec9f7e4b7f61e9e4be9a6fa06cb33ed1a0f86ae2e58109e0c9ce69b4bf297d7286874903f7e0d5ff4e7f9201acd0c5d11a1ddc47f9b517fe853d4ea1a2cff0bef91b50a74fc569c7b1e8a77f83273dde26b3417b3c807b0aef0360ba1a4502c1639407e6c0e7d09df6d4ba0fbf53471bbe2fd0bb3b3f1ca0ea4005c4c793d703482f87f94878dc110ea68c4e5d5adbb9bde07a85b0b20772625d5254aefc4360f78e7b9bcbecff61fffc7e0682d37d6e66cc046e615511e2bd5bf55b1f2708fff77bec7f61756315025b192029ba99248a6f0b0c727926fca67bbc727b2a7e9cd617b73d87e3a670cbbfd1febb7a5835ec27d2b3ddc0b27ba6f8f30aa63ee5ba97ac1e26e94ecf3dcb779ae52b927b3503f3fafbaf96fff509671b61b97b957af963bc5dda2d15eb19085007e4c3e552e6cb2d454b1df0ccbe671fd5cabc41fd78ed2c9a1a8765c4113e2c623e6d79c095d7f66e687ca4bad3d6ad646c530580e5517e8ea9298633984e33ef74109ec154cb6e116fb612d26e1a253a22a63119bd3cda1281d6d0577a0d448ded8a2164e890b1c3ad626571a41a1f084aa183488e93655df3d5bc134a46edd12f343c1cc1ce86a42cb223c85ad2e56e7ddf02583bd9a7e8db41e695366028eb4218ce837ccac33f48949004cfd585d409bac91e43acd29c933735e5f8cdad39c85b8de1b75538072b3c48d8f16bb21b484be8229ec186d46434b080cd7b83305ce6bea62e5506ae41e37d02a85bba42522080c4837ae4b6e574c80bd1e320819e44ac305a4b012c84f2a29b4e509f7f9da30a2fc5e16c27ef36a61a00f13285b63af46f62c3b8b3a9240979b77da7958cf923096749cf3c3a4cba1e0e83e3d4f7b3da142f7a79d0bf5cec2d2b74cc598273ccd5b3631bdcd416a92cd854e9f461bbe376f9eddc42a7fde5cba2fbc8498fa3cdb25655780339cfa7267c3c20886a0313a75fd68784836dec5c2ce0f9825cfa16dc714faad5b596634899826a165176968c574fd4fbb172cd48698f076c3cb4ba1bbcacae9d484393303eec2f9d1bfa7509b656bda3a604ee76f1d33a76fdddb9fa379b734d056f994036e8a77cf6337d4e30bfded6cf750b93b335ff644e77c9d16c0cc99ad8ae554f8992f7d5f8fcf299f9bccfa9ac238c89bc9d81c095c5029dd5b26d013ceee7648009e63672b8f190545b7c1d171d3b500b51d9824fc660b5e4d6b765829996ebf4360e40e9857b94ccb5cb5dc747cc40d2a53e8c6fc7963f768c7e56b10dafbf7049ef32c1a860836b4f2f1f1f96a3cb1f02df26610332549eb6958421e3ab52391b78b418097ca67443e711d738ad73007fd4ba1b5a809fc04999c875114dd8da94b654fb9284b4702d4f7864a6461783baef4f27787bf735f4fb8ebdc2d5e7015d59409b0d7ab3d3288817fe350eedba11a39f912f79bbfcf3a0de3d81b56987fff4f0983b83fe34c6ff3e463a10ee61684dc2926f4fc5cb75c874f1328d3b3ebdaab29de97eb9bcd83011a1c339bb336e7d739aaf444e9517c78ac087fab1549552449aa9c035f50f92dea1c29d5aa742f64062b36d1b20223fb9bde2ce6378bf9a7337fb18bffb116733ae845ea012b0fcad13a48c778d4216379a57a2f3fdc974019bebb1e30a1f82a10079f8c4ddd8ce57f28b738d758ce738dae662ce739427b0573a05b33f061c6f22cb7ea4c63399fc7c718cb9186b0000e632c48af957c4ed89e7ca897a306706628cd19214b05e65abc6d8c0aa6505f85bedc59fa354d8672f307c36926062c4fa7860252ef96e5aa81da61c3d1d69e5fdba09ae5a995cff998312dfd9ed4e6ad3dadcd8df9f66ad7475fbb82f2ba698e5abdf6eaf58b3f77edfe0a448200f467d9d45d017c69beb952fbc4b560180df645625fa7a024de95d64a2aafe55b9ecbd25966676fafa29ade0d665c5380f37a893928d4d0bf5d8bd8fce1394f611a1f6f73dc139233b4f46373eac6853b2378ace6f5397984d9bea479174b1883a91f8bcf7cbec78c06bdadba04250ab7e6c7bc66b22966ff9dc5d1733a0eddd93d06a50371e629df2fc4a6f2b17ab12ab4d3f5b5f6d5916ec2182c4b0c8a22c15ad7cd098d8726794f242791dfa3b2b356ac59521ef7c779a02bb3d85c822143fa4f63f681dd5e18cf56c573687cab2fa119b01581e3931fdeeb5dfcf70efb6dcf1a5830ae473c363edd2b7dc7d89adf73b1f49bf38ca6e99dcb1b4d795f7940c7dcbd2933aab17eacd12e4efa55ea3aef482d33ff47048f9a4058ab0f358250fda204a4f86604b919416e46908f526bd8d5ff6833081df6228610a17abc20f4cf1b424ac066df6d082114df0c213743c86fcc31ce3785a4d026572b1d9d8db1dfcfba43c7754d22084c81e373756a1cf074fb08f7d1197ac467a9c67be3584e9fc70c4aca560c45b95a688cd64b2cbaefc65510df2b87aecc99997cace6da9e6dc9e4f7184c816c253c060fc408419dc4f62c0089a3b3a67ea449aebd16a98a89fb2d9f5f2b9cbcf4f5fa86efb5110973cf6e472c9d90a60766a9b2dc575aaaa631d58ec15faca71e2bd316c4080549e5a586081cc29b6b57d8dfd8f9621036a4fc9e6e4d037d48d2f4fc447be90bea5752e2b88eb45e7f9595be3e6d4fae6d7a91e89e3ce7528e5f4bd7390f6b998343a2a68c2f42c5ed3d49a0e756ccae187ffd62c8ad5e5b70e3d7b9fba60dcd4448cc9e16b99be1d08dfbe26bdc2f40f60c6c7176faba7c52334c83dc53a2c2368fcea1548de56b3a3e17faa550be4c0728d0cdc9be185aa286db81c8e140f2f33ea31f128ff32170a3ffa06876ac4e176ef10bfcefbf4395ae4f26cfdd54cf9b20792941925cfb8f553bf1909751391f2ae7a99c32b98b0fe7a99c17ac2e4029fe189593cdf514169535bda99c374e71ceb53da66e1244cd42058232ef31411d24de2b226a63516a4e11fb3591799632712dccc26929b2e85e6ff6cc73cc8f2af735f5e57224073f3989be6bab8daf782c43afcf60a9dad6d96015d0a28876a9aa937ac51bcd6510a311456e1c4e81148650b72460afb80a8745fb21695bba0658eddbe7d9232a6b02ba199a27b0dba13b1ee139c6ae63cd5888eed068748868ddaa69115679f228ab6edc7f013adaf8fa7a38b0ad115123599a0ede37bb5f377b473cf6f43ced568628afcace7e775e4328b9a1a7ab32556138da6c3f7756fc9dea12742cba665d56e9c1b3954da0d717a4aa45c3a215d9e99d18011b0c037b2d94a4d0e53dfb3f5c1bfc70bb1a395bb4e2043d9baebd9e95559cf0135ed68dabd9f5f41e6668b0348cbbac3a059dc7d31c26dafff8927a4435a7fca0ac3c1ca6f7e754b64377707f0939722fce445a64e7245f497a81fbefc4aa08e37de88ac47b99afe22f7bbab5307465b967fc30902c86466915cf9070ea371fe1ddfc31980de6fff27f0c82c1781e7954723b50a66ea7f92fc24aa9fcc2c27537ac949be6f9ff77797297117cac1aba33fe25745259523f0a41050f7429c594927d4350b929a67f022339534b1d37912f59427b0bf3f25a5a2bab0731df4a22dc1b3b4edb77b6b0a80fd7e128a3b74fdaeee2ededd71c9b5de09828d8e3e8bb04fd5057174038492b7fc51af20e2e224bfe4c35d6b0e89cebbfbff6c65e6d1848d682e2b59358eb0570fcd0d7eb1b5f0e967edc3ee2689d6a80e28f96029d783ac1608d806d2d8c063d972dac258e475ba02bca8638441b9d2594320099d461d99e6e27c4128c6592e4ce6b98d8ed6d27e7f65c6e602ebf2998cba13b776dcb862f778698cfb87625dcc201269624e868ccd94bcff7f6fa1fab3db9877f1240125e6b6717c3394dce2fe56579acf01340600868d2592030fc2e6f01901835126811bef6fc8dbba90fc197d1fc6bef3501354178fdf224b7ec3a7ad5ddb9a97786e6a6139b7a3b71257394afbbf98e73c0b0c8d1e827f1a72fe3f8a77c98f30c82391f48f5058ba74fd81b741e2ef59e37fd70ee46067ee14968c5836c0848009d37a6270fc0939cf13e9ebb471c1b9f828f3c2bcbe0998109ecbdb7c4aab66b61da17c490073589fb39308fbd756c52c09df2dc86f3f6a204080581fa567cbe752cb69fe68210c00f47548d88d35816ebcf40cc9ed133c3536e761af89bfdf9317bf68683394c41ad00e090ca78b9dc8e741df0b807ea85d0b3f4bc0d50c4f372f05d3d0b8404dfbb5d001414103921cd71c46ba1abf101def8cfdee0b783fbda41eed822fb1be856e2daa6e0390015014908a08fe54b7b736f46c06e8a20c9e4e83c9fd957fb80c8e4acee1270da33f20e4be28a01ead0bc1d6231663551f4e73088ebb3c0de5f87e9c8392074f03a0b47016bc40260cd39c0257bead1b0f97f995c88fe03e74cc89db3b300628a80303f5d8b62f3eeb9a639544c3728e4b765f4128f14798b7cd94afffbc47789ddc3fdfcea68eeda4977cb241e1ca8af11a8d3f679ec7f9bd43919927575b1ee27b19a53f46e14e83fa5c6c901c0ae3dbc8b07e851da4af0e00b6fd061d9ed14de7f2e7d39502c4663694ed94e8d2b2eb7ee07e43915a06bcf592de42bb23682672be3ad1a77f9b5a4ba3aab77f1136b789560c4b9375f1cf10bb1363f19815812e173d40f74c12ae71f1781f86bc37b6e7ea09bf9f6fde65b7ad3afeded21a35c24ce5016a50f8833bc603d734af12dcef0e6cef97df8c141a78de03a1d911b3019804f56e44aee0c8386b531eaf3a11f071b878178047a5d081ceec83127506e0abb2176a9004533ab9822ccbe250650123aa59ba23f6e62217036200e1e6260e0823b2f0058a0738f73a3e0a0b068f85c3a1e092792d3a28c64fc81ad8a58510c9c66c2401e88d11ee40c4f7e5279498bf36599345ca162749584e939af0c58e3294a8dae7c3d238d08b8cce83f7593fc78cc98526ba6a0327c0e3985263048582173326c178dcc09a4fed85a647d3d5553fa7a15fa6dbab71a24463cd90c8c2867fc643497647c95676beddbe7dc9e160cd1ac7f1252b77f6d8932c5f6a64542f18a8661def607fbed203d6cdff36b3e85110dd32ba3add4289cae0b2f4a564f80fc9a0fc1fb01635586289df76ee165d95a7892b20cf248ff5daa38a486aefe96b2938e7bb440fdf142957a67eacbdacc7546656bbe85a66b6d5a91f6c5d3d5a52ff543306e2e616f121a14e99b157a176746b40a8d311a427b156ddddd6de56b1dd8d686188f44d64650e374deceb612561781630a347473f76c80589d415d95d9ef29cd1c2197f3acbc7114c66a8ffedd44be504f80656db68a0d7e85c5bb498bbbc978cf39b85613d13189936961d489d10505b5a203d4b32b244b36d0ad4a505b9d712f5364e7d27584b14aef836522a85b6f814e8c7e39e4f36a49182c05632bcc83d28fefe90fcfd1565bebfce6615e95ec5f4b5fb266c03685b6ad2c4986e98886c4e669e98f89f395de599d85cc12e7d7d3bc65a3d1b7de9a85d98a53383605d756de00c9e0ac640e55bdbe807267021ca36c5e8b2b65fd2df92b7d48cce58d7e52d5ae60694e3e0b66e61756a77bbfa64de7299c22e0664d6f9af64dd3fef59235bfe95756b5d93017899f7cb83f4fd5dee5424735ed874b064e3edc7f94a2fd6bf9d04dd1fe63d8c1214d1b207f6c9272bed70a7f0cb02622a125a4ae700938cd0d2d9bfc1138305ae2d1701ca691a5f325e18b196d1f142ad5684e694813d5e4d2f1c3bcd698d2986a75db7472edcac2527b3dd3dc8cf14e1f21d6da2cfefd58548df02a92e86a38f1e2e8f01bc0da7ca41c2a63b9eff7843bbcc9a13739f4377d78d845bfb2184a47b984147a2f9ce9f0798f145a5278e6bd5228a1f72685dea4d0df87191c1242032cb4ccbdebd56b903d5d1d427b44853e69b8746d71faa10268ea4ea2391b7e9c1576dba2e7dac8106d3f460b1e0796a38508b42c6f26effa4a63f949db88223b10336d3a5f6d45fa6cb07dc1c2b0d35cd0a278f58d2fa96f9ecdf24f28a67b36f6969b0beaea1848d6c8d0d1a2154e880ba786e67cff589d0aabe2dae20aee2f0ac97f67208fc3654063f8455f4a0ba7f2f51917d767f266340eee591e7d81d39509eae95ee663cd3a4b4fb2165dbdbee9c5aae54b56420a8216629d691b431fe27e1790c5add2c2a1978fd19ac4f131ab316bf3a1c23a09cfba198d6fc2fa4d58ffa0f7995ef26b0aea64844b08e9d2fd9980e3ef11d2a5cb09e984de9b907e13d27f0f267040409788b0b4845196a4e63ae6d1007f57aa6f78c0b945126e6815e940af52ab6403ad8023aa248e201ba3104790ab04de731d80fab115fbb1b5f1ea5460b274f50b43e72d54d42e241a4824c93a01364880634e6822b4fa03d80aab4acfd0b5599209156cd5451e71d897ad958f857fdd1af5640d51246065dc97d126d0ad793e9e20b0954de0682b283789d00b73ed8d86a9f8720741164fd3134d12437371016ffc3d0a8f0978a4cd99029ef42ff1be270a8f92fc28cb7f8b72a52aaa0f4af51c094ff91d4af0ca9507511065de349d68098f3dd0f426e1dd24bc5fcddcc92dbfaa848747b84830802c1f96f04e603e87443cca7d2e28e21182af22e27d32f67313f1fe042e7044c4c3221009e3ac8f32d187845a968608e750355918a63605112f96e0738c1634d0d186a36bf2822cad78bd74ed0c19d48fad2178a6636e895219e267a3895cbb9d1675317492637cb85fbd9ef87b429c73f4af5ca7b9a1453f08edc53ec7245739ed13dab8cfe1101ea3571787fed89cb8f62aa5391575e95a13cc916cad83c4733aa844ac2ed45664e26c4aebe545c7f1c09f1f8d2acdb54bdd68f71f6423542e5844e27e7f40d7cd467893206f6f47eea25f578a64a35cc456a8aae7d90a1572e1ce34169670a1771b0b31c11f632c64533d850d654d6f92e48d1b1cb9a7dbd2a4825845eb4c728a55a1c73cbc5d5bd995ca2482543283523066c8780ba3de146194252b425d1d7b7625a212565d0cf42145ea90eabc9a3b968c16c036052f6fc48b9565f0bc5e022940e0192d7afd7aaf44d22206c3bc179a8cf32c6afd44ecf585eae5e81913a4aa299494faffc7ded53627aa43e11fd4d9bb80b25b3e16aa014669ab9540bedce1ad0409e8ac58c599fbdfef9004ad9656dbb5ed74860f3bb3bbe68d188ecf3939e779225d9d07999d36ac67831c6bc3982fed6e0048c98ab9deb486f3df1e6f8f401a95019979e9bfa7a2c6a60e7f79c5dc60ba8fe2c72fa4827f3f7efc5ac3dde2c7f617e36f7f319adefecfc1940d339f0367ca82fc0938b3217dfdbd38932eb8c5992dcefcde56e374ec191c5c183714fcb3cf69c13f6ff3940d4e3409a26c719831ad416b5a61b20a6bb1f11a305ebeed33f1a582f8f901935f5ecfb36d47507f8f8d90b1d295aac0fbc7bb75dae92e8ab87b4e7ea17d83a09deec68d0f180419868c26d60c41eb4f03deacb5973a1ea0d15b16d9657a516c2d894a285ecdd35f865efc1e1093b88e454b8bdebdae3a43d2b1ee4340167e1f611f903dc2009b8ed3a5d9bf4135365851164fafc2c33d8e8d29a10a2f7902a440933541f9487978d52f10e7148767a1e64b8a107446a5eba8f6245d3fdd9764f7d9556cdbe690b18ed67d039675dba0b7c599676f5c28920747483e800820f51e52ef08eca64dbe00687f4baebd1668b740fb1bfe64b297fc03f1349de03c4abed251d5a433e0e6062ffffd4abed21b05935ae0dc02e72fb302afe16386510639c3589c786e1ba3f5a02cb9703d473d4af0151e540f993eefd7887500ad90591a1cbfb17fdb154e129956675ff01c2b8bc60de45834097334a71555f9f09716cf6243136a259a84aae438a30e55cab9eec554a1e77a581ac09ab94c71840479adf8c2e6f3257911b19bf20dd3c3553203ac1f43c9aefae1409a2ca89e2cc0d8cfed0239e6dca5d90c7dca608f1c73c3d441aef2c138d81bbb563de1154d98aad3e8eacc8526090199eead6bff59889f35f593451fdaa50787b12b611c64fd6908ec72abaffac2f7c62a84b689b90b04e53c04f8796c5d78f1fb7aeb1ed3ec08ae07bb64187cc41533b6eb98d7e76422d938c8ac194f007ea9628b62f127d57b7128e1cad7d88e63e816711d73ea6dd9e6d5795052851ec983072a1665906b1959f8c0ce5d48c90fe91a0c1d615fb76b4c7e8f60bf7425ac3c8c8d45c3f84c4149b7aa67dba09c93d101f4e8d333447da2ea6ca51e5768ba89677b67c4cd5855dd704c89150bae3ef4c6f3fafaf91cb0b3b930b4f0c12c555c9d2db39ce4cfce4df62c897be9774680eac6f64c790c1bb27c9ace8c1ece4310c7e349cd7a4e7a955fc359e6b7dab51a2938699a4c15b50eef81b876ae163122c1d3e63ef0a5de3ae724b331d2c93be7daaa4c9408f6d368accac8b93b57f6cda2f08a24781d4cf1363b10f51e2fee774791a58e786ac27605a414e1d7f9bc38f16518758a17d7a55edc2930aa7ed01360d493a6ad17d77a715f83dff8dbfd01ee1b1bf92799c5c991db59d6a43630ddeea71998338689aa55b706a63530ad81693430dc0c7cb099f9b958cc7efc89c2e44f14143fe65e1cfd838b63c1a217fa6ccd51477c53cca8c9101d8b1929c2195519e8823f2564f4c5a6a80d197d7f8bf0d21bbb8b1cdd6afddebd604da0adf60d80051fae2eb47876e9011ba3eb6ee5c95efa802cbdb2f290568a915b4204d7ec76d3b94b0c804b045dc5c8b010eaeae626b97c0ca1bcf2245ae65b0c0475e53aa3caab5da26c2d0f3a2a0ef511093239f375726569ddce50eb96fbff9f2edd8eb531a66cfe1010c107930bd3712f071da6bb771bcf2e0712262ebca3eb7533258dee597b048864006be13ad6e6766cae50224e07d02e027d240f1c5afb42f8d8b171bd4e3dc78d5d698d83ce503172351bc06181a0b80af5b4a014f8c07e7024ebd1cf47c4cfef925b1af9b9aafe5c7a95670ffa9b60232428eb6f0c80f00016241aab8df33aa23277256569242a0e32820710cf1118117f2a24a16e8a686c5cdc6aca7c6f8eebdeb3f5f13d8903e016fe585ca0d260fb23c5eba77d4fd90b4754125f1ac9c6b44bc2e9eab1ea538f71ab29d5fe5c68c993bf4f578f7cbf8fde7a32d313b530a88541af1bbdfffe070000ffff010000ffffd0d254065d920200`))) diff --git a/go.mod b/go.mod index 6d0ba8254..e7a7a870c 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/nicksnyder/go-i18n/v2 v2.1.2 github.com/openconfig/goyang v0.2.4 github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 - github.com/pkg/errors v0.9.1 // indirect + github.com/pkg/errors v0.9.1 github.com/pquerna/cachecontrol v0.0.0-20200921180117-858c6e7e6b7e // indirect github.com/spf13/cobra v1.1.1 github.com/spf13/pflag v1.0.5 diff --git a/locales/cmd/kafka/topic/common/active.en.toml b/locales/cmd/kafka/topic/common/active.en.toml index 935785c51..f209bda3e 100644 --- a/locales/cmd/kafka/topic/common/active.en.toml +++ b/locales/cmd/kafka/topic/common/active.en.toml @@ -41,7 +41,7 @@ one = 'topic name is required' one = 'topic name cannot exceed {{.MaxNameLen}} characters' [kafka.topic.common.validation.name.error.invalidChars] -one = 'invalid topic name "{{.Name}}", only letters (Aa-Zz), numbers, "_" and "-" are accepted' +one = 'invalid topic name "{{.Name}}"; only letters (Aa-Zz), numbers, "_" and "-" are accepted' [kafka.topic.common.validation.partitions.error.invalid] one = 'invalid partition count {{.Partitions}}, minimum partition count is {{.MinPartitions}}' diff --git a/locales/cmd/serviceaccount/active.en.toml b/locales/cmd/serviceaccount/active.en.toml index 055eda7a6..164e3e5f9 100644 --- a/locales/cmd/serviceaccount/active.en.toml +++ b/locales/cmd/serviceaccount/active.en.toml @@ -70,3 +70,18 @@ one = 'Sets a custom file location to save the credentials.' [serviceAccount.common.log.debug.interactive.fileFormatNotSet] description = 'debug message' one = '--file-format flag is not set, prompting user to enter a value' + +[serviceAccount.common.validation.name.error.required] +one = 'service account name is required' + +[serviceAccount.common.validation.name.error.lengthError] +one = 'service account name cannot exceed {{.MaxNameLen}} characters' + +[serviceAccount.common.validation.name.error.invalidChars] +one = 'invalid service account name "{{.Name}}"; only lowercase letters (a-z), numbers, and "-" are accepted' + +[serviceAccount.common.validation.description.error.invalidChars] +one = 'invalid service account description "{{.Description}}"; only lowercase letters (a-z) and numbers are accepted' + +[serviceAccount.common.validation.description.error.lengthError] +one = 'service account description cannot exceed {{.MaxNameLen}} characters' \ No newline at end of file diff --git a/pkg/cmd/serviceaccount/create/create.go b/pkg/cmd/serviceaccount/create/create.go index e350b0f79..0471c8cec 100644 --- a/pkg/cmd/serviceaccount/create/create.go +++ b/pkg/cmd/serviceaccount/create/create.go @@ -5,6 +5,8 @@ import ( "fmt" "os" + "github.com/bf2fc6cc711aee1a0c2a/cli/pkg/serviceaccount/validation" + kasclient "github.com/bf2fc6cc711aee1a0c2a/cli/pkg/api/kas/client" "github.com/bf2fc6cc711aee1a0c2a/cli/pkg/connection" @@ -50,7 +52,8 @@ func NewCreateCommand(f *factory.Factory) *cobra.Command { Short: localizer.MustLocalizeFromID("serviceAccount.create.cmd.shortDescription"), Long: localizer.MustLocalizeFromID("serviceAccount.create.cmd.longDescription"), Example: localizer.MustLocalizeFromID("serviceAccount.create.cmd.example"), - RunE: func(cmd *cobra.Command, _ []string) error { + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, _ []string) (err error) { if !opts.IO.CanPrompt() && opts.name == "" { return fmt.Errorf(localizer.MustLocalize(&localizer.Config{ MessageID: "flag.error.requiredWhenNonInteractive", @@ -62,13 +65,22 @@ func NewCreateCommand(f *factory.Factory) *cobra.Command { opts.interactive = true } - if !opts.interactive && opts.fileFormat == "" { - return fmt.Errorf(localizer.MustLocalize(&localizer.Config{ - MessageID: "flag.error.requiredFlag", - TemplateData: map[string]interface{}{ - "Flag": "file-format", - }, - })) + if !opts.interactive { + if opts.fileFormat == "" { + return fmt.Errorf(localizer.MustLocalize(&localizer.Config{ + MessageID: "flag.error.requiredFlag", + TemplateData: map[string]interface{}{ + "Flag": "file-format", + }, + })) + } + + if err = validation.ValidateName(opts.name); err != nil { + return err + } + if err = validation.ValidateDescription(opts.description); err != nil { + return err + } } // check that a valid --file-format flag value is used @@ -199,7 +211,7 @@ func runInteractivePrompt(opts *Options) (err error) { Help: localizer.MustLocalizeFromID("serviceAccount.create.input.name.help"), } - err = survey.AskOne(promptName, &opts.name, survey.WithValidator(survey.Required)) + err = survey.AskOne(promptName, &opts.name, survey.WithValidator(survey.Required), survey.WithValidator(validation.ValidateName)) if err != nil { return err } @@ -228,7 +240,7 @@ func runInteractivePrompt(opts *Options) (err error) { promptDescription := &survey.Multiline{Message: localizer.MustLocalizeFromID("serviceAccount.create.input.description.message")} - err = survey.AskOne(promptDescription, &opts.description) + err = survey.AskOne(promptDescription, &opts.description, survey.WithValidator(validation.ValidateDescription)) if err != nil { return err } diff --git a/pkg/serviceaccount/validation/validation.go b/pkg/serviceaccount/validation/validation.go new file mode 100644 index 000000000..200955b3d --- /dev/null +++ b/pkg/serviceaccount/validation/validation.go @@ -0,0 +1,96 @@ +package validation + +import ( + "errors" + "regexp" + + "github.com/bf2fc6cc711aee1a0c2a/cli/internal/localizer" +) + +const ( + // name validation rules + legalNameChars = "^[a-z]([-a-z0-9]*[a-z0-9])?$" + maxNameLength = 50 + minNameLength = 1 + // description validation rules + legalDescriptionChars = "^[a-z0-9\\s]*$" + maxDescriptionLength = 255 +) + +// ValidateName validates the name of the service account +func ValidateName(val interface{}) error { + name, ok := val.(string) + if !ok { + return errors.New(localizer.MustLocalize(&localizer.Config{ + MessageID: "common.error.castError", + TemplateData: map[string]interface{}{ + "Value": val, + "Type": "string", + }, + })) + } + + if len(name) < minNameLength { + return errors.New(localizer.MustLocalizeFromID("serviceAccount.common.validation.name.error.required")) + } else if len(name) > maxNameLength { + return errors.New(localizer.MustLocalize(&localizer.Config{ + MessageID: "serviceAccount.common.validation.name.error.lengthError", + TemplateData: map[string]interface{}{ + "MaxNameLen": maxNameLength, + }, + })) + } + + matched, _ := regexp.Match(legalNameChars, []byte(name)) + + if matched { + return nil + } + + return errors.New(localizer.MustLocalize(&localizer.Config{ + MessageID: "serviceAccount.common.validation.name.error.invalidChars", + TemplateData: map[string]interface{}{ + "Name": name, + }, + })) +} + +// ValidateDescription validates the service account description text +func ValidateDescription(val interface{}) error { + description, ok := val.(string) + if !ok { + return errors.New(localizer.MustLocalize(&localizer.Config{ + MessageID: "common.error.castError", + TemplateData: map[string]interface{}{ + "Value": val, + "Type": "string", + }, + })) + } + + if description == "" { + return nil + } + + if len(description) > maxDescriptionLength { + return errors.New(localizer.MustLocalize(&localizer.Config{ + MessageID: "serviceAccount.common.validation.description.error.lengthError", + TemplateData: map[string]interface{}{ + "MaxNameLen": maxDescriptionLength, + }, + })) + } + + matched, _ := regexp.Match(legalDescriptionChars, []byte(description)) + + if matched { + return nil + } + + return errors.New(localizer.MustLocalize(&localizer.Config{ + MessageID: "serviceAccount.common.validation.description.error.invalidChars", + TemplateData: map[string]interface{}{ + "Description": description, + }, + })) +} diff --git a/pkg/serviceaccount/validation/validation_test.go b/pkg/serviceaccount/validation/validation_test.go new file mode 100644 index 000000000..2e35ee4e4 --- /dev/null +++ b/pkg/serviceaccount/validation/validation_test.go @@ -0,0 +1,126 @@ +package validation + +import ( + "testing" + + "github.com/bf2fc6cc711aee1a0c2a/cli/internal/localizer" +) + +func TestValidateName(t *testing.T) { + _ = localizer.IncludeAssetsAndLoadMessageFiles() + + type args struct { + val interface{} + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "fails when length is 0", + args: args{""}, + wantErr: true, + }, + { + name: "passes when length is 1", + args: args{"s"}, + wantErr: false, + }, + { + name: "passes when length is 50 (max length)", + args: args{"ssssssssssssssssssssssssssssssssssssssssssssssssss"}, + wantErr: false, + }, + { + name: "fails when length exceeds max length", + args: args{"sssssssssssssssssssssssssssssssssssssssssssssssssss"}, + wantErr: true, + }, + { + name: "passes on valid name", + args: args{"svcacctone"}, + wantErr: false, + }, + { + name: "passes on valid name with hyphens", + args: args{"svc-acct-one"}, + wantErr: false, + }, + { + name: "passes on valid name with digits", + args: args{"svc-acct-1s"}, + wantErr: false, + }, + { + name: "fails with capital letters", + args: args{"Svc-acct-one"}, + wantErr: true, + }, + { + name: "fails number in first section", + args: args{"1svc-acct-one"}, + wantErr: true, + }, + } + // nolint:scopelint + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := ValidateName(tt.args.val); (err != nil) != tt.wantErr { + t.Errorf("ValidateName() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestValidateDescription(t *testing.T) { + _ = localizer.IncludeAssetsAndLoadMessageFiles() + + type args struct { + val interface{} + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "passes when empty", + args: args{""}, + wantErr: false, + }, + { + name: "passes on max length (255)", + args: args{"trl1rmcyl6dp4xxqy0rwudhodbpjc4crja8ibf2yco6obalko6qor9n2a1wsqruolg0ewrndumw2xkezzuwg8pjo6ntsmi1cjw99hjcko4t2kjkxmaswzgk8ko75pcs4js0pzypuyjxxnld4dijxadzs8peioi6d5jjxxtfl9vicufmxuacvu7m8ycbwhsbiu9ipw5fxplf0ojs8bxd7hwt4rn4phbcdgivxdzprhyfjamkgjzytjz25cmqagtw"}, + wantErr: false, + }, + { + name: "fails when exceeds max length", + args: args{"trl1rmcyl6dp4xxqy0rwudhodbpjc4crja8ibf2yco6obalko6qor9n2a1wsqruolg0ewrndumw2xkezzuwg8pjo6ntsmi1cjw99hjcko4t2kjkxmaswzgk8ko75pcs4js0pzypuyjxxnld4dijxadzs8peioi6d5jjxxtfl9vicufmxuacvu7m8ycbwhsbiu9ipw5fxplf0ojs8bxd7hwt4rn4phbcdgivxdzprhyfjamkgjzytjz25cmqagtwa"}, + wantErr: true, + }, + { + name: "passes with spaces", + args: args{"here is a description"}, + wantErr: false, + }, + { + name: "fails with special character", + args: args{"here is a description!"}, + wantErr: true, + }, + { + name: "fails with capital letters", + args: args{"Hello"}, + wantErr: true, + }, + } + for _, tt := range tests { + // nolint:scopelint + t.Run(tt.name, func(t *testing.T) { + if err := ValidateDescription(tt.args.val); (err != nil) != tt.wantErr { + t.Errorf("ValidateDescription() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +}