devicely 2.0.10 → 2.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,32 +29,36 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: 'eb25201d092f81960aa97b614ff5e1ec',
33
- content: '1f1ab69d5a9c8c59cf3adf3b3e4cc68323d9e8da07d6c52581d7aa039d9cc840da0d28ef6b1805ac65aedb9ad56df24ec70c8918d339de285eb61b0661aebe37252329b2e8aa65cd944f809b08c953e43ad22068b7f737cbc2605ac2824a53d2ce1356e16f234edff64e02212e5a122ceb516c938e3afdd77dd2725db9fb684630f96e2da87bb19b3bfe3977b579d9fd8b8ee20e2ef7715ee3e8971892f5f35092388e0d07db06578fdcb19a5bb4b796eea4837da726a7736016bbfba2f61d890ae5c93b2cb6b8c195493a21952ae41e1abf59c1033188634b5c7e8e54996ee0295e434c3f9462bbc4a0191d3ea09b279cbc1d8ff3859bb2d0f3b9c48ef9fbc96cedfa5e51d9c03bcb700bf720b43197847e9fe307afdc495e9431d64e6a3f4da6f290ea380b74868ec7281d1bebb6ffeff8bbb4836ee3f865b232f944a23f35edaa5124374179242cc87f8cb0d1af36820bb113a813f9937b34608771341a072cfbdf9f3f2f150f99a9cd41f42743caf58280398b7bdfc476c77610712a46ff78fc7cdccc6533a1a1d8d7e6ec6660ed5827be1d558a2296c2b36c436cb042e2c6a0e3037b64a5d01d1f1035c5f75ddcc4310ec0988f0f5974d2e783e73dafe50677df50ab752b18408f6aab211b355cb1792a594bf376385a6c3058943cebb88e8460c733cd71d58b553db97eff735bc699bbe6f1341c4f488a1e159487a0a89067106ea3a4473dcc5bb845100fefead4bc36ebe4fca7e37444b98414029e76c761f5c8ae7fe4051840aa6dc82b999cda1170dbc7c4cc5d3faa030cded3c1997f75b8ff97f6158b7e1c9b068e12cf4c1b29b820dd207ff9ac69079dc12d8778d7617a1749cef58c6f767ddaa01ba7451d31507b9e249096067fa6394b9c6c51efa6553f7957142e2e7fb2f699d8bc0ef83a626a7d5ade173cbbeaec7fbdf5aa2b838d5bc5883bc560c9835846a6fd14419fce2dd66a75340900b97ee9084282dd5488ee358a1e8f91be4a134dd339f203a2a5328fd184d2f9f54e5e1f48b0770739a018969244aad9b3943ffc1a870d2d6c2ea34a5092f89b7f73ff755f066f10bacc04d19790567cc28dc1c876229b0adb4a5d3c2a748d1e13b4cca168bdc517bfa6045f1424dda1166f2d56c89d1abac4c4a3ecef18db015e346d7ae6ac00152a9e9823965b8869b1c9837db9e5a40a964428a99f1f7a8b7bf2818810d7dc196a226c1d882424c03cc554f97ef6fa509dc940307d179001679d4b7bfa6cf400a69b2abbab7294490646d2dc9a3542821af8b1a701e1781feecc9d401dbb6285fcb44f74c53db6ee7cb6bb6c549181c2a7e059abefe391bba84f4af5d8b9288ab63f18df985d5067630131da87b72253cdf52b00a32bf567c2835f77ae42fa58654e0f16604025b8858c9c88f86c895eb10dce6dfcd961a2b5cbe26f7cfe8c9f52b4189f10a0284b7343ec5ea14dc2832bdc08e66575846b07d9ae672507f274b2f1d340c4e2dd772629de814692954b4913285245b49282345eaa047da71735b1d59533e6ca72f1c61d1d5a1cc016962d72111709525418fddc39ae494f9d75eec928aa84ef32180cf50a2ff941cf68ba561d5793751a99f0146ec8ebed685cf90a0f9f8f7bc82a9799c6c7fb12045a2b14624829161fbf1f7cdd2e20b61ea4e1218482a1219abb6a3d3d9dba7f24318e54057ed5dc9f1db2b40cb7f84a3925e928e9df72147629c29751969d368bd288cca0a9efdee679e76e7cfebce63a5de9cd09d1a5a2239b632a24a704bc8e36b671f5d0d6a93183c76b68ca9647ffda42a88cb8878550da1b2cf81580805baff41a595ae6986a3c1b423f90aed74664e3c80c3c7e22074f55120086afe660d7b51165c24bc84c8b85d03ba540b50eafc896a135aa5d24b648b12100d7926b31270242202cfceec1fe7141654e050ff43ca36d10abee7533379c54607d9c123d230828b07f1d9c202a210a7e0f64eed63ab98c7c0a9ed2e7b903d0278f917a2255ee4acb8b0585a2b270e224dfcef1a90f5aa4008dc7128f4151319c35eed671543a3134da3f2ffbc89cc7784ea294e02acd47325993a53ca5e84a0cd4fda25e366eb69b375789bf5c01982c8784718667c97955f49f3bce2eeb4aa554b881428a17107f3222076c6eba4efe1117a0399c4fb75243a9f213b9ebd36e979d8021b88f4b612b45522fdd68efcf7716dd1a52c63c4b877953d53b2e0bd7dc38e03c75916e04c77526204eef3d8ac391344cb5e6a8fbc2ad25a817659e1ebd12e6e1aa220f2036641a935cc16bb54d7f2cdfb2a551026ba762b96f12e64a4c1e4fc1039eca9dfe725a120a91d7577df2e1ef5a2c25d740be6ee75820a27b5963defa282fdd7e9c25affe06a689515a44e8309d0184d09efdbde56173214b192392b7c24d12d9a47fe3a0e8d9ce574e5272721890baf24a4c8403a6725bb615b167c0dc18b1feef7d97503a74f8340cac5a2bec5ba3d6be284ac6d7d9e55588747c02a37f7ab2f4c700404efa191867a370fc78798b0b98dc611dad81a75f8abc6a289ec45892e4053c29ed3ece820cb1ed8d74b84f9957221cc15a8aaf3694a5c939559a33d23fdbb37601f14a6572bb46e964004cfc19392af6ca512651e0a2c6e481dff4b600da43f7706f3a0ff546a0e168218b05686131795f2a88d4eb9a21120a0c82093dac9e2cea5112160065cbc313a9ce045d58f00e648836445cd5a144ea79b37770c80c0f3ac6d44b359fdef9b5561abb9f51e38087594af7ad26e29b437bc39ac508a485392b424d001252e1d1c38ea1d93628601385311f937a0ba0979f59609f1e7657c435e1ef5a1d392dbbcaeca90746539af3acd1e515a1635e70593dffd915f3386d6fb850f79a1b27a18e56b16c961652b1d579d7220f7965cc3c8ea74d7570ed3f0816779b5473bb413bcf1e432455e2a919140cc9faea00b260e67fcc69d85cee9f74d1322f5e953014343ffb0cb5aa452ba2376d8c06318c8b9c9a8f05123e1395c950649866fd3a890efa86386eb19e998b9dece619a6053e23270edc1ca43607c52ef66ff89fc44706781ed92cfdacff92f348c9d4a6a6441ebf2c7394b008ac70035cc07d65bc52b58a96373908a5b23d64b28abc97154d9f2805dab451b6f8de6824e1ea7b18d0dcdbe72cc602ce236c0638627a3331ac697830ec1256cca264ad90d200d47ab0e9ff594b05dae8cfb350ac9e84870ea58c0a82c965b40de6603e26ee248d428d6c04c90dbb2c2566f1d988c7f761c1bf6d5f533e8ab97a9db2a3ca7f07b9c4a954a45944e73f308f6878476ad503bad0328944d4f454dd14f462fa196710952c032cd35516401ae29eab3e019876429fb35bd1bd883cef9a991b36d358956f79ddd0b9da975223608cbe2b83d1fb8b4c1cff98a590e62f82b2ffb1d3268364c810462bd303c7726bdd8b0656ec0d640c6efad828d4541074bc9ea95b8383564136a677c69dff68e372e56aafc6a5ae5145a7b0683b0efe6b53659e41a00f193ee61f1dc32fd35d5425f6c4a0d6904f4f1ef4f1307447de22c040602cd24270bd5ec349725c3aa491e396323b301a829909137e47dcf577fc15d2ba65343c42d7b5aa537151e3f1facb524cae2efbc8a148055a3eb9d79f69fe9ee45327e6f106648febbbd168ae8eae809b814a1a99b494b11d82a268295465c434ba929fb3ad327c1c76c6f1a63876bec6eaf30d4572fee7f84e2163662b9ce5a77daaa6225546c9b776da543b879ad7c9843032b41a21f50c9fab20cdeac000f2cf33dc9deb5f7a96f8d649070ec480af73414f187294acc699d1f86e1d5deb17ed017aab848fbf8f987f5696ab7ccca0232d5bb2d84d603b3caab5f6c0f230f3f42525c27b4e34f4ba1ad54d76e7bbf7145ae9c4f625b35dd8c36f6c4f26ba5187007da5cc3cf6220a3c64d02f9298d1e58eccf4405f971523709deee8397b89e511be18e6dd2c16429ba56e4c8e9d60e428c356b732d3b33438934d764a55112cac8228939debcfdecc705ee327ad661db41a6ef5b2c88b9f98a9188a4bc3f0db90e2df98a88745a1366626078a55d4063397a4eccc65b1c817d6b542639042aecf119744890dd606051ac904ab27bca11a13ab074f6fea932b15170c34300678b9083ebf6179042ce23d7618143f8a11c07d7d6064330703570844f156eb1257dca5de6491c5f4ab5075dce4cb44b52530a4fc9a54f42e2db02145702127204097fd90c2960e5acd927f278b2ea14d0c0df8f51894b1d7305a731303a7121ddea0b23bda88acadd8a3e711768244f3252b07f74a38c49ac98735a27c00713c28637f20cbb68500fd8c7fb2491801871e6cb1152abf2adefc3309f2a7a66bd1a5dc880ee4f3b384e7df776b9fcb9a7ada49e44ca81ad33cc3ce25b7999a45cb4612c5491eafed43b9c802060c5b361715af798c3839da812ee1dafca6fbec99d6ebbcd4365de1c4f334f960bfba42007427398867865671acc4addabf377a12b6034fd8158623a1c36cb4cb3fc780514e8ad7b4c1d757b89ad0af9ecdc35f8ff36819b2b6c406d8a582d20da282680e30eaf8335599c4bb4c57b76cc4108217083cb4e89a64e9321f0a20bac76220b51fd8d3373089530c2d994e9d19dac6d3b22c2be82952fdcbe24a8298b3ece9051fc528e7f4867fda648aa108759a0da5f04194f3313a09f8d504bc088488b0a9a9f0f8f0f3c8a3610b24deca6b96177fa499d359028f3fc41b406d14f53aee82f9b3088445d166b699553e4c1e3812dae335a67736f2fa93fb8a46f6b6f7e1db96f204368d0b260350ff1375e721a1d3f5e84f75046ab6b366e7b4c803f9239e8143e224686305c434799c5c992675fc59fc545767cbc1fc9d85d935440697d9c0571bc0344dced286fe204ac79c9bc3497ab8ac2399840d08c8017db5abec9d3d17a1807998907c47c844e21b6dcf193d25788ae079a7cee170b2069e99be4465d04c4f43971605d66cda92f0b69f3076458dd68af0d60c1833df9abee66552abf5d2328532800cddb447a1260e8f6bcbd16291e9251004498aa0203fedd43f3e68a4df9fad68fb4d372c3173906d1543d4adebf837127b18c678cfd75e0fd57f2471e1e51497d4d5a00f46ec18fb7602da9932cfa6dad412e1231b41fdb5b1f246db1e3d6fc4566dad9c8909800ff341578affd45bbe74aebe3efacde2e1e5438bce87e2fe8024a852990d04daf117163bb0c6c8497bbd33bd292df559b297a1ff3a571acf704f5ecfda8f1c64ed74debf48065ea22928debcbb76b3af090959217528b36397e422872f5c66a3255f1211e4106e79b12a66ef7d2e6517783e54bbd634dadebc6021c4a38f6be5cfe95d0c901e60abf655c0f78f1bb5d9840cacd78138f08b2ccedfa12d103a609b7e8f9b00f116f8ba820e8e75318c9135e5f3f82f4ec3ae444340c02d3465d26b680a1883828b0c35b29919692dadfb420a236a82d7cd83855494f847912ca90aa6bb9bd61e12b57f51baf0a3332c2c4817376bb494c53d778c2f60b89d8ddb0f1d6efdbe31ccf87c4980b3873fd3704a073d9d3a659e735d372a8395fcdd6fd6be56742e0ae4a227a3c8bab29414d5082d5d14a908507b4b690127f4fa9732a4a7e4e709066d6d81c629acc98d74f930114a452162b43ff6d04dab74cb6f87227200ca0f092c45bcd03fa3ed39d26d779360185d9faf126f415675c27292d3f831cd36d80804290348a6689edf7de4465395d991f54b4c7113d8dfde3953db938d0d9c812b2fa1d90307ae6e649a392d031f6e25c1f4d944de1ef0b23ecbf6c2e2251ec8741d16acf25a25886011f9d790c94ebd9651c541349ea8e471638b498a916fc3dd896bd1bf48b798f39cc7ae8216913b87d5aa78e5a9de22e3ebc913c9293ff1b2ca5a48c144d77fdcf953647136f9f3fdd7967b322359273e8157bc8055747a8566af41e82dfd699dd7a70147df415e1d8058b2830b328e6d4a12d32c58a40c3333dab07516a162bde4cfdcdc64d2bfc0c885e39f01651a7925a94f1b5a977ecf1c8f7ccc55d306ec952d8e275df8f5f42ec57872b19f47101ae0b86d87e6e6e403d778768e59e02f2c902c7d29b147556c99ae65d9b8fbf8a2ea9183b96e61d384323b2cdc08c86b61c44667c2ff0b122d98a36dd8c8e8b780bd25e7f91feb7e32e494a2c434a1553606a51debfc3e1583711baa1bbb150a9bc5428b20ccffc317a1513f1951ef02f38dbd5243efe4c67662a368c1a4e36b974dc1c822211753ebc6fa0ac7c1074f4e49f7843d949b188e06dccb1629086ae6a4695f6bfba1b994cffbd730ef8a5876ac8dd768635b3b0475f8f1865b4fd2f9cae1e432b249e3547f470ff2bb269cd1c60f86e87f0f087ef30b67151f75d2de9b535b28d157f333672e84a52dc40dddc9bb45df5336fcab38bad9702f511033128f8b0f9c8cc78a2e6a572f611f92d000a6e1940e25b8ef76d456fab1cf97bd1fd9d858ac68505f507c52fec7e02ea2038dfd34ae664a5bbb6c1fd4573947c47d59166f61531195a6c883dee285299b191f556cb3dbf15efed0b6482d1cb6f9fb94cac93b6f057f3e85abbf45356709e4abac72a4215e3a46548bba5840697e505761b3a67f67e8ce449fa8c1da6240268f6bbba82a0a79ee8220f168b46a0a37eb09f40bb3eb6b3c7177f75648d83e49370298c74bd5e8ea1d19e0f45125e7062c299c86b90b04ae71526ef5671b6dd9c7134596d97308245ad2285cc0f9ec5770458426ba7bf9ad494a964431b1d4dac32925fa5412f9cd81174ba8a71cc2d941ce10d884e26410a9ff033c4a31771c9b63a018a9364da3102587338e045435855dd4b024f126d5033c8fed0aa2d6e0a32d8c7a1fd73d0c43f81636cf1fead65377c8ff4beefcada6e14e4b9673d4f62dcb9ff893c3a337f9f274bb85b1db36180876b1efd83c71befdf0b2ed701eecf8f035681d372b1f1b9f89aaad3cab4635bf5c201f46078fcfeac7e0da1a4c10aa484cd887d9ee8bb52d231ae6c7ae99c6fffd021fd4aa8bad3f3d6f1bd7e7bacae4d733c2fbdd4af8845562c85bb4be8323c52dcff87b7bcbdbc12bf51699c9cbd550fff089bba2ab422a2d965a45eb2aa98a6e6ec5dc9ae5c20e1223b1fd146e149d28d87469b57a65bea0a91d74d39a8cd4682fa6db8bc8c23ec3968076820c12dd9a0336f706e08c652b9c56f8bd24a905a44cb09417595d1d37e128340568ef4348d9e006338101f9e3a03a8b0e5052f6e3295bf7c3f88ebab6ce331b5b9a846d7c97d22004da6f959eabe3f63f65980080b09e9cc55f78162026890b439359dc6c9717ea85d40af6966eafe3d5780ca5b452fe094d8bd6467b1b905e21f199c589ec2cf206cfcb286506571c16129493cc1f5a3b89fec5f1f103bb6e1fefdbe44f8697d33ffd9d7dc670fedf5d2ca4b869713c84cf23a1216a1b0ebc3ce797208c4bd408db0779bc96e8b93f46e6636f1190809df023c1a9681c3f227a3da4b5e60a26004ef01462b6a38f3cc6e8a315c9b8887cbfee6d5210a9bc803c4790e279374ce2584ca526d26e4f413277fc6429e05c6f0f350ed61c04085637c06841acbe8cd5ac97fae4887a847bbe4d9e21aefab441be759bf6a7bc959c52f617d47bcaf5778f88122a57906fe548c8f413d41f2314d05f6981df10cd830b132b3994569e4cbb903e394c3b8618240d44bb8946187a8678695feee96bbc522f152f9ca6fc129665711ee6b5c2e7475c5dc4b55dacfe799504e5b1a916ca1362c324e3c31fe4916bbbca84788c9f10d4c93f147064f60f671f128b5697d68982fb0ca7e79bb7d554bb81445d793c0a7b803efb95b415aa270be1f59fd471de8548a45e242919d3bb4e88193a79787ceba807ab8b13562115c6f18585c40a5013ab40e27b3c477e7a6c7ba92b750a1717cc894a028edf1ba20284241ad371d7f097bbdf5f3f3b2dfec2b73ad049941496cc46e7be9d43aca5b1309e3e75576f62a2d89aef9c8705e1e88ead0a742d071c908867c1dd6030e63d12cefca22ba14bc31446b9fdd009db9d0b7cd34ae8ce6ad7a71f3ae19c81cc2662589a8d6852004563c7f430b76af27fd6613a588903ccac48dfac2a4e221dcb6530e8e87eb5d7a3188b1a110b6e517d8bb5cce0913dfee8ba93760d4249b72e62a36f7a12dcdbced70fdece8d3a69f404e982afd7a740bd3bc9de60b251f06edb6e3711c6b519acb6696ce50057dffb456c3bf3fa294c67f589f6d2dec77b78a114dc82aef4668f564d325e7f5b6c8d7b9838da0b711d6ee62711c0a64606cb91a2363cb9aec6e1dc01a82e0671ab7116904932d3edd0b5b6ac7a2447ba5e99970e81db4dd3c9872d87ef18870805fb59dff8a12b684631c737b4aabb448081233a9268b4e4b4b1509f362cf3ce3662eb2741ce75643910a839707c1da6b75abe7c0deb37cf0903ba0c4c58716c104dd543680e16fecc430b55a263e77e46548358ec2dface6e984d4f582ebef473a0cb875b56fda5ef7801c2181157989a43749a853e25c7e255a73c56b2897e5f0fb47fbbe375e3eee1c7ef77a68bc8654330c0792f36f6b3cf29422ac5c7d411cc95fc7a158bbf4870db734d5ad3e895788f3925b568ae7ac77493f1ebb7449cc9774547506f60ccbbd0c50c365603cc81dbbb86ccd6d0d6ceb09e4b79ac0eaac830745a61fc87d1ba39b9d7900372cc65f91c8da63ef6872feee04f4b6344e635588356c252871be92abaf7f15cdd61e1f26c4757274f6c82786d61818ec2274209e0605f6046aab2fbc30870b655ad43d4df9c33430ba6f7eb082a3affb91a79ff6994d61fde88549dd9ac9d633d65604ecf29cead5cbd373a87ae21d65ef6c7efaeaa48732fb8f273c2dacdb7d33d239e47acf2e8d202e2b7b9910498bcb02c69afdef75ff05c996489e57241b43cb71ce10993164b816dfe4f033b4c2ca73cf5e37ad2ff7b90a9497ba5abf2dba6845b6edd29a93f5190a839b8db63cfdc00cce2884b17da9efb3c3374e839eda349099eac129edbdd78916d0ab31e5568cd4822e5b576f1ee0ffe2a6981f3c2a5116edcc7d64657210fabcb15fbf93cb8ec0e646d703fa07e2b4d0efc585d1efb355ac99fc5af490454d65cad53934d9c79c6530e06ac6f30d05e7045779fb2e4a084459e2e996e34286cf81d931ae3cac82485f852601f2b8a8cbde003f0b6cce91e888631fb7ff2a7394465788532c9b7002186fd9c6450da056849a69dbc5ae0f2cce71339cee11f8483615454d7b274de5aa6be70dc581ee25bdc8b35100803a1eb83efcb8dc5ffd933f76a0eaa8bc7536b78225c035a631e759d873808b71df52a2ba272b2d2f50680aea0c6ed59869210998d3046bfcdc43f7afdee00bc0116fb30ecd0580ee66bb27e267ed471853574dddbf2410fc63a454888c79ef111e5e7373b3049052ee396e8a3dc24066544fd3748c069394520c0b35ebd4a4db6c32270a12951e76941c93d4e618edf4ca6d083df7770b861c9a8c9906444429cf573b996d07341c03cb426e67b9311e3f1166d4764a717d7755f6cb951d3c8bf26d793f4c5fe4940698f519ef38b6425ea83153c8395bc42a4065e5aeaf67a0ef3a02d43e5561d020c58b38045b5e806937ede879b08302de86fbe9c98be154df058d6bd3660f38e4577292595120fed9e1ad24194dc1f90460aff75d375577e07182c5b35a8c2e892f06b3c351725794d78c278c2bde8c4875bd4b2598c7484bb26ef5cbb725e13eeff1f10fe6d0196fe3b831432c0098b17298c5039e94f6d4c2371f575c6fdcb8e02612b57e03171bfa269e24393c79f1d976003d5466763cbe0a35002eaf47c8e0788bee2b2ee785158d2a3b297f16519db1449a63844cc8e319629b28c943694946480d03bf44d4e5a5fe1c8b7c062fa864ab06be18270f73c313efa4895e6ccb18618d042572e1162457686e750fe262d918c1fd95f15a0cfde144f10566a1bc303e7982463411a9e27b31f89c0e6523772355ac172f61a083af55fc020ba9eb1f0179c723cb4b579cfb56a98d6287d6cccdb8cbcce97df1415e1b9a85874d2231e732233e0423f094e5bb2c12d6447c915d6ae7c4b8800ddbf286acd4cb30b7ab3923090138d9c5de284819738da7ed9f2280dff9c00eb007cd87ce006a25aed033af51dd63fa9ffecb557914dd9b96ae40aeabbf07616ec600d5c49d52dc0bfb1ddfbefd95618bfa957bf37bdc30e739e2cb0551269c9c9fd51f578d65b05d6f124e723a61c75c9301a6097fd70f167c404048eafcd279230363d4be3f8c7aa1b9c1bc8f2a8b690471ee721ea81a7bf8814191f577ae8fb12b858de5bae26d6cf246e4a02690ec2266a8658a41e7eed08f79940f7b57065c69a134614235943223e24b87de85a71f12c36fe7736a2efcda7942a23de866809515d2ae8656a5a93fa99e5202b7ff1722859b4b2aee9e23f8e4ad7af2e7b563e6262870c6a47e4c861e9ee573f82c114df624249ff35c27083985f7f83a7407a59791db561c09af8648e04d70a94e4679e89738cc7819cde6ac5f6822ece4b6883241f3993e5e61ac8d2b456bf7f79d7131564e62b1fb11ce806d27339b8c38ef06709b945b30e2387ba5c0d414c144de174cff8b8272bf20c00c33ab69c684ddfbc137a6919a6754352b24a8889fde68469f01c3e4512b2b73e2f1af880aea5bdf7661e044f730ac64513e373ad5cf2d9d60372f392f5751158897b545a002435a5846417fc3dc8fcb71fc96d60f5eea98dcf78edab69c3f11c1afb9ca093e626020beca4414b8f2a7c3880814dfe490b96321ad30dd78059c1c16a728a69238056fb94578fbee27d51dafadd4a4f28217fda9c7b55c1bf2139360440c7347cf36f8edd0d91df1d2479dfb7789ded1e29c52a9ea10e4a11f9bd747065c8c9a18ddc09b8bb6d925a6f51c4b5c77d0edfdb118025f877b0d489216c61c8c78a22755f7148579085b243a9257b6fd7c931dc14f8237e27f8d08dadf8622246d71dcfe874e7fecfc245c62a0ac006cf353b3891a5eefcc662f53eb0b5358c925c21a12f0aa3ac48a6671e8ab3a88d87c25b87c8fa722915dde69d011bf8e64300bc4f941818acb59e0ff0742199c2dad1714bc62943a64792430e44d5715f4076a79225eb6863ce4f16fc14a5e9a5483d13b4ca4eed9e145b65c54a8fd1f828fbf4be0a1c7ddd6715e4822d3d32ab7fb11be1bbc60f84a6fc76e7590d569b98053ad5f8eb629f9c2ff61c5de2105e993c346413a46fbcf40b7c0106d79ad13d7288ed3b045e9083810e0a9ef6afa21d07dbb9676e0321f87cd8a6432c94efb5a1234ea38b0275a2f51a76b50473ed694c8087f5a62272d54cc39d2b1cc7cf996406bddde29e8e263179cb54445f9c35344668cfa8a985b605aceb83693699dc075c3ace56f834e05557d417823e75e4b90ef148cc8f1d2635342fb486a3b676b2fbd57bfc1e55391a17e2e0d330d469746ab1672de3cfe38828934cc07b8a0b728a0b9374f6e301e2fbceabfdcae4afba38f9ddbfde2996275059032dc01a5d6b9ac1b0226560f880d95be346cb618d19061fa50278c865517db373d88f9b1bb681bd9424b62173814858b921ce59f0476dcc7d5816ece6281ee2aeea2fd794f00737ab3ecb69135b58314af08fc556012932076675597a71a1e0864b18a4d4bb6de806f9de62e9d0044afdd9c6b4aa5a68de0e1ec087fbd65b3cad0da7ca01d9a184e720aa7cd4b7c546e1e28e04f34b88bc5ec78432d1efff3285e0312a5d2e954aa96b8b7eb9eb46d8147da2a68db0bc23bd82ad9375f45c4f485ae5debae6eef38f559c8c4d2047d08272aa62ba03c0de62e8bbcf424d656eaf86b6178f3d2bb450fad18a221e781d067ed0328c57bc58a06f914868b9a16cb5d84b228f0954b9e948b0f0694ee95324a9c6b8063e0835533c983e36e59aba68cdad3bac21e9eb2ce9f5304d958bf4b7eff386a75c250a97a148e8d9dca739807b0b6cd439f952c7dc3257f86e78336306dc7693dc72831aad8dc07155b24e81ea2414c6aaa00cc4f0322074468f85a85ddf6cb85d4beedf762ab40c936fb4d0f41e3281bf0d7ecb472b6e98de7ef8cef699bfd3f6dacb142a3485659635d91772dc4e240ce521e9eba745b083997d98052fe596a5ae83f434e72fc647643f4d13f64ae99ce8766b1fb2704e5f0ebb427ef5fad402a5b0da56820ee003316eb0fb44c7906d7ce668e05148943cbb137bd5818bcb1292594ea7e675f67c868cb56b447043532298a0cf119f0b5b92e8ca47be6623acac422aa0fc0b4b8ed1cc757ead801bb2fb27201d3df929a9cd764127e10f6dd4419d1c35a4c575b0b5fa14ce6328e6cb0c4f909e114a9faf223c4c512d86832046a63286ae2192355eb69f3762ebc1dd1bb3c304787285ffaf8470eb9eab9f1d60bf73e6b47252b1b1ccd885d932d03ed9c63b49f19cf1a6e2ca220066b1e72dab0174b2801f04e64c97bb84e3f4860a46e43ccec755c8bb1d4a7005794c4ff50d72a1ef0feb1fbc43c927d22883cfbdc71fddc26d3e7e6652edfd1a2eb61dbfdab80552a545bbd5afda12107be4208b0790e86d32a1ef0a599dbff15ef2ed8fb9c13f1a9adf1e56340cd8ed85181c44266c58078dc38c2b3bbe6d43d673e15b4373450778d1c27d81404095668ca4f8b9bf1c22c8dee9646c6c17175ebb02dc85eceb140bb07258f9da823e01d890c3487c1883d1c15d412a3987f8caf5d6f5ae34274e5406348add139812b2c8593ad9686491685f55cfe79bef2cab5b3cceaa4d680946ee2277dee0941ee4cdd9193c59a218c381816ff417dbf53318ed40107022043a48c2e637cbd5787e4ed70f4ca6697a756dbf4b9b71006464b7ebbdb90ea6bf4b43e818e09970f137686922cac188699e9f153d52cdcc33e15dd5711cb2b0576d044f055bfda8d4d501df23cff55862a1e891b204b0703de3d9562f3ea6c98babc2e11b284a4d3727436a97afc366d82a1ee029206a35a1f551793c8758a3629a35a1665e0d2a403bb67609c2f4fe498b40da1c430fd1466a82d0a1b12cac2b05bce3a762acc267e2c9845d0bcbca51d1915cd222aa5194617ebe594fe6ef6a54572d2dcd89cc6f98edebc93d6eb0f16861c8c90f6c3e4835b59a286d8e3d6be17e784aaa304461d51d7325c0f5f331f084e9c23bf2f00cb8e425e1ab5089a214dbff45e582944d008f1b4f72b16cb4233cec5e3b9fb65e1fdf7fb79a5a1f29534a9aa4f893c8e6861ebba4f6bebd1dd7ac57116f867c7c4874c6b66ffa9a78ae29797849d8050e2d16a756423edaec3661bfc4195ccb435ed137b8959a7f98e4292d35800eeea73800210cf799125764c355511df5072028af5265e60c7ca5557c36da63880465e4a2b6b6cadee2bf1d26c11d291546071e1e46f588ddb440720c7a2ba2f1e737618bcdcbd396820f765f5d028f49c81de61eaf025b1844a2f4229edd37543aa425f98f127248acc9f134fe2594334d559ab83e56f60aa47556aa1bfd813d375b6009a08e96fd90144fbc49a969b1c895f394f6e08087dccae7a7da4d4cc796da71987fc7b06103660e825ee420482e4fa616b0de375d339f0508575bfaf6b6b58be9c5c361f7ca9b6d5498c01beb76ee9fd33bb28f4e94d5ab49578f58c333aea57eee297dfc329f12695ba2164294854e22a867e0cddf94f0245994a206910ae637a650421e4c9fe9ae7c7a5d14833e8580a8230eb9a5c0441902e30d5f92c6d9e71d4785deae6728a2bbf1bfd944232c48c5adbc04635b74261777c3ace30bc66a810de4d2303ac4804b8fe38b6f7263e23de8f3e6dced1a73b78990ac2d9ecde310a030204e1ec3ebcc46b69057974e343d3e0d011cfec67a484c061e4f7b42dc576f7abe74a77c3b657e53513dbb0da6791fd5ee7056aa33e871c173d104b2898717293050969d517488cc37601803eb14da0e5ba694e8df2df010e4eacdfd8d35e0ac71ac33f4000800b050f8c7069f4ee0e7b8b9c4cb208a60d15d5a8c5125616dea4643ef4e2e9babe153e5c36f45fad2ff933f98a4ae7f0130a0f4b04e4de5d26bb231760b31a944aad2eacc6d70cab0ebea4792348e17c2db78ea4fc73bd924d7acac71ef30a3129c60b0098924d6aae2847e2cd7e67338922d96df728cde64b9aec53daaf070c5148dd007cb04483623fd9def884a0fb145063007f9fc3014b8c21237f0f614f3b99f7eb3580182617ed6e1b31e65ca746efad385a0c810ac6a8713329735cb83658b0787318b8908dd1e0a36ee0e6f1fd4d5c373196bf2870aeccb5cdca97f63ad7688321cd3e5d612c5f7fb033a7cd9150db548bb557b3e9f389fc9947578a82ab9cbed77c03a242e547077133e5c29038a940c0c6f5a6c4d7606090fb95a96e734c3e97ae27ccf46e595bf33e33751f20ec80a8eb2b129315b7ab18e6ce2b55d085b2f136c21284f0d7e28a6669408e60b1c2b6e200f23c1d0fdf8064a2278a21770ad8240f5ab3194ab17299e71c66973e956f515b9968229d5a3b899640813df3f06d0080a8a3e413c0252260b5a5202827f127e7a950c490785361157c60707f4c3b418fd16656889476085791f26ba28d82a7434a74b70b4a7133d09652f59707ae36509e9cdfa131e280ca5b600bc77a9a8543d4e6cbe5d5bc69edc764476bbeafdd6c002f387d251e5962e5b01d278566963f2c8e350c079900263e1c3ca77e9c1e9f63a58975766cf5ab70fc246d2579fcf6ad38e3ce31ecc22b09f1d1ead9d92e7647390776e0f9467e0670c110a219b843b5e697007dd87eacc4cc9b3eda03aca62d868c0b70d9258d8eff9785c416d5b6c378a90c4022e397bfa9612cf7b9698850f636db8297c24ae0487a3404aaadb0acdf45936bbf4fe5b72df72273b86a2ac76c8821618f7ed2385b7bacad88e47ae6a01d8735a4cf4afdd1e9d325faea357746a52544ad85fc87ab70c95735802c13c7c6428d9022424d9bbdac14fdd5049b71e55a825cfc1f58e169cf4e6b79fd6e8e813dd363825dff985e5f1e41c2364d02008009619d6c3e86547c814d657c31fdc950d093c2c8691793846d584e20ea36f7691efb9fcbb0736d5bddb8d8a5fbfd58bbc4575a9defdce1bccf98f696441b048306bb29e3fb190cd33e46a290459e06ec6197d14201925433dcab29878be11ff0fd323c3b07ddbb68bced24125c9f76485182f8273d01f62a74412b1c2771a6d93675124d2ac095da02e068be78eab3186393e16b5f442fa9d87bde6d0d60ba4a46e701f6688b92510ff0028ee22b60cb1d161e7e77922c430631ccdac2edd1306d148ffa660ff22951c3742c315e3926dd131b3d6b7f9dad7eaeed1aca9c6259aed060bc5d35b3beec1e9eb855abfc265652df7d7c27fbca1d0a35239463f512a3f324d5defff9d83aaccc086f5b92e2f3a9bcd2488e0c9eac49a7de33a24fdad89877c1c57601cfe84d1720727021a5d5d3dcf590f428b304e404fc8f42b98807a332f7d851863036ba4835f930e6e230dc952c24db04af4c052787b61373d87619ca8c4d6acd59c1f41422798d4075ea53415d499d623c6e7cea75656997722db4f633afdbf83f349197734d1ba5d207e88599d30b75434fc328355271f41c28bdd0da5042a6c232be9b34e6bbe8d6c263378342c485cc866a754fb4944863da4eac701b5bde23f9f6307666eaa64f16c93c447a83be7614bea13497cd23a9d1e2c351c6fe6f7ff99ace7e9df18f1b1575aeab03fd9b5c0e6332c5a1dce2414bb74d11c541e08678a22c328506ed8160beed40d690dacc8af017effb401c2b7590f4c8869c5a9831f0035d2722d61092495c8f609139d605dab81ee61c81479538fc458ed340249ae539501e60fc4241fc05a48fe92c246bad6e5572875b583f3236dd6d07c59fd1f70880e17d600e42f7c68c0c14be2417fe045b1235c489a565b21e8f493d2e1683c5257377ebc246bcb6ca10fe1f9507a8176b7edf723685ac2143097e54a611600a80f4767d660d01143704f8b288111fcb0d73366cfec7e562bb0e5186ea374d881c25ab43bdc4d4f6cdb2a8bd5d07c16b5940c829a4fab884675cb32c2b7cbe9f2cd863d9faa282b91da030454efc2d7da447f0712c25739903b462b40b2eb6cf8086cce98b1d535315e3817878d9b35cf62f4cca56b7433f501cc2fe53c9e05fee0cd4905e1c8cebb63a95eae9fd0b35f8460c08f651d7bb12d7213902e371210e5dd30acf693070e16d694ffb9b2d07aad5175352fe11f2d622db0ed625c09d618140abfe9b75e3c0a6cb20d52ff8ae8adb5e7b5db8f01fe8c0a2d8c762ea962491d60209fd92954cd081810ee51fbfe7b4080f25254a5f8321ff1a9f09ce6246669abe2984eeb4a8af5b37c8e3c78a1b3e9f8e38c6e5742a7701aa39f5910785e3fefbf883cb8f48befcaa208a0ba42a9ccbc21efced17a8f35ea492a6a1d2b512c5947522c3298569a792cbe886e454e18c832fd4f771dbbccbc920349130de29c514fb3c01f1ebce1a1ccc9756a9eca67644e653344be9ded4ff89866946d062996f0264d067bb35053c10dd0871224360d00521b37964cfba9cb5888d3af54ce551ba5365a68b0743ecf37f33e269711e4c0968e05f1e54acd79f4c6489b7c253eecc26e00d276a969ad05c07f1aed3b32845f6d6cb96bae7c8addafde3bfd13044a782227ce305ee8045cc112fcd8d38eb879e24a985c1ea8a045412af309760b2bc9b7b2f7ad6af3d60f304ecb2952a87bbf847d674a494c70700b6b447743130fab765bc7a5b779c932c67095a938c92baeaa03cc95296206a235eb705ef702eb9348a7a01fe9204ba4ce4629b1610586cc93347092c5fe947f371c326457be097e64ef4605e93c56ebc993a6f0841673a105236691b96e930dc7e81eb5b9eca3799222c6802dbc712e6af7b8258f863f92e2a4a7b7fc77bdca60338ad6a9694fc7d4d719f63ff6815fd88e2cbf150707f26686219221ece7b2529bf94de7ee202802b677c7469ae24391ad869ae44ad08b580a03551ab45d8451a882884ba357d30e3abed347e3c4de52d917c52b8f374b87583abd57407b71e2037a74c24c3aa7f5fda3ddf6e4487ad862e7942c61aa99f207127db39f3d52b3762e1e4b6d37691e3e901b671db308199a1970c3d86d1e1b8391d913edfe2232c852886ba1e3387cf2930ab9150635f308969cd90c1993f51acb906fed182594828d80a7f1083d9bb6131263ec5aa9a76a161305b4e6f3286c832014159cae82fb68917daad9872cff39e72a7e17c2df07e1c495a410c4176249db88c7990e4ae40f07f6b4a5b2fdb1e748008fc9f89ca4768ede77f9cea6ba53a98e8da42a55974e50547bc231bc716f3605be40d810066839aed81c46911754e8e0bde9ab9ede29b51011815372b71b92760e0ca4ed425c2d91de3e133ce9f4e97205eaef172079a1fd18c1df626d81646637688985be0727831da4465b5ac72cd9bb3dc0975334ead871f978b21de010fa5ab4c40eec7b64f10d70a49d330e00ce53f322125842c17964a4e581dc26caf7c90e18277746430454938dbe99fe723dddba257a050a8a0cbd055c99d6b217183861746efd4e598d219d2e8777d3c983023dbfd9503cd317aa376d50cf6182c020913ba1a0bc090bfd5dbfac72bb6baab2043a05c2d471c8f9f324b15b94932187f562b227731f2a44d29f66b54df29e21381dc926af2957e429cae264512c58178840e2b90d06abb560c43ab08d51d20e2508bd9a2c713907d84662f205f8e34a5595bcb57ea75adb3544279997828b0418dc473405f91ea471d3f1e4cf30c07a119de2a2941184b004c46acbde7e13fa9999050e76af60b9161d4b0019ac09f764f1109317715f73b23ab2bf0d7192e662468658ac507bedce58cbd3a55548b72109bba9eaf61a3aa1de7907eb1b1d32230370e182101ab4b76644f5fe28b4c6259cd30353dfebdebaad7bdc9faeaea700c4b1ccb6d5327b92b39b91955d1108fd74a50f62e970dcfcf2f5145126f43a5f372db47601b728ff680e7502c457ba5409e99bf16a876040be9d33ba620284a1588cc70953b812d6155ad2e064efe0fc214c4640f30b26fef1ac22600920a5f7d79b9aad593be5a94979cefc60815b6f237d93c8d075076a377758fd63d876918c39fbba11c3ab61a3e06cdc02c838e90d17665d20c477d845256a63c482572a2c86e67eac3785e115a0219969978636f2e93ab8fa31c9c47125b97c198d6f2e5c70d80518f3f1ab5158f9d33dcd889b805d46cae67cf71efba9e3dfa587cae597633cb2d57396806e4671f6e8db6575caea639d1da0157599799b3c7cb62cbb524f00137e4bbf05fe4382d19e32a62d648df4e5bc46f7b88f902fe53c3419ce66f8d65d98e675e8e2b47cbf49fbc9d0082cf9232df340d582207b71a2ab2d3e8bff1cc31b20ca35b0e20c29f5b1d5da29dc80d4528f36ba253685cc219e32b7c4766fe24d2d7fff2fb9b4d3f51a7f8b2e594b1a5eec492e64343ec8ac726cc18856cadc44c98bba45884a4298815473a9a66d26c96045fca4bda1c366e4d30c534d793df6fbfb310d295dd5decd12c05a6fb67bcedd1baba4dc35e94ca7c21376e5658c1ea42ab60fd838ef4511757c46b2d6fac7e10bc8429946dba424296edc27d28a97ed8eb7945bc175b2231eab717be9616180311ae4dbd4d1c8db6902c0b6b2d07d4dbefc12a9f2d6f1e71eed01414bac29f358332cb2a3291e51ccf57e09e802911b44d2be521de58773a897ca92f0a7268ea1b6f8ee99074e32cde6a547d07f2395300176b88d1b0bf18a46f3ac7d3476034e213e0292a88d53ed63f39e2358e8e2522d86f96358e60fda23270eaaa9d0ff40f3d9dcdcf65a62afc39201b92bf1006d1fa6730f236a2db814703e4b9900220dc8b0fa04de96f1db280c9865f7b28a6d89e2a725e0aeeebbe5d6ab2b4dc145b079e3fe5356552fb27a19aef0cb35c6efb7b038328044c79a4e38b0170010ae7c8dbe700428c329f6d5beb04cb9bcdf42c47b3c7d64811fdb9c0e642dd082a406c6aa3e8c688a0368d4330af4903a2d7fe8445cd21308c4'
32
+ iv: 'e33604cc2468450f1f6b77db9818b7e1',
33
+ content: '60f1664c0a6feb686f26965bab26cc372fe541e91d76d5fc8d00bfc620b1bf52e48696173004e507afa619da2d17f99fee3672f3ec9c062298efa69a26172cd0e1f4a092673a164cbb3078599f6c78118c0e3e9bf1fce020d7451164799b04bc2d74cf11336309856623ad5c0fd8f39e37549c3e5d058711c552bde1a649ca2232662d2595282a5a425c64ec53553ee4bc5329193a4a423a12c5272e31c44d2e12dd68d99635903ca379771081e42aa72d0843c9e2588823bbfb6c5a9d6837e44304e24eb231731ea42080c08eab1b39612b7e3e64e97b7c310501b1fc8cb717ebe22074d7e8c9838a63fdd8d9f303cb3c88024907da56bf7ceca28efc39b9220071c47adb668c364bf1be9e99f306d2900d92275a63ce406cfe4d748dff6fd6319daebb446305dc411d941e282d6b60c5fb546e91f88d5ea66fcbe794f32e67a0a00fb2c8c27367448c0d783a1809a8da1e868e18c5ee7dd13e9047e8d29cf181a69bedff4fd9a1d40d18bd9fa8eb71b8b2bfe3f62d4d9247d33ee5476f33f036eb133deabd4de533b459e7f6b5d64c78daf163bab2a6679305b739d051f0497025e866df76f667d429ea2c3665653c9a31d6b1eee491f2e023d2542a6cf4a4e9628c1168cbc87fa3af00384d34209f93cfda7181274ab115ac2cd45cc5f0fb1bf260a77c2450d319fbfa71caca76ea0cfd7f485ea5863d7706401815b490efc4a543597c013ba190fe8a080ec94d9480e3e2f637ad3eb22223b7557a849bc05296450974b4e6aee9d94f864b00ceb795fccd6ef2fb4cfa9a40aabbf17363de3bc054ed6a5a411b8e36777ff96e610e5cf233b5e2ba6f83b2436cb8f34a1588edc83425b0c4e473db5d8735444557e35c816f7e15c12a611db3ba824a66aa06f875d314b0b3a0b7e7bad823eb26c41a403b99b84de9ff9580d2439d11c9e0d7d80393601b72cfb631f220336dc08cc80982e759cb14a7e063e933f4dec29ed8d0bda35e085241371b6b9161a43d572d185aa3c6f45f6c3185a22b967fa0ad6196c3452fb6d11ca2136dcc64cf3c62fee58923a005147cbd1c8e58a0a30c4f4cdd28c0e9e7413048246f0f32d901734d983bbd30f977778acd746991d0d294437b5f447490b0474228d5905270ef98e27cc1831d65eafb865d22704fa763fdc8a9e34b07926d68355d8d6a9c2df7ded9d9a787f33eb7c10ac096d0b262c9dc132ee3d808742add8816b2e3a8d315c74ef356583cc6a46d6e8bf3c04bcf202116ea931764697617f6778eab5db5ffe72b4e14894048587ebd7c5899e882274f97c3111c86daffef5fa1ee31d982e2178e38b894ec6b00ead3368421e626651be1e2f2bcc84712afe1760d3eb53a3a07924143666ac13191274854eb1d801e898a819acae4c5abfd3b7634679d45d1cd50d09f96db5095c835c5770ceb9717aa2e613b12ae597fdc7fabf7094b633aa0be7f5eaa050072f8fe119fe768fb05b55a8564888fdd89d6e6197a1ddf7bf1efb1768443b9ca4595e0e838c7eff8ea41d0cc418b6a6c68a10fdfe4a130f9b7e302f3eb4365e347331c0d242822c3fbd626bf3b4b57a5c0b3bc1295dea2b403d0a37f33d14c938c5ead01a88b9c91773c322ce013a88f1389dfab2d41e13a6285fcda231f5d357ae4e7d16d3fbbf1c7e5854d7b94f7eab74e3b69460491e556577aae8264da780c557bec50599ae41b97be2cb78c26ced360406182ab364d6cac228ea736da71822cdc3e073d7b44bfcd3fccbb0204c79b4e88813b945e0b159ae82a74d93dfa0d29c2c58649a7edd9f5e7f2cd20b9ab77a9e4806d793cb03d1b5b07da797fce6fd08b2b130f02c95f9e21ddeb5631c499eb38860c14ca98803e14b4ef316adf29466a43e5f07b333288ab70c4a7f8c920510ad7c269a92fd704c19faa674013c4e4d24a0398ed2a62f270b188d683cac7363ffe8da88e46bbe3456cbdd852a66435996820b3071f9878e23bdb21f78391ec33b7203fd774c0a8f10b001a64fdc588a9c5922e18b297b1a38be6756a7a23f8cd5d188077bef53e35b00cf0c61534b116c3e1dd21fa474e854b287a94d188c9f194e4358b41805d2876009a139337cbbd5da0b75e3106e7d322c80d8cae710fcfff4940f0b6b32b40359171fafe4b409b85925c7020b3dde6da7fe7268ca26394881aff5e04c1565e81c828794c994e54e83ee04b825322db604d2e0c6f4ce27934d8b982d6c8b757322aae8d20e04a321a010ddbfd192ed4ae4d48797c3e7c4c43478313af7ebdc85b8b9fd113ac502e8f433412aa9a36797aa9c84971b26beae89571322a0177687449847b77f0b614ec334e2f3aa0eac7cf2c030cb9c1b037016b714ac15599af9ba6abc31b4937c2495a18a1ccc43abdee5596dc3497bf14b443ee92f228ec8b2c430be47367fd9aaa6327ea77a3e02cfe54a6ec3dd383e2274e9fc0539ff5e1fe7cb03f859ba6d45c84179155db3e7c0970ec6719701646dd46731a9412ccbc04a09d7ea809ff620141156dc895cc95c30c59e1ee33c421b87764b52d1f9ae411c97da69c3ee78faa035ef3bf78328da1d44f3a19e9ec7a0ef3586493aa02fe878ec7ed27a36b3da6dbee4bd31627b4990157b99d399d0619a0a787e8044d86c8a05c242c858027a0fbb5580f0416d95ef9ff5ce535faca7259fad8a569bb1b682fb93bb1c0a18fd41a5dd4a0826ee71c2df75ea8698837add1abad04232f88cb0fb1064259bfcb80443755325ef164fc95a163eb361e130d6f4681387a7342e978f9be71e243ee82234a57d30d17586de60c22275f5ebfc88b446e43d7190b137ca2e0244cd18b1b95a50e93092766718e1edd899a0f3bf9500f1caadc453cbd52a0479ba643e0a01dab59b7b9de6e0bdba7b54cbb6a0076e882adce30f7dd658b01a695d9a2b149fb426e654a06cb45b235f6841b87d5b1d6318ac2bdc1a99af789b57f354575d6a931c7df07dc49b196a63fec5855768754031210f487fd1f74a45aa723a20f433a75fa2eb632d7706250e1c859b00002b2826731db798773a73a19f1b51694fc22a4a7e1f260218dfe7d1e2cd5116f1ea4b130eb20e0619799ce65f2eeb8bab8b24ab4b38fcdf79ca6163784829d4c532a428e6abfa30619fde7b68874fe18d14141b19b4c348b4de521b2a8389d62b69b59f40ad0a90f36f42229daf0d8f35ee772f380a0e5c976d51ba2632caff257e4e70af87d3c37b5728df37c2cd84abd88cce7421860bbe249d03a828c43fbff58a90ae30680a5f80d1ff37f11357d50bb7431806562450784c18db09b8957b81eb61bb054b0acb8cf3d1a5664ef0697c4408335a175d16a9b0e322f60da202662e54b42e3b787076b664b894ef52d7bc3b9c0e20fba7f71edc4276d353932a3bc86afded40d7df1ab9597aed1a8578a56563a6f148fa2ec1e09d28a667a3e736fab5284dc710c9382c672f5c8ee6b8a2b4d500fdad6980a562ada0049b442e2c14ed30884647cfdf78cf2db765fea3cb950aa0232994395b08dadae170828afce9c474fe4f21e770c4bbf2aea0db9d40759eedabac5823b4255f60b29f925838ea73862a56561a9b5abf54aa0e350a9e30f317d27fd8e4435b292daf47dfcf5db14e2a73a5e8acebc70a66b007d21174eb821b3ab8030c484cc3154fcb2c981f3014883be91bf7418e38efff254eeae3da99ae64eb367340719f74bd1d723c672de45141ab6a052405597daedd129707627416ae4cd9b2dd869fb866ccd70b871cada1f36c663eb9f867df57a6167ce7d5310d35f5c5b6c3b0efca653d1b437b6ea8114cb47145a4c245c46aeb54c1767f0ee71620e2db67ac8b240d83ee7636c8d4e0671a46f426a813368aa5372695ccc74e48bcd2ad5ece2da8f567e0302034c1af205b2d9de74c5b4fbe22b9ebb9120347528718a7b83c5a38914fa47501356f849c2e16f5a6ccd765ca774a379334548278410a164ff87dc13682c242b0aa3ae7180976c186976ad03110739c26bcf42f0da81ac368615c2a72bf06e4f7c3adfca57f2ab25880058a7a7c486c59436fadb33dce9f48ddf9f1fbdc3c1bb1f9daaf07da920b2bee19ad88b7cdc8b17cbd6a98ef51adb40403c9af9deee7c5a0c9cd0636bf8b369a9605ef6383e79a976a73c54336fc6b33ead60a82700281400878e6c80b5184ba000c2da2cdcea4bb2005cbe8ad91939b34ef3dcd9cc976597764bc8b411262ea55a343570e8aa5fdd7e73cb64a03d927888100ab339b5e82d1e206914052d8f65cb370ba83f41fc0ee5e873d2eaa0693c971a8587020abcff28ffc2e01f0f3192fa9f97cf719647fe4d5c326e570d1269eedf81f49c6fe17ded31800f65c96e46d298788a69f51300bc13a253b03da04c498c998579b191618f7e78e24a6bca077bec4b030b2072c0f66897d0086929b809d57fab373884275181e5c31fd98963a4f3188fa3b7970ff18d85c2877aae26d2523cd7f1929e31c9aeef73f0c12662647617311aefc5abf729f6576b990e1801d19e53396fc28195994bedae65d82e006c370f007e8968c952cbd96775098c72ecc0097b65cadd1537f280ccd28d84af27a6efaad496792bf0f2ccde61fac4d3b83ea88d86262c270d06c631acdcd06f98b531d25822f9fc7417e152c9821b257df483f86753f99a682ee2017e1f8a728e9c1e98270ac6e26fe9f0a8fc85c054a739dad19d9db1d453ed24db48fe9f6ee97eef49ba2a4ca57e0e930349583d6c64cae548887e621f64b2ed279c91fd84364c6c834601b772f749603800f521ec2091a832ae709214ea9f5e401585e3644bec249c897eeafa517139da76e8f0877096e12f05d9c0793e15587ec6d11c3b1b92c7cd9dd394196e05da54ed166fe1bddc73af13100ebc8d0eea4c8996636e0b621252a85b6012c52e5346b92ff4d42fe76350f87a06e47570875950cdb83c738133bd610af09eae11d611688feee159b8eccf77a5b60a8d25d62f6f278e58c362886a34faf0663eeb30fde2813fc96413d75ee5d6d06cedf5b9193a9436043106af337ed0abd651fe19186a0433e97cad2bc6cdc2f5fa3316bce41e767ec52b6100c075a034fcd486cd1fdfaf725f81b83682869242b03a905b9dddd4e5c6bc715ae427c07dab2a81186a155590af1a6ea84f3af41395082ca0477dfebbd084c0c367440d1d0e36a1e926fdb6d67811f638f4a8456f749b3fd810dc2cd00fbaa202c19c72adc872de4361a89548eb4f643b796f9f887a473f81b6e66f0d019247fd3866c387da58c68841949edd979d208b1c838695e2247425a6acd90fa8a0c7137c4202a1c54340d639581c2f305d9869b1f5618ffb809cb41c66f8d53669d2ccb16f96f044a4f433afde429b542c81627b87317cb6f3d4ea302f9b3b8f70375919f0a3f39127fdb443fd676dc27893afc0fc0541c6f9b3d9e0947e9524c58759288678062dd085845f8eb666bdcfe77d9443bbe41d348e5ccfce117a2cbdb9c4d7ab18b19bba268ae3a12a5e6a0affc8b569e5a3f35298804bae802c4213cc8576a9e9302cb94e51c11b142c865abbd52f41822fb96ac6e13f5643e58d405d7b148b336d845d0e77a5d982cc9eaf3c1f898132a02687eb9e93afc77f76886dd148414b2722edfaaf76c233d51ec1be86e35654d713e29205ea576aaa754ad9d91cb0a4af5db0b4f11d122e91988f5f14cce5459e314074abcb61370f847048acc6699e0e1bba35d43838d97906b3c355641de598cb15b97df086e630c25a2c3f11277593a9a85eba8aab0c5f423eafc5383151c87148a132bf3335f17b5701b9a06a1bbc32c2e061939216e1f319b01bda23d45b80f2e45bbd12e00df37224e07fc861a7c1758de39fc1ab302feb2d3f64a80d8d21534a2df34b74283dd6b3fd120ae8b489f06e43401559ae75881b0d0e5e145a6f517063874bee16821afea3283ce9c3d5d1f5f2dc0a42ee7d6296aa0f70d4d3c03552698f73b5deed413c2f8befc499d712ecef4311e0a577dc708434b160feacab104005d7d94303571b9795fd688740b1beb52a9585278d8366859e8d4928d58fa87fd26e9734648ddd77cbdabb5d71ad57c65a69c348040bfbc4238763ba209d5687aff1080ad17504cd64dce93525c26ba5c9fb8cdcd873889452cc032ff255d85dc4d9ebc301e428c63fc815ddaed3bd983762d67f730b228a85d8fedf5a5366847931de1777d45af14bc893df2b6d4d5635eaf27a7fbbc11f30debb63da227d25e80d3ba11b54196a59d4b9ddd4bc9e87ed79ef91ea8857db984ddf6195d6670138629be7d6c26adaced2dad98baedf737075cf3c20254b3a78753afa9d5960719618d9e96daddf620ed1995b87e22de73df429e520f2594c44725cd270defbe7a556216ca8917eaa5ec713e5fe5ca0f83576a4155919eb88e7b9078011b3161ed240bf7e0c0f679c807916302eb0e9a2f3969b27b21bb9d1cc2f4bd1cdcc3487ce42013179f52e16eb3e753cbb40e57722e8f9fef201ddae619e2399b1961f55d4d0d5ca8f438bcd16a8fe4bf19755cb8878d77295a4ae02b8b901d963140ef15412af4317bd88892ab0194835ec6a067e17a327e5a66a5eabbd393151d550a18c92b822d8bd94e1ffe899d1962a4338f54b8c9040fdf793b1b583252d9cdafc70e3ee83f6c08c97e65504a2a2979a18caaf44a17d558608520bca6faad39369b91cec311f14dc0d53491271862249a256e24bc99ad604d6307685b1eed7c140b98ca007cfebe2332e323d73d891be355cf7bd3441eee8fe55e9dc29b426d08cfff1f98cc86faba249fdb9ea3ac4f3217333ae93aeb8e161345fe43944441944e31d843e615e8c25e2b837e2b6a1fa469c38cd65f9dcc798f03758ff9a86c97fb816a1d95898c5a48a963b2e622eb8b74ffd3ba33c575a191e7acb526f52590d57af5772f1c3c946bf826969d8cf0d4a0a33e10d8111f325f3ae692ac832cf3c978254671d1262a862c4735a2b88f54ad4c017e55d4f33791fb2aefc7f7dec772d8cc4ae11d715d61c1d6cef06fc0010897845f5eda046dc33d5461d0dfc12f4b7b4e839b8b5c9e53e9fde9b4dcbf3d2344c93664403274bbf950128d73c7495a4af3b005b595737aa0a8ac5b8d38d2263d378e973c7e6d537f50885bc8425a565c2735772289303a38e000c2a4c42ee6407c1c64b3d280c633417b116fe3d391e538c4431fefe6d56ae4e3b02776aea5b1cc5f1e62b1391e86b651e8acf2cc996baec7346f49ac6141d403f879fb647971161f37335cc33ebe9eb14d4b3e3d575b1ef95e1fba711a0ef0e6fb6ffd0c0209a43a0a70275729b117de7e8e0b9b7bd2e539d7f424605a59c2b4203c5c9ba75fd836aee04e3c2495058b6a6fb02c92c4e31be6c585b4791c0c5df1f9a6dbdbb7fb2f0c0082e450f3f95aa8968bea1bdc5f743d415f8f98aa6220c943643f02a2f53048933f0c3b187a516160d23c19c198a7d423b9f3b7447d5525755f50403854d63af28cfa298f1311a711c7afc243746804380fefc790e6d2b0ac2feacece929e210b200f1b6d50d2a71f8e4d1db548890912191567c889beb4cc0a6444f6e27f3e5f3515fd4511158062ba045aecab66528532732d93287c1048701c081119282a68491b89517fba4864149195e8abc417e168795c2a8ce6ea45c8fe37f74e987279af6df6a13e3a3ef59e49243eb2e15e9d70722ea45e642f8b1634f055c57805b96f954cd1bd0d907baa5b425d7829ad5b1250bddce05eebafc6151e0b9f7bebbaf105f0eace8848feef5cda1b460d15d081025e626e81bdc7517aa73fcae86581d7388100ce821e13c02d741de3f7414d5bfd74455099be7355aa0d7f1bb793560e7aafb115fad6cbb7c830ac50cb97289371d9782c882943603179179259d43e4792b0a4cb3d7cd9d38558da28b864d81082eec0f1b75db5ee02275effd3fdbed54b09f18ea8e67130ed35ab4f5bb405e36364670af5fd205de21aba467b0a8e2706b11317642f50524c5cc471f043bfdb7e6644838fbefc46a8228d8ce2576987b0b1e6adca5f4e88b035d39db95cc861db3e494d9c60281ec7e8db4cff399d3eb6a5ccf9bf46305bdceeeef9b6de972a63c5249b8bc8d3fc65ea00ce01d69e7bcd161c45da4e271cf56ff865c37031ab57d8fd1d57a1981c59c68ca7fbf4d5fb3822e754d6f10b95d7c1e93a86ffa4138969fe4607b19d8d302dc1781581294ad80cce387a5057c7372ff58f4723c4c1f26df2e87cdba14140a9d18a8de133ee6dfe9da7c042bd27db85ce9cab64b7548de964ce6fa6e32c3d6787197581d147f0794b5ba9b55fe810e71242560bb87189a369e25598b0e930289b828535643aaa9ddde913381debb6a38ab03ce8a7b82c49b14a33bf47d26db801eb6415aac7b6e7085928fd05c6598640995ebadfbad6d0a2e0a84caa53d31bc46ace4e850208a64042fa321f2643ab6fb4539f5185efaafd6d746d03bb39ef011d1bfff235b0cafd3d8bee15d2e3811bc0fe10f1043910efd9e36e8019d55f88b2f48bce1b2a6733f597f879097fd231c84bd78dfc45b0efc19d073f18d0a130720510661bfe173caa4088b908d7d2f3fa0c761d6a46d0b4d318c8804726b62b48c5956edc0a7bf81b1b290575288e4dc91720ebc6aa5d044e33c881f210bc259cbe351ac03e0af5df39e8366101fd896b38bb3c674174d7f7644e32aeba3e3130b903ad31845bff2d53c5961d11f2e7b6b533f09b9f6548a147cd401c8063b5ebb9026bd5e7cb6626fbc7cbe5dc60067192fd7332b1587b6088ae9fa1bdec477ae1b2beb10adae8113ad8acd4dac4a47f733d99fee2bd1d216dff8e10e33b7a956d1d71d8c6231c63a1eee3e92ad0f988c4a0c64fbaec576906300e98ad16685e7f604a31ee51e464f33de37fb796cb48181df6573ead70bf3de0d395aec69da28bf71ca1ea58e655b178611fdc8554903de5ba9f7881840d113f431965d02bc46d63e3611167f5f231e8b6d621f33c58cca2c40748bc1e94a57fac98b1c4178d2f7fe02b5356b66ee4588b2b92e04f0be4f639a44bed3e83786b20f10561ea1567c8b6f0b83efa3c4993929f5eeee968b8d8a3417ecc0d427d650cba3055835745a5c9ea55637fc700955111ffb308ae85b03f9166470a30d4ac626672782580f1f88cea0669afdbea41bff7dcee6821267ad68744261562c16a16aaa3d057b40b3e8824127c7f8cb46f250abd6c2ee7b935860f0908d11dc98ac45f1ae79d53b5013055c2c097c5eea2aba44f0e6059c036a4e35261bb283d405db00fc53c9753a0a2a3267f835a8ba0cd1da9cb29216c1cc0827eece7c6dba07a089150587cc2d3e07ca7a6fe1df6cd1b01e0270e78fe8195b98103ccdf43780e904d6618dba3d2e1bf9257b4f623fc518c05420601cd1008c7ca99a52898fa49df02cd662752087ac3adede8dd9a47b09ddbd51fc192f704e60cae544149b7f67405214ca9d1a62a01e5c22beef78eca20f27a6771edd8988079f2a89fc589da4769fce17250d376328d9c1aa4246f8739acdc5d202b89b96bc37afbc3bcb7499367d8e1fbab47791736469e490f38d1e166d9d78770ceac25a59fcbf1a96b4002f1e705ebcbfad749ecbd8b7bb6f628c036f3bd1e8d0a1e592707ec8ba045fe5d4c3eba7284b694af128ca004a06ce854579e7c7076a436ff66cd7dcde3d4d36ed729ead5a819a41b7e80277348aa206e93f26597a93c20676e2331f0bce752ea735e98ef175b79b2cc9a967520d92f33348be75479fbef9f712b0a811591f3f9be62ab622f5661672f6e41b9fd51b7d5909992f8e06d3966495682eac6e9c97701865368b2b5fddd200c906c219df2c70b4aa3f74761e9400774d39d3a88516bc636a1a28d2d394ab72b45db71374fae7296b8a2d81f73b5eb5cd64f17980c04a71cf5bcaa1167e51ef5ae85a00e7cfc42f614ad5c8c0c3b56868a3db389628a17420b37200ccdb5bafc861175f8c922371374cb66fa1655e35cd6e6fb221376f0028bfc3c835cff85bc5e5e2346cd2e962a4f51454e13adfe7a5094a7d4e211a99a6db6d95bdeb4ec043de429456136e6c38d6ec258a90a97101c6bbe8d4f2ce27d18e2008c26773b427cddbc609518d9e8b001779a125fbee14dbfb621401f01ec7c8fc34008d15551ef3a60dee2e46e18c022a4abe07560600fec9f153faaea15c9701def5a7b71b9e5c514503998d1d313ed200bba549afea66cef11e202b2094d9a78d4300086382cac5e24c66e36475c727c0cb0ff2d57bd63f0eb484a19a1a37b15f90288290b016417918df6077206711c996fb117812e2bf5691c9ee662299327d833f179121e9253be169fe211ef30e1adbafd80fd3ddd55f711b31dc8ed875d01f98c25818ddc6a8bb1f85b93a945513f0b6ac9a094b061c75b499217798b5098b43861017a69d4bdabeb0b16b853d98ebe3d48e177c11d7be79b95f0cb4ef694f213505ef4f535ae619fd5161e999a1fed614a76a62a97c7dc9ab23b8c9db0b8b7d5683f5cc0c87551a80eab51947a1341b2f9da42dafce7a42691dd7408deba2aad9acba05a4bce3f946a5557b6865291a05932b8f74e27185112952ebbeb21f054b10c4bc7961d863720fdfaba742f33bb03452fb3dd38dd8a9f88a2717049f2b5283a249f5b8950e7a1a496e7fdbd430b7de944316a2a804d243e01945e817c70fc28cb67f206acf12988687f9477adf97cf1367d8173857d9c86846a5054c67b1a001a97339fd4973fd0b58649f5bb1edbb4d938a2abebdc5d262cc48252be28c2a8fdf107b283d3a38a6657c018e4ace855152cef8df3f5ad4fe7439930993d09fff0e1bb09e8156017c68b257994fecea918b791e4aca9259af7aa8ca88dbde045523375c8fc6de5c3be0ac4c24d0c3cd7de2b0d92f58d1670202c86b0a90e924e5af21a3938a7699d9e047d623a1f0ed4d8d974378000d7ab98614c0c321ba2d3abc6cd83015720fe606305b0ee182d265216005beb44aea145e8aee14d637906f078a23d3aaee36e52e9e64696e9cb3d8aacb5ccc7ad4eb324a08525669bdf49de622060613c9a56db2483a7052c242cb82cad49875eff8b027be501644c9acb437193e95eda76508805acbb3ae1d7f4a155efb06acae22d199dcfa93beb92d8cf33078a697fc75ba83c65070421746ea107760ee9f060721c3089c889b86186ababeaeb4e469fbbe9822d143ac8b0b19828d684a7cd0fd7f8fb6ee3fb2700a2c66de280a112f308b4a8e4f69c1a368dd3e12da6e7cf40c36da918e79d1d32a17e16d1dd2d0729ad8bf099148564c576e83aba0327d24ccbb979c9182dac962aabb491e8f1c1363bd3fba00ad2436b630e9e970901cc55af691f37961e54984a287297fb73f408104b55c4e2463015d890eef568d672540c4b7eae90af1af209fb7dea46e73a05163989dd52628d622e14e4569422156474cab746d52c0489884a05e919286a5544cee854f58933912fa4e1f564cd793545de920236e4c5dc6de4d418563d9ece75b3b3e4ab3149bd594d3b393a85c5de08b111627334aa06ada909c8c41ce7e2619147ce25117eddc7565b0518f0dbc74917e6257163d4c8d13f60a4e80edbfd41f25057eefe4ebd04c9c30d8fc3f8ffb069a3f1fe1047335d64c5beef6f1ff77aa6d01b25becbbe9491d18efeb14581be73353178c177ce5dec09b3a91d94c828525af95d09f41f0c12be98f9bcec54ec57bf78c0a03ebe67fee866c29224e2a4e2e4ea299a92711c798993e86dce2778334e015dfaa191a650b3f3eac69f9b8dffa174e000edc1aca9919e24080683051ac8be19ce20619f2bfd8a7617ba1d32ba80ff00a2e5cce8be07a9b2e2452c43758ba903ae7aad67a842455f6ce45c2bdd1908db27123595a6f0970a19e3d06a9887c5377c6052176458810668add1e6f0f2ba7c19246200e5c936cdfb8ead699f039785dd390e67cb5fc15db4a321d35777334f474f2a54d7d09152b724062a8ac9757c3178c33f625c4af994b4b873c9b27a34bb0a0c82aa35b24fbd66e7db835aeff263a9ad32c70b70f583dc28f13285023b091c6dc8a5e886a40aae7720349027bebc267997d6b6268fe3f361eba8c924455cfde308acee070129032665725373493965245774531c3fbd3da064b073660a590b094d9997bc1c8c77464822e14204f0f791b8e9a77efa8dd5c3073ca969e234e888b0d2e3c9da002265e07dbe80f3a90c7d59a1b7e3d02b51cc52176ef1a3d75213221eba002852469286200ce1b0eaf1af21693e03f9168bb6ca52a472a199d6a5d030242221196f21e029e6e50e0d7d24ba3fce95f36d5a6ff14d395d5e68714e39bb1b48f090284c5c872e816f184c95a4b94782176786891ec1791a95fc2353993376c7c239a711c099313eca04d53ec72db69744565d4da60df4d1ee2742e3da0050ea98feb0dd25287ec93f440f751dcaad56ca86cebbed5287fe1c3a68e272570161117b45c777bfbd8695ed572dbf7f5b097ca08aaf558626636e651ff7aa1d542519859af8461b9ca2fc8c86e24e92433bd267010578bedf0a4f2933e7af45525919b3df6ca7afa900fd1661da5ec1a1841da55191ad9edb94171eab53f08149f499422f96377277a5c6ac551dc738a6a5a10cad70c225183ab85af12a53d6026d3c0a9c233ed59d0009eb06bbbc98a8371647526faac40bb70e96f235a15341fada2a286c40680b1c23b8824566b67574b14d2aa2304749adfa2c75dc51d8fa063ec0df918aa8cbe753f34031c2243db4d59a41f2b5102d52b6cf61632423d645310c43978a7f0369ba465855e45d11f2e49316117d929b9351223dc92e625cee9fd3a3647598464aeab6dd3f39e0e5b78e9fa44363e382e68344396883c8e87493f1d1b30864c0712b86574c8c4a772b9ccd8d5cdcbbea886ba0795a9e152e6752326213f1c673ff792cb0ba5e3176faa67b4983201f339019514d9c265db3067fa442f6cca5aa33bfb3c7e1a87ebb14f617fe64166a7501319947386e60528f89bd65a0f10dbb31001ae4477a8d1f7bfc66816e85de1f873c4cd55b193196baa0dcee52a4bbf35a47fd70be8d1c9254701e67c18719cfc029438d47c38677f2a6a1771e018d084cf03d6410a40c43f219ce68db3ee0fb9fe4d3418b2868e69ab0801e074a650ede094084965ecf2083e83dad129c20516b461df919c153c08a0a1e23cedaf0b83d5714ee1673c497c9c6883be9cf562004b20a2eba438ba8ee5c572c13d7bf1d6b091b0c59dc7b86299ada5b9970ea9d73afa839d41259fff9070b5580a7c5c3b4d3c10d5dd24a9a18f614bac55952f07bc575ea74e4d8514e1809074140ab65c9488440f1bf7c1135383167c800f0f9dcc3b311d10122928ed97de6b6285cee8f47bb6160912fc73747761ac83302757869ac90c0b3b6ad9c53408e906d7d3d827ab817e249a99a09a7ee234f7689969f8dc3c6831b43be23d5523ca7a1f25276b09113f3d8cb10a068b719f6a3851a2ba289395db139c975aa7a9a1be948160d2c05d16f57198d3bb4695f81d5e78c150a99ada4f0d7ef10b27df3204fa4c75dedfa20a203c5bbb8acabb43d3d308f25a402cfcb32a99c4e937cdef6b401ae575381923b1658f3f22f8ebfc2261d57f3bee590ca5191dc10e039dacb13bb6dc7cacc5cf8f8f453ba72a98d05c8e127833d42da6ada7fb339354bbd138ca28d10e622a4ce6770c1ab21f1507a633f9004793fdc32a9cb80083c6c53fa930f3f37c378d14c198b527827eb97b7d436278778e96c9952acdfd0c87308585e0885df643a2947bdfea286facb2a5b26a7c9ee2311750fac7f2da499544749847e3935ea374c874cc2405f5234e6c2f994c516a5715bcacf177fa70654ca0b4be14a0cb3ce2fa9c056f9c4d444ed953f25ba42efca81be6f149b755bc6f6f1bdac61ffa480b691ca46b0788ca1b9e8f6d19aecc50c614fa6abc87dc1efe84fcceef1680af12b835e694cbf7ce98d4e81bc34c1f89c3e886c6ca702e317230aaf56b4b92adca9d48e96b4380f5834757ecd79c886848fd2c91a6ad46ffd9cda18aa5b9671310e470ad26948d836eeb443d0d9ca4bbf45a20396b4e5c576da30c7bf311378ec6bd3e9f3dc97273ed344194515945f7cdf4ad74f4eb8393a18a0dac96c23f5f1b8ad944fede247465e6645366375a8a554db8aa12f5f036f6221f79728f55bc8566ea09fc4479109152c928e8b1ac9cd6d22532a8c0ae33c56254ecf66d8032d080e833435b632cc2e314dcbdcc4b34640b59df0a9e85b1ccb008309fd3ac290f4b62cd9746ca088661876cd5e8b64994f2bfa7d164b8c17c4c2f96ff572e5a5882dd417a0201d5b0a45ee3aff00a62c4de3e1fb67437ab8dc6b900432155e60ae1645144d0b481ae6dbe22e4729446be0acf89009ceb654c3d73385c057675530f196efd5643d1d26c71212ca5024d1a15bbda23962a85a36256bfd91beb87732cbb86dce40b4df4b3e2ddfea235479cbc8393d3aec1278b80ecb891972fad911513bc9d249ee33f897a1f287e77c43ee08b301caa6e3e7be2914ed9d522f7dcee1780960ba9b597455b4f7d97cc3212bb3506c59d19e365447faa1ce290c825857ec691ee4929c40e996d7662260202c44d4baf3206d127f5f0773133f3ee7574c07e835cc6bf4917e5aeb33d9b56df107065e326b102edfd146e51bcfea7d467d5e3b08c9eb0cfe879ae03e420f141f9cf507265d6d8beb0279ea8443014705c0f818ec91023702b560a7a882d13e01f0aa10c40f6e1d151a1d81a46fe365acef02c775ca773ed1947b389c6359756f64e0fb96d9d56df55954d075502534b81da35b23fd1a7dc94a56643d6fb9a81b6f40642a177bdd0f01a491492db9c12bfab7263449556a72d00825df9299c4fb7f3f4fdde0bea3e232ac031d72fa62964bb23562c50f7c2944c2f8b13ed83a0fd977ab793e79ab38f684e59c7f6853996024b4cc9fd51ecfb06e33ce90ac5ee026ea2108ea720518a7b287dfb826d910eadb4c8e8f4ceb98da041ecc8242f53554c1913d5cc76979602621e0fbda600544f28afa41e1d33a57ceee4718ec1c42244d5b25ded269b157a2af204ae824451ac5a9aea6e0a6cb82c32982fd0468a406f77b70d71e3dec35f07f290fd4bbef9b012e672c08911e1f8148fb7ec9761886b30684f9a1b84e7c826ad50582b8590366459abe3d27921b40b1052df7c37a4221a004ce612dbffa72a851e0af596d714c6dab259dae883e5a77b4fb31010230b0d75a9501af63bd0e711a6e88f0695af544ef579ca95ea4e65610db75a17e1f95d5b44606d605c04a11b41df4a5e333b88255393f6b0bd58b4583afe1c815cb70b8d63e9ead611b0266a7992df084a26ece16d3ecbb83fa97051cc0c244c7e7dbd7d1c7c9ccb805480a0df409b698bf76a43cc8df06cf618d4861f186cd15f9eddff23ddcf4865e2b5c4f6a9d1812fd53add5fb047ca185485090cfee14d24f7542d8633365c76215144b5208f9b3a895ef53fde1b750929e80aea045873b0f2685b10becf9e4366876dfe8e277b1dd7c4a2d2a36e82796772a2a754784ef46f011eec8ca49c88466ed010381d46218c15157fa73a835b880cc550633f6846baa124b971768b3fe1c468a02b95e6be54e10009a0ec5d4a6b0f3afc41d7af2b8741be7be16f68b0ecc7e05c073a156822332be216a32c004c9fec11777e2fa41db6725749e2bb5d4b1d8227f90882174c04150b582b1a81beebb6785c692c7cc61a011e0ced66aa7830c6b323f3af7c421f25adad330b688f7b18e36b85dbce8304b3f37292692a8d0562c4a83c9fb76129f4e6d3d86e4bb5de1038c51f1e69bb29565e8308b6ee139d5507d90842923b1a10de90a76802f72543e8a66ae6effd13343e8862bb1cbf252bd7ebf4f00540a5eafb47fe5dbb43d613e39115e0adf70e7261983cefef5e5fe07a2e4f33709910b21650c3cbe6722f16e119aa4768f8ca34b37ff6acdbcd735a143485a815a017d579383213a5573a90aa09b569cc1f48dd7d78a032a1c2fc5773a9c5e872dd463964d61cb95aa93a5082b10f6e4360509b828e23ce3603f23e1c8c3bd01d7932f69cea95a50dee0c5278c46e7a6615c698b19996054987efd6ffbccb2fd3d40306fd5a7e5fd8d6035ea63437036abe69a59b874867041049427c756fc6d63f3c2b20fbe5d3c3cd56e5e65822b5219499f24b108c856dba78a4c369701b9fb614a83fb86cb4dc1181bf4af8f907520fb18eb543df6519b2906da28b6f5917b0586c4a83752caee0952cee8f17ede40715ca815254e6bea385ba20a38f1e151e00ca0dcd23437ef04c97452526ece41c84543e21b91d30dfa47474eebeb4d5596a787ed25b32b55fcaf20ddfb6091e07b577af11b61cfe28d1386fc7346174548bf83273840318fe88650c5b686cf3e496406246dd402ff86295082035056f95d00f3b334e3f07429df8417cb7e5d8db0b3eb4f25a2ff71ab05744084835a8826a37ecc895dc1ca8072bc2bd266fb6d3c6f9d9f8bfddd6dabe753122486488a4377d48e60d3eb576d900c0b48d441e91a126eb848854091b7bd76c5818603dae10ba9210bf1ac71fcffdecc2f37e6602162a885c8843268faad86463f45371752ff020aab683c37c03c21d828e80672c81dc77f1842e91cab286a00a91711267846054eb8bfd8505f59ccda63b636d6f998f3939e46177c2422e9e2f624ef0478ca715d70a1cd13d7d8da85f93a9b5a9c389f3f4aa1842aef8935f6bb10bfb6e2ee7a9afe044e07fa68a6d90645daa3fba3f3afec7cf304231b995288a51078b49258431bb41be59fd20c5648524c4c1b23ec43c267a966576d6f516e7aa6b29ba89a0dc2a0cf6c5eae1c0a261ee583cba9d4a391654bddecfe05369a64f6929a206258f8b9078ad9d7f9b0a55db760c2975431ccf20cf42064e9f088f97869fd8f5a4f6b106fadf866d6d1ff8f7f69cc85276a4423c202551dde67b27b03fd1ed914bd099cd484bb62190ad91c7ff5d66e653f02aa5b56763ea64ea33943ee085b52abb8ab94de86ede7b924aa4d7276c22369185930a79a2239c3b7fd004985e4feb42963a794d1c016f2ae5d3f90173dc7f7d5a86f990e8bc373e23e8240d3051c1df54e1ff7e7d6f0d945e3d59ed16975822746f2f2ec4080e43897da6b85140436c4f7a1d6a29037e6547927856fde4755e4f632179c91828756011205c6da3b8cf4a2fd67c8871e1e41fad08ecef92ebedfb8e3247ff67c47923e752d845726d9a2edf81b81b5a97c95acc6a3435b7e7f7329e5a073bd2c5f5e0ad6309d0981c2811b7213d50c1a58ab3514b6ef35329df6cd4eb049e8c9a424de74a18f04a8e7d1210f099fd481b4202ec25de2322328db1a02afc26b373897622790ee6bbec47248e54dcfedd9b709cd2001050738d17b8f02348f0c79941edc99317c064ea83ba6daf0db751c479f438e4d56644fa34eb6439e26b739d34a251e6d7071e20966542e3dd23f33f6c4550eb7da6869b5fe0f9f147e77c5dd169959376a0afd87f3e3664518c7316b499e51010c22393f5a8c7c4c5189dd63173f678355d66926b86f72ac6cee540c56b756a8600dc88c6816302d93a24949ad16005a86ffed5ed39ceca4d1d836106ceb705c17e7c97f93511224404adc3236eed43f716f7bf2f708faa1f9cf10f4296e4ac2d41770db017f38a1e3aceee6a590874dbde3eb1768afc6c02ec13291238edb91fbba5d2a5d827555373098ce138a8ff6d6f709a2315a6781f67b533e15a2e133b6776ece8376792ba333690d4f04eb406e927caac569d5c24a9b1c45deb4ca708f77b0c293ddeff0bdf68d368ddb8d20b2c70aaf011af614c9fb17492b61a2293caafa1984578a8df98aede7f5b4ef621caf896a3f176cf266d48705a2267dd9c6425179aec6c80195beeb9c7cd866cf7f5c5e19ebb8066bec23719e6ea0c16b147f0da2a4d8f3d3d24880ac49c7f6d23572cd5906a70b5f9a9403fb5c8a3ed4897486119ab6771f5ce4af39b5de2be02b718620c18a16739429c2c7f21dda2f6322fea8701e6e8969b1f97785db9ed65aaf3b8068b20462c21d6214c7c5c2f021554b7fdba155ea905b51a3305e0bed9b39c5b164dc51c0b7aa87bf7dd81e7d4f9d7348989f5db5d79493b3aafbf6a112cf4900d7e7cafd69d5a63eae04d032ec88b5980aa9bfe1a072884d75f70a9a59e706ef14380d7b649f35fac137f8ac831ee57477fed9360ff85f52afee283e848e987902b5de3668226c3464bda5ec31c7c69acf64ef67f415675c1074365f64ac8c8b3cf94e4daac2d2da1055715d426a6bcea1cbc8fa104debb3af208a2ef0eebfa02bab8feb6dc4ea0ddcfd6a3f7df26a662fd8d2ea04af232d333d96eaa650fbfd76693d5051e63260d1d7ca31ac908398b8409fa8dbc7f5efacc5a145d227d4e4e2545514c807b39ca16aaff9c1f0545d0823f15adff066db3fa84b897e19a35ce37bdb3c72bf4959d29a60ae864905e4076ccf449e3da2ce1d17c1ba8805b31eb6dce92ef4e555b3ccb710f337d6ce4ab09c4bdb7b8551c10f77dabadde2c069621658739d78e70a707aec4ed1ece185feb5ee7a7b4961a7c42c18baf5bf2f405f2263e9d2bd42d9fec52f6aeac58ab6b43fb4d58fbe44f5b745e61c50c9a427993fcff18c52a51e2ccddfd23c01b51d047f9b952b82ce9819697e4dbb8235d54612ad73c41cb3e44e0d10b402186ed9d405fece6f422639a821a00d7b43ff1593363dcb85a424b41379a92fc2616fc5616a6d0a617f879999bbe0e379665d19cff5954ed54d545f578bf36eb27660e6b518f7b7cfce3993df04bb3688e55f3ec9a1a3c391eafba5fbcc88448c6084746a42f83d39847782780d5f73184701d4640707cc76a494703734e0527dfa1c437bf720546cab63d769322b4a54ac771acc6791784882f702a3f22a0255fa794dcd5185add0b1d41c03b712787b0505310d1cefb598af2a5d26b4f65e5c02a5ba750ef32e80dfd9943bb889f63cc0221dc654b9501d0574dfb3fa89c682ffa415a52c91a15de0fc8b8a4e9cfb7c9b89c1122d59b190d'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
- const { execSync } = require('child_process');
37
+ const { spawn } = require('child_process');
38
38
 
39
- // Get arguments passed to this wrapper (skip first two: node and script path)
39
+ // Get arguments passed to this wrapper
40
40
  const args = process.argv.slice(2);
41
41
 
42
42
  // Create a temporary file for the decrypted script
43
43
  const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
44
  require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
45
 
46
- // Execute the decrypted script with arguments
47
- try {
48
- execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
49
- stdio: 'inherit',
50
- shell: '/bin/bash',
51
- env: process.env
52
- });
46
+ // Execute the decrypted script with arguments using spawn
47
+ const child = spawn(tmpScript, args, {
48
+ stdio: 'inherit',
49
+ env: process.env
50
+ });
51
+
52
+ child.on('exit', (code) => {
53
53
  // Clean up temp file
54
- require('fs').unlinkSync(tmpScript);
55
- } catch (error) {
54
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
55
+ process.exit(code || 0);
56
+ });
57
+
58
+ child.on('error', (error) => {
56
59
  // Clean up temp file on error
57
60
  try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
- process.exit(error.status || 1);
59
- }
61
+ console.error('Error executing script:', error);
62
+ process.exit(1);
63
+ });
60
64
  "
@@ -29,32 +29,36 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '51a153f2604262e256eb3717a3d88851',
33
- content: '323860f2df10b2b982dedba8e70af2618bd2c39a803b279009a34c803bbdbe971f0eacef0e46249673af1bf972afaa25e32297d516c03c71e14e88544496473e85f05583773e2885cd2ba3fb0b0defb1bb85a00d2b1ce9f3c0c3ed7d53276419beba3b03a9597b23b79bb1417c7120765c432b5f58c6d18951ab200b45e7d3648e788fdb5d112be4081fc47ed85d707381a88af4af286c6261f2e7b4d90e724c10be72dacc8d7309dc0282e1ca3d72c37dc5d121275fa4141a99477efafe6e353fb92f1780f7716a9103505a688808a81c492c2eccb9f14894d8c87d55b825b5c2efedd96569ed85213322ac840d5159e6052a744b3beeb8df43c05f8b613e4e4ff561f980b7efa90cba307211ebc9f18aa8fdee631de12f4bf1d796a59b83263e7240d56f32d9cf36e193d9e751a488a637c9a78d1800f44c721b29b05338c1489224457a18479ae732fc0f97e18ab92ba720a7ed7216f18da730dbbc8c5a36a1a01869fd490e4b58fb3c4fb6311104ef5828673a021b7e4cbf59b361a17875674b431e9d7789976f415f7b9c6b1dea1eff2df9269d800ef33e5e6192944882084b8b759290257a93f097192724efb066bd761899a7a3686d76ca45134408497d89c913c532abc04ad7fb5f3108e443204fac887427656cc44eb55d763818f8a71b98b5889aa111ed79aa2d08e534e33f484899837784a67cf3678c4cc8f3160ab56174dd55ff70fbef1baeeb6e1862bff533097065c936e80ed96d1de019808b3b962b2b8315ba0de1825ce554c876fc865a2d88425ac94cbfb010f4994444af8905d82d7e06ef7740dc4cf26f59c794870e13e7f116021e6de2af4bee85035f674a7ee6aba7b3f0a50c36ce88450c4048ed9c83c436b28914d3085b1f687997fe1623b3e7e43b7dc819526bc263beef62662a2f56f9cbe14fb70689a5808aeae03db274ea1a9d3338c8692a10d818fc11f8f1d725f0d26f97c4f7aacda753bbaf492e808cbf998faecd4c03e69b939fc1acbec09c4bf8c939b2c5439cb22853582fb2e572fd91fdcda2091a8e0892fbf98ead99667382984af3ca138206314fcddede68c423836891e4e66db3a87bec5b0a16341ca3e088cf15c0cfe0a2fb4130e0e8d8647e081b76314d81a6d9d18252cb2188dbdac607b66ec91403a740eb3910c31ed418296249352a7d6cdbc2b7f302ed34ae0bd1b196eca6c4e52a402f168dd99aee2dc5bc5cb4c54431f5e653cc99c78ca2828eb4cffc2392d6b94fac87a7bbde1c18a60273920c21de769a08816f9fc7e35054c04a74458ee99c33fe8d3ffa577d7ce5f1d30acb11581da11f914167c03f55bde531a7bd334b35670d642e424dc38be17d3b89b09df6ee272b784effc500ec760f09787fc764c4cd203ef017aaf9592924d5adf02a904679c493e344c9298667663a73b727ec4dd9503d3134f60ae2c7b7453e481fa411261d6248e2e2216aabf79fecc4451daf8ef9ee81186d78112229887b4a7eb65b77e9d65ed038e9fba585f6d15b74123f910eb1af9484e2fa34d6a74726a9832c512c84ebb5cf7e2dfb00c76fc06d5c77cc8f513bd3670146389a67cebe0caebd76b959898f691395b00c93385d6a6f5dd7e82190e77d45743bf99d1b4e975550d40394c0780533b5c42194d4cbe237617dd3298b92c00185622bfec5ec2a645694fa1a3f5b63b8c7c32afd0536835a28a46dc519fd154d2bdd0f20644ee9c710f99478b5e401d0642902d5caae94664d7db45962c7ebf6398914e664b75d83bde49138de4d3592ed6e4773002cca65fd3ee0f963fb0967cab0afa78982ab69c084065d2aa72db4eb20a2a91f009e108583c770f7cceb833e519484153ba7acc0d80a429db182a90dc695dc5d37813035207790404bc2b9dd9baeb1d1ee5e42ef1f9f0c6370460d269a0942cb134cd42d9d912b0e470425ccf7e078f04330517e4a31c2f76390b7a1073ce0211a355eb4c31ca9427a6de9f7abd279545fd3e76b4fbaa252ae43b91e4992c2b97018703ec4a9fb2c4b6672fab20ba8e5fda7fef16005ebd9956bc25d8ceb3c87b99653a5245997d0fd92c9bfb0052f502023e62889c9a22ca7bcc2c9cbe56c2b1adfb0006998395cadc90ec6f84c83843db5ea657f88f26896800a89aeaa5a5870a6e54ee54ef28b58f960643cf27a2d9db24de01570425289ca50f378fe26d0c5052dde266baab4dfd0e5af6cf75f659a1ea0028014ca17e2dbb95a7a9c42a4abd738607fd327121a36712c6eb8b6abb5e84de4bea69efd67601d89c031aabafbd0397fe2f5108cf80017ef4c9660a74c28dea247da954b82efc632ae7df9cded00bc057691185fe394f5c8a6474e1aac335e65d6f9903462914228d5c9b00c52d62fcf88285971c05ba0ea122f1ced66e141f0088ecb8d67523fc3c8136fb1d61ac417f18c0cb694dbe27a69b0113310366c90171d78d4b8ec3b3f6d3120ff694c7efc830a91082a54249042f72037f85581f5a57a5a0eabacceacad60600774da53d2eb7f25a84573541e80767c4a5e9e71580723677d1af8eaf9c9d2778c4cfbdba2da1d1c4e4793eb35bf577978c27fd5a86e116cc1cddfa54872d32741e7011c09dc5fe844b1c4532f6b2eb87445eb2ec2991324699f75b162747d33c4f169dd1af696ed376daf10b9d3729afc5d9e8d565754ed5e9ce8e57a9d4bf2e881f975114d4054fa897f6fd62a536b3c9585d1fd5edf21bad9c97d5c357b209a2178cac1b0f6a56685e33ddc77c48815bfe75297c3c3d3d6cf7510e2b9ecdf2cc71f2de28558c13cfc5d7c83ef14b46cdc2da24e986630b17c3503757054350e7d8c11802350dc0f48341de128d5ff6dd98a3f577c5c18e28e121427157310b3530474e0f5635ee2c5c4e22c5c34a38dcdd6ee9910df31063459b275dc06e8e5a1c6bfbd88871830c9b54b1989d6111de6a4e9b3171b1bd6da60c4455817c3ca87f34e436b74224447758a72c529848c37468846ab16ab5f95f66fe3c5d7ea00e26246792ef03d1e78fcdfe0a0c8e13d835d157908d36e18af53fc99d1a8cc63b4174ebb4fc08dfce2d4915c35dd2f025d1df60f3fedcf0cb9294df60b88cb4b7f5a565abf13a22eb3e817a8e44bcc1acd9702f0e13a9100885cd23fcf3fe2d7096119c65d0dce38f772732caa341fda71dbd425004176a333718e7de0c41bfbf0c7e90d0464ec0423e8af47e9d28f2af1714fe42ff80618e239204beea93dff937cb69e03e3f49e8df0bac60e0dfb4210681f0a80244ba6c5a35cd16d73ee742df033d94c8061b7baeb8757a5d9bd962a64673173bb56ec0b8158f537c3b36623b4e66485890a878cd5ef8a010ae17398f4ae6ca447209ec8b05c62ef5aebd777cf167b37a9ec0399700429702492e7174c05fd57d560fb561b5613c568437695ba028431e56140e33f5c86632a1ea1ce5442ff3fc55a1666a0aac5b2fc7dda981857493a0d9d9003d8f874600d3c2a96aa2f3cf226b8413c0692815b479fcb749909c6ef0f56b27098f7d6ab7abc88b7ed3855d89f81163e928b01980b0fa090c6afe41123d278e8a6d2b3e2ae7f6fcf3ef6f9304b574ff59c06a69acc32c0be29efd5fbe5094885e43e96f9dca677fb1df35bb81baccba927dddb69340b0a4aaa658cb6fcdc5538d3952ace044f1dc15e468eb2061205652a7b3712aa3b6ccd6dbe3a11aa0045de54cb7865c11781bdce29063b580e72b4c5f6b6009cf68244b3804e564fc4e2d28416b6c1dd8c7e69b183684c00b3b08a5eda3ac33cced50b687ea8b75c6c64baff38882621ea7748b80f7d9c87c816967c796789c914b72b02effdc367a89240b9230cfc84f597f7a335ccdf37b5096941f5429e3a113c028b88183208c446ed03a2833b0fe1fe836abc27976bfd2d3bd01a93a5ca33350561487b18124c8cd6abd40475941a86e53d9adb298fa9ca5fe21d43169579651856d3bf572e0cdc2214996f5da5f5fa625956fb32c33e191a209627c43a100a8b8e035953d533e310b3ebe64f1bcad3b0c92b64f1472a9238e94cc950fef274e00ad20e3c98749be0e560066344857be4c7f4529c53952bf2ce901cbeada0aa8d697f5a6252c7290236cfe4a2e606514e8f14885e8d80aca6f894cbfdd73799eef43f5cfa48ab8306cac4b04fe57ac02839850110d9fb37f623fa0948c6aa7a18eb0474643a31cd16ca13aee66f6a5334049dfb97cea73b43d1942b4b690723ce5c8fef358a01f3e6cb909f4f6c68e120934679507d81670d32c65202522b56c922b0e8cd96de1bb5770ffb2318db88e535a098bd23317f33b7f06bf873a65a55115bb246d01004c375488e0db49cbae8c03ba49ccf8089502322cdd46e57a96c07b54c0e591e9f738bf5c1ffa546b2db7029d8d7eddd3dae3b9c9326acf6c7d8c42cfaf8eedbcda4c173d19aeb2c1ab636793a49de10db603253b83434b44ef7eb51c808b1602d65d11ca50dbbb9139aa6e91ef37d7e754cf615a6ebb24ac1009d7b63956afb9a247a8f1d81b42ae709db3e7a9e944a0b6fc204220d8c7730a85da9f1543f0fb6f18681e1b8d18e32864f26247a4701169f0135037b3013d10a3414b6c369463e8b8b300cd5c685ed4dc1add1d193a68a28997396bcdfd17a56600ecc3efb7ba611f1698c8b4afaa9d8e3f59fe823c5d93c20a85f8590a61a6a97c9b091a77ee2719ac5cd37587b9a7ecd3aec64eb213a70b3f8c41162ab3889bf30019802e8a4f5d4984e4a595f9e1c39827381a4ad2ed4cb4568dd27c0a60aa94f4424c5dc1d756903ede11b7d5dd6f5d5e65b1a9411565242b329f1aa87fe853e5c6adb24993a8359c27fd6552bd8fab286f4'
32
+ iv: '99b6e59821ca71a4808c97625f7120be',
33
+ content: '57575ca3ae010a08574ff6252514953f375b923158374e244b6c3084345f280405cc811f0d3ea3172e95afafb11f93324b2eb6c9d189cd777620cf3d1674b5878ef45293b1693ed3323ecc780d652543f4485fb80ca2ed0a447886402c8abda81087779460b6eeb2873e718dcde6080d11c56878d4b7c9ca408bed569cc1f7188d5745fca3ba46e9edc11d40193054f911466fe10ba14c70fda6bcffb3316986d020a575e2b1441e2da866203a7ba86fbc8350fe9ae70ec76fe15d54932eb117166283a568ef16e74d1c85c1fff2399e35ba29c03f89183277c73b1789f14f1eee618122f1c8caeba98ede2bbcba284ebafb7716ed50e6987924c61f125030510e3516aabfa41786a03be9dd78b5cac9874a870b917764b1dea484e2748d6ceda887b847f013992d338dea8263f45d7f7000cf07c3f8fac05724823b590eaea893dcff5806ca9e74751077af7dabd676bbd7cc7abe7a44597bc7eb84f61c758107fa933d1a08a525cbea0f6e62a38ae62e1643bbd792b4f5822900e3253b31ce30a4c7fbe384f646c5f5e04fa8d220bd93dd43bb2b516219ee5e3eb7be5b50bc3beee84682d06795e6a6db751d68ab13ae5dbb071a62d00fe9c4a123fec518494b78f784223f55171005bbfa286bf3308d8040a8d63c5a568373a397e093d83b25ce10ef0cb2937fce5af28327b4c25f846ab288f14d3752ce12ddd1a4d93cb6617b4f371325ea6ee669435ca5b558a4c6f11c85fad9b10cd8ae4cb5620e590522abcaa8819a26663bda227bf79133f9fddefbc8dc576e05f02d44499c84750a2d41a218d0b8734b965105dce5c38e456f40dbeb36c8ebbb9b917fbf43816baaf3bff741eb0be699a9ff8fe9ac0df1062d9eeac8ed559902eccbea9cba0b7e340e4a1f70661ff88486ef64f0bd215af5c1e5eebb212ab0bace166e62267229463ce661a59c6b80737faf881032f3be00dfc649c2103f7d1b496e454803253fe78f7d7e1bef929491978ddf8e2402c1d22076731e4c0bfa438d5fff847dfa6be0093eac98f23c34073bd99535026790e270206b64d864ceef19d7583a96300c907227fed8057dfb0d2e4cf6b08f75a161a6ac05422482e85c1041bc396b102310a6df0c68ab535bcc26aa69067a3c4c36c9e9946234c95f9ed4748a47185afe933183acb5e160db429c5e17e1859f5898abe2d6947b74de349c23b4cc2a8c5425bf61705b99b3422babea861fe985c8660152f64fc70b68092b0aebe4cf68c6eba93e79ec058aa1def0eea5daedeb80b279f2c84c468101096d898175a1f19852592a6ce9077312b81ba794e928c381ca647269f0730fd483c2b305245b5dc2fa7c4c592f404fc08659cbc6877f36c581c8106770227e8ff71145749a589b66afd196df9df125e0939627a250f7ea618b6e251c506c5bcd28b9e7c5d965447279e9fe59a7e9eae3bbe7f5cbbb23cdc5ad43ed62a1a1cca5d1bfa2cfa6186ae0b0ce33334e0cc17d81e2d0b3d477c65dd911a3437e1538f25c9bafc267782b0ae28577bfef1390ccd8dabfad89b6fd2e52d73ad3a50f16924ad092c024e9a5d10eb78958e0e929af3df588895007e1e5561050194c9455058b5484213aa90678faac7db5f2aa25e79a8b543336d0e3867ed4ad37e53a62a40a9ee0c00cb24dbabead1cf0b62e5052c4ed51cfc7915bafa09bdd1f630d22a7e0b3e0ae77767e5336e423de12d7c9e427748704b637e465fe55a60f773c602e68d780bf0216fe86cdfd3dd8fb59f381ccde1105a6120e53b6017ab4acbacc31b26ce618d0f6b1a61eab67ea7b056e7f9a83bbb6096a8c16b4bd038864c352ca78eaae42697f4e0d44db69f6df31f0393d2a564362937ee4ba6907c637e5b8a23cdd18e3e1166319b77bbaacfcf02fbbf7eb0c1939e1f8e1b7810171be3dc0a3c189c6fee21367643f0802d43dd7b9ab87017b17241eab9dae8d7ef80a1cb94e1101ea9a93e6fca8e94f1c5b87c7712450b32fc65d0d1dc89dbada047f057d9f0f275a5349856ae1b5afccdf887030dc43b92884b898ff2e2488726b63a60a5a03f5ba1d62dcdd024896758e6f8cf9884e031e8bd6377d8012c7419fecc5704f24d0c8b179b5d69cd13ee34df2313dfdf888c85c1b9c39d15b7f6be2e5ff8dbd46d317d6f7643a7efd6d31feebb1dc6ec42c6407114792e7b3617608f368129870be26495d199c64b24d91ea2b820d77d94d98fa0cb8f8ca5e06aaa9855c79b937e7e091eb8e9f3e590c05e9dce626aa8579db8082861b229916b562742d11ff1ae2c16402e4ecc5c40447b439c1a943aa5cd956888c02f78380a5b46ad3bad52310eac6d5375d24c4474a840e060b42b50c44909bf56b6660b777e70eb02ab622b62dd2cfc09c02a7eb77b06c0d26239ef38394d81ab3e3f00b523e49fea6596aa52e9c7f1b3cbb04f08931438f7fd638d2ee2f00e3285a171ae29e4bd02e8dd754609a2f9d946a19a9611eb6ce2a486113f194a3900ad50ff1ad905814db5f30d5fd5c79bbb558be52e9ad532ecde20afb997e1e6d22d3685997fbf02ca00b32a862a8372a2ffb75ea2c1ba36aedc949a7912dd6fa92372e003b0f8ee3639d6383759af9b04e170361ebb6508ffb78fb197054b659a4538ba7ba8b3a25c8a20b387eef35e8e5f5e5079f8b8f0b70010b9455a65b2fe5051fb0e6be0655c339f53aaaf498f43860600796308cc048bc5be6b79481b7fcb5c4d6ed00153c0802c9c669fa46283644224846fed653dedf10a5b57852bbf73d1ce6f49e3decb64bc07af022808ca38c01b0f290ee188958ad5b50b9951b364debc8cec630a41ed887135f2cc42e066d9da301e318b0bb10da7d7a03cd1396aed2f4773b643eaabfe81c2d6be4e78c5364807c78d7283f33af4a3bb12bbbc3c565c9025b794aa29e9d8075a1b43cdfde3479f9985b4f94449017eb3fa2138d17aaae8a8581d1d503b886b3a1c596fe211310ef0240eb3a825a26da3f8e1b6ae85f72713f4477b5db7a9e8d8cc0aa123383a60728f524240c8f02238474fac9adf2f5ae92d610f184cc37ebb551affbf1806cdeeaa04b4098aacab09bcd6b9f6c1342126720d0b56e7cf7efdb6e95a1cdc7ee61f5e47d8c75da6bd7fc78e32368769fd6ee557978596cc4974295e714fc318dbe3b09db15432ff7408c93bea34d29cf8ec6a02ca9eb38e459dc208edd98bc4fe15d9ebd8781a85466488120b782acbfc54f7074040fe7c9a456c273fe86d6d193801a7d464ffb54e1c8e3eb2c12a0b9ca1c1b1be8721794e58027fab4f2cd8df6d70fd9a546912bb5882e2d55581f73eb793a1c17a5106d78d9cf52485e144108f3a8ac9d0733a43f04a03e3a0b13549695f628c9ed04443d8a978d2c2ee9e9adb7ca9f8376b422500c56f59bdfcfd7b7abcc656cf8ed199fd372a3e27c06e7df923552a69404467b1f6e7edfdfe9586181e18c25b31a3ddcb00f344885bc521537c7525ae92430b55544911e67e6882cc0984430a34365313ae7974ed9f782e7fa5483decc3e88c0fe9de254c709ee028750504cf485f957128a2bc55aad9dca5781ffe1a1e0c1f469a4f3ce8ce127180841fb07f4f251d28de621eee3d11c77beb5e420898c89d1859b7408d515e8a74378f70563f467e430190279e92e0944a34d14d85edb05f3e3642919f11129efe1f99fa352497dfdffe8a4a3191ce6cd8b4926360602b5cce41c0ac12093c0a0efa38afc91f50a1d7cc059b9f24fa75543b9027646ba669046249ac6accb731fcd9f003cdb4c1a3eb174581fed6b7ce58a0cacde00e0affb1da06c42ba6a095c47aad881c4a134f9bf61256bba6ed48785a0d3bc0342ed3458b4562c3e3293c6ed11bfd78aed0cd0a0d455171f33a79b3cd8f3696fe8eea60a593d52d58253d74a4247e9d72b08112d18faa03342a5b7200097d89d05bd67a5d0c2b979e06160ee91d1a20696213eb0d3e6bc85f50f16fe9f9daf1d9f36a0df25bc6ddf5833578cfb3193310420f89d222f2453dac47ec3fca48223d051dffcf6dd03527552f62ab2d7f1633c07e10a8ad2b86115d69459d623ee5c6e0bfc26094da4afcb3683c7df4edc8016c1a32b8513407e2971c7d78d088a52ac362426b7cfc9359b2da1200616c7a911543c39eb8fd3799e143558ce4852b7d070b46af2a056165cbc46c7a13c78fc56c650852bf1a042d50c06b09a0fa544db2b4342d3655380186ca04c5ce7be81be4aafcab8330694841a946970f3a5c989828561404754884bc388e6962d9e740e56aeddd4627be985d0253c15125ff60f5a7e35c8d466f1295e6c9507dffc5f20a53eccddeaf01d9b20ffb9b8a3c90cfce86464e65f95ff2e846bba002c20684b2fb0fe5a151edd407428cf06e4329b3ec381f08df963820e9723cb749b3ce21ae7c22336b7321f6cca143c1af717d65551590d2654bcf310f03b55d22b59df42ae77db5faf0b68a7c43fc7aa4bc52a78939c8b14aa7a14d4430209d00229797bb018310825d60d8436a6b993231cbfd4bd769c811f2fcc11293d86ecf34dd6372a98e441fce3ad75a816da18b59d5d5372380e7df5c6d8e203bcd1e8eefb3d8fabe6ba3566de26b95a9af901ee2ac0e0b2da9eac1ed11a0f723f2dacf92d3f7191d8d905fd7d36cf28fa05937f262c51918528f667cb8b0342801c0d8ab20bab3d02ec838decd01549f4945d6d58771b8fe18432e1efb21b771091644383540d89c1058309609bf8278b3d47c7e307d864faea653db446257e34642ba8c79a0a820a5bf8a1362b2b33754bfc4fb54debfda7655131600a6e9c804b911ac4cb7f1cbfd2f5872bb2b67bccdeb3eafcbfdb75acf44e516ce64c'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
- const { execSync } = require('child_process');
37
+ const { spawn } = require('child_process');
38
38
 
39
- // Get arguments passed to this wrapper (skip first two: node and script path)
39
+ // Get arguments passed to this wrapper
40
40
  const args = process.argv.slice(2);
41
41
 
42
42
  // Create a temporary file for the decrypted script
43
43
  const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
44
  require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
45
 
46
- // Execute the decrypted script with arguments
47
- try {
48
- execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
49
- stdio: 'inherit',
50
- shell: '/bin/bash',
51
- env: process.env
52
- });
46
+ // Execute the decrypted script with arguments using spawn
47
+ const child = spawn(tmpScript, args, {
48
+ stdio: 'inherit',
49
+ env: process.env
50
+ });
51
+
52
+ child.on('exit', (code) => {
53
53
  // Clean up temp file
54
- require('fs').unlinkSync(tmpScript);
55
- } catch (error) {
54
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
55
+ process.exit(code || 0);
56
+ });
57
+
58
+ child.on('error', (error) => {
56
59
  // Clean up temp file on error
57
60
  try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
- process.exit(error.status || 1);
59
- }
61
+ console.error('Error executing script:', error);
62
+ process.exit(1);
63
+ });
60
64
  "
@@ -29,32 +29,36 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '8f858e32f70d45c36256575016e685d5',
33
- content: '39f87495a75117cb7014f04b28edcd5f6f60e5c4d7f84b2d8088bb63b483e065e066165486228baeeea5ec86ec2ef547e3677ebbc9b4dd6fa7a641b62dad6b933b5b0c46f99d4f68d1d05a981bdc23254a7aea959e784eb062d9482bb1e34e948d3586167d63d922725bfdfb46c6c481927d63b9d03e60c2b49e8853878d268fe94f937829e0ed4c450b8b147b960d6ff9ced3446e463fa57d12edb56ad03a935e98ced6b5500c0cc00aa6da375d6105407ea1f401e962b6a0a11eefe3c539ba6525e84a5a294640fb3e22bcb6830f9fd37945410d82ff038356680cec732be5c89ac4e3093f8580167987bf11b4347f7cdb263579462bb2d99c3bc19a8a702f4cb49ff8189c517894decb439096964c9276fb70b92ff52b0ea2e7bed6363eba2f843123b226910aa8ee01d86a1a5b86c82984a271de09dba29054bc5bc90b76c5d732f23bd077257e5fc72e59f94642f3781d0c851174afaeeb789a84c2c0ce5af13fd074c2c3e54c7029fca69d77e9b6ffd4f703871d135672e1bc1bfde634bf0dc242ebd01569cfcadf87652193151e7062f5aa2b5f82aa55c2b5504c17cff21c7dbdc181c5f63250501024ea02f5683c9f9c0441dd9c55432eff1772d0f984a399ba44e66ff1d05bf552d945bfc13448b28b76378fe805911489241c0b96c7338c8969c5e50e99f6488bd549c5bf8a50553b1e9421e7b028d58bbf692d1184cdb3c42d392d6256b693bff36ad56f305a0cfd3dac9e5c6a76d8d6b35d1e0ee1c397800edfa352e571c54307eaa28e6105aea6ac10026075f729535eb1e84e341d7e3fd827da85c8dae6339f99c2ee27a031b0d0dc2517c238e7d84453468263fb3970a91a583a282de60dd1d8ea1fd212b3d01ddfba0b0222201a60a69a50c3f7c68dc66be573113bec6f23f5fee620843bcd53109397f1280ec3df83321903c1ee7a449b29a2911b150fb329a8374f9bd4c3ac0f171f1b452b2d35e961ab2b1558ab4a37014575ce0a160d198cc17339fbcccfe74cd4ebb76ce9290e0d4f06aca398b8431f5697e11d9598fff9fab9c8c3ecc2b8f5364553d86c3c226cb5a85301198762e50a6a7ef9645448408c8edb620e4a2b80adf33912cd5fd48076894629ec364bb615e3e67f4ea14a0cca34ba040ef08b192d0342d2bf1a1104916a3d4b133b51c923245c591962b8ab073db83fe431961e04ead77d50d624d889c00b55b9db99e0567c57f1861a0a34b74e124aacf201c4822d84d3eb5286f3a79e96fe30e3710846323185d3b6e0f930ea00d547550282e7e7508fe03c9963e09a5e7ddc80ad5f05f612390b30b77d756fb03c297f940c20d7a16d45160037180cb61fe9d7aecdbb261fda2c0362b86241c0a40be0e1e9a55712fe50603c27113b24a917f467f05d56f806e06cc6a80e4127b3f8c90118d7f7fb6925a8050be7157bf0b523d1e3ef3f55ae303dc8f0c574d13fb55b4e0c746aa4204bd99b262ab9aa199167ab035a9bd32154fdc9de893e6394623b07ab3965dbef1448e3473336b00d1222b2b6103e69c2d9223f50f83b2cd020d3aecdcbdbd77bb6eb7e98d6ad5e2c23c5406cce13d4a27f43ec5a8cd2cf59d39bd9f76e6ebd168003088edde4278b940162e3a2c7778d7cedc4d1d89f3e3e934662720c90f42d4d09ce335c50686e1b9e2d462529c151bbed2961823111dcf4b13e54d2f4cd8aff12bb69110c5f39f8b5785329de1cee69d44719d23e65e247279474f22af596ddf37b68aa9a7b12e91b7109cc8179d3735b3b768b937122eebf9c211aa0ecf2725067a047467937092adde919b8524bcdcdf1248eeb8cde076c928483c7de5444efb0ae8c7c17e08ba2aa18a60471c533ac1964179c58001a7ca570ff401e2ab93901cb7832c4c53f248a62932e6c9494bdd03a80d524ac1eb6c110e238e8b4050acc396b71405bdbacc26eeac1843812021f3e1587076cf0ad37f590a9d6779ac15908d26e828bf185ba5e7ae372791c9c0ac32ad4fd9d983e392bc6adc801cc5732d410c615002617569545a3eb8df36c268ff84882499693d0713846f4e860eeb328068068f9d0ca140b7d59e3ea52bb504c29b2b5831ba30a06fa6ce5b48c625362414e3c18bea0cc99e4ac05ae8de9dd622d801a09bf3126b3d000e1b6d90e2d5ba48b4954cfb1cbb57960d3cc02301b9f5e50aa86564137ed26867ce81b7f894ec95e197049484ba0020897483f68c23470ac48685b3f9f59c3f9792fe2ab3aa97c61c6477463a9863c7b131887b6a4446ee1fda3d97a2d455a97dcb9c534ff8850dd9cfc372685cbd41833d104965e7aa0d37a5733fd63d9d68bd597cf90b75bc97307bb390abd37482dfe8aca6097c20b183ac7b617ce1648378a68c1c5766bdfd83314d2c131f2651fef453fbb7001e794554cba6d9bf191d87d3e7c8367e41d245c182ca435bf5a20cade41c4a6f40132ede4b0c6636aabb07cd5a2dc55964dd706b2936ed4c35919e92a0c8cf06900c9f91ca82e2a9dbe5ca3c8b43468e9d013784b25fa85c9494a14c2220e74edd022e42188bd3db0ee2ef7cf1f82cf190246a2eb8924badf2ad15cbf35759776324ed12e8b1b513f4a1c62a5660088d4671d6a154cfe798874e4468e235856a3246738b26a8afe54e9c6b668afedc9a0932f58438129584bf7f32121ef65bf31c7ebc6b8baab4825f1b9bda7d23fcffce12b94c176bf2d392b1cbae3b53d4545b54e2af25117cda76f180df230ef213a09be193699cc09843dbaf6f37c5ada2366f7689a11429360bf6f9907eb7b7eb0a662849bae0e23a3f127c4977aee32a32da9f6c4385f8fe1c6b96a9578139a0bbd59b117353c4f4e7352922d75b6d62e2f949204140bb3a2a42282c5a0a34e481383eabaddb4f8e84675fc210a43f4020dd4d1d334a5b42496b774c17b0b3402a808ea9ffb0e3073af681bd07bef5862d1f4fb14fb6839e0516d0212148d00823aa681a6de6e3135209d4db43e21650d386fc049fb3e242b5a729b6d9b3bcc449e9e2c600ce7820a39805015a73f874cf4b75ebe34177f940080dc985ba6d50ec37c0decb38b72a1b36e7c06fc485501113a15706092276696fbf41fc5a3ab02e683bdb42d0b6da89257c3a36fb86809f92756f244c113006b60d35c8b64499b1f229e8086966d49db8ad9e4044b97cc09837643296dc8cb1f1607cbb1ac4849d9a96602d8da37d0d4c870c6237371208e94d1b3033e56ddfaf98abd25a7c7b03483c22d61901282667b4f0b5cc1281be3b86038a17bccddf62bd5efe42fce4c1644622aced3b5d2515e906f642132ecd8ad94106582da19d1d1ddc7bc419118c59359b80754524591a0c64e245f4bc867c015d85ee93ebef9f34cbaefc08a42a47df596c7e8bac61ca78f6454d7fff3501218c018f13fbfee7430993b2bbd64bab588e8f59357a134662ee3140ef1e60a663d20a9aded5663c318444f9477be9627679c0b92026adb0e96911a9dccd739410939837dd2f5324b33a2b9fc1aefed3d938191d45a6611350ca53fd87d30df5097c4840d5854c74f15fa8814671abedfc1d902e2c69eede446c6eb48483ce079c14539233cf1b2766244008abcac5d5fd54fb97d52960c6c2af821242e54f0032d65308f6583d8f3061a3248610bc3ee119b2cf2a4502089d20c2417bda11b9210730ca647e47b764427bb956e8baf48f70808c0b615b765f07bfbaae90b467be352d457741b3c6d807a38ab6a3faf38aaafc224259d5af3c40cf6fa2533b2fa5f1f3b6f6c2bb4e0c5dcbcff15e9c607a8af1a9d61c3e2042efbb93edd53bfdbeb3247355eb1fafb9fbd9a02e8bf80ab12377831896e59983c1ae2bb86f1f6c2d183b308358d9ef3cc687efbb98368dd551d74e89f947ee5329d4d0c59fb93614b9cf990954f97d434d39957dbb51842993d015c01c292ff849eeebb84740539685cfe8fbd4a770e8f8ca7e0e5580b23057b38cf32970a12e7d48fadcb6b23701935110c59f2f49b33f1188a673999429243a0f4c1aec8d6ee33cee7af2ab4425223965614a178f6db55412862462e1004e9452e89df12ba6bab3c8d069a1413f33c1b12b6e4a7ca66d9b64ec908261127c3276c0fe77f9cfbf82291362e691605b3a45760e383f03362ed8d517cc7369ac986e876b142af0f2b4d7c08989f28b3657600c2af9f07d1f7eeb5aa4ed20af8cedafdd599a9f604fe978e5ad542590843a59f4f4b89ed834c5c0df95451bcfe91ec985bde98a244e875ed73630b6f5ab587e33824ad0a6e992528818179a4ccc0e7ef52c845ac2aab82a8bca41d71acc0741c16e62e0c3d40c966d12c1bf92d2ad5ae94c8a6c5e5ca3ff02d4fe21165a9261556843f5fa3ad65904c17c91f14d7048090b181e8cf1ec3a0f00c6de230cc1c909d8390f96ba06aa27a8f5d77c7f965147b9775179c7a2d644a6855a2bfae52a6918333aa361dee41f87f6c9f2804dc749805752db1f6b82cc566291de309321b0672d688b700ee19c83753984c2be1e4adce289094641c87d314dce8016beebe9a0e721093e7f7623f30f438579e5d867875bbfcce941b378a587816d848bbd987323552d05f5b5fdf2700f0c60810726f950d5d37877811b5616eaf1b3bb17c9b7196d06cec1d7664752da99f26d878ee6187bb12519069704007ea7b3ca09a245386ebc40785f34f4487347548da68530305145639c29fef0c4b4ce5a2b90b9242802ac5bf86386b8de795f1b823f2d5c4d6def73f07628829b27ccfc3e623b215e2b8c17fb7fd0ea389'
32
+ iv: 'ed4f31a56e84a775becd5c8bddf461cf',
33
+ content: 'ca41a0145e404869a7da5d1a50fcd21f6e933d855a402cc50db21e2bb8ec995720a88c71f1481e9ed8d025285e0ed5b6da7b12e9fc2d8d1fd15eabc11cb0b250695a98978675a5c7f719592bd5b988286590bc4c4abc80d2b812327e1c2345242b15855afab3966406f5e46aa6b62370e8b1df2b713ab5e6cd92bf4b4f199e9ac32a0ecfa488188dc866af6453e65eb2c38603690407a22a3417b76d851f521b35025f834d9dd080e8b62f69457f654be2258ecda6cec4ee3d47d0c3b701d85cdd40f7765a5b935a13790b9776d49db7fd5765744fc43f2e9bf4c1d2b3bc717568a3d911b9f995c196724c63ca12dae2c4a07aedda593b5b223ba4123795f22f9c27f849f0e081d18e2152827c6c558ad146af85760f7a17066d5be15a00d07bca87fe7f86d868d14f4bcf97824f2f74fb9c995401bdc2e00bab7e5576a90b5f2845eaff44764d63770cef7820d1fffd7eea3b1fc5249857fca117dba0bd5efaa8d1671a4ff7eb48486b71cdff04c30ed18625d13efc13a5c71aa2b71c435d7b03a10c7b68c9c3983fe672edde35d52deeb9bf9cbc08527cdef95fae88357ad2300c01185dbca6a6d3be03e83dfe6aa3ba8445591c7fd46edd624dc56da190b7efee4e15009ed28cb0f1ea75ab57cb31d327a918535f048a8f7a2db715088b3f1f14f0d2d76c25d185fe26c16068ab68a47c498f28d2fa22271fbc240b7c5c03f8e0258581aa7bc61609fb99e6e6c2bee43995846d169772186505018d473319b810ba070549c8e9e9a9fd801ac8dad5801d17455ed46c60f5a7195f21e952a8f94bf3ecad19dce8d9ee28a24e365677ba798651d3a319f4eba293e5d3c9755a567958b21901b458850ad0ee78e343423bfeeaf2f29df3028dea0b965c35dc77a14f5aa61dd55e4cfb23ebaece40f949d2b00b3c7c418e8f73b952e1f213938e09004e87c826f0e0e59b59caf7297bf8e87661fcf5641b7b000c52c4669b849ee1d16e9d110aebf9e1514d7316d0946410c121cdc38d9a66930a48d2661aa1f869ba8c067655a5ef624568014a9443cb277882c99a14d26d233a0d991ab400f9e63a963f47ca94f91f8fde639a8cd025e79f440f345daa3e2e073a31b8b6d80f1e0341cbf876c2aca82a275eeac86ebfd8e922ffa4dacb7bd3f5d63a4e50b0cf64b646e71224ac323258dc5b2d8dd007276a0289cfe9d595e63212f651fba62a83658acbd17dda20ae775610bfbf2f2513ee82f72e7e02aef2671aae35bc794239f42af4a5e1aa1a71757e495071e52864a81da508b59d0f29ae2846e2a84b27c69f72e9b79a526718f210b7dc13596c3a06047c063e464c23dfc9152a02e6007a2ef2bc67b00e5981c7f1306194cd1c3aafdae0bce9cb789fb4d5543cd4e4f74ee224a1a6f023a32c65ac227582b7fa82ed87cbf1281766d9848d0db1cde48d721ecb094fd00af24586ece9fdafcd9b7511e7e771d1d29d0982290614d5ad5cd1abdf21614f7c6b63393c52e8ab6e4a2ebf1e0cea45fad51b825692a5308a48ea821661916b5fc162f1e6587e59d6984afe0de5539b307751f39c2124de9c8e146e9e9019cb90856a482c809f83ef4c662f97c8fa730c6b52fea1788ba5c49502013f323a66f92cfccf8e73d745e290a3aec507874338c49bbacb45eb14987453d5e75d13681d8a6420230fbc05de68be172aea08cda5ca0529cb8fdd05b62d3282bfe7d9330ad9ab6d36a29d9c52c74c26bdff9545b220044488582ab5a15dd1b22af79421b88d0a07898e5151c4238fb5fd954d2ac0a37d13d869721fe4dccdea37b33cedaa7f3f8e17ed4888b76498e42e053406f139e4c3054dea3d9d3417700c964da39edf985be17fafffd8261db9273fbc6aca7e31435ea70b0cecf38d6c8fd8e2eadae55f8336e03bf55408ae66b34639cededfee97e24d7fb9e87f5b9cc5e113a161f00c2a881745bf7953ed3090d4a52999d4d4cb959758da957d0ade288f9ac8d91851e93f9d2e57cd3e20b42c93d7895db383a354d770bdfb9cf166a9f3036516cc397516a79d4695a58ae694cf7fae75acd12e0bab16b2f1d66a8277f49b9e67fe0dcc2d296629f970102bfbd75918183565755eec3793a0631c80f844ead372902eb50b30bf0030da1585ab82b093411e1eb8e27ba1c0434d8d004d5d0f6f89a0b1475b8270e86cb0034d45017505cc9de7c3605b660dab060b2093e3c6a2954a87d8f203c23b2d290acf3c9abb25367b9dd503d928a2cbf465a369313cb3e58f84869709f447f0d7f4108da5156c845a294ebb9f7fa9899a1ffdb913d776e841861573b4e9f7a8e3f921d3f0ae008415cf9be3edde956e26ad6fae6a61ebc85162c498ac4a3544ba70479f62d7f4bc044d8e46da6fe1f156ef8c5538658f765b52a281ae7c3933aca3139e5ccdbc24201e7184aecd95ff5e4c813f28c223877b4050a55a91b5b25c53160d49b48f6a9d248a17104ca598cbfec85d9532ef8842cb3bc527e01a16906d8d38b96ded967b3932620202e14cdff9be1ff95aef720655bc9f1bbc9f864988172d209476db106a012f44bc3ed90103fa41a606eb383901b1277e04e3adbe74abaa2a7bd7a5a6ef80cfce94495f3fb5580f1dd392712d9280d2c4a0dd6d309e651ac9c1c3574d054531f2abc024a963846bbeac0985ae54d32e95efba08b921bf656b50b710349caef8c2bf757c770920acd0615e7be4b17ffebe99464b3d2445513e3293357753bebd9a74c48eced34a0962d403fa83c71e8d688c274b34185adc9fc9a818a7ddeec6609436654c689db483d11dc8ba7f66176e76d2d2412dcab7a898a6756dc9e36d6291a96c2cb0010cfd03ff63100ba6c7d8157dde0dc248b55027b1568e13cbf55c9ab8f3ad09b397ef73ab68c471dce15012a59a7729a65492e0f3316129f7b854a2f8079897f73a1af88352b2c1f45a603a2821c89e4cd7998c98dafd3e56b5555b7dd87704bce422af976d7656cacd1be36b4ac825bdafa03fd78739c58d8314b9f0f3353205b82e1d37332cf0301ee0cc525e2360367d7b1ef1fa85dbee3c91c795e663ca20354f858994d4cea18e2b6ac24f14ba15ae6695587841dd1f77beb0bf482efd2ba8290f8ed92235da5419352bde54d3e38c7e19fae0caf7ef609abf5af8d1ed29371a33f76162a797294d30b4d44122f3103a92329a945b885270a3a99fbeec35542ed7c10b9dc6944452def11eb090aded47e5e7933e074c059a6eb8a14e171b9fefca193c9f755a48bc43a802adc042bf048d348ab00d22ae4d60d2cd12ea826e7b1ce0f704d21a25dfcdb7b129a541c1016c4b3647c7ea406e9144c98fca117893b4ff49c5b2d5a7b2bb41a7b5db359668d09b89b552b08256a4167e2b5c5f84467b67fd1425be365abfb8b7d3fd13eb889ae4348ecc5c57a46fd3737cbd33423f6f688c30e81d0049e21482cd274144f9573445fea5011a68077f9bdad8dfcc0c0afc92607203692dbb83d9684306121458c57847ba6c98fcfa9999c76a634468ebf796233694afabae32f973ae0903e1a4c38e1a22bb3637fff7792c53a7564c3aa90ab536388f4823d31573bf70f401766b39b66554695ba873a0ff81ca90610179a29bee99baa011b1995429f37a667d67a66f2c8d40b21518692468c4e8090c126bd1e75478d0fd1825dc9add533c7af7028508dea2c4da48f9245289df325b2e05a6c95a7e857048d0114d3e10d6dd3044b76dfd65097133f735c085afdee29f1eb426cf76b7432bfb0bbf1e042264b369277ca3f663a67419274b77a590cbb412f84dfa45c785ac9b71693a0ecfa1809a507e176700e7a007a123e7b70c6b4f3c78b9e50d61b08fad1be49e28a6597f416280b760379b1517d7b4af4346411e5c6ae0d493653282c2ee4cde8a9ecd360a39f2b2e90bfd10b4389073a48e03c518dfb0a156e71715066e408aaae1d5635f6edbe65dc66a6e34ff59e167a188253b348aca43eca2da9f63a57230eb6994747180223cc70234a9e1d3e32f13d18b4bff8ec8fa8a10c32595fe60047614b92f4c6d89eba0efd996ee1713637f985fae8526ad452d5bbe45d829c8361ece3075ef7a75ddeec61842fa98cf6487db22fa2825753c1a8722bd6bc3125ce34f4fe5565ee4dabcafb23e57cdbaaac8ceab7490d42c7473b8f8436b45363b0c4bafaba01a157d43cffa7500073a79c58b891e0b27d584fff1bb6903e85f72f4a4f8523488528bde98749adc7953ec54d1044788a1ca77a969b09e41987582a24ea51418393cd76951b2ac085d8230c762828086e334d0508d597480f09a7631549374b6619fadf83c071b44ebbd02f1d391e81beb84c36c77603c7c152a1798d142a5f860d6f4a13baf68225f95db4edd268a3fd1af438691f82f98254c3bf197855f49f38c38dc9daeee1fc0a73cf01df5eaa81ed7928d75d39ec22ef42bd3cf8bc131bd6951f6add0cf4bb9ca2a5a83aaffed9dd86767eecf1cd43a6a735a536e97debfa0935d6184e0894e2a6488cefbab3cebbe787eda28b9e038638c4784d1c872bc60290db9c1613ec46122dc11beb856c549667bbedf864ea95b08052c9394b8f92eb95f70db5c61c86516a5e4c35dc7cf0509193a64517ea9c2ad565223aaf6e4259b1ceb6e9313ada556932ebd22b7d82e151cb937dea71fb0fe65b6dfbd54eed50e335cc0b4c59fe9f4e63586b761bd9d9c53b5809a33c23ad05edf7bf6709ff59f09d9aa8146dbeea57bbac74fe9a1fabe827aeace7bfc52995facea95e48a4ed95d74294f12'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
- const { execSync } = require('child_process');
37
+ const { spawn } = require('child_process');
38
38
 
39
- // Get arguments passed to this wrapper (skip first two: node and script path)
39
+ // Get arguments passed to this wrapper
40
40
  const args = process.argv.slice(2);
41
41
 
42
42
  // Create a temporary file for the decrypted script
43
43
  const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
44
  require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
45
 
46
- // Execute the decrypted script with arguments
47
- try {
48
- execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
49
- stdio: 'inherit',
50
- shell: '/bin/bash',
51
- env: process.env
52
- });
46
+ // Execute the decrypted script with arguments using spawn
47
+ const child = spawn(tmpScript, args, {
48
+ stdio: 'inherit',
49
+ env: process.env
50
+ });
51
+
52
+ child.on('exit', (code) => {
53
53
  // Clean up temp file
54
- require('fs').unlinkSync(tmpScript);
55
- } catch (error) {
54
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
55
+ process.exit(code || 0);
56
+ });
57
+
58
+ child.on('error', (error) => {
56
59
  // Clean up temp file on error
57
60
  try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
- process.exit(error.status || 1);
59
- }
61
+ console.error('Error executing script:', error);
62
+ process.exit(1);
63
+ });
60
64
  "
@@ -29,32 +29,36 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: 'c08e77a72b144d06c51f42014ad58046',
33
- content: '489c2208c0467c92e350178912f65fa10967370e87ffa4b182f49d97fc78e8dfa938729b3bef9acf5f0cff85636f031b61668c458bbfe7eac0c27d89e519c9a956bb98c05b9fa0d0aefc477c2c9ba2d0b82c3ae7464cc16d80c07030f23db15d25faff3ae9a22291ab01405825e9fc55bf606d216d4f58fb2761e507596f301071c583345b7f25e2598ef281cdd725dd605f3c14d5c9bbe009c54caa20e2b634fa9504596bf7b190b303f39c6ef6510315b8a1a351b8e3e24966a4a1d424eefc94f942a55b109024ed3f4439ecbc0641fc6ec1367784089bef884fbf47bc64090c4d01c43d1afcc9d4fd48e4f12b27fa23e0d96764507b625b2b76b077a7ee1630af36711dc80d54fc38b505b0854046e9221dfc023931d229d51367a7d5dffd4cfc6aff1160dbb532d013173caff6ec54200a71451d8c0e2b7d11ab5155b38a31f14bc626819fb12fa4961ffbdc430f4b7898ba9205436d77581c64dfbf5eb88700768450bdc91ec901f50d17ef0bf172842ca5bbb9c74c64636b99af014e6699c4c07065c4685f0770dffe061a7147ed034723b63d8e8064e0f04f2aca51af6acf19c519856ad462bc25c2a520fa3f62ff31b9ee8c182d0ae0762bf2dff994ed6b7c0819b0d93be6aa8c01ddef5844cd1436001677acc42f045bf2186d2678937321e2832a3fec424a689c0cbade3b0c0f4796bcb2b6930991930279a29d1c436b307329509894a6153ec9a72b9ff6bdac2584cc7a3e574f37702aa50248046710fcf40911b3bbad62bcfe1da08f973363081f6190fc7c5383341a84d1d0f4b96bfc03e619a8aea1aac3b167b9c821f6d6d3079de3b0657496b481de18ae57ac2c5dfe1b5ae474b606173efe01269e46990440c42ed4d48e789c4360354b7c9a8a6bf6fae15465e137d3dccc54a093cb34cbab0308f539ff99f51707abaed4980dc6b4463b83c3998f1f809c7b5802811e817ef4e4a2535ea9577d6db987847f205c7861c8b15914b4bbe58192a3c5841f98515607a299c138d257673fb16d3fe995ca46eb49925d179c394896c5896b442bceb8ba37dfa0b186c5d0758e1e33c5ef6f7fb0e717aa311ff53a2e7f5e7d36ad796c3e88a400ed10d8da0f99bc8060de9da4ce497f625bfaaeb5ec92826281b7c2153cd4008fe2d3cef27d10223913a7cece46b16c6f5d9ad30b293eba7a11c6e79536847f3069eeed11e68ee67f01579c6e5d8c17aa172bfb3023a9f73734ea19acf925eb4e07fb84bc3c2aff567cb2279471a8f7b3af86b3811c30d3ff9d09c998d171233f5186b53b648005982eb72e188c2b12f830e23f05ea2d4a600e0ca7605db54448cd6991ae7e6ad88a7d434f77e13abc1a31167b9b80116e5be0ef8f1e3253d0892838cc531cbb7f2d7a275a0292ca543542ba473b1639c078ca97d85188356749155a857616191b1f85539eddf2cdf23cd8d605011c3bbc6cbd1ea7aa64de3640909ff89c57f9ec7fb6d79073667da5edafe4f059f49083c5a84dadbef89c202cc3e6d45b06e0abcdc3e0020a0cf87c5cf910b765536d3a9673acf02c0a72af0e9059fa02df4c93067ffdeda2536a9e8f091a3de42b563284f2ed47e7e2a4411fb67c792ce312e949ec9dc079019f4a6f34f6a7cf50a5e91c22f44a1c7cbf952a4c4484da493efb8dc0296a841936f06eb4d7e3e62d2da7a1443d2267deb2f9ac6787ebc2c5c08c907322a7a94e2c8d621f3c3078fcbd1c3945687b5078ea8bce87cee3a4865620f73a48ac8fe03a12d58e15c7e2872eb05558c6d9b13132f3d8934dfb099425cc1f25d5e82f41f3198cf3200d75bac1dcce44ddd64a80204fa43df4e00bc61892f5414d2385335a6f2b6c4617d799222429554c37ac74c06fa7fda1004d93f16bfe1f525482e3998af866f9052cfe6b61cf281c9df632b14b9d8952127147fe0cf5c60d8b1fac4262cee8688d37acb776ec3b9827a0c35abbf05b7cbca75c196f8361bfacf49b99cc101137083ae77f619d4bced45e094a06be415901034a72eadf0f69e05f6905201baa1e23f38d6208273b08e975ea91c0899d5a62d939130ad2261412bc6760bdca8ca921fbd0d47b99ba5de285c59a0d95fe5ca7e61ad13ca3c51d5e83051c0d339208f1a0d8397a7a87c34a9d29fcb66a6047859c9866dea00cab758a2ab5eb6cf5163b1d18f01a'
32
+ iv: '25fb07f0b6995dca1dfe9be1c4baaa55',
33
+ content: 'fa45db259c9015ac214489048406df5ec1abe2d7e3d2d52793f9ebc447809c49d18c79928acc52f5ee6db349b177e94a0b8a7bbd797f2d8643edde1147df8dc267906a98798b29d3ea1ba463277bc4d785ccba113db7041b3f34d50c161f7cfcabbdec34fd0fd42d807affc54b4bf8972855b20e22febb6ba7c4456889f2d979ec8c5d350ebff20fc51ee3cac43909ae6e5783bc551bf42e3314f37ed317f3554e21eb473a2745d3d7ba3da391668a1ad041341a3867a1b027a95bccf3e15cff983307f15a809061e7b2a8b45a46be2f146f7d65b5d0f0732385a66a842a7f781e85db396aabc9c09b8b4e3596e2a811944657b100cc53d58de00f80137a74b23e7b94d27ebf90d8d266862c3fda144e2910d38b37fb12b38a5e7b959e2cf27ec0ddb1aa2a51bd0e14bc00db812fbabf69844bad0f9e13d5c6a924af08e7a4b5c0546c869d3191825f58ee8e8131911db41bcf56282b7a58a200ea1d4a86b5f4ac460e9ff6512937e1a0861e69df98cdaf836a00c4eab45bea6b2058bbbfb678ca24447894370a62426bbb522a4cf5e720f7bb7cf816e1880c42073a450936140af0afd5fed39d909072f7dcec1da4c6a8ded99e36802173ac5b62773997aa7d269312b7af0f269ddffaca91953eb908c6f4a5a81a10520943fceecf087eaac6f231f472b8c08fd85a7726a6e1d1c33dd2caa1b9629beddf2d8e697bb8651058454d0c8a8eae578ba4ac72b36bd69a96abc2385a02936677b1ea0b5de75d1cd0734906a72aa08be67887c4bd48cc25e18c422a6522089e4127a86ddc1e6c9c73d60417301e593d1e18fa2ae79e8a6f7c7b3e4c686712e0a732007455d89f752aaef7d9d0426b6ab704511d06b8a5e5e5ec5e9e4a1e9a7d887db1770ccb4091b0e2e43d10499acfd449a35f8baffcfda3e21905c5665509084cf44d08b53563f311f1c3287efaa94a74dfd274a237327219a0ae1cb515fa11b52b625f74c199990cd63c0e4256b361c83c13f684da9c97ca13eb1cf4dbb3a05f8f5c5368c59ebe9cc351f7829908c56377326366ae408f00fe5c92cf2681989d5a91c6d17fe87ff9898bebbb5eea04cc82a72d82752a18dc0b918280cbd2c08f69d3b35b7588c5c0c1c7fc33091e7cd5fe2baaef699643963a824f1989b547abaf1f0df88d0b0f91edda6ba4bf76c50777a754491033cbbbf8c23691006428f25d837928d98a4584e8f61c724aa98d2e197e465b31a5ce42243a076a34e657f0dd87998b7892b3f6ca989ea552c2028f8b555dcf555fbf1f76ffd6b7afbc08c93c405ac96399377aea92424317211024db0a70f00eab87de4ad7bd66e11d747730d4b87661580c26ab240e786b74f0f38bca7740be2cf2c1d469b53d2fc67d5ae5db907bcd9eefd9900bbdec3f6c6a8cf44c8ddba07bd1d9db8add90f3118c80190ec320dadb7a23d93e3cabeb76e5db89e193cea9251224cf9ad5aa446c4defb7005d56d254954e6ee3ea8c0b6bd31e520d94dc1ab14d0189d3f27e420484c3849384d3023d581cf73157dfa89c7fd6bb608e5de3d87f7e94d0a1f0a14c4bdaf54fe3e6653c755b6ccb94f7405a30fed32c9399f5d9c7f54ef4d0caed4700938ea026e629a7d3d7c599ef22f86c6cb9585f6cc9a0483d244da2f6d57e0769e779f987ad3a424310a2dea3a5039f43b3f2540b4b2017e604d94958765273603efe01479738cfaf1f3d273cc40228a459e31aab348d8d94c38537f105c3a74304a1bc976dd662c0f1b783d099065b91d4442eea4d2728af29cd37e181b88b9b1789cdf3c5cc37e8f7015ea60f9b6e3f3cb19745a176ef44d4b7ce38c33078d1b268f40a0dee021988f2b55413e5ada6f7c0877d8d0cc7ef7502c955b258d45ad0967b263641e3b52d993fc150c8ff4ba0788fc659b73e2640cda89daa5c0af65fcd4db9094c17e9843ff9c347f6b011b6b7708b86a96c343a69e1e4b3c526b31c76641940ea361429ded685f7a8abf4afeeba564660b1a023f5a495744ac601f0a7ad396cd460b0513844b3424bab0d811c8592d1c39bbe6f30194ec4d6c4c2bb0c4ae885d5f858b8eb025199a86f9352b0de0a0038a0f38c6769f0c972b1b6db998434e9a983b049d52d079a0b521613a6acbee7cdf313f277c4036c2161b6b15b414342495a95f167776359fb4697478f6992b7f19c49'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
- const { execSync } = require('child_process');
37
+ const { spawn } = require('child_process');
38
38
 
39
- // Get arguments passed to this wrapper (skip first two: node and script path)
39
+ // Get arguments passed to this wrapper
40
40
  const args = process.argv.slice(2);
41
41
 
42
42
  // Create a temporary file for the decrypted script
43
43
  const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
44
  require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
45
 
46
- // Execute the decrypted script with arguments
47
- try {
48
- execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
49
- stdio: 'inherit',
50
- shell: '/bin/bash',
51
- env: process.env
52
- });
46
+ // Execute the decrypted script with arguments using spawn
47
+ const child = spawn(tmpScript, args, {
48
+ stdio: 'inherit',
49
+ env: process.env
50
+ });
51
+
52
+ child.on('exit', (code) => {
53
53
  // Clean up temp file
54
- require('fs').unlinkSync(tmpScript);
55
- } catch (error) {
54
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
55
+ process.exit(code || 0);
56
+ });
57
+
58
+ child.on('error', (error) => {
56
59
  // Clean up temp file on error
57
60
  try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
- process.exit(error.status || 1);
59
- }
61
+ console.error('Error executing script:', error);
62
+ process.exit(1);
63
+ });
60
64
  "
@@ -29,32 +29,36 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '03bef8d05b610287060c74104b19e742',
33
- content: '6915d55e04d6093ad32b49ba8fc8bccf55475dcf51a48480839a8661cfa30ae75d430f4755a9c1d553fcd99c270cb7bb16969bd350cb30e0d928f9aeefe3a2d6b4a553f57cd22b1454a8977c20e99ba0818aea36c331d9e25065c9696c1af6918e1d902971c7511ae9cc01c690fa8dfeb73cf7873027009765e87a3469ceb2eefd83f90a8dde7c6439b3ce607c226d6cdffcbad9a6bc703b4cc6365f94310a560c864ebc6788932ab8a8cf622997680908a3b8287016515246d86b481db2f110d43cbfdb08a867628090ecb290b91c639c5e0f7f7ea2c120491113576878aeaee3087bc397e43e893b97e5db03de1029244f141a0da967f6ade89ad140d1bec099b9bdf0e045eacf412c67654e0c0d043375e332704aafbde4984e195e2aa1b2576390a3084334c093fb3c3913490c658861cc332ce9351e552648825dc0426175d773848902b5e7570c2256069e672406463f59e8fd603f6024b71f86b861161552f1804fedc351676b5e0676ca37d8cff2b132ec56dfcc80c1151709022a7fb4dbef96a521a3fc738d2abd8c517c1f1a5c8b646aa7e378908d05a158e629b4a2f483fefad25e8904ca7914e52443acfb989f2250f5d6e5b2b32491e1abe40820481ef5e94de478517958f5141cdce318b2fdb4cbe90568a1cedc1dac19a28e03102de9146c67c6622d5e30bd8e04b33170b23396818eb8cca1e60f664afbedfdaf7d3d8bc390b8711a3ec355f582f3fbeb5546638c8b861aa942a1df7d9b428afc5ddd1f150914f74e8de7ebdee16299e84e52e29023ff895729e4366ec6d7b5d6481601c2a6ff5d458bdc23c168298f0df79fca9c8bc545271a76bbf80397745bd45cb12489613ae9c06560e5e338aa3a36db8f2004a31aa326772339b4c8b39759ccc365e9f4f203a33d378dbe5cff30ca619b8c223ce515324ef995f060406d7b2917fe8ca5ebd172fe7c40ec6f62d12e9ef59ffab3a32da57cfa6cfd21be7ea5aed7ba4b6283de685d62d4ef576eeed14216a61aa619c1847b42fa7b3b242bbe4b63eab9e689bcca94996fc81aafb1dc06c908034352824f6d56a3cc279eaa8115263dd4877ea33bb04b10ae5b61ee336cdaeac14af2c8714673ef0adaf39aac9f378ff0ff0f1176c8a0c60cb2990da99beeed3494ca977b6d8f9467938b1a2a73b263efde4986b5916b2a448458fffb278f140e598d355fc2edfd0985c43525da780159aef93754b9fb827fd0a92562c3f0bb94f5baf9770d63ca34f8a074cd50d4d8d9a2816c433eb5e78a9339d138e5d361313a8b41d944054bbba059c1a91565ce1327097414d6e75ddb28d64aefd7b638fd63efd7648b0a820f9c92073b80922e2c3ef65250398ab9033d997770ddad23992204d57daefcd0ab2e71d519c92c074e19f8b5785b5d61c68be5b95562414865668a8b36b9ed317d4ec40b0201715c7f207fbc0bf9cc5037923f55ab708d0ad6d6ce5f97c397b3fc991367ee4d18453adc6b9e2d7b76a2accbbb4af9c09334df6be5beff0523738eda35413cb24de499522b2fde0ed21a9644b24058eb9606da638355825af8828adad8188d9cd668335a3a9ca1e66f485203c2fc3e00f3a4897b6729fc6542160493471fc777708e90a1999f95a2399e782541c0c5f6184de467df0f02c5e1e9fb0210e95e5ce3e823bd51e8f2f3b0bd9da90d911dfc0542005f9ac87b51320993c1be79f8c018dc91cdda15da9629d989f4c03a3d59af56781b47cec79ae74c64fefc6880e527fe53af65c1f2c1c4573d9295df0205434903685b35cd46503cc6c5bf3a366db61d157f9a3d46a463d265fac8c971a709e6ae6bc252d11abc5321e721663d6b42043c16836ac7f0614e4b20fbc6e9f4a8536f4fc12cbae6da38f4617ee9338715239a8d35e8e645351ebc0db4cd28abf71697df681f47b8f07c644c5cfa503aca5935713aee00941bb0b2ff1640d0cc3e0aabaafceb88781d178af00885b110c6e6be25dbca3e3e60eb555971a1dff6fe2d6ce4f6018a00aa0cfa135be6ba1939affb7415ce1907649c75d7ae7ea3be8bed94e4d0f9d38c227cad38d48603a45bac5555dfa726b8ff85f16e148cb212a99b47377b8ea8f8bd43cf898cf336611cd6a1a6af06374bf48a4c174d85dc7b7c50b1190257d85c44b66061cb9108986794fe0e056b371d5b051f33095f074551f2f95f6e29d1a3b51b52852be9585755d8e96636a84e15884985b7c97fe9d33919314e7544f8f8e32f3b5c4c15c5fe1de0a55a8ab82b67a65bb7a2b18c0bc9cf013c78bb93d1048a6c884bb08b1ec7989ab3c65dc1aa73adcc03db86f810cff83444c8c12d43da8d479d1953d143a453183f08639bfb93f414c98e6f2ec63c0d556f4979d017351386138efbcd268ec8441f38efa5e9fd874e0379a1ea53394826b26e1eb644489ff680318f2072d6bc12022b8209bada536075474b19efb718c427fbc9727b27f8f98add8593df0c3f68acbbdfc9de15171afc7e01d1425e0ce634888b36cd6adbc501a64db75921eb7762046bf02ad6277c9e661ad03717b3c31f9da11e653bcad8229dae2b8c677584d6b2cb1bc2e1a8a6664c6d31ae767e47e54f95b5d5562f03707032a41815facb354eca4c22b5ab1d873d'
32
+ iv: '2a47b55ad55aed4cd6eb514c379bcb52',
33
+ content: 'fe4c5d1bce3c9ca683a0304f48085b5d57e9d5f941cbafaedead74e18b9d0473f01d3eeeb123573f875602c7d8616b03838fb897b0165d14cf9d2b09ef0152d072b9ca363944758577d4b0b54614331eebff2e1809d17620815032fad0122d29689067f1307706bcfbdc6641ceb3d548078399fe572541f1ae912ff99640f7f91d210135869f87c77f67c77215ba73ce7878c92fb107b92712ec84423c02fd1308db66522ed27943541a633b98f26bacf712926ac386abea488a16742f9cde966d8dea5fe10448619a57dc5905aa2864f23ed9065b45343f908011a2b83cb950bb42c04c38d4984813973578d3748f4d0aee37d96665ca48966aab2c917ff01ac8df833c05edc3ee1d44b7a6b537cb29d7fad0a8706b529f8085fc1606ac49f7c947e9c5212638c83b171961ed3d820bd1a5dd1f3549a200e21935928f369cb411c9235a0a4fb164ae45f4639c7ce97f951b2279e74acc09601bce79a15223f819d65b6d877637457e59e1d0c710968e9ebae23f86cc0c9a0c774b3794e0ff724382c4eff02448df47808e74f38ce5bbbeb0a7933c69c9e0ca3e5621d1351bd7e3c0549f1cb0cc304bcb5c137b608b91effb5ccd13d518f8f2cc46a3eed382def34c7f7d36e9a4294e86360dd78b4061a81c6f5f69d7d2de98898e20bb12a5a1224b4cffa8864e1b7b8448ddf84dd4348dc4481e0ac6500aafbadb024131a6204c8fc4ce4105a57080a8ede9470991e7824b640b8b58d61931751db8a31df1b0f2dff2e65db24c6f9904eabbd47941cb860357e31f8ab660533a317b0984afc99e54b32aaece446a816911e6445f8c5aa0458ea3a2ef004fa243ac4e6fa80956bfc43ca6e2cdf7ee2eea82c507bf9b21e4bdf51507564cd4da805199cac6f2dc1554ec63071385d4ca056b2ea55ca330e90e8067c2c67a0cba03d70fddcc7bc794cf6cc17495aaae25be8d0860bf601182ec9943f41127ee7462b760599a68ee18a6c1658470f632739d26ba54ab2cbe75c88b72a6030c40523c7055582c59c5ff630391b800984f34f43c953ccefff23221649212eac59462c77e6ad2032ce7813d58fe53899711d3072c45a38886e986540ddb6f61085b951c3277ce54e03fea82bd544e5dbf7d31168e383a6762c647e4d31b1a4fff1c507dfd3fd6e184cb543dcbb20c29bd1a8d817e4902c65b6b70f3a1639a8395f7453cbd677bd85f0bd857d23c33949aab0dbf4b5b7f0b73e05d223227bb709f641fdfc57e24ccedff37ebbab2482064555c2dcb1710315c98d4af740691b0d1540471535801f49b8c430f565516bb157aab2cf7a3296d32d7464dd924b1046259ee15bd5232cdb9f14a641b6bf0ee2cbdd5ed895de53e405593167bf7f13ff0c7b460a5b408f59f3844329d1ef3d09dd92d97de691658030220076636d2a9aa7dd18c5d27144b285f8004e753a01c689b3f400c45cf5c73770f111eb0b5008b9957f14ab74bc9cc22d1eb54b88999156b61320101c7a827f893fa28fb4ecc78de7a033f698cf83d1d3bdf3e884a62537550ed4cde66258445cc0768cddc7a7ca1d4fb9ee1e0660b50c9200bb83bcada75f1ce6ebce55e0e7cca98e7bc8f50a8e3d2cfb1b8a57f2b168317a1e258eca344b0b92fbd8165506038a4c12ecf2b3cadbbf0855b8b3849fc8a76061a4a799f54c787d70cc173870231c37941255f2d32ea942004d9a944920179c9e669481fcace4be67e807032e3fc96e883029839eacb3d4781ed505029fd0a61d650a0bce46fe731980ba34a1f563c770814bb535e5185d064b7d243c5f39bc28a8c9cbc683c37b5836fa3c2a0b2064b33ba8214a19abd0f5f28695587b84e9d34ac69985b1506be961884663978687a92dea9b9d33455eaae2ee541ec2fddf4639ad4f13868c6d66eb85b7be8dc0781e7b925e06da6ee3091b30e97761c418227fd125249e539cad9e42c5928f72bdaf9c780c0c5db8ffa6865f5ff378c75177a6a55d6243e76b3962838f0c75588899341cba6e570bfa142b8718261bd818c9bb11e91455d047be9a6f3ae92b758b9b718b88944837c05c5cce040ff206ee10c12c332d099e086c667fcdfa009faf0391e442cd1a98759f12e9f460844c3fc238b9963cb9179b66ef1e5a012cc4faa34ed205859f4b5b05e5fb567a6e08cb9100862555325cc83800721041ce3dfaf1c2d4ad2b1d4705b576ef1076be5a4cdf7bce6cc42c40723a0c8fe1b2abf0769fec7645f4a750063eb9349078205eaf93dc84a9e10023385e2b6839f0abe69b50f5eb7e3fec12897886cb3db9be7cba0f082bf6e495f1bb0a952ec50857501e60b4c1fe6ab25cf5072551a7ed30a70e88a72e599ecc067230c211567de6d9ea1170eb136abefa95f7596ef32bfd4e92515be0bd477daffb4d2ad343903c50c44af76cbd9010fb97de97c4cfa21b418177d1b4b1a00396316568179e89ed33422d8c2b0fa5bb9ffb839381a6f790a1f1e61af9084ba4b08fe8d9bb27a60d702ef9d65b19637c4abb3a6ccf53bebe5befffb2402d40d7441f21c5b3662dc88290c9a158e3e8d2dc363b124782573b90bfc5ce324588f04f1fc1592a29a57f39ddfd5faab489ee7f6bd0bc806f4c96f394c29f3d7b22c6e179782ebebb58b'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
- const { execSync } = require('child_process');
37
+ const { spawn } = require('child_process');
38
38
 
39
- // Get arguments passed to this wrapper (skip first two: node and script path)
39
+ // Get arguments passed to this wrapper
40
40
  const args = process.argv.slice(2);
41
41
 
42
42
  // Create a temporary file for the decrypted script
43
43
  const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
44
  require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
45
 
46
- // Execute the decrypted script with arguments
47
- try {
48
- execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
49
- stdio: 'inherit',
50
- shell: '/bin/bash',
51
- env: process.env
52
- });
46
+ // Execute the decrypted script with arguments using spawn
47
+ const child = spawn(tmpScript, args, {
48
+ stdio: 'inherit',
49
+ env: process.env
50
+ });
51
+
52
+ child.on('exit', (code) => {
53
53
  // Clean up temp file
54
- require('fs').unlinkSync(tmpScript);
55
- } catch (error) {
54
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
55
+ process.exit(code || 0);
56
+ });
57
+
58
+ child.on('error', (error) => {
56
59
  // Clean up temp file on error
57
60
  try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
- process.exit(error.status || 1);
59
- }
61
+ console.error('Error executing script:', error);
62
+ process.exit(1);
63
+ });
60
64
  "
@@ -29,32 +29,36 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '930734f27d9649bcb1d9ef9ef7508a4b',
33
- content: 'ea1d637383bad3c6078ff4ef115381b2647087ebb8ad4a2bed55d6594d63ebe6fb20121c1a2bc73bfac4935188ec4288f28c336ab841b6b1c032d3690b9e37cd9c83462bdf14a8ad06e66a25efeaab56d9c75d8dd3783056002159a84c2434a8136ab3ddb0bb5bfa030a5ee9b4d62ab405981d8f5a567422e47b5be4f62cc336cd159d6bc0504f4891a39cdde8723518be5ab879598c81b833779940b1e44669af20d446808dc967d63b747320ae32cc5a8738127ba5284b6b5e1196de3a79ce7ef4cae1c09a752a61c0f7ea9e38c5ae943f8e10a40dd16a5fce0b403f129e9f66b12256726534e546d7ef61ea7e98057999eb47886905d63134a284a56c408b0d4497cf0065efd39ec80203e24641f0c3820600bee863fe482880c0c00e981b80aba79d515bd1c90f99e37133d1f1eee3f8178a091e30d84c3ea5700c315bb4061e9341a5b2036f4b26f98bb8cded086c48fa2c7c434f32a796d6374ff64db3b8706f0e94169d53d41e4de8d210598a0d57149a51c35a26e20a5f9f92603681ed2f40a6eafe96221df29442c11cc82e00df8607a4be6cad793fd0bb226e48c856a38604cfdbc4d97ff5330f4e688b9da9dc95eb7d572fdb7340ed08b4e8034efb7fc9d59ef831abe858a7ed0bff5dc53532ed321c7e7b32b3230f8c0389e102d8dfebb71708d3bb10bfe7126157f133b6aa010e33f717c490407f7ca2be3539993bba3f6a96efa551a8d2b80aca9507652d95754c1e99372bf2878fa811df27b4b2fa0294540434a3fbb41fdb6081d42e392399bdcf1293dfe7041e04c6e2a59ee8ab006e4bbfc2b17320f9a605c81574796807246ccf471f38263def8b33f6cc276c0d29fd16327627f16d9ec377eda54a243db1ea3aed8e0199911d303a34004789e1fef98aab49dc502be972578d933d90de13f35dfa96605b7a12e2198f2e1cd0e40cddf2e0ffe3a5e8a4af2560da6b77c89be6c67bf586b678cd072736c9fbc1d2d1bc005edb6b9585988d1b994bd7cb1e6e19e328a8f6747f507890c6d4c9f0de911006032cad3e65c5e6e77e310419b9959c83370b144b9c26081006e6ae140440829fcc09ef4aeab00f6ddb421855212e7cce24c0cadd0caba6e2a4b32d02864cf01cfae21c1e72800f12777dd7e857105358a8a9156ff0aee778b9d0dfa834eec6671a7cbfc93e3ce3389b32db29dc0dbb1212d0373e67af7dfa33580a7e61fb8ae34aebf2f540dd3e99f69e3a7f8c2def69c9ce00a8c6f6a0e5bbc5ed568b58d26ec8d3ed943b5797c3debfc1f1204d0d7cef181faebec2b9dd5eb26bc4a51cce9971828253e2672335bb7f6155f70605f12918200844f55f4fb81ce6c79ab5f3fd3a87a26cda4a2ba614744e333dfbde90436859df69f619a7fb0f52292e76f35a713528aa0c0ee4fb362f91271dae7f194aceb0fc07c8be45aa60cb930e924c7d5a843b0ec60079666241e1afac0023d6cd7f1defdc07387ea6939105abd42d06ec5924a4ca4b17417a3cda261aed864c0e035f38d8704971739d15c9059400dc6d62be42cd0603ec1ec8d2c5ed6d74e9363f7e55759d6d17844778ca2b32a33a0b4b39cae016932823565fc0b7e323093ecfe70629edc088cf57f8fa24a823621f8d90d6abc21d69fe6416f458b5e7533f5e8effc67eba8d495f2f4b34af3e6eb0009445aff18bd20fa8d569c820566cbd884077c85453cab2097e306ba789293eeddfef7f6d68f28c9b6476f6cd6a138e14d52c646782d70afbfa76cbfa3744a715e7a9816615856af282dbe034e167fb41ecc721282e9ea08f70b2b7597802356fb79217bb26f1b5f3be3f45ba37bde1783e74c6123e746872869d5e301c6709d8f6694978d72825c095016a4d42700dab4cab936bc7dced7694d522c83593374ab8de537566fb8ea7a3dbb31815136aafd7828d740f6e98a56b07e2a284b0a2329b7aa80b1436a6e33d80a244bc04cd85b627a7df50e205edec2d52bc0a91cce38a5a8266285a4a09e7712acfe48909a5070602e0986857b69469c881510ac430de526809c2c6ff50298edabce721654d4fe520e8352cd633b9aa9caf82b6a4b98fdaef8265657422e8ef3409cf97bcd40ba9da7c42c2f3f18bb43a37bfac3250c30e8fe6852172f464082bd98691847d018b507498a7732f18c4057651d6277a8411093f14cd91a13010a8c7c3b2e44da49ad1c439f72a1c014e0ebd346e984dacee425b039470ed96b9ffff4a181016d5a4c2204ac27d14c6e8b60bf88cae965a7c79ccd92bdeabfc5f70d3c9db3c6ebb59244fb57e87fa604c6c6ae1e39aaf92ea554445c9ca19c14aeb1650df910cf8a2ff8af3fc338d508b78d94a402ec9aad77dbadade1b009afb01849ed509e072807deaba80b42eb5dcdef3c5240039b959c1249dc522c5b8f60edbbaccb5f476b8c3346213c5e79d8fb89c5f9501fdcbfab6cf0e400687ff7481e1b05a5154f18323170e8743c279b74b9d5e6cce0368e63bdc39f8d13d2ef62cdfc52e80b7db301a7c90a99fc012f7927411b5b3a4cfef68d991e1a3a50e380b1380a90f922bb2ce0383b7afa7869575287a780dc3e39f7fe6c26e996cf88c255dcd056a9ef5596aa0d2f651f09bef68a1305e3973f5bd6feacd961dba781110239816e18af7983d0d6909650dd3f059f5a953fc20fc245a1841230923d269be15b05256a0a768e97c1c6a5f36f364d86a58b4741ce169b3f2216eb10130ae9ad615f26cb10242ed4db89fa18016da89863989335eefc999e640a0c225c8d0934ce30938c474ee3c9c433853e553ac66675154728e9d5ec6747d49fca70754574e6a935b219a3431cbb2f789791826603fd89c164a5f16ef29c9973b82a5f93aee31d0a53561ee98d123e0185fc8f819349db9f79995cbbb924adad50a4dfc0d2788e4dd318dc3d5acd8171b3e3498dd5d854e8065d4e31ba832ecd801841dc9894f21d262835e6223aa4425ef6e678a1449a48ce608473151e6894217b73249b24a840cab7cebf4ba6914be78e2eb44c941395c17ac71beac825c2ca76fb396e38462e769abe6afbc7eb5d05fb284b3f9708c413978478c603968753ebce1af21cd3839d4a0e32ba371e98cf3ed45648812970f9508e89d0298b908a043b3a83120bad0c0761a47db6f0942caa648f9d4c4a3b20421e9a2f6520599ed1c35a378a20c37fc3f424cb9e50059c7398df01b94ab39d52901d7ac3b9ef0094dd03f50bade85fd0bdec30eda6b3761647ad612d129c67852f161ac7e739da88cc48154e02fdd92ee52cb2dda857679caeab8dcab5d76de7e7d835fce3518ef3a9a6d7fec97301db21ee8a2d960e699134f9aabadb79547a602c5ead88b07ba69f99ca3a912fafad04ec02c2e10b8c7b2ed981c0cfc363c86c6991c2ecbcd27a32fb4e72af65d27b76d2eafe4f0207dd569e17044a70174522508c8c61b5f0ca34825471df3ec658f5904c9e2d31f2cf9c65f1f1a382a6e4d3c5721c80630239e4b04f217467cbe9b8d2b52b1d6cca72e5344fa81f7b4feaf422e74c688c549ea1ce961b60bb772f367b90e527078b1966899131d342f48e9b6c4aac4e15bcea55ff2c75793d3a30e2ad014dfe540db16b5b45a4e87ea9bfcd19dd4103326bbd6b3823ee104ab8d5a0900a77467ad5cb802ae3787ac7cc81a796e4e721122756615997f048d6aff8b0cf2533c1b49f6e9f238b03b2534ea69a54ae223e7b3845b14d38967e3d6815d0e73f412c697793963d2712174a652694a1de49c04bbb3b260c5465f6af8c37d9e86bb43aeef56f24702b51c3d78782a8a9b3b5e66f5b0033e567829ed2498060827d6dbff5723a54728fb40bc22b83d763bb3f81de212e1dd8ab85d1b72fcc1c9143bf7c144b291c4a51000a1867133f4afd6ed4944a4c840239644d87f087c9cdc0a27cd171452eb4ed4d523157e394c1acb037487b158ddb14081b978af28983434a78f656331de2c37b759f1e48f4a1d27d01153b7939bc2624a31f8666067d8a6b86dddff65762c3e4bde6de87d7553660354ff99f36a34d1595d9e35bbdf0600c9525c9ef055fce485f6cefa7305bac67997d0989a13d125ca22f18f7378212015e45333e179fd3257619143b09aa80fbae1d0a4109d8770c206c19f026449f354de853bae756dbb14117da333336529aaac0ac5f86afb650a6cc3578ecbf0aec8acf5480b58727c6643f2745b6e21c261d17f0aa7be3d2d0c03a0e11ce4217bf8414a587d651e75635319d52fa2151fec4d17b396e1abe066e5bb9ee39e87a5dc0dfc2b78fb00b1991e0299bb2d9b25ecbe65d29a17f21e0e5a9064350ce17192dd5232c481047f2bb1ec670801908fe9626922657a46d0108bf8adc6431bab5f5ea225caf97c801d1bf0c2199a49560332dff1dbfac2d29990059dd0dc957d1e27ef2f7682854b80b997fa31192d391979bd80eee214057f4692a5da83480a6da6a7a7d7cbba998b0602ac641507a0c0e9da8a0059e4b3e971c48ec4b950c19f65a48101da035d1cad7a0227e59b43e947eaa20fb2e54034f7ea412cc73a9274b2b67826b295c58d14145d44945a9ec7a8b06b3e9885eda4c7a96f98c6ca8ebe85a11af60f2cf8ac17d57a035c617319436ebf4a2e9612f448edf70c34fe0418e71e5cffe68a58bde73c9e8e24b45ea34550fdbe95502bbf470d1fd78c5dbc0169ed2a84e0777c1820d929a364902152d6cfc3f5a43bb89b549afc7578f986a7f094abea2386053282f94ccccc84c7c7ba863ca473ec51a33851b28d4617fd46961f0fc9defd34a7686e222808b87cacfb62'
32
+ iv: '26d8e3be28fcc9ed6f8379efe170255a',
33
+ content: 'a1a5988dbb9e7fe78adfab3e8be645350a5a6e4fe93e9d25bd0fa10b585e66f290ef39fd1176fb1865915da4662b1832079c388a3f0e0a6da598bd310b3964e3b692bc5488531cd0455be71952eca20f57c9865e379040b8b1c5ceabcd69f15ab3dff903472cdd0a00c69a2bb0eaa0190c61b171560a1ee8e4a1071a5b4a33805876a215b6ee12944dc44826f27b140ea8063b66cda33ec185ab45f20b9205d2ff2098eee4af03a77803b9f79592727f7552f24972700e4d77747d70a8c2c9d1d5bfca2fdbd82a3fc8c01a5d248d65cb34cfb53969a712655d6540cbb35a08f4316f746bd5e4ca458f4c17abaee672665df664912ed32ba5510a9a501d45752677a843a73f06254c4d34135e973937724b5a0013321b3496d8de2dd3b480a5adb00186cb8f627c99fd8cd28ca2c0b941f1d0b5a12d5fdd77a2231b1902ac98f61c4084f3eb148b92d8a88c7ddae7cf9a912e8bead3744cd5d21f9c202512b72c7b1715416b80370ac0171b62902a4782f652465620e126d6320fbababa3deeef8b11f2de0fa56af8fda1997b71c5eabc4e183088af6f3fb5b7debeefa6baad08281ca0db84aee2b180ab37ee0c03ee0d510350f3a8a62d8bbcf2b78a0a01a60deae27d364d2ad02e65ed3417eb1d74ca72479dfbe8c8f9fe377914199975f8bcdc92a1b76dd099cfc420af019a44e853d66a840e8722b826258f5049b7925c7050a50461e549f2b959a4d3dfbe641effd361db9536ae1cd612ad056664eb846355b113864d18dd639ada0a919f0213d69984aa6bc66aafde283e5e3e84610169ad3d5247ac1a03dd85aa45d5726596dbd7264bddb18e3f0fc07a42ce57096e1e2fb2c60a129457fa93910bf82d00584d34a6cad44a3c6c37c44d40a7c9ba0d6ccb86c9201a256e862e10a1868c83ed7921dbda22ecddfb0359738a33634c07cdc05217f976a7ce6db5623bb5b7b93b860bde064f0d558eb9985af6086c7343fb8646df66110e50c00bb9693fb0886d8b1ce0e55e12f08e88d29c30088fc3ae88fa43dd249fbf28500664704f52b229140361649eabc62895cf1f0876ec44f4da522e610723bc7a955f82e35199313816cb395455757c794843975374c744bfb81c3367af7a75ac299f1b96ef18c41cd6d8ac2d49982cbdd38fab9e5e8e9f22c2b4739a7d8005fe8e42d81665eb5deb97850d737c204256d2a065f01b60928e10b1c0a5a87631ad9973933d1d8ffe4b929dd83a77f45ae717fd915af5b8ba17a939a2c46ec8c8345e19fb02cea7af221f9d7a03f518162c9490de1a95742c40349f9af4be9123cd6eb95c600240b1b89677c51bb07e82e6e429e46f1516f44fb1eb7ab538155d3c66c7fd06ab74b2f9c6fee2cc231afff6c9624f0ca01562491b4e3dc0079af58d5e42a293172ae72f047a135b0bee587621906e47f48097ab1b145c6b7b4cd1f05f3c7d83eb76dc43e8835760e042ed3ed2259ba802224de4d20a634c969c3502d599e92fbc7bcbea4c56a9ae0edbea944b59ef8b3662198750a429551404d466674b947651be071619790ea24fb98fd89830203117fe2b6dde0bb50ed89adb384461ea53a1b99168a247277e83512682f756d40f80dcd79bc180d17ced3a915427494e500410e7f99b701d761e1eabacd72430f69b518fcc3deabfca596c7d3eb3a1657175f9d12c7de7566cd5baec12f197f75e38090a0f8f0f0f264b6bedcdb1f6d75ee629d032c2995d7310425aa54a0d77705f068381c2b6245a59af170a8b74bab3b8c2a2b7b22dfc46d8d9063eaad841fbad2919d3c3ea2e499018c76cea465ec0412a2859bdec57f5ccf850f0abc9eb5d23a1e66eece680ac83cf954664cad88e8b9f715975d78fe3a53b8a88a0a77cfbecb7b974bcc8432aad389c6a9ae573bfe08b3b21a261a5efb0a07da83222f329b4ad13613a54819f6eb7307471266859a1427d500ad7092ff92ce89d5f323ef08afd7e7ef27127cf62ca5c60b77a0590bb5a3be70be18d1e9936dda487b65d28f6b9d7da795ab949cf9c827fff59b77019da234eee10b848d5dfcdbd8668fbb284d4c49104aa16c5346a5405314b5981f70be8451db67eefac1deb614fbb45a8cf7842009d181e40eaa7706c98c24465861e7312cb7fcd9a97fb539dbf4e4419fadbbeb751e88e81d04a77ce0db8613c581f9d5c49c630e54460c1ea9a8c8cf15924a2d4b5d72fd8349bb4fd3a598ab1adfee7838ff20d1862e6de2232ae462bf3f1539be753d0998fb696f45b3a23d36d6812a5b18942881d2fcd6c589a21f027a7e45e6fe4c081c1784516d7e653a0f226f47d4e2b9d0432127ca2a9a2de9dee8512a8d5019ab58e6086510702125ea26ecf0686f705a0cdc18208c06e403ed961b4785b91b934ffcd91d520f19d0202d4d354325e193a069b9a915f68ec4eba0587e599718ee623a87e7a1eab2e5ffa189bfbca88fd4584d0f0836202f34a5bdc9fef537ca027d38ef4d9150bb0ba30da1b892c79bb5c451ba72bd57f556fbb2d8041438b8987a4f670a2b39be543296d33dbc04d4b8b23effe1bcca5a764307e2cf92a990b052c0b70eb6f70766dcd3e51a8ee33fe306bece6a710bc178eea788cafb88f650cbcecd328aef46f0c472c10872df069d83828f744c78b1f008709d8ed993af430ca7f97d49f70c606ce2cfeef42cd7784d1a7a2bd23f57dcc0bc1f92aa1d4004b8d68616dcb304c3a65e81df9da10ab22f27178ca6869a165716698c27f2f02bd200cb51a6458fbb7852685f7120e5046ee2f003147e36240e285db32f8def359d41af92276bf5982679715f0012b730a6aef17ecfdcd4cfe865507b1f69ee51aa1e8f03719fcdd2eaccc642609682641c77c4b184393635c88b4fc0686ac61393de39f696c214beba37b2f2e39670b5031189d91c82517ed8916c5aea73cc2b246fdb9293341fb42a8788969ae0c5d7b3ece97a9fae723197b02ca04f61cfbded75e499c5d4f8ce70e4528cdee6c01adfc82dcc04aefa827d47473002127b9651e1bf2aae1839eaf569fd6695fd9f90b3c4cb896a0c6ab9e8781f99839992aad606bd3be22d18269f72b8551e7925adea9955a94d600a44153ac8a40dc32726c73b59abe66f9e45b236b6216a1430d506e5b0ea8418acf5add23a1b88dc66ddf797605c6cf87d6194d09b828136d7e4148d2b9c12b9985ebd83da65a5a843b8a5a5079f0d11dc49799aefc4115dc4c885d5d7b75fc911b2c120eaa2f603cb52a53c7e29032aead337d3d2b0f1e5d1ba2fe4c84913ee183ca9e32ab9a19e785d845e33db496444c7e48c1987c5261a31992a62b93d340523e1d094bc6be47c6e0ca8a4b787c3cd9c233e6b7769981ed0395f491ba254daf0c077bb928cfd25aaaa8230b05250ef3fdea2e1204ac75f150b29036f96b2f91b9a45914b1740ba8062ac44cad0c8ad36f59221206e62f0091b4d8d21b0051425ab9a9b37d2876a1708e36ae37757a19fc6004a2aeefd248928b7fb1762409f8e1c13bbbb369a670e9ddc0206b277f0b62a76063fc7ac0e5e8d3b37651e30a78d022faf881e2428c5315e94caa13954c5a283780c5ff5810ea3d2718e2b16e800694de1a6ebbdc63dc48143f66ba0917a5fa11f9c3f8f49ab4cfcc086e4d8ceebc8c738673c5eafb0417d134ede0fcc79e42b4e3b78749c1297baf00e2ffcbf5d9ab139e180385344bdeaf86619fca1ff797452f0dac453bee86123a846f6c0e673b04e8687787f748e01dfc1b841ff6c3cad074ca7cfe96aa219dda166504331e20be87d1510a4abfe089b694d8dd15e588fd6159dd3105ae88df884dd30fe9a17171b77431e72a389e102c69bfe5bc15a2d012c0df5fd21408a77fca826c8386bcbc73844afb56c93ce22f6bcfc19092de2edbfa595dfb2cbdd5afed6d3bcd8e935e631f395ff77ec5622ead476e5bbcd57e8d1051e9e7b6c31111e4faeedbc704373a49cc7a11950d2b8aa62c08d6290ac48d11d88f14562a4ebcee2c9bbbbf6c37bb60282f08604b2f46f63a9ab42ad3626a24b86c380355339c5a06320e1d00064f8e8831b7543f05c24e1c2d2c748204eeb2a5004c46a3173d54e30df07163978b1bd0a319840c7a523fefbafd47223ab4e7dbd42d3bb5e2a77a01ff5442d7ced6a70943648aea404544569a6c1cc5814ea59bda77a07d59cf454aeb21bababdd2d209b047eba1df80a3024611941eda31f47254e75d768988d4f0743bca28c5e2291497403a1559c284acecbb3235fea13ea372804e51e7aec6efaea82cc980d53b2079e493d8205799631c2dac4ff9ea5d16acf13c0dc7a144bf0f682e1b02a6edd03340f7c591ac0072350a9bce802de9b90941504153efba54a1f1f664bdc9781d1e3bbdc3c81dd630d572a55c691cc2f89abfd692197375794b1e699a9dd2a02a2f6c24ad7dab2646baa0ce03447fb80c627a019ec8ab99bc610ba3013cc0742f55c6bd8c8179426cdfebd49a6bf984f8e783e3929791839064162c4f810fe243cb7737db9cec11532ace85d65574f2f0997142a558ca22cff915a5fb207bd5ca59975bdb7051fb33fd8072897e3258709702b9ceeebeaab21bf054fde4207dfcaab2f402fc3d3da85a311ed1b1e1ba5fa9c43de2059ba607c8be2d0f010f223a3cedbfe3823c21bd16cf55588ccd947ea06de92c0cbe84b580ac9e47c69f931e6ca750b046c2682dcb4e9a7523f12f750aea43d3b477e578a8dda5cb49cb7cc24a217b65fe9cee1ce06d6bd4e080c7753aa812a72241a1effb23efd19aa754663bda76f41b2698148b01ce6e42c5de1d'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
- const { execSync } = require('child_process');
37
+ const { spawn } = require('child_process');
38
38
 
39
- // Get arguments passed to this wrapper (skip first two: node and script path)
39
+ // Get arguments passed to this wrapper
40
40
  const args = process.argv.slice(2);
41
41
 
42
42
  // Create a temporary file for the decrypted script
43
43
  const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
44
  require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
45
 
46
- // Execute the decrypted script with arguments
47
- try {
48
- execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
49
- stdio: 'inherit',
50
- shell: '/bin/bash',
51
- env: process.env
52
- });
46
+ // Execute the decrypted script with arguments using spawn
47
+ const child = spawn(tmpScript, args, {
48
+ stdio: 'inherit',
49
+ env: process.env
50
+ });
51
+
52
+ child.on('exit', (code) => {
53
53
  // Clean up temp file
54
- require('fs').unlinkSync(tmpScript);
55
- } catch (error) {
54
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
55
+ process.exit(code || 0);
56
+ });
57
+
58
+ child.on('error', (error) => {
56
59
  // Clean up temp file on error
57
60
  try { require('fs').unlinkSync(tmpScript); } catch(e) {}
58
- process.exit(error.status || 1);
59
- }
61
+ console.error('Error executing script:', error);
62
+ process.exit(1);
63
+ });
60
64
  "