tx · HzYeXTtiupnFZBAHDK7JbTPWbaX4BUDyfJM2wfZmKZ4f

3PLsYkBw7taejV1J3qWPCN2yeyVRu31d5HW:  -0.07200000 Waves

2024.02.13 16:17 [4040300] smart account 3PLsYkBw7taejV1J3qWPCN2yeyVRu31d5HW > SELF 0.00000000 Waves

{ "type": 13, "id": "HzYeXTtiupnFZBAHDK7JbTPWbaX4BUDyfJM2wfZmKZ4f", "fee": 7200000, "feeAssetId": null, "timestamp": 1707830006091, "version": 2, "chainId": 87, "sender": "3PLsYkBw7taejV1J3qWPCN2yeyVRu31d5HW", "senderPublicKey": "9D3NMf2PEttfNTb8Hk2nbXukn2b2xmoTsZSqQrhvyeN", "proofs": [ "", "VCMVHzDAMw3EnhnvE33x1ympUie15mXLoHGm1Gn47tZ3fWsDAkVXZfFLn8ZkgUqWnCSZB6Hd7TyTjDBEqg12pdv", "4oefK3vqyNDyFtZHuQNhMTLqs9QQSePuGwC3xfQnVgbew3uvDktFrHZAaNPuQPHuukqG6Pmey6RSryU79X8ymWax" ], "script": "base64:BgKrAQgCEgMKAQgSAwoBCBIECgIICBIFCgMIGBgSBgoECAEIBBIECgIIARIFCgMIAQgSBgoEAQgIARIFCgMBCAgSDwoNCAgICAgICAgICAgICBIDCgEIEgMKAQgSBQoDCAgBEgYKBAgBCAgSBwoFCAgIAQQSBQoDCAQBEg0KCwgICAEBAQEBAQQEEgkKBwgBAQEBAQESABIAEgASABIAEgASABIAEgMKAQgSAwoBCJgBAARDT05GCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgZjb25maWcAB1NGX1BPT0wCAlNGAAdXWF9QT09MAgJXWAAEQ1BNTQIEY3BtbQAERkxBVAIEZmxhdAAPQ0FQX0ZFRV9OT19MT0FOAgljYXBOb0xvYW4ADENBUF9GRUVfTE9BTgIHY2FwTG9hbgAUU1RPUExPU1NfRkVFX05PX0xPQU4CDnN0b3BMb3NzTm9Mb2FuAA1TVE9QTE9TU19MT0FOAgxzdG9wTG9zc0xvYW4ACExPQU5fRkVFAgRsb2FuAAtOT19MT0FOX0ZFRQIGbm9Mb2FuAAZOT19GRUUCBW5vRmVlAAZTQ0FMRTgAgMLXLwAHU0NBTEUxMACAyK+gJQAHU0NBTEUxNgkAtgIBAICAhP6m3uERAApGRUVfU0NBTEU2AMCEPQAUa1NGUG9vbEFBc3NldEJhbGFuY2UCD0FfYXNzZXRfYmFsYW5jZQAUa1NGUG9vbEJBc3NldEJhbGFuY2UCD0JfYXNzZXRfYmFsYW5jZQAPa1NGUG9vbEFBc3NldElkAgpBX2Fzc2V0X2lkAA9rU0ZQb29sQkFzc2V0SWQCCkJfYXNzZXRfaWQADmtTRlBvb2xTaGFyZUlkAg5zaGFyZV9hc3NldF9pZAASa1NGUG9vbFNoYXJlU3VwcGx5AhJzaGFyZV9hc3NldF9zdXBwbHkACmtTRlBvb2xGZWUCCmNvbW1pc3Npb24ADWtVc2VyUG9zaXRpb24CDV91c2VyUG9zaXRpb24AEWtVc2VyUG9zaXRpb25Qb29sAhFfdXNlclBvc2l0aW9uUG9vbAARa1VzZXJCb3Jyb3dBbW91bnQCGV91c2VyUG9zaXRpb25Cb3Jyb3dBbW91bnQAEmtVc2VyQm9ycm93QXNzZXRJZAIaX3VzZXJQb3NpdGlvbkJvcnJvd0Fzc2V0SWQAEGtVc2VyUG9zaXRpb25OdW0CE191c2VyUG9zaXRpb25OdW1iZXIAFWtVc2VyUG9zaXRpb25JbnRlcmVzdAIVX3VzZXJQb3NpdGlvbkludGVyZXN0ABZrVXNlclBvc2l0aW9uSW5QTWFya2V0AhRfdXNlclBvc2l0aW9uUE1hcmtldAAKa1Bvb2xUb3RhbAIKX3Bvb2xUb3RhbAAOa1Bvb2xUb3RhbExvYW4CDl9wb29sVG90YWxMb2FuABBrUG9vbFRvdGFsTWFya2V0AhBfcG9vbFRvdGFsTWFya2V0ABRrUG9vbFRvdGFsTWFya2V0TG9hbgIUX3Bvb2xUb3RhbE1hcmtldExvYW4AEWtQb29sSW50ZXJlc3RMb2FuAhFfcG9vbEludGVyZXN0TG9hbgATa1Bvb2xJbnRlcmVzdE5vTG9hbgITX3Bvb2xJbnRlcmVzdE5vTG9hbgAXa1Bvb2xJbnRlcmVzdE1hcmtldExvYW4CF19wb29sSW50ZXJlc3RNYXJrZXRMb2FuABlrUG9vbEludGVyZXN0TWFya2V0Tm9Mb2FuAhlfcG9vbEludGVyZXN0TWFya2V0Tm9Mb2FuAA5rUG9vbENhbkJvcnJvdwIOX3Bvb2xDYW5Cb3Jyb3cADGtQb29sUE1BcmtldAIRX3Bvb2xQdXp6bGVNYXJrZXQAFWtBeGx5SW5GZWVXaXRob3V0TG9hbgIOX2F4bHlGZWVOb0xvYW4AEmtBeGx5SW5GZWVXaXRoTG9hbgIQX2F4bHlGZWVXaXRoTG9hbgARa0F4bHlOb0xvYW5DYXBGZWUCEV9heGx5RmVlQ2FwTm9Mb2FuABNrQXhseVdpdGhMb2FuQ2FwRmVlAhNfYXhseUZlZUNhcFdpdGhMb2FuABZrQXhseVN0b3BMb3NzTm9Mb2FuRmVlAhhfYXhseUZlZVN0b3Bsb3NzV2l0aExvYW4AFGtBeGx5U3RvcExvc3NMb2FuRmVlAhZfYXhseUZlZVN0b3Bsb3NzTm9Mb2FuAAprUmVxdWVzdElkAgtfcmVxdWVzdF9pZAAMa1JlcXVlc3RJdGVyAg1yZXF1ZXN0c19pdGVyAAVrUG9vbAIFcG9vbF8ACWtQb29sVHlwZQIJX3Bvb2xUeXBlAAprU2hhcmVQb29sAgxfcG9vbFNoYXJlSWQADmtQb29sQ2FwQ2hhbmdlAg5fcG9vbENhcENoYW5nZQAPa1Rva2VuTGFzdFByaWNlAgpsYXN0X3ByaWNlAA5rUHJpY2VJbk9yYWNsZQIHX3R3YXA1QgAHa0FjdGl2ZQIGYWN0aXZlAAxrQWN0aXZlVXNlcnMCC2FjdGl2ZVVzZXJzAAtrQWN0aXZlU0ZXWAIHX2FjdGl2ZQALa1Bvb2xBY3RpdmUCC19hY3RpdmVQb29sAA1rVXNlclN0b3BMb3NzAglfc3RvcExvc3MAF2tGYWxsYmFja0V4Y2hhbmdlU3dvcGZpAhdfZmFsbGJhY2tFeGNoYW5nZVN3b3BmaQAOa1Bvb2xQcm94eUFkZHICEV9wb29sUHJveHlBZGRyZXNzAAlrTW9uZXlCb3gCDmF4bHlfbW9uZXlfYm94AA5rU0ZGYXJtaW5nQWRkcgITc3dvcGZpX2Zhcm1pbmdfYWRkcgAMa0xlbmRTZXJ2aWNlAhFsZW5kX3NlcnZpY2VfYWRkcgAPa09wZXJhdG9yQ2FsbFBLAhJhZG1pbl9jYWxsX3B1Yl9rZXkADGtQcmljZU9yYWNsZQIMcHJpY2Vfb3JhY2xlAAtrRXhDb250cmFjdAIRZXhjaGFuZ2VfY29udHJhY3QAD2tXeFN3YXBDb250cmFjdAIQd3hfc3dhcF9jb250cmFjdAAHa1d4UmVzdAIMd3hfcmVzdF9hZGRyAAdrU3dvcElkAgdzd29wX2lkAAVrV3hJZAIFd3hfaWQADGtQTWFya2V0QWRkcgIVcHV6emxlX21hcmtldF9hZGRyZXNzABBrUE1hcmtldFJlc3RBZGRyAhpwdXp6bGVfbWFya2V0X3Jlc3RfYWRkcmVzcwAPa0dyb3VwMUFkbWluMVBLAhVncm91cDFfYWRtaW4xX3B1Yl9rZXkAD2tHcm91cDFBZG1pbjJQSwIVZ3JvdXAxX2FkbWluMl9wdWJfa2V5AA9rR3JvdXAxQWRtaW4zUEsCFWdyb3VwMV9hZG1pbjNfcHViX2tleQAPa0dyb3VwMkFkbWluMVBLAhVncm91cDJfYWRtaW4xX3B1Yl9rZXkAD2tHcm91cDJBZG1pbjJQSwIVZ3JvdXAyX2FkbWluMl9wdWJfa2V5AAhtb25leUJveAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBENPTkYFCWtNb25leUJveAIYTm8gYXhseSBtb25leUJveCBhZGRyZXNzAApleENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgULa0V4Q29udHJhY3QCHE5vIGV4Y2hhbmdlIGNvbnRyYWN0IGFkZHJlc3MAD3ByaWNlT3JhY2xlQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBENPTkYFDGtQcmljZU9yYWNsZQIXTm8gcHJpY2Ugb3JhY2xlIGFkZHJlc3MADnd4U3dhcENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUPa1d4U3dhcENvbnRyYWN0AhJObyB3eCBzd2FwIGFkZHJlc3MABnd4UmVzdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBENPTkYFB2tXeFJlc3QCEk5vIHd4IHJlc3QgYWRkcmVzcwAGU1dPUElECQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRDT05GBQdrU3dvcElkAgpObyBzd29wIGlkAARXWElECQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRDT05GBQVrV3hJZAIITm8gd3ggaWQAC3BNYXJrZXRBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUMa1BNYXJrZXRBZGRyAhhObyBwdXp6bGUgbWFya2V0IGFkZHJlc3MAD3BNYXJrZXRSZXN0QWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBENPTkYFEGtQTWFya2V0UmVzdEFkZHICHU5vIHB1enpsZSBtYXJrZXQgcmVzdCBhZGRyZXNzAA5ncm91cDFBZG1pbjFQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUPa0dyb3VwMUFkbWluMVBLAhlDYW4ndCBnZXQga0dyb3VwMUFkbWluMVBLAA5ncm91cDFBZG1pbjJQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUPa0dyb3VwMUFkbWluMlBLAhlDYW4ndCBnZXQga0dyb3VwMUFkbWluMlBLAA5ncm91cDFBZG1pbjNQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUPa0dyb3VwMUFkbWluM1BLAhlDYW4ndCBnZXQga0dyb3VwMUFkbWluM1BLAA5ncm91cDJBZG1pbjFQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa0dyb3VwMkFkbWluMVBLAhlDYW4ndCBnZXQga0dyb3VwMkFkbWluMVBLAA5ncm91cDJBZG1pbjJQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa0dyb3VwMkFkbWluMlBLAhlDYW4ndCBnZXQga0dyb3VwMkFkbWluMVBLAApvcGVyYXRvclBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRDT05GBQ9rT3BlcmF0b3JDYWxsUEsCFENhbid0IGdldCBvcGVyYXRvclBLAQ91bmtub3duUG9vbFR5cGUACQACAQIPV3JvbmcgcG9vbCB0eXBlAQ5nZXRMZW5kU3J2QWRkcgAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRDT05GBQxrTGVuZFNlcnZpY2UCG0Nhbid0IGdldCBsZW5kIHNlcnZpY2UgYWRkcgEOaXNPcGVyYXRvckNhbGwBAWkDAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUKb3BlcmF0b3JQSwYJAAACCAUBaQZjYWxsZXIFCG1vbmV5Qm94BQR1bml0CQACAQIkT25seSBvcGVyYXRvciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQtpc0FkbWluQ2FsbAEBaQMDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQ5ncm91cDFBZG1pbjFQSwYJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFDmdyb3VwMUFkbWluMlBLBQR1bml0CQACAQIoT25seSBhZG1pbiBncm91cDEgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc0xhbmRDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgkBDmdldExlbmRTcnZBZGRyAAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQhpc0FjdGl2ZQADCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgYFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50ARBpc0FjdGl2ZUZvclVzZXJzAAMDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGBgcFBHVuaXQJAAIBAilEQXBwIGlzIGluYWN0aXZlIGZvciB1c2VycyBhdCB0aGlzIG1vbWVudAEMaXNQb29sQWN0aXZlAgRwb29sBHR5cGUECldYU0ZBY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQR0eXBlBQtrQWN0aXZlU0ZXWAYECnBvb2xBY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYDAwUKV1hTRkFjdGl2ZQUKcG9vbEFjdGl2ZQcGBwEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBEWdldFNGUG9vbEJhbGFuY2VzAQhwb29sQWRkcgkAlAoCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xBQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGJhbGFuY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEJBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEIgYXNzZXQgYmFsYW5jZQERZ2V0V1hQb29sQmFsYW5jZXMDCHBvb2xBZGRyA2FJZANiSWQJAJQKAgoAAUAJAPwHBAUIcG9vbEFkZHICHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUDYUlkBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2JJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQ9nZXRQb29sQmFsYW5jZXMECHBvb2xBZGRyBHR5cGUDYUlkA2JJZAMJAAACBQR0eXBlBQdTRl9QT09MCQERZ2V0U0ZQb29sQmFsYW5jZXMBBQhwb29sQWRkcgMJAAACBQR0eXBlBQdXWF9QT09MCQERZ2V0V1hQb29sQmFsYW5jZXMDBQhwb29sQWRkcgUDYUlkBQNiSWQJAQ91bmtub3duUG9vbFR5cGUAAQ1nZXRTRlBvb2xEYXRhAQhwb29sQWRkcgQLJHQwOTY1NTk3MDQJARFnZXRTRlBvb2xCYWxhbmNlcwEFCHBvb2xBZGRyAwkAAAIFCyR0MDk2NTU5NzA0BQskdDA5NjU1OTcwNAQEYmFsQggFCyR0MDk2NTU5NzA0Al8yBARiYWxBCAULJHQwOTY1NTk3MDQCXzEJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQUFzc2V0SWQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEJBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkBQRiYWxBBQRiYWxCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFDmtTRlBvb2xTaGFyZUlkAhhDYW4ndCBnZXQgc2hhcmUgYXNzZXQgaWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDWdldFdYUG9vbERhdGEBCHBvb2xBZGRyBANjZmcKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDY2ZnBQNjZmcEA2FJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABAMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQEA2JJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABQMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEIgYXNzZXQgaWQEB3NoYXJlSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAMDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhpDYW4ndCBnZXQgcG9vbCBMUCBhc3NldCBpZAQNJHQwMTA0MDExMDQ2MAkBEWdldFdYUG9vbEJhbGFuY2VzAwUIcG9vbEFkZHIFA2FJZAUDYklkAwkAAAIFDSR0MDEwNDAxMTA0NjAFDSR0MDEwNDAxMTA0NjAEBGJhbEIIBQ0kdDAxMDQwMTEwNDYwAl8yBARiYWxBCAUNJHQwMTA0MDExMDQ2MAJfMQkAlwoFBQNhSWQFA2JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgELZ2V0UG9vbERhdGECCHBvb2xBZGRyBHR5cGUDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBDWdldFNGUG9vbERhdGEBBQhwb29sQWRkcgMJAAACBQR0eXBlBQdXWF9QT09MCQENZ2V0V1hQb29sRGF0YQEFCHBvb2xBZGRyCQEPdW5rbm93blBvb2xUeXBlAAEOZ2V0U2hhcmVTdXBwbHkDCHBvb2xBZGRyBHR5cGUHc2hhcmVJZAMJAAACBQR0eXBlBQdTRl9QT09MCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFEmtTRlBvb2xTaGFyZVN1cHBseQIcQ2FuJ3QgZ2V0IHNoYXJlIGFzc2V0IHN1cHBseQMJAAACBQR0eXBlBQdXWF9QT09MCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUHc2hhcmVJZAINV3JvbmcgU2hhcmVJZAhxdWFudGl0eQkBD3Vua25vd25Qb29sVHlwZQABEWdldFBvb2xUb3RhbFNoYXJlAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAAAARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4AAAEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQR1c2VyCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0AAAABAQpnZXRBeGx5RmVlAgRwb29sB2ZlZVR5cGUDCQAAAgUHZmVlVHlwZQUMQ0FQX0ZFRV9MT0FOCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tBeGx5V2l0aExvYW5DYXBGZWUDCQAAAgUHZmVlVHlwZQUPQ0FQX0ZFRV9OT19MT0FOCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtBeGx5Tm9Mb2FuQ2FwRmVlAwkAAAIFB2ZlZVR5cGUFCExPQU5fRkVFCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEmtBeGx5SW5GZWVXaXRoTG9hbgMJAAACBQdmZWVUeXBlBQtOT19MT0FOX0ZFRQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRVrQXhseUluRmVlV2l0aG91dExvYW4DCQAAAgUHZmVlVHlwZQUGTk9fRkVFAAAJAAIBAg5Xcm9uZyBmZWUgdHlwZQEQZ2V0U0ZGYXJtaW5nQWRkcgAJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUOa1NGRmFybWluZ0FkZHICHUNhbid0IGdldCBzd29wZmkgZmFybWluZyBhZGRyARBnZXRXWEZhcm1pbmdBZGRyAQhwb29sQWRkcgQJZkNvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyAhMlc19fZmFjdG9yeUNvbnRyYWN0AiJDYW4ndCBnZXQgV1ggZmFjdG9yeSBjb250cmFjdCBhZGRyBApmYWN0cm95Q2ZnCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQlmQ29udHJhY3QCESVzX19mYWN0b3J5Q29uZmlnAhhDYW4ndCBnZXQgV1ggZmFjdG9yeSBjZmcCAl9fCQEHQWRkcmVzcwEJANkEAQkAkQMCBQpmYWN0cm95Q2ZnAAEBDGFzc2V0SWRUb1N0cgEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA2AQBBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAIFV0FWRVMJAAIBAgxOb3QgQXNzZXQgaWQBDmFzc2V0SWRGcm9tU3RyAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBEGdldEFzc2V0RGVjaW1hbHMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMACAQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIZGVjaW1hbHMJAAIBAhBDYW4ndCBmaW5kIGFzc2V0ARFnZXRBc3NldFByZWNpdGlvbgEHYXNzZXRJZAkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB2Fzc2V0SWQAAAAABQRET1dOAQ5nZXRBc3NldHNQcmljZQEIYXNzZXRJZHMKAQlnZXRQcmljZXMCAWEHYXNzZXRJZAQKYXNzZXRQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUA////////////AQkAzQgCBQFhBQphc3NldFByaWNlCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlnZXRQcmljZXMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgENZ2V0U2hhcmVQcmljZQEHc2hhcmVJZAQEcG9vbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUHc2hhcmVJZAUKa1NoYXJlUG9vbAIgQ2FuJ3QgZmluZCBwb29sIGFkZHIgYnkgc2hhcmUgaWQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDEzNDQ5MTM1MTQJAQtnZXRQb29sRGF0YQIFCHBvb2xBZGRyBQVwVHlwZQQDYUlkCAUNJHQwMTM0NDkxMzUxNAJfMQQDYklkCAUNJHQwMTM0NDkxMzUxNAJfMgQIYUJhbGFuY2UIBQ0kdDAxMzQ0OTEzNTE0Al8zBAhiQmFsYW5jZQgFDSR0MDEzNDQ5MTM1MTQCXzQEBnByaWNlcwkBDmdldEFzc2V0c1ByaWNlAQkAzAgCBQNhSWQJAMwIAgUDYklkBQNuaWwEB2RQcmljZUEJAJEDAgUGcHJpY2VzAAAEB2RQcmljZUIJAJEDAgUGcHJpY2VzAAEDAwkAZgIAAAUHZFByaWNlQQYJAGYCAAAFB2RQcmljZUIA////////////AQQLc2hhcmVTdXBwbHkJAQ5nZXRTaGFyZVN1cHBseQMFCHBvb2xBZGRyBQVwVHlwZQUHc2hhcmVJZAQKQVByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2FJZAAAAAAFBERPV04ECkJQcmVjaXNpb24JAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNiSWQAAAAABQRET1dOBA5zaGFyZVByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB3NoYXJlSWQAAAAABQRET1dOBANzdW0JAGQCCQBrAwUIYUJhbGFuY2UFB2RQcmljZUEFCkFQcmVjaXNpb24JAGsDBQhiQmFsYW5jZQUHZFByaWNlQgUKQlByZWNpc2lvbgkAawMFA3N1bQUOc2hhcmVQcmVjaXNpb24FC3NoYXJlU3VwcGx5AQ5nZXRTaGFyZVByaWNlcwEIc2hhcmVJZHMKAQlnZXRQcmljZXMCAWEHc2hhcmVJZAkAzQgCBQFhCQENZ2V0U2hhcmVQcmljZQEFB3NoYXJlSWQKAAIkbAUIc2hhcmVJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWdldFByaWNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUAQ5nZXRDdXJzRW50cmllcwQDYUlkA2JJZAdzaGFyZUlkCHdBbW91bnRzBAxhc3NldHNQcmljZXMJAQ5nZXRBc3NldHNQcmljZQEJAMwIAgUDYUlkCQDMCAIFA2JJZAUDbmlsBApzaGFyZVByaWNlCQENZ2V0U2hhcmVQcmljZQEFB3NoYXJlSWQEBnByaWNlcwkAzggCCQDMCAIJAKQDAQkAkQMCBQxhc3NldHNQcmljZXMAAAkAzAgCCQCkAwEJAJEDAgUMYXNzZXRzUHJpY2VzAAEJAMwIAgkApAMBBQpzaGFyZVByaWNlBQNuaWwFCHdBbW91bnRzCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tUb2tlbkxhc3RQcmljZQkAuQkCBQZwcmljZXMCASwFA25pbAEYY2FsY1JlcGxlbmlzaEJ5VHdvVG9rZW5zCQVwVHlwZQhwb29sQWRkcgRMUElkBHBtdEEDYUlkBHBtdEIDYklkBGJhbEEEYmFsQgMJAAACBQVwVHlwZQUHU0ZfUE9PTAQEcmVwbAoAAUAJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAiBjYWxjTFBSZXBsZW5pc2hUd29Ub2tlbnNSRUFET05MWQkAzAgCCQDMCAIJAKQDAQUEcG10QQkAzAgCCQCkAwEFBHBtdEIFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFBHJlcGwFBHJlcGwJAJcKBQoAAUAJAJEDAgUEcmVwbAADAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUEcmVwbAAEAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUEcmVwbAABAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkBDGFzc2V0SWRUb1N0cgEJAJEDAgUEcmVwbAACCgABQAkAkQMCBQRyZXBsAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBA0kdDAxNTA3MjE1MzM4CQCUCgIJALUJAgoAAUAJAPwHBAUGd3hSZXN0AiRwb29sRXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkJAMwIAgUETFBJZAkAzAgCBQRwbXRBBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcCAl9fCQC1CQIKAAFACQD8BwQFBnd4UmVzdAIjcG9vbEV2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkJAMwIAgUETFBJZAkAzAgCBQRwbXRCBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcCAl9fAwkAAAIFDSR0MDE1MDcyMTUzMzgFDSR0MDE1MDcyMTUzMzgECmV2YWxQdXRJbkIIBQ0kdDAxNTA3MjE1MzM4Al8yBApldmFsUHV0SW5BCAUNJHQwMTUwNzIxNTMzOAJfMQQFbHBJbkEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5BAAEEBWxwSW5CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgABAwkAZgIFBWxwSW5CBQVscEluQQQDcG10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQAICQCXCgUFBHBtdEEFA3BtdAkAZQIFBHBtdEIFA3BtdAUDYklkBQVscEluQgQDcG10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgAHCQCXCgUFA3BtdAUEcG10QgkAZQIFBHBtdEEFA3BtdAUDYUlkBQVscEluQQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQABGHJlcGxlbmlzaFR3b1Rva2Vuc0J5VHlwZQcIcG9vbEFkZHIFcFR5cGUEcG10QQNhSWQEcG10QgNiSWQEbHBJZAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFA2FJZAUEcG10QQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUDYklkBQRwbXRCBQNuaWwECXByb3h5QWRkcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIJAKUIAQUIcG9vbEFkZHIFDmtQb29sUHJveHlBZGRyAgADCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zCQDMCAIJAMwIAgIFZmFsc2UJAMwIAgIBMAUDbmlsBQNuaWwFCHBheW1lbnRzAwkAAAIFBXBUeXBlBQdXWF9QT09MAwkAAAIFCXByb3h5QWRkcgIACQD8BwQFCHBvb2xBZGRyAgNwdXQJAMwIAgDAhD0JAMwIAgcFA25pbAUIcGF5bWVudHMJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUJcHJveHlBZGRyAhR3eFJlcGxlbmlzaFR3b1Rva2VucwkAzAgCCQClCAEFCHBvb2xBZGRyCQDMCAIFBGxwSWQJAMwIAgDAhD0JAMwIAgcFA25pbAUIcGF5bWVudHMJAQ91bmtub3duUG9vbFR5cGUAARdyZXBsZW5pc2hPbmVUb2tlbkJ5VHlwZQUIcG9vbEFkZHIFcFR5cGUDcG10BXBtdElkBGxwSWQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQVwbXRJZAUDcG10BQNuaWwECXByb3h5QWRkcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIJAKUIAQUIcG9vbEFkZHIFDmtQb29sUHJveHlBZGRyAgADCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhVyZXBsZW5pc2hXaXRoT25lVG9rZW4JAMwIAgkAzAgCAgEwCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAUDbmlsBQhwYXltZW50cwMJAAACBQVwVHlwZQUHV1hfUE9PTAQCZmMDCQAAAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIJAKUIAQUIcG9vbEFkZHIFCWtQb29sVHlwZQIEY3BtbQUERkxBVAILcHV0T25lVGtuVjICCXB1dE9uZVRrbgMJAAACBQlwcm94eUFkZHICAAkA/AcEBQhwb29sQWRkcgUCZmMJAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCXByb3h5QWRkcgITd3hSZXBsZW5pc2hPbmVUb2tlbgkAzAgCCQClCAEFCHBvb2xBZGRyCQDMCAIFBGxwSWQJAMwIAgUCZmMJAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzCQEPdW5rbm93blBvb2xUeXBlAAEHc3Rha2VMUAUEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudA1zdGFrZVRvTWFya2V0BAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQdzaGFyZUlkBQZhbW91bnQFA25pbAQJcHJveHlBZGRyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xQcm94eUFkZHICAAMFDXN0YWtlVG9NYXJrZXQJAPwHBAULcE1hcmtldEFkZHICBnN1cHBseQUDbmlsBQhwYXltZW50cwMJAAACBQVwVHlwZQUHU0ZfUE9PTAkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACD2xvY2tTaGFyZVRva2VucwkAzAgCBQRwb29sCQDMCAIAAAUDbmlsBQhwYXltZW50cwMJAAACBQVwVHlwZQUHV1hfUE9PTAQIZmFybUFkZHIJARBnZXRXWEZhcm1pbmdBZGRyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAMJAAACBQlwcm94eUFkZHICAAkA/AcEBQhmYXJtQWRkcgIFc3Rha2UFA25pbAUIcGF5bWVudHMJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUJcHJveHlBZGRyAgl3eFN0YWtlTHAJAMwIAgkApQgBBQhmYXJtQWRkcgUDbmlsBQhwYXltZW50cwkBD3Vua25vd25Qb29sVHlwZQABCXVuc3Rha2VMUAUEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudApmcm9tTWFya2V0BAlwcm94eUFkZHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbFByb3h5QWRkcgIABA0kdDAxODA3NTE4NzU3AwUKZnJvbU1hcmtldAkAlQoDBQtwTWFya2V0QWRkcgIId2l0aGRyYXcJAMwIAgUHc2hhcmVJZAkAzAgCBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAlQoDCQEQZ2V0U0ZGYXJtaW5nQWRkcgACE3dpdGhkcmF3U2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAQIZmFybUFkZHIJARBnZXRXWEZhcm1pbmdBZGRyAQkBB0FkZHJlc3MBCQDZBAEFBHBvb2wDCQAAAgUJcHJveHlBZGRyAgAJAJUKAwUIZmFybUFkZHICB3Vuc3Rha2UJAMwIAgUHc2hhcmVJZAkAzAgCBQZhbW91bnQFA25pbAkAlQoDCQERQGV4dHJOYXRpdmUoMTA2MikBBQlwcm94eUFkZHICC3d4VW5zdGFrZUxwCQDMCAIJAKUIAQUIZmFybUFkZHIJAMwIAgUHc2hhcmVJZAkAzAgCBQZhbW91bnQFA25pbAkBD3Vua25vd25Qb29sVHlwZQAECGZhcm1BZGRyCAUNJHQwMTgwNzUxODc1NwJfMQQFZk5hbWUIBQ0kdDAxODA3NTE4NzU3Al8yBAZwYXJhbXMIBQ0kdDAxODA3NTE4NzU3Al8zBANpbnYJAPwHBAUIZmFybUFkZHIFBWZOYW1lBQZwYXJhbXMFA25pbAMJAAACBQNpbnYFA2ludgUGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFjYWxjQW1vdW50VG9QYXlTRgcEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQJZmVlU2NhbGU2AMCEPQQDZmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQhwb29sQWRkcgUKa1NGUG9vbEZlZQQMYW1udEdldE5vRmVlCQBuBAUQYW1vdW50VG9rZW5Ub0dldAUJZmVlU2NhbGU2CQBlAgUJZmVlU2NhbGU2BQNmZWUFB0NFSUxJTkcEDSR0MDE5MTc5MTk0ODUDCQAAAgUPYXNzZXRUb2tlblRvR2V0BQhhc3NldElkQQQLYW1vdW50VG9QYXkJAG4EBQxhbW50R2V0Tm9GZWUFBGJhbEIJAGUCBQRiYWxBBQxhbW50R2V0Tm9GZWUFB0NFSUxJTkcJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAbgQFDGFtbnRHZXROb0ZlZQUEYmFsQQkAZQIFBGJhbEIFDGFtbnRHZXROb0ZlZQUHQ0VJTElORwkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTkxNzkxOTQ4NQJfMQQKYXNzZXRUb1BheQgFDSR0MDE5MTc5MTk0ODUCXzIJAJQKAgUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkBDWdldFdYU3dhcEZlZXMBBHBvb2wECHBvb2xBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBAlmQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgITJXNfX2ZhY3RvcnlDb250cmFjdAIiQ2FuJ3QgZ2V0IFdYIGZhY3RvcnkgY29udHJhY3QgYWRkcgQOcG9vbEZlZURlZmF1bHQJAQV2YWx1ZQEJAJoIAgUOd3hTd2FwQ29udHJhY3QCCyVzX19wb29sRmVlBBJwcm90b2NvbEZlZURlZmF1bHQJAQV2YWx1ZQEJAJoIAgUOd3hTd2FwQ29udHJhY3QCDyVzX19wcm90b2NvbEZlZQQHJG1hdGNoMAkA/AcEBQlmQ29udHJhY3QCEmdldFN3YXBGZWVSRUFET05MWQkAzAgCCQClCAEFCHBvb2xBZGRyBQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgooSW50LCBJbnQpBARmZWVzBQckbWF0Y2gwCQCUCgIIBQRmZWVzAl8xCAUEZmVlcwJfMgkAlAoCBQ5wb29sRmVlRGVmYXVsdAUScHJvdG9jb2xGZWVEZWZhdWx0ARFjYWxjQW1vdW50VG9QYXlXWAcEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQEDSR0MDIwMjI1MjAyNjQJAQ1nZXRXWFN3YXBGZWVzAQUEcG9vbAQEcEZlZQgFDSR0MDIwMjI1MjAyNjQCXzEEBXByRmVlCAUNJHQwMjAyMjUyMDI2NAJfMgQIZmVlU2NhbGUJALYCAQCAwtcvBA0kdDAyMDMwNDIwNjEyAwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBrAwUQYW1vdW50VG9rZW5Ub0dldAUEYmFsQgkAZQIFBGJhbEEFEGFtb3VudFRva2VuVG9HZXQJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAawMFEGFtb3VudFRva2VuVG9HZXQFBGJhbEEJAGUCBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQQQLYW1vdW50VG9QYXkIBQ0kdDAyMDMwNDIwNjEyAl8xBAphc3NldFRvUGF5CAUNJHQwMjAzMDQyMDYxMgJfMgQSYW1vdW50VG9QYXlXaXRoRmVlCQCgAwEJAL0CBAkAtgIBBQthbW91bnRUb1BheQUIZmVlU2NhbGUJALgCAgUIZmVlU2NhbGUJALYCAQkAZAIFBXByRmVlBQRwRmVlBQdDRUlMSU5HCQCUCgIFCmFzc2V0VG9QYXkFEmFtb3VudFRvUGF5V2l0aEZlZQEQZXhjaGFuZ2VEaXJlY3RseQgFcFR5cGUEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQEBnBvb2xGQgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIFBHBvb2wFF2tGYWxsYmFja0V4Y2hhbmdlU3dvcGZpAgADAwkAAAIFBXBUeXBlBQdTRl9QT09MBgkBAiE9AgUGcG9vbEZCAgAEDSR0MDIxMDUzMjEyNjUDCQAAAgUGcG9vbEZCAgAJAJUKAwUEYmFsQQUEYmFsQgUEcG9vbAQNJHQwMjExNTkyMTIzMgkBEWdldFNGUG9vbEJhbGFuY2VzAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUGcG9vbEZCBAZzZkJhbEEIBQ0kdDAyMTE1OTIxMjMyAl8xBAZzZkJhbEIIBQ0kdDAyMTE1OTIxMjMyAl8yCQCVCgMFBnNmQmFsQQUGc2ZCYWxCBQZwb29sRkIEBXBCYWxBCAUNJHQwMjEwNTMyMTI2NQJfMQQFcEJhbEIIBQ0kdDAyMTA1MzIxMjY1Al8yBAZleFBvb2wIBQ0kdDAyMTA1MzIxMjY1Al8zBA0kdDAyMTI3MDIxMzk2CQERY2FsY0Ftb3VudFRvUGF5U0YHBQZleFBvb2wFCGFzc2V0SWRBBQhhc3NldElkQgUFcEJhbEEFBXBCYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQECmFzc2V0VG9QYXkIBQ0kdDAyMTI3MDIxMzk2Al8xBAthbW91bnRUb1BheQgFDSR0MDIxMjcwMjEzOTYCXzIJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUGZXhQb29sAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCCQCkAwEFEGFtb3VudFRva2VuVG9HZXQFA25pbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQphc3NldFRvUGF5BQthbW91bnRUb1BheQUDbmlsAwkAAAIFBXBUeXBlBQdXWF9QT09MBA0kdDAyMTU5ODIxNzIwCQERY2FsY0Ftb3VudFRvUGF5V1gHBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQFD2Fzc2V0VG9rZW5Ub0dldAQKYXNzZXRUb1BheQgFDSR0MDIxNTk4MjE3MjACXzEEC2Ftb3VudFRvUGF5CAUNJHQwMjE1OTgyMTcyMAJfMgkA/AcEBQ53eFN3YXBDb250cmFjdAIEc3dhcAkAzAgCBRBhbW91bnRUb2tlblRvR2V0CQDMCAIFD2Fzc2V0VG9rZW5Ub0dldAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAkBD3Vua25vd25Qb29sVHlwZQABFWV4Y2hhbmdlRGlyZWN0bHlOb0xpbQUFcFR5cGUEcG9vbA1hbW91bnRUb2tlbkV4DmFzc2V0VG9rZW5Ub0V4D2Fzc2V0VG9rZW5Ub0dldAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQ9hc3NldFRva2VuVG9HZXQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEBnBvb2xGQgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIFBHBvb2wFF2tGYWxsYmFja0V4Y2hhbmdlU3dvcGZpAgAEA2ludgMDCQAAAgUFcFR5cGUFB1NGX1BPT0wGCQECIT0CBQZwb29sRkICAAQGZXhQb29sAwkAAAIFBnBvb2xGQgIABQRwb29sBQZwb29sRkIJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUGZXhQb29sAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCAgExBQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUOYXNzZXRUb2tlblRvRXgFDWFtb3VudFRva2VuRXgFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAkA/AcEBQ53eFN3YXBDb250cmFjdAIEc3dhcAkAzAgCAAEJAMwIAgUPYXNzZXRUb2tlblRvR2V0CQDMCAIJAKUIAQUEdGhpcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQ5hc3NldFRva2VuVG9FeAUNYW1vdW50VG9rZW5FeAUDbmlsCQEPdW5rbm93blBvb2xUeXBlAAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFD2Fzc2V0VG9rZW5Ub0dldAMJAAACBQhiYWxBZnRlcgUIYmFsQWZ0ZXIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQIcG9vbEFkZHIFcFR5cGUHc2hhcmVJZA91c2VyQ2FuV2l0aGRyYXcEDSR0MDIyODQ5MjMzMjADCQAAAgUFcFR5cGUFB1NGX1BPT0wEA2ludgoAAUAJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhB3aXRoZHJhd1JFQURPTkxZCQDMCAIJAMwIAgkApAMBBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2ludgUDaW52CQCUCgIKAAFACQCRAwIFA2ludgAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUDaW52AAEDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBANpbnYJALUJAgoAAUAJAPwHBAUGd3hSZXN0Ahdwb29sRXZhbHVhdGVHZXRSRUFET05MWQkAzAgCBQdzaGFyZUlkCQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQNpbnYFA2ludgkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaW52AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNpbnYAAgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQAEB2Ftb3VudEEIBQ0kdDAyMjg0OTIzMzIwAl8xBAdhbW91bnRCCAUNJHQwMjI4NDkyMzMyMAJfMgkAlAoCBQdhbW91bnRBBQdhbW91bnRCAQtjbGFpbUZhcm1lZAIFcFR5cGUEcG9vbAQJcHJveHlBZGRyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xQcm94eUFkZHICAAMJAAACBQVwVHlwZQUHU0ZfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQZTV09QSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEDSR0MDIzNzYwMjM4MzkJAQ1nZXRXWFBvb2xEYXRhAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQDYUlkCAUNJHQwMjM3NjAyMzgzOQJfMQQDYklkCAUNJHQwMjM3NjAyMzgzOQJfMgQEYUJhbAgFDSR0MDIzNzYwMjM4MzkCXzMEBGJCYWwIBQ0kdDAyMzc2MDIzODM5Al80BARscElkCAUNJHQwMjM3NjAyMzgzOQJfNQQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQRXWElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBAhmYXJtQWRkcgkBEGdldFdYRmFybWluZ0FkZHIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBANpbnYDCQAAAgUJcHJveHlBZGRyAgAJAPwHBAUIZmFybUFkZHICB2NsYWltV3gJAMwIAgUEbHBJZAUDbmlsBQNuaWwJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUJcHJveHlBZGRyAg13eENsYWltRmFybWVkCQDMCAIJAKUIAQUIZmFybUFkZHIJAMwIAgUEbHBJZAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYECGJhbEFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQRXWElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQRXWElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEPdW5rbm93blBvb2xUeXBlAAEPcmVwbGVuaXNoQnlUeXBlCwVwVHlwZQRwb29sB2ZlZVR5cGUEcG10QQNhSWQEcG10QgNiSWQEYmFsQQRiYWxCBExQSWQLc3Rha2VNYXJrZXQED2xwQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQRMUElkAwkAAAIFD2xwQmFsYW5jZUJlZm9yZQUPbHBCYWxhbmNlQmVmb3JlBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQNJHQwMjQ2NDQyNTA3MgMDCQBmAgUEcG10QQAACQBmAgUEcG10QgAABwQNJHQwMjQ3MTAyNDgzMgkBGGNhbGNSZXBsZW5pc2hCeVR3b1Rva2VucwkFBXBUeXBlBQhwb29sQWRkcgUETFBJZAUEcG10QQUDYUlkBQRwbXRCBQNiSWQFBGJhbEEFBGJhbEIEBnBtdEluQQgFDSR0MDI0NzEwMjQ4MzICXzEEBnBtdEluQggFDSR0MDI0NzEwMjQ4MzICXzIEBmNoYW5nZQgFDSR0MDI0NzEwMjQ4MzICXzMECGNoYW5nZUlkCAUNJHQwMjQ3MTAyNDgzMgJfNAQDaW52CQEYcmVwbGVuaXNoVHdvVG9rZW5zQnlUeXBlBwUIcG9vbEFkZHIFBXBUeXBlBQZwbXRJbkEFA2FJZAUGcG10SW5CBQNiSWQFBExQSWQDCQAAAgUDaW52BQNpbnYJAJQKAgUGY2hhbmdlBQhjaGFuZ2VJZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAGYCBQRwbXRBAAAJAJQKAgUEcG10QQUDYUlkAwkAZgIFBHBtdEIAAAkAlAoCBQRwbXRCBQNiSWQJAAIBAhBwbXRzIG11c3QgYmUgPiAwBAZjaGFuZ2UIBQ0kdDAyNDY0NDI1MDcyAl8xBAhjaGFuZ2VJZAgFDSR0MDI0NjQ0MjUwNzICXzIEA2ludgMJAGYCBQZjaGFuZ2UAAAkBF3JlcGxlbmlzaE9uZVRva2VuQnlUeXBlBQUIcG9vbEFkZHIFBXBUeXBlBQZjaGFuZ2UFCGNoYW5nZUlkBQRMUElkBQNuaWwDCQAAAgUDaW52BQNpbnYEDmxwQmFsYW5jZUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFBExQSWQEC3RvdGFsU3Rha2VkCQBlAgUObHBCYWxhbmNlQWZ0ZXIFD2xwQmFsYW5jZUJlZm9yZQQNYXhseUZlZUFtb3VudAkAawMFC3RvdGFsU3Rha2VkCQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYEEXVzZXJTaGFyZUZvclN0YWtlCQBlAgULdG90YWxTdGFrZWQFDWF4bHlGZWVBbW91bnQDCQBnAgAABRF1c2VyU2hhcmVGb3JTdGFrZQkAAgECKGFtb3VudCBvZiBzdGFrZWQgc2hhcmV0b2tlbnMgbXVzdCBiZSA+IDAEBWludkxQCQEHc3Rha2VMUAUFBHBvb2wFBXBUeXBlBQRMUElkBRF1c2VyU2hhcmVGb3JTdGFrZQULc3Rha2VNYXJrZXQDCQAAAgUFaW52TFAFBWludkxQCQCUCgIFEXVzZXJTaGFyZUZvclN0YWtlBQ1heGx5RmVlQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARByZXBsZW5pc2hFbnRyaWVzCQRwb29sBHVzZXIMc3Rha2VkQW1vdW50DWF4bHlGZWVBbW91bnQGcG9zTnVtB3NoYXJlSWQEdHlwZQh3aXRoTG9hbg1zdGFrZVRvTWFya2V0BAt0b3RhbEFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQPdG90YWxBbW91bnRMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEEXRvdGFsQW1vdW50TWFya2V0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUQa1Bvb2xUb3RhbE1hcmtldAAABBV0b3RhbEFtb3VudE1hcmtldExvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRRrUG9vbFRvdGFsTWFya2V0TG9hbgAABBJwb29sSW50ZXJlc3ROb0xvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuAAAEEHBvb2xJbnRlcmVzdExvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgAABBhwb29sSW50ZXJlc3RNYXJrZXROb0xvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRlrUG9vbEludGVyZXN0TWFya2V0Tm9Mb2FuAAAEFnBvb2xJbnRlcmVzdE1hcmtldExvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRdrUG9vbEludGVyZXN0TWFya2V0TG9hbgAABA0kdDAyNjUzMzI3MzU4AwUId2l0aExvYW4DBQ1zdGFrZVRvTWFya2V0CQCUCgIFFnBvb2xJbnRlcmVzdE1hcmtldExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUQa1Bvb2xUb3RhbE1hcmtldAkAZAIFEXRvdGFsQW1vdW50TWFya2V0BQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa1Bvb2xUb3RhbE1hcmtldExvYW4JAGQCBRV0b3RhbEFtb3VudE1hcmtldExvYW4FDHN0YWtlZEFtb3VudAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRZrVXNlclBvc2l0aW9uSW5QTWFya2V0BgUDbmlsCQCUCgIFEHBvb2xJbnRlcmVzdExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4JAGQCBQ90b3RhbEFtb3VudExvYW4FDHN0YWtlZEFtb3VudAUDbmlsAwUNc3Rha2VUb01hcmtldAkAlAoCBRhwb29sSW50ZXJlc3RNYXJrZXROb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUQa1Bvb2xUb3RhbE1hcmtldAkAZAIFEXRvdGFsQW1vdW50TWFya2V0BQxzdGFrZWRBbW91bnQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUWa1VzZXJQb3NpdGlvbkluUE1hcmtldAYFA25pbAkAlAoCBRJwb29sSW50ZXJlc3ROb0xvYW4FA25pbAQPY3VyUG9vbEludGVyZXN0CAUNJHQwMjY1MzMyNzM1OAJfMQQHYWRFbnRyeQgFDSR0MDI2NTMzMjczNTgCXzIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgULdG90YWxBbW91bnQFDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBQ1rVXNlclBvc2l0aW9uBQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUVa1VzZXJQb3NpdGlvbkludGVyZXN0BQ9jdXJQb29sSW50ZXJlc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEWtVc2VyUG9zaXRpb25Qb29sBQRwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0FBnBvc051bQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAUNYXhseUZlZUFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwFB2FkRW50cnkBCWxpc3RUb0ludAIBYQRpdGVtCQDNCAIFAWEJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQEQZGlyZWN0U3dvcGZpQ1BNTQIFckFyZ3MHdG9rZW5UbwQEZEFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQVyQXJncwABBARwbXRQCQC1CQIJAJEDAgUFckFyZ3MAAgIBfAQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b2tlblRvAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANwbXQJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEJAJEDAgUEcG10UAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEcG10UAABBQNuaWwEC21pblRvUmVjaXZlCQCRAwIFBXJBcmdzAAMEA2ludgkA/AcEBQRkQXBwAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCBQttaW5Ub1JlY2l2ZQUDbmlsBQNuaWwFA3BtdAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3Rva2VuVG8FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgETZGlyZWN0Um91dGluZ1N3b3BmaQIFckFyZ3MHdG9rZW5UbwQEZEFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQVyQXJncwABBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3Rva2VuVG8DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA3BtdAQEcG10UAkAtQkCCQCRAwIFBXJBcmdzAAICAXwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQkAkQMCBQRwbXRQAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRwbXRQAAEFA25pbAQEYXJncwQFZUFyZ3MJALUJAgkAkQMCBQVyQXJncwADAgF8BApleGNoYW5nZXJzCQC1CQIJAJEDAgUFZUFyZ3MAAAIBLAQOZXhjaGFuZ2Vyc1R5cGUJALUJAgkAkQMCBQVlQXJncwABAgEsBAVhcmdzMQoAAiRsCQC1CQIJAJEDAgUFZUFyZ3MAAgIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJbGlzdFRvSW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADBAVhcmdzMgoAAiRsCQC1CQIJAJEDAgUFZUFyZ3MAAwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJbGlzdFRvSW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADBBFyb3V0aW5nQXNzZXRzS2V5cwkAtQkCCQCRAwIFBWVBcmdzAAQCASwEC21pblRvUmVjaXZlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFZUFyZ3MABQkAzAgCBQpleGNoYW5nZXJzCQDMCAIFDmV4Y2hhbmdlcnNUeXBlCQDMCAIFBWFyZ3MxCQDMCAIFBWFyZ3MyCQDMCAIFEXJvdXRpbmdBc3NldHNLZXlzCQDMCAIFC21pblRvUmVjaXZlBQNuaWwEA2ludgkA/AcEBQRkQXBwAgxyb3V0aW5nVHJhZGUFBGFyZ3MFA3BtdAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3Rva2VuVG8FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEKY2FwaXRhbGl6ZQkEcG9vbAVwVHlwZQd0b2tlbklkC3Rva2VuQW1vdW50A0FJZANCSWQEYmFsQQRiYWxCB3NoYXJlSWQDAwkBAiE9AgUHdG9rZW5JZAUDQUlkCQECIT0CBQd0b2tlbklkBQNCSWQHCQACAQILV3JvbmcgYXNzZXQEEHRvdGFsU2hhcmVBbW91bnQJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wDCQAAAgUQdG90YWxTaGFyZUFtb3VudAAACQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFC3Rva2VuQW1vdW50CQDZBAEFB3Rva2VuSWQFA25pbAAABBh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQRdG90YWxNYXJrZXRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRBrUG9vbFRvdGFsTWFya2V0AAAEC2xvYW5QZXJjZW50CQBrAwUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQZTQ0FMRTgJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRF0b3RhbE1hcmtldEFtb3VudAQQdG9rZW5zRm9yRmVlTG9hbgkAawMFC3Rva2VuQW1vdW50BQtsb2FuUGVyY2VudAUGU0NBTEU4BBJ0b2tlbnNGb3JGZWVOb0xvYW4JAGUCBQt0b2tlbkFtb3VudAUQdG9rZW5zRm9yRmVlTG9hbgQLYXhseUZlZUxvYW4JAGsDBRB0b2tlbnNGb3JGZWVMb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFDENBUF9GRUVfTE9BTgUKRkVFX1NDQUxFNgQNYXhseUZlZU5vTG9hbgkAawMFEnRva2Vuc0ZvckZlZU5vTG9hbgkBCmdldEF4bHlGZWUCBQRwb29sBQ9DQVBfRkVFX05PX0xPQU4FCkZFRV9TQ0FMRTYEB2F4bHlGZWUJAGQCBQtheGx5RmVlTG9hbgUNYXhseUZlZU5vTG9hbgQNJHQwMzAyNzUzMDM3NQMJAAACBQd0b2tlbklkBQNBSWQJAJQKAgkAZQIFC3Rva2VuQW1vdW50BQdheGx5RmVlAAAJAJQKAgAACQBlAgULdG9rZW5BbW91bnQFB2F4bHlGZWUEBHBtdEEIBQ0kdDAzMDI3NTMwMzc1Al8xBARwbXRCCAUNJHQwMzAyNzUzMDM3NQJfMgQNJHQwMzAzNzgzMDQ4OQkBD3JlcGxlbmlzaEJ5VHlwZQsFBXBUeXBlBQRwb29sBQZOT19GRUUFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBwQMc3Rha2VkQW1vdW50CAUNJHQwMzAzNzgzMDQ4OQJfMQQCbmYIBQ0kdDAzMDM3ODMwNDg5Al8yBBNjdXJQb29sSW50ZXJlc3RMb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4AAAQVY3VyUG9vbEludGVyZXN0Tm9Mb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAABApzdGFrZWRMb2FuCQBrAwUMc3Rha2VkQW1vdW50BQtsb2FuUGVyY2VudAUGU0NBTEU4BAxzdGFrZWROb0xvYW4JAGUCBQxzdGFrZWRBbW91bnQFCnN0YWtlZExvYW4ED25ld0ludGVyZXN0TG9hbgMJAGYCBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAkAZAIFE2N1clBvb2xJbnRlcmVzdExvYW4JAGsDBQpzdGFrZWRMb2FuBQdTQ0FMRTEwBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAQRbmV3SW50ZXJlc3ROb0xvYW4DCQBmAgkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAACQBkAgUVY3VyUG9vbEludGVyZXN0Tm9Mb2FuCQBrAwUMc3Rha2VkTm9Mb2FuBQdTQ0FMRTEwCQBlAgUQdG90YWxTaGFyZUFtb3VudAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgUPbmV3SW50ZXJlc3RMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4FEW5ld0ludGVyZXN0Tm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBkAgUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQpzdGFrZWRMb2FuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCG1vbmV5Qm94BQdheGx5RmVlCQEOYXNzZXRJZEZyb21TdHIBBQd0b2tlbklkBQNuaWwFDHN0YWtlZEFtb3VudAEWY2FwaXRhbGl6ZVB1enpsZU1hcmtldAMEcG9vbAVwVHlwZQdzaGFyZUlkBBB0b3RhbFNoYXJlQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBA1tYXJrZXRCYWxhbmNlCQDwBwIFC3BNYXJrZXRBZGRyCQDZBAEFB3NoYXJlSWQDCQAAAgUNbWFya2V0QmFsYW5jZQUNbWFya2V0QmFsYW5jZQQPbWFya2V0QXZhaWxhYmxlCgABQAkA/AcEBQ9wTWFya2V0UmVzdEFkZHICHGFzc2V0U3VwcGx5QnlBZGRyZXNzUkVBRE9OTFkJAMwIAgkApQgBBQtwTWFya2V0QWRkcgkAzAgCBQdzaGFyZUlkCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFD21hcmtldEF2YWlsYWJsZQUPbWFya2V0QXZhaWxhYmxlBBF0b3RhbE1hcmtldEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEGtQb29sVG90YWxNYXJrZXQAAAQZdG90YWxNYXJrZXRBbW91bnRXaXRoTG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFFGtQb29sVG90YWxNYXJrZXRMb2FuAAADAwkAAAIFEXRvdGFsTWFya2V0QW1vdW50AAAJAGYCBQ9tYXJrZXRBdmFpbGFibGUAAAcEDnVuc3Rha2VkQW1vdW50CQEJdW5zdGFrZUxQBQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFD21hcmtldEF2YWlsYWJsZQYDCQAAAgUOdW5zdGFrZWRBbW91bnQFDnVuc3Rha2VkQW1vdW50AwkAZgIFDW1hcmtldEJhbGFuY2UFDnVuc3Rha2VkQW1vdW50CQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFDnVuc3Rha2VkQW1vdW50CQDZBAEFB3NoYXJlSWQFA25pbAAACQCUCgIFA25pbAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAljYXBBbW91bnQJAGUCBQ9tYXJrZXRBdmFpbGFibGUFEXRvdGFsTWFya2V0QW1vdW50AwkAZwIAAAUJY2FwQW1vdW50CQCUCgIFA25pbAAABBFtYXJrZXRMb2FuUGVyY2VudAkAawMFGXRvdGFsTWFya2V0QW1vdW50V2l0aExvYW4FBlNDQUxFOAURdG90YWxNYXJrZXRBbW91bnQEFnRva2Vuc01hcmtldEZvckZlZUxvYW4JAGsDBQljYXBBbW91bnQFEW1hcmtldExvYW5QZXJjZW50BQZTQ0FMRTgEG3Rva2Vuc01hcmtldEZvckZvckZlZU5vTG9hbgkAZQIFCWNhcEFtb3VudAUWdG9rZW5zTWFya2V0Rm9yRmVlTG9hbgQRYXhseU1hcmtldEZlZUxvYW4JAGsDBRZ0b2tlbnNNYXJrZXRGb3JGZWVMb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFDENBUF9GRUVfTE9BTgUKRkVFX1NDQUxFNgQTYXhseU1hcmtldEZlZU5vTG9hbgkAawMFG3Rva2Vuc01hcmtldEZvckZvckZlZU5vTG9hbgkBCmdldEF4bHlGZWUCBQRwb29sBQ9DQVBfRkVFX05PX0xPQU4FCkZFRV9TQ0FMRTYEDWF4bHlNYXJrZXRGZWUJAGQCBRFheGx5TWFya2V0RmVlTG9hbgUTYXhseU1hcmtldEZlZU5vTG9hbgMJAGYCBQ1heGx5TWFya2V0RmVlBQ1tYXJrZXRCYWxhbmNlCQCUCgIFA25pbAAABBJzdGFrZWRNYXJrZXRBbW91bnQJAGUCBQljYXBBbW91bnQFDWF4bHlNYXJrZXRGZWUEEHN0YWtlZE1hcmtldExvYW4JAGsDBRJzdGFrZWRNYXJrZXRBbW91bnQFEW1hcmtldExvYW5QZXJjZW50BQZTQ0FMRTgEEnN0YWtlZE1hcmtldE5vTG9hbgkAZQIFEnN0YWtlZE1hcmtldEFtb3VudAUQc3Rha2VkTWFya2V0TG9hbgQZY3VyUG9vbEludGVyZXN0TWFya2V0TG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFF2tQb29sSW50ZXJlc3RNYXJrZXRMb2FuAAAEG2N1clBvb2xJbnRlcmVzdE1hcmtldE5vTG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFGWtQb29sSW50ZXJlc3RNYXJrZXROb0xvYW4AAAQVbmV3SW50ZXJlc3RNYXJrZXRMb2FuAwkAZgIFGXRvdGFsTWFya2V0QW1vdW50V2l0aExvYW4AAAkAZAIFGWN1clBvb2xJbnRlcmVzdE1hcmtldExvYW4JAGsDBRBzdGFrZWRNYXJrZXRMb2FuBQdTQ0FMRTEwBRl0b3RhbE1hcmtldEFtb3VudFdpdGhMb2FuAAAEF25ld0ludGVyZXN0TWFya2V0Tm9Mb2FuAwkAZgIJAGUCBRF0b3RhbE1hcmtldEFtb3VudAUZdG90YWxNYXJrZXRBbW91bnRXaXRoTG9hbgAACQBkAgUbY3VyUG9vbEludGVyZXN0TWFya2V0Tm9Mb2FuCQBrAwUSc3Rha2VkTWFya2V0Tm9Mb2FuBQdTQ0FMRTEwCQBlAgURdG90YWxNYXJrZXRBbW91bnQFGXRvdGFsTWFya2V0QW1vdW50V2l0aExvYW4AAAQOdW5zdGFrZWRBbW91bnQJAQl1bnN0YWtlTFAFBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUNYXhseU1hcmtldEZlZQYDCQAAAgUOdW5zdGFrZWRBbW91bnQFDnVuc3Rha2VkQW1vdW50CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUXa1Bvb2xJbnRlcmVzdE1hcmtldExvYW4FFW5ld0ludGVyZXN0TWFya2V0TG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRlrUG9vbEludGVyZXN0TWFya2V0Tm9Mb2FuBRduZXdJbnRlcmVzdE1hcmtldE5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRBrUG9vbFRvdGFsTWFya2V0CQBkAgURdG90YWxNYXJrZXRBbW91bnQFEnN0YWtlZE1hcmtldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrUG9vbFRvdGFsTWFya2V0TG9hbgkAZAIFGXRvdGFsTWFya2V0QW1vdW50V2l0aExvYW4FEHN0YWtlZE1hcmtldExvYW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFDWF4bHlNYXJrZXRGZWUJAQ5hc3NldElkRnJvbVN0cgEFB3NoYXJlSWQFA25pbAUSc3Rha2VkTWFya2V0QW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMFBHVzZXIEcG9vbAVwb3NJZAhib3Jyb3dlZAtpc01hcmtldFBvcwQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgIQVW5rbm93biBwb3NpdGlvbgQMdXNlckludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAQScG9vbEludGVyZXN0Tm9Mb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAABBBwb29sSW50ZXJlc3RMb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4AAAQYcG9vbEludGVyZXN0TWFya2V0Tm9Mb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUZa1Bvb2xJbnRlcmVzdE1hcmtldE5vTG9hbgAABBZwb29sSW50ZXJlc3RNYXJrZXRMb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUXa1Bvb2xJbnRlcmVzdE1hcmtldExvYW4AAAQMcG9vbEludGVyZXN0AwUIYm9ycm93ZWQDBQtpc01hcmtldFBvcwUWcG9vbEludGVyZXN0TWFya2V0TG9hbgUQcG9vbEludGVyZXN0TG9hbgMFC2lzTWFya2V0UG9zBRhwb29sSW50ZXJlc3RNYXJrZXROb0xvYW4FEnBvb2xJbnRlcmVzdE5vTG9hbgkAZAIFB3BBbW91bnQJAGsDBQdwQW1vdW50CQBlAgUMcG9vbEludGVyZXN0BQx1c2VySW50ZXJlc3QFB1NDQUxFMTABD2NhbGNTdG9wTG9zc0ZlZQQEcG9vbAppc0JvcnJvd2VkCHN0b3BMb3NzCmxwV2l0aGRyYXcEB2ZlZVR5cGUDBQppc0JvcnJvd2VkBQ1TVE9QTE9TU19MT0FOBRRTVE9QTE9TU19GRUVfTk9fTE9BTgMFCHN0b3BMb3NzCQBrAwUKbHBXaXRoZHJhdwkBCmdldEF4bHlGZWUCBQRwb29sBQdmZWVUeXBlBQpGRUVfU0NBTEU2AAABDndpdGhkcmF3VG9Vc2VyBQR1c2VyBHBvb2wFcG9zSWQIc3RvcExvc3MNd2l0aGRyYXdUb2tlbgQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgIQVW5rbm93biBwb3NpdGlvbgQKZnJvbU1hcmtldAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFmtVc2VyUG9zaXRpb25JblBNYXJrZXQHBAppc0JvcnJvd2VkCQBmAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEWtVc2VyQm9ycm93QW1vdW50AAAAAAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBQUEdXNlcgUEcG9vbAUFcG9zSWQFCmlzQm9ycm93ZWQFCmZyb21NYXJrZXQEDnBvb2xUb3RhbFNoYXJlCQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBBJwb29sVG90YWxTaGFyZUxvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQRdG90YWxNYXJrZXRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRBrUG9vbFRvdGFsTWFya2V0AAAEGXRvdGFsTWFya2V0QW1vdW50V2l0aExvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRRrUG9vbFRvdGFsTWFya2V0TG9hbgAABAh1c2VyQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHVzZXIECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAgxVbmtub3duIHBvb2wEDSR0MDM2NTQwMzY2MTIJAQtnZXRQb29sRGF0YQIFCHBvb2xBZGRyBQVwVHlwZQQGaWRBU3RyCAUNJHQwMzY1NDAzNjYxMgJfMQQGaWRCU3RyCAUNJHQwMzY1NDAzNjYxMgJfMgQEYmFsQQgFDSR0MDM2NTQwMzY2MTICXzMEBGJhbEIIBQ0kdDAzNjU0MDM2NjEyAl80BAdzaGFyZUlkCAUNJHQwMzY1NDAzNjYxMgJfNQQNJHQwMzY2MTUzNjY4MgkAlAoCCQEOYXNzZXRJZEZyb21TdHIBBQZpZEFTdHIJAQ5hc3NldElkRnJvbVN0cgEFBmlkQlN0cgQDaWRBCAUNJHQwMzY2MTUzNjY4MgJfMQQDaWRCCAUNJHQwMzY2MTUzNjY4MgJfMgQLc3RvcExvc3NGZWUJAQ9jYWxjU3RvcExvc3NGZWUEBQRwb29sBQppc0JvcnJvd2VkBQhzdG9wTG9zcwUPdXNlckNhbldpdGhkcmF3BAlwcm94eUFkZHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbFByb3h5QWRkcgIABAtjQmFsQUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUDaWRBAwkAAAIFC2NCYWxBQmVmb3JlBQtjQmFsQUJlZm9yZQQLY0JhbEJCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQgMJAAACBQtjQmFsQkJlZm9yZQULY0JhbEJCZWZvcmUEA2ludgMJAAACBQVwVHlwZQUHU0ZfUE9PTAQDaW52CQEJdW5zdGFrZUxQBQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFC3N0b3BMb3NzRmVlBQpmcm9tTWFya2V0AwkAAAIFA2ludgUDaW52CQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIId2l0aGRyYXcJAMwIAgkAzAgCCQCkAwEJAGUCBQ91c2VyQ2FuV2l0aGRyYXcFC3N0b3BMb3NzRmVlBQNuaWwFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBANpbnYJAQl1bnN0YWtlTFAFBQRwb29sBQVwVHlwZQUHc2hhcmVJZAkAZAIFD3VzZXJDYW5XaXRoZHJhdwULc3RvcExvc3NGZWUFCmZyb21NYXJrZXQDCQAAAgUDaW52BQNpbnYDCQAAAgUJcHJveHlBZGRyAgAJAPwHBAUIcG9vbEFkZHICA2dldAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQdzaGFyZUlkBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQlwcm94eUFkZHICE3d4V2l0aGRyYXdUd29Ub2tlbnMJAMwIAgUEcG9vbAkAzAgCBQZpZEFTdHIJAMwIAgUGaWRCU3RyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEPdW5rbm93blBvb2xUeXBlAAMJAAACBQNpbnYFA2ludgQKY0JhbEFBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUDaWRBAwkAAAIFCmNCYWxBQWZ0ZXIFCmNCYWxBQWZ0ZXIECmNCYWxCQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQgMJAAACBQpjQmFsQkFmdGVyBQpjQmFsQkFmdGVyBA0kdDAzNzY5MDM3Nzc5CQCUCgIJAGUCBQpjQmFsQUFmdGVyBQtjQmFsQUJlZm9yZQkAZQIFCmNCYWxCQWZ0ZXIFC2NCYWxCQmVmb3JlBA10b2tlbnNBbW91bnRBCAUNJHQwMzc2OTAzNzc3OQJfMQQNdG9rZW5zQW1vdW50QggFDSR0MDM3NjkwMzc3NzkCXzIEDSR0MDM3NzgyMzkwMTgDBQppc0JvcnJvd2VkBAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQEBGRlYnQKAAFACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACDGdldEFzc2V0RGVidAkAzAgCBwkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQJAMwIAgULYm9ycm93QXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQRkZWJ0BQRkZWJ0BA1hbW91bnRUb0dldEV4AwMJAAACBQtib3Jyb3dBc3NldAUGaWRBU3RyCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QQcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRBAwMJAAACBQtib3Jyb3dBc3NldAUGaWRCU3RyCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QgcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRCAAAEBWV4SW52AwkAZgIFDWFtb3VudFRvR2V0RXgAAAkBEGV4Y2hhbmdlRGlyZWN0bHkIBQVwVHlwZQUEcG9vbAUGaWRBU3RyBQZpZEJTdHIJAGUCBQRiYWxBBQ10b2tlbnNBbW91bnRBCQBlAgUEYmFsQgUNdG9rZW5zQW1vdW50QgUNYW1vdW50VG9HZXRFeAULYm9ycm93QXNzZXQFA25pbAMJAAACBQVleEludgUFZXhJbnYED2NCYWxBQWZ0ZXJSZXBheQkBDmFjY291bnRCYWxhbmNlAQUDaWRBAwkAAAIFD2NCYWxBQWZ0ZXJSZXBheQUPY0JhbEFBZnRlclJlcGF5BA9jQmFsQkFmdGVyUmVwYXkJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQgMJAAACBQ9jQmFsQkFmdGVyUmVwYXkFD2NCYWxCQWZ0ZXJSZXBheQQLY2xvc2VEYnRJbnYDCQBmAgUEZGVidAAACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACCHJlcGF5Rm9yCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQtib3Jyb3dBc3NldAUEZGVidAUDbmlsAAADCQAAAgULY2xvc2VEYnRJbnYFC2Nsb3NlRGJ0SW52AwkAAAIFC2JvcnJvd0Fzc2V0BQZpZEFTdHIJAJQKAgkAZQIJAGUCBQ9jQmFsQUFmdGVyUmVwYXkFC2NCYWxBQmVmb3JlBQRkZWJ0CQBlAgUPY0JhbEJBZnRlclJlcGF5BQtjQmFsQkJlZm9yZQkAlAoCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQkAZQIJAGUCBQ9jQmFsQkFmdGVyUmVwYXkFC2NCYWxCQmVmb3JlBQRkZWJ0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFDXRva2Vuc0Ftb3VudEEFDXRva2Vuc0Ftb3VudEIEB3RvVXNlckEIBQ0kdDAzNzc4MjM5MDE4Al8xBAd0b1VzZXJCCAUNJHQwMzc3ODIzOTAxOAJfMgQUcG9vbFRvdGFsTG9hbkVudHJpZXMDBQppc0JvcnJvd2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgUScG9vbFRvdGFsU2hhcmVMb2FuBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsBBZwb29sVG90YWxNYXJrZXRFbnRyaWVzAwUKZnJvbU1hcmtldAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEGtQb29sVG90YWxNYXJrZXQJAGUCBRF0b3RhbE1hcmtldEFtb3VudAUPdXNlckNhbldpdGhkcmF3BQNuaWwDBQppc0JvcnJvd2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFGtQb29sVG90YWxNYXJrZXRMb2FuCQBlAgUZdG90YWxNYXJrZXRBbW91bnRXaXRoTG9hbgUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsBA0kdDAzOTQzMTM5ODI2AwMJAAACBQ13aXRoZHJhd1Rva2VuBQZpZEFTdHIJAGYCBQd0b1VzZXJCAAAHBAZhbXRHZXQJARVleGNoYW5nZURpcmVjdGx5Tm9MaW0FBQVwVHlwZQUEcG9vbAUHdG9Vc2VyQgUGaWRCU3RyBQZpZEFTdHIDCQAAAgUGYW10R2V0BQZhbXRHZXQJAJQKAgkAZAIFB3RvVXNlckEFBmFtdEdldAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwMJAAACBQ13aXRoZHJhd1Rva2VuBQZpZEJTdHIJAGYCBQd0b1VzZXJBAAAHBAZhbXRHZXQJARVleGNoYW5nZURpcmVjdGx5Tm9MaW0FBQVwVHlwZQUEcG9vbAUHdG9Vc2VyQQUGaWRBU3RyBQZpZEJTdHIDCQAAAgUGYW10R2V0BQZhbXRHZXQJAJQKAgAACQBkAgUHdG9Vc2VyQgUGYW10R2V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFB3RvVXNlckEFB3RvVXNlckIEC3RvVXNlckFDYWxjCAUNJHQwMzk0MzEzOTgyNgJfMQQLdG9Vc2VyQkNhbGMIBQ0kdDAzOTQzMTM5ODI2Al8yBAdlbnRyaWVzCQDOCAIJAM4IAgkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJQb3NpdGlvblBvb2wJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFmtVc2VyUG9zaXRpb25JblBNYXJrZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIFDnBvb2xUb3RhbFNoYXJlBQ91c2VyQ2FuV2l0aGRyYXcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIdXNlckFkZHIFC3RvVXNlckFDYWxjBQNpZEEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIdXNlckFkZHIFC3RvVXNlckJDYWxjBQNpZEIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFC3N0b3BMb3NzRmVlCQDZBAEFB3NoYXJlSWQFA25pbAUUcG9vbFRvdGFsTG9hbkVudHJpZXMFFnBvb2xUb3RhbE1hcmtldEVudHJpZXMJAQ5nZXRDdXJzRW50cmllcwQFBmlkQVN0cgUGaWRCU3RyBQdzaGFyZUlkBQNuaWwJAJQKAgUHZW50cmllcwkAzAgCBQt0b1VzZXJBQ2FsYwkAzAgCBQt0b1VzZXJCQ2FsYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxsaXF1aWRhdGVQb3MEBmNhbGxlcgR1c2VyBXBvc0lkB2xBbW91bnQEBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJQb3NpdGlvblBvb2wCC25vIHBvc2l0aW9uBAxib3Jyb3dBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEWtVc2VyQm9ycm93QW1vdW50AhxUaGVyZSBhcmUgbm8gYm9ycm93IHBvc2l0aW9uBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBApmcm9tTWFya2V0CQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUWa1VzZXJQb3NpdGlvbkluUE1hcmtldAcED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwUFBHVzZXIFBHBvb2wFBXBvc0lkBgUKZnJvbU1hcmtldAQOcG9vbFRvdGFsU2hhcmUJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wEEnBvb2xUb3RhbFNoYXJlTG9hbgkBGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBQRwb29sBBF0b3RhbE1hcmtldEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEGtQb29sVG90YWxNYXJrZXQAAAQZdG90YWxNYXJrZXRBbW91bnRXaXRoTG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFFGtQb29sVG90YWxNYXJrZXRMb2FuAAAECHVzZXJBZGRyCQEHQWRkcmVzcwEJANkEAQUEdXNlcgQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwNDE3NTE0MTgyMwkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBAZpZEFTdHIIBQ0kdDA0MTc1MTQxODIzAl8xBAZpZEJTdHIIBQ0kdDA0MTc1MTQxODIzAl8yBARiYWxBCAUNJHQwNDE3NTE0MTgyMwJfMwQEYmFsQggFDSR0MDQxNzUxNDE4MjMCXzQEB3NoYXJlSWQIBQ0kdDA0MTc1MTQxODIzAl81BA0kdDA0MTgyNjQxODkzCQCUCgIJAQ5hc3NldElkRnJvbVN0cgEFBmlkQVN0cgkBDmFzc2V0SWRGcm9tU3RyAQUGaWRCU3RyBANpZEEIBQ0kdDA0MTgyNjQxODkzAl8xBANpZEIIBQ0kdDA0MTgyNjQxODkzAl8yBAlwcm94eUFkZHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbFByb3h5QWRkcgIABAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQEEHBvb2xJbnRlcmVzdExvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgAABBZwb29sSW50ZXJlc3RNYXJrZXRMb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUXa1Bvb2xJbnRlcmVzdE1hcmtldExvYW4AAAMJAAACBQxib3Jyb3dBbW91bnQAAAkAAgECK1lvdSBjYW4ndCBsaXF1aWRhdGUgcG9zaXRpb24gd2l0aG91dCBib3Jyb3cEC2NCYWxBQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQNpZEEDCQAAAgULY0JhbEFCZWZvcmUFC2NCYWxBQmVmb3JlBAtjQmFsQkJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUDaWRCAwkAAAIFC2NCYWxCQmVmb3JlBQtjQmFsQkJlZm9yZQQDaW52AwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIId2l0aGRyYXcJAMwIAgkAzAgCCQCkAwEFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAQDaW52CQEJdW5zdGFrZUxQBQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwUKZnJvbU1hcmtldAMJAAACBQNpbnYFA2ludgMJAAACBQlwcm94eUFkZHICAAkA/AcEBQhwb29sQWRkcgIDZ2V0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwUDbmlsCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCXByb3h5QWRkcgITd3hXaXRoZHJhd1R3b1Rva2VucwkAzAgCBQRwb29sCQDMCAIFBmlkQVN0cgkAzAgCBQZpZEJTdHIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUHc2hhcmVJZAUPdXNlckNhbldpdGhkcmF3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQ91bmtub3duUG9vbFR5cGUAAwkAAAIFA2ludgUDaW52BApjQmFsQUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQNpZEEDCQAAAgUKY0JhbEFBZnRlcgUKY0JhbEFBZnRlcgQKY0JhbEJBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUDaWRCAwkAAAIFCmNCYWxCQWZ0ZXIFCmNCYWxCQWZ0ZXIEDSR0MDQzMDc3NDMxNjYJAJQKAgkAZQIFCmNCYWxBQWZ0ZXIFC2NCYWxBQmVmb3JlCQBlAgUKY0JhbEJBZnRlcgULY0JhbEJCZWZvcmUEDXRva2Vuc0Ftb3VudEEIBQ0kdDA0MzA3NzQzMTY2Al8xBA10b2tlbnNBbW91bnRCCAUNJHQwNDMwNzc0MzE2NgJfMgQNYW1vdW50VG9HZXRFeAMDCQAAAgULYm9ycm93QXNzZXQFBmlkQVN0cgkAZgIFB2xBbW91bnQFDXRva2Vuc0Ftb3VudEEHCQBlAgUHbEFtb3VudAUNdG9rZW5zQW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFBmlkQlN0cgkAZgIFB2xBbW91bnQFDXRva2Vuc0Ftb3VudEIHCQBlAgUHbEFtb3VudAUNdG9rZW5zQW1vdW50QgAABAVleEludgMJAGYCBQ1hbW91bnRUb0dldEV4AAAJARBleGNoYW5nZURpcmVjdGx5CAUFcFR5cGUFBHBvb2wFBmlkQVN0cgUGaWRCU3RyCQBlAgUEYmFsQQUNdG9rZW5zQW1vdW50QQkAZQIFBGJhbEIFDXRva2Vuc0Ftb3VudEIFDWFtb3VudFRvR2V0RXgFC2JvcnJvd0Fzc2V0BQNuaWwDCQAAAgUFZXhJbnYFBWV4SW52BA9jQmFsQUFmdGVyUmVwYXkJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQQMJAAACBQ9jQmFsQUFmdGVyUmVwYXkFD2NCYWxBQWZ0ZXJSZXBheQQPY0JhbEJBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBBQNpZEIDCQAAAgUPY0JhbEJBZnRlclJlcGF5BQ9jQmFsQkFmdGVyUmVwYXkEDSR0MDQzNjcyNDM4OTkDCQAAAgULYm9ycm93QXNzZXQFBmlkQVN0cgkAlAoCCQBlAgkAZQIFD2NCYWxBQWZ0ZXJSZXBheQULY0JhbEFCZWZvcmUFB2xBbW91bnQJAGUCBQ9jQmFsQkFmdGVyUmVwYXkFC2NCYWxCQmVmb3JlCQCUCgIJAGUCBQ9jQmFsQUFmdGVyUmVwYXkFC2NCYWxBQmVmb3JlCQBlAgkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUFB2xBbW91bnQEB3RvVXNlckEIBQ0kdDA0MzY3MjQzODk5Al8xBAd0b1VzZXJCCAUNJHQwNDM2NzI0Mzg5OQJfMgQNJHQwNDM5MDI0Mzk3OQkBD2dldFBvb2xCYWxhbmNlcwQFCHBvb2xBZGRyBQVwVHlwZQUGaWRBU3RyBQZpZEJTdHIECWJhbEFBZnRlcggFDSR0MDQzOTAyNDM5NzkCXzEECWJhbEJBZnRlcggFDSR0MDQzOTAyNDM5NzkCXzIEDSR0MDQzOTgyNDQxMTMJAQ9yZXBsZW5pc2hCeVR5cGULBQVwVHlwZQUEcG9vbAUGTk9fRkVFBQd0b1VzZXJBBQZpZEFTdHIFB3RvVXNlckIFBmlkQlN0cgUEYmFsQQUEYmFsQgUHc2hhcmVJZAUKZnJvbU1hcmtldAQKdXNlclN0YWtlZAgFDSR0MDQzOTgyNDQxMTMCXzEEB2F4bHlGZWUIBQ0kdDA0Mzk4MjQ0MTEzAl8yBA91c2VyTHBMaXF1ZGF0ZWQJAGUCBQ91c2VyQ2FuV2l0aGRyYXcFCnVzZXJTdGFrZWQEDSR0MDQ0MTcyNDQ1MTcDBQpmcm9tTWFya2V0CQCUCgIFFnBvb2xJbnRlcmVzdE1hcmtldExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUQa1Bvb2xUb3RhbE1hcmtldAkAZQIFEXRvdGFsTWFya2V0QW1vdW50BQ91c2VyTHBMaXF1ZGF0ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa1Bvb2xUb3RhbE1hcmtldExvYW4JAGUCBRl0b3RhbE1hcmtldEFtb3VudFdpdGhMb2FuBQ91c2VyTHBMaXF1ZGF0ZWQFA25pbAkAlAoCBRBwb29sSW50ZXJlc3RMb2FuBQNuaWwED2N1clBvb2xJbnRlcmVzdAgFDSR0MDQ0MTcyNDQ1MTcCXzEEFnBvb2xUb3RhbE1hcmtldEVudHJpZXMIBQ0kdDA0NDE3MjQ0NTE3Al8yCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGUCBQ5wb29sVG90YWxTaGFyZQUPdXNlckxwTGlxdWRhdGVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgUScG9vbFRvdGFsU2hhcmVMb2FuBQ91c2VyTHBMaXF1ZGF0ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAZQIFB3BBbW91bnQFD3VzZXJMcExpcXVkYXRlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QFD2N1clBvb2xJbnRlcmVzdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFB2xBbW91bnQJAQ5hc3NldElkRnJvbVN0cgEFC2JvcnJvd0Fzc2V0BQNuaWwFFnBvb2xUb3RhbE1hcmtldEVudHJpZXMJAQ5nZXRDdXJzRW50cmllcwQFBmlkQVN0cgUGaWRCU3RyBQdzaGFyZUlkBQNuaWwFD3VzZXJMcExpcXVkYXRlZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEMcGFyc2VSZXF1ZXN0AQlyZXF1ZXN0SWQEB3JlcXVlc3QJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkCQCsAgICE05vIHJlcXVlc3Qgd2l0aCBpZCAFCXJlcXVlc3RJZAIBLAQEdXNlcgkAkQMCBQdyZXF1ZXN0AAAEBHBvb2wJAJEDAgUHcmVxdWVzdAABBARwbXRBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAACBANBSWQJAJEDAgUHcmVxdWVzdAADBARwbXRCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAEBANCSWQJAJEDAgUHcmVxdWVzdAAFBARiYWxBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAGBARiYWxCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAHBAdzaGFyZUlkCQCRAwIFB3JlcXVlc3QACAQHYndBc3NldAkAkQMCBQdyZXF1ZXN0AAkECGJ3QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAKBA1zdGFrZVRvTWFya2V0CQAAAgkAkQMCBQdyZXF1ZXN0AAsCBHRydWUJAJ4KDAUEdXNlcgUEcG9vbAUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQFB2J3QXNzZXQFCGJ3QW1vdW50BQ1zdGFrZVRvTWFya2V0ARBjYWxjQm9ycm93QW1vdW50BgRwbXRBBHBtdEIDYUlkA2JJZAhsZXZlcmFnZQhib3Jyb3dJZAMDCQECIT0CBQhib3Jyb3dJZAUDYUlkCQECIT0CBQhib3Jyb3dJZAUDYklkBwkAAgECEldyb25nIGJvcnJvdyBhc3NldAQHZFByaWNlQQkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFA2FJZAUOa1ByaWNlSW5PcmFjbGUEB2RQcmljZUIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQNiSWQFDmtQcmljZUluT3JhY2xlBAZkZWNQckEJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNhSWQAAAAABQRET1dOBAZkZWNQckIJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNiSWQAAAAABQRET1dOBAxwYXlkSW5Eb2xsYXIJAGQCCQBrAwUHZFByaWNlQQUEcG10QQUGZGVjUHJBCQBrAwUHZFByaWNlQgUEcG10QgUGZGVjUHJCBA0kdDA0NjI0NTQ2MzQyAwkAAAIFCGJvcnJvd0lkBQNhSWQJAJQKAgUHZFByaWNlQQUGZGVjUHJBCQCUCgIFB2RQcmljZUIFBmRlY1ByQgQLYm9ycm93UHJpY2UIBQ0kdDA0NjI0NTQ2MzQyAl8xBAtib3Jyb3dEZWNQcggFDSR0MDQ2MjQ1NDYzNDICXzIJAGsDCQBrAwUMcGF5ZEluRG9sbGFyCQBlAgUIbGV2ZXJhZ2UAZABkBQtib3Jyb3dEZWNQcgULYm9ycm93UHJpY2UBEnBhcnNlUmVwbGVuaXNoUG10cwMEcG10cwNBSWQDQklkAwkAAAIJAJADAQUEcG10cwACAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIFBHBtdHMAAAdhc3NldElkBQNBSWQJAAIBAhVXcm9uZyBwYXltZW50IGFzc2V0IEEDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAgUEcG10cwABB2Fzc2V0SWQFA0JJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQgkAlAoCCAkAkQMCBQRwbXRzAAAGYW1vdW50CAkAkQMCBQRwbXRzAAEGYW1vdW50AwkAAAIJAJADAQUEcG10cwABAwkAAAIJAQxhc3NldElkVG9TdHIBCAkAkQMCBQRwbXRzAAAHYXNzZXRJZAUDQUlkCQCUCgIICQCRAwIFBHBtdHMAAAZhbW91bnQAAAMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAgUEcG10cwAAB2Fzc2V0SWQFA0JJZAkAlAoCAAAICQCRAwIFBHBtdHMAAAZhbW91bnQJAAIBAg1Xcm9uZyBwYXltZW50CQACAQIcT25lIG9yIHR3byBwYXltZW50cyBleHBlY3RlZAEPY2FsY1ByaWNlSW1wYWN0BARiYWxBBGJhbEIHbmV3QmFsQQduZXdCYWxCBANwcmkJAGgCCQBlAgUGU0NBTEU4CQBrAwkAawMFBGJhbEIFBlNDQUxFOAUEYmFsQQUGU0NBTEU4CQBrAwUHbmV3QmFsQgUGU0NBTEU4BQduZXdCYWxBAGQDCQBmAgAABQNwcmkJAGgCBQNwcmkA////////////AQUDcHJpARFjbGFpbUFuZENoZWNrQW1udAUEcG9vbAVwVHlwZQVjbGFpbQZhbW91bnQGY2hhbmdlBA0kdDA0NzM0MjQ4MDIyAwUFY2xhaW0JAQtjbGFpbUZhcm1lZAIFBXBUeXBlBQRwb29sBAxjbGFpbWVkQXNzZXQDCQAAAgUFcFR5cGUFB1NGX1BPT0wFBlNXT1BJRAMJAAACBQVwVHlwZQUHV1hfUE9PTAQMcHJveHlBZGRyU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xQcm94eUFkZHICAAQDaW52AwkBAiE9AgUMcHJveHlBZGRyU3RyAgAECXByb3h5QWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUMcHJveHlBZGRyU3RyBAxwcm94eUJhbGFuY2UJAPAHAgUJcHJveHlBZGRyBQRXWElEAwkAZgIFDHByb3h5QmFsYW5jZQAACQD8BwQFCXByb3h5QWRkcgIQd3hDbGFpbUZpbmFsaXplZAkAzAgCBQxwcm94eUJhbGFuY2UFA25pbAUDbmlsBQR1bml0BQR1bml0AwkAAAIFA2ludgUDaW52BQRXWElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEPdW5rbm93blBvb2xUeXBlAAkAlAoCBQZhbW91bnQFDGNsYWltZWRBc3NldAMJAAACBQ0kdDA0NzM0MjQ4MDIyBQ0kdDA0NzM0MjQ4MDIyBApjbGFpbUFzc2V0CAUNJHQwNDczNDI0ODAyMgJfMgQLY2xhaW1BbW91bnQIBQ0kdDA0NzM0MjQ4MDIyAl8xBANiYWwJAQ5hY2NvdW50QmFsYW5jZQEFCmNsYWltQXNzZXQDCQAAAgUDYmFsBQNiYWwDCQBmAgUGYW1vdW50BQNiYWwJAAIBAhlUbyBiaWcgYW1vdW50IHRvIGV4Y2hhbmdlCQCUCgIFC2NsYWltQW1vdW50BQpjbGFpbUFzc2V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuHAFpARNnZXRQb29sSW5mb1JFQURPTkxZAQRwb29sBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDQ4Mzg5NDg0NzkJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwNDgzODk0ODQ3OQJfMQQDQklkCAUNJHQwNDgzODk0ODQ3OQJfMgQEYmFsQQgFDSR0MDQ4Mzg5NDg0NzkCXzMEBGJhbEIIBQ0kdDA0ODM4OTQ4NDc5Al80BAdzaGFyZUlkCAUNJHQwNDgzODk0ODQ3OQJfNQQLc2hhcmVTdXBwbHkJAQ5nZXRTaGFyZVN1cHBseQMFCHBvb2xBZGRyBQVwVHlwZQUHc2hhcmVJZAkAlAoCBQNuaWwJAJgKBgUDQUlkBQNCSWQFB3NoYXJlSWQFBGJhbEEFBGJhbEIFC3NoYXJlU3VwcGx5AWkBGmdldFNoYXJlQXNzZXRQcmljZVJFQURPTkxZAQdzaGFyZUlkBAtzaGFyZVByaWNlcwkBDWdldFNoYXJlUHJpY2UBBQdzaGFyZUlkCQCUCgIFA25pbAULc2hhcmVQcmljZXMBaQEiZ2V0VXNlclBvc2l0aW9uU2hhcmVBbW91bnRSRUFET05MWQIEdXNlcgZwb3NOdW0EBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQZwb3NOdW0FEWtVc2VyUG9zaXRpb25Qb29sAhBVbmtub3duIHBvc2l0aW9uBAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQZwb3NOdW0FEWtVc2VyQm9ycm93QW1vdW50BApmcm9tTWFya2V0CQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQZwb3NOdW0FFmtVc2VyUG9zaXRpb25JblBNYXJrZXQHBA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMFBQR1c2VyBQRwb29sBQZwb3NOdW0JAGYCBQxib3Jyb3dBbW91bnQAAAUKZnJvbU1hcmtldAkAlAoCBQNuaWwFD3VzZXJDYW5XaXRoZHJhdwFpARdnZXRVc2VyUG9zaXRpb25SRUFET05MWQMEdXNlcgVwb29scwZwb3NOdW0KAQd1c2VyUG9zAgFhBHBvb2wEDSR0MDQ5NDc3NDk1NDcFAWEECXdBbW91bnRzQQgFDSR0MDQ5NDc3NDk1NDcCXzEECXdBbW91bnRzQggFDSR0MDQ5NDc3NDk1NDcCXzIEBWRlYnRzCAUNJHQwNDk0Nzc0OTU0NwJfMwQLZXFXQW1vdW50c0EIBQ0kdDA0OTQ3NzQ5NTQ3Al80BAtlcVdBbW91bnRzQggFDSR0MDQ5NDc3NDk1NDcCXzUEBWluZGV4CAUNJHQwNDk0Nzc0OTU0NwJfNgMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAUNa1VzZXJQb3NpdGlvbgkAmAoGCQDNCAIFCXdBbW91bnRzQQAACQDNCAIFCXdBbW91bnRzQgAACQDNCAIFBWRlYnRzAAAJAM0IAgULZXFXQW1vdW50c0EAAAkAzQgCBQtlcVdBbW91bnRzQgAACQBkAgUFaW5kZXgAAQQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDQ5ODI2NDk5MTYJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwNDk4MjY0OTkxNgJfMQQDQklkCAUNJHQwNDk4MjY0OTkxNgJfMgQEYmFsQQgFDSR0MDQ5ODI2NDk5MTYCXzMEBGJhbEIIBQ0kdDA0OTgyNjQ5OTE2Al80BAdzaGFyZUlkCAUNJHQwNDk4MjY0OTkxNgJfNQQMYm9ycm93QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCRAwIFBnBvc051bQUFaW5kZXgFEWtVc2VyQm9ycm93QW1vdW50AAAECmZyb21NYXJrZXQJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAUWa1VzZXJQb3NpdGlvbkluUE1hcmtldAcED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwUFBHVzZXIFBHBvb2wJAJEDAgUGcG9zTnVtBQVpbmRleAkAZgIFDGJvcnJvd0Ftb3VudAAABQpmcm9tTWFya2V0BA0kdDA1MDI2NjUwMzg2CQEaY2FsY1dpdGhkcmF3TFBGcm9tUG9vbFZpcnQECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwQId0Ftb3VudEEIBQ0kdDA1MDI2NjUwMzg2Al8xBAh3QW1vdW50QggFDSR0MDUwMjY2NTAzODYCXzIDCQBmAgUMYm9ycm93QW1vdW50AAAEC2JvcnJvd0Fzc2V0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4BRJrVXNlckJvcnJvd0Fzc2V0SWQEBGRlYnQKAAFACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACDGdldEFzc2V0RGVidAkAzAgCBwkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4CQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUEZGVidAUEZGVidAQNYW1vdW50VG9HZXRFeAMDCQAAAgULYm9ycm93QXNzZXQFA0FJZAkAZgIFBGRlYnQFCHdBbW91bnRBBwkAZQIFBGRlYnQFCHdBbW91bnRBAwMJAAACBQtib3Jyb3dBc3NldAUDQklkCQBmAgUEZGVidAUId0Ftb3VudEIHCQBlAgUEZGVidAUId0Ftb3VudEIAAAQLYW1vdW50VG9QYXkDCQBmAgUNYW1vdW50VG9HZXRFeAAAAwkAAAIFBXBUeXBlBQdTRl9QT09MBAJleAkBEWNhbGNBbW91bnRUb1BheVNGBwUEcG9vbAUDQUlkBQNCSWQFBGJhbEEFBGJhbEIFDWFtb3VudFRvR2V0RXgFC2JvcnJvd0Fzc2V0CAUCZXgCXzIDCQAAAgUFcFR5cGUFB1dYX1BPT0wEAmV4CQERY2FsY0Ftb3VudFRvUGF5V1gHBQRwb29sBQNBSWQFA0JJZAUEYmFsQQUEYmFsQgUNYW1vdW50VG9HZXRFeAULYm9ycm93QXNzZXQIBQJleAJfMgkBD3Vua25vd25Qb29sVHlwZQAAAAQNJHQwNTEyOTg1MTUxNwMJAAACBQtib3Jyb3dBc3NldAUDQUlkCQCUCgIJAGUCCQBkAgUId0Ftb3VudEEFDWFtb3VudFRvR2V0RXgFBGRlYnQJAGUCBQh3QW1vdW50QgULYW1vdW50VG9QYXkJAJQKAgkAZQIFCHdBbW91bnRBBQthbW91bnRUb1BheQkAZQIJAGQCBQh3QW1vdW50QgUNYW1vdW50VG9HZXRFeAUEZGVidAQKZXFXQW1vdW50QQgFDSR0MDUxMjk4NTE1MTcCXzEECmVxV0Ftb3VudEIIBQ0kdDA1MTI5ODUxNTE3Al8yCQCYCgYJAM0IAgUJd0Ftb3VudHNBBQh3QW1vdW50QQkAzQgCBQl3QW1vdW50c0IFCHdBbW91bnRCCQDNCAIFBWRlYnRzBQRkZWJ0CQDNCAIFC2VxV0Ftb3VudHNBBQplcVdBbW91bnRBCQDNCAIFC2VxV0Ftb3VudHNCBQplcVdBbW91bnRCCQBkAgUFaW5kZXgAAQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAmAoGCQDNCAIFCXdBbW91bnRzQQUId0Ftb3VudEEJAM0IAgUJd0Ftb3VudHNCBQh3QW1vdW50QgUFZGVidHMJAM0IAgUJd0Ftb3VudHNBBQh3QW1vdW50QQkAzQgCBQl3QW1vdW50c0IFCHdBbW91bnRCCQBkAgUFaW5kZXgAAQQNJHQwNTE3NzI1MTg4MwoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJgKBgUDbmlsBQNuaWwFA25pbAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHdXNlclBvcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAl3QW1vdW50c0EIBQ0kdDA1MTc3MjUxODgzAl8xBAl3QW1vdW50c0IIBQ0kdDA1MTc3MjUxODgzAl8yBAVkZWJ0cwgFDSR0MDUxNzcyNTE4ODMCXzMEC2VxV0Ftb3VudHNBCAUNJHQwNTE3NzI1MTg4MwJfNAQLZXFXQW1vdW50c0IIBQ0kdDA1MTc3MjUxODgzAl81CQCUCgIFA25pbAkAlwoFBQl3QW1vdW50c0EFCXdBbW91bnRzQgUFZGVidHMFC2VxV0Ftb3VudHNBBQtlcVdBbW91bnRzQgFpAQlyZXBsZW5pc2gEBHBvb2wIbGV2ZXJhZ2UIYm9ycm93SWQNc3Rha2VUb01hcmtldAkBC3ZhbHVlT3JFbHNlAgkBEGlzQWN0aXZlRm9yVXNlcnMABAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAMJAQEhAQkBDGlzUG9vbEFjdGl2ZQIFBHBvb2wFBXBUeXBlCQACAQIeUG9vbCBub3QgYWN0aXZlIGF0IHRoaXMgbW9tZW50AwMJAGYCAGQFCGxldmVyYWdlBgkAZgIFCGxldmVyYWdlAKwCCQACAQIfTGV2ZXJhZ2UgY2FuJ3QgYmUgPDEwMCBhbmQgPjMwMAMDCQEBIQEJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYW5Cb3Jyb3cJAGYCBQhsZXZlcmFnZQBkBwkAAgECHVlvdSBjYW4ndCBib3Jyb3cgaW4gdGhpcyBwb29sAwMFDXN0YWtlVG9NYXJrZXQJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFBHBvb2wFDGtQb29sUE1BcmtldAcHCQACAQImVGhpcyBwb29sIGNhbid0IHN0YWtlIHRvIHB1enpsZSBtYXJrZXQEDSR0MDUyNjQyNTI3MzIJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwNTI2NDI1MjczMgJfMQQDQklkCAUNJHQwNTI2NDI1MjczMgJfMgQEYmFsQQgFDSR0MDUyNjQyNTI3MzICXzMEBGJhbEIIBQ0kdDA1MjY0MjUyNzMyAl80BAdzaGFyZUlkCAUNJHQwNTI2NDI1MjczMgJfNQMDCQECIT0CBQhib3Jyb3dJZAUDQUlkCQECIT0CBQhib3Jyb3dJZAUDQklkBwkAAgECEldyb25nIGJvcnJvdyBhc3NldAQNJHQwNTI4MTM1Mjg3MgkBEnBhcnNlUmVwbGVuaXNoUG10cwMIBQFpCHBheW1lbnRzBQNBSWQFA0JJZAQEcG10QQgFDSR0MDUyODEzNTI4NzICXzEEBHBtdEIIBQ0kdDA1MjgxMzUyODcyAl8yBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQJbmV3UG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQUEdXNlcgMJAGYCBQhsZXZlcmFnZQBkBAxib3Jyb3dBbW91bnQJARBjYWxjQm9ycm93QW1vdW50BgUEcG10QQUEcG10QgUDQUlkBQNCSWQFCGxldmVyYWdlBQhib3Jyb3dJZAQHcmVxdWVzdAkAuQkCCQDMCAIFBHVzZXIJAMwIAgUEcG9vbAkAzAgCCQCkAwEFBHBtdEEJAMwIAgUDQUlkCQDMCAIJAKQDAQUEcG10QgkAzAgCBQNCSWQJAMwIAgkApAMBBQRiYWxBCQDMCAIJAKQDAQUEYmFsQgkAzAgCBQdzaGFyZUlkCQDMCAIFCGJvcnJvd0lkCQDMCAIJAKQDAQUMYm9ycm93QW1vdW50CQDMCAIJAKUDAQUNc3Rha2VUb01hcmtldAUDbmlsAgEsBAxuZXdSZXF1ZXN0SWQKAAFACQD8BwQFBHRoaXMCEGNyZWF0ZU5ld1JlcXVlc3QJAMwIAgUHcmVxdWVzdAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFDG5ld1JlcXVlc3RJZAUMbmV3UmVxdWVzdElkBARhcmdzCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFCW5ld1Bvc051bQkAzAgCBQdzaGFyZUlkCQDMCAIFCGJvcnJvd0lkCQDMCAIFDGJvcnJvd0Ftb3VudAkAzAgCCQClCAEFBHRoaXMJAMwIAgIRcmVwbGVuaXNoRnJvbUxhbmQJAMwIAgkApAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIFDG5ld1JlcXVlc3RJZAIYQ2FuJ3QgY3JlYXRlIG5ldyByZXF1ZXN0BQNuaWwEA2ludgkA/QcECQEOZ2V0TGVuZFNydkFkZHIAAg1mbGFzaFBvc2l0aW9uBQRhcmdzBQNuaWwDCQAAAgUDaW52BQNpbnYECnVzZXJTdGFrZWQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFCW5ld1Bvc051bQUNa1VzZXJQb3NpdGlvbgQNJHQwNTM4OTU1Mzk4OQkBD2dldFBvb2xCYWxhbmNlcwQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUDQUlkBQNCSWQDCQAAAgUNJHQwNTM4OTU1Mzk4OQUNJHQwNTM4OTU1Mzk4OQQHbmV3QmFsQggFDSR0MDUzODk1NTM5ODkCXzIEB25ld0JhbEEIBQ0kdDA1Mzg5NTUzOTg5Al8xBAhwckltcGFjdAkBD2NhbGNQcmljZUltcGFjdAQFBGJhbEEFBGJhbEIFB25ld0JhbEEFB25ld0JhbEIEDSR0MDU0MDU5NTQxNzQJARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUKdXNlclN0YWtlZAQId0Ftb3VudEEIBQ0kdDA1NDA1OTU0MTc0Al8xBAh3QW1vdW50QggFDSR0MDU0MDU5NTQxNzQCXzIJAJQKAgUDbmlsCQDMCAIFCHBySW1wYWN0CQDMCAIFCHdBbW91bnRBCQDMCAIFCHdBbW91bnRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDU0MjI3NTQzNTcJAQ9yZXBsZW5pc2hCeVR5cGULBQVwVHlwZQUEcG9vbAULTk9fTE9BTl9GRUUFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBQ1zdGFrZVRvTWFya2V0AwkAAAIFDSR0MDU0MjI3NTQzNTcFDSR0MDU0MjI3NTQzNTcEB2F4bHlGZWUIBQ0kdDA1NDIyNzU0MzU3Al8yBAp1c2VyU3Rha2VkCAUNJHQwNTQyMjc1NDM1NwJfMQQNJHQwNTQzNjM1NDQ1NwkBD2dldFBvb2xCYWxhbmNlcwQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUDQUlkBQNCSWQDCQAAAgUNJHQwNTQzNjM1NDQ1NwUNJHQwNTQzNjM1NDQ1NwQHbmV3QmFsQggFDSR0MDU0MzYzNTQ0NTcCXzIEB25ld0JhbEEIBQ0kdDA1NDM2MzU0NDU3Al8xBAhwckltcGFjdAkBD2NhbGNQcmljZUltcGFjdAQFBGJhbEEFBGJhbEIFB25ld0JhbEEFB25ld0JhbEIEDSR0MDU0NTI3NTQ2NDIJARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUKdXNlclN0YWtlZAQId0Ftb3VudEEIBQ0kdDA1NDUyNzU0NjQyAl8xBAh3QW1vdW50QggFDSR0MDU0NTI3NTQ2NDICXzIJAJQKAgkAzggCCQEQcmVwbGVuaXNoRW50cmllcwkFBHBvb2wFBHVzZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFCW5ld1Bvc051bQUHc2hhcmVJZAUFcFR5cGUHBQ1zdGFrZVRvTWFya2V0CQEOZ2V0Q3Vyc0VudHJpZXMEBQNBSWQFA0JJZAUHc2hhcmVJZAkAzAgCCQCkAwEFCHdBbW91bnRBCQDMCAIJAKQDAQUId0Ftb3VudEIFA25pbAkAzAgCBQhwckltcGFjdAkAzAgCBQh3QW1vdW50QQkAzAgCBQh3QW1vdW50QgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3AgRwb29sBXBvc0lkCQELdmFsdWVPckVsc2UCCQEQaXNBY3RpdmVGb3JVc2VycwAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkAwkBASEBCQEMaXNQb29sQWN0aXZlAgUEcG9vbAUFcFR5cGUJAAIBAh5Qb29sIG5vdCBhY3RpdmUgYXQgdGhpcyBtb21lbnQJAQ53aXRoZHJhd1RvVXNlcgUJAKUIAQgFAWkGY2FsbGVyBQRwb29sCQCkAwEFBXBvc0lkBwIAAWkBEHdpdGhkcmF3T25lVG9rZW4DBHBvb2wFcG9zSWQHdG9rZW5JZAkBC3ZhbHVlT3JFbHNlAgkBEGlzQWN0aXZlRm9yVXNlcnMABAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAMJAQEhAQkBDGlzUG9vbEFjdGl2ZQIFBHBvb2wFBXBUeXBlCQACAQIeUG9vbCBub3QgYWN0aXZlIGF0IHRoaXMgbW9tZW50CQEOd2l0aGRyYXdUb1VzZXIFCQClCAEIBQFpBmNhbGxlcgUEcG9vbAkApAMBBQVwb3NJZAcFB3Rva2VuSWQBaQEUY3JlYXRlVXBkYXRlU3RvcExvc3MEBXBvc0lkBnBvb2xJZAdhc3NldElkBXByaWNlCQELdmFsdWVPckVsc2UCCQEQaXNBY3RpdmVGb3JVc2VycwAEEHRva2VuT3JhY2xlUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQdhc3NldElkBQ5rUHJpY2VJbk9yYWNsZQQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQZwb29sSWQCElBvb2wgaXMgbm90IGluaXRlZAMJAQEhAQkBDGlzUG9vbEFjdGl2ZQIFBnBvb2xJZAUFcFR5cGUJAAIBAh5Qb29sIG5vdCBhY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQZwb29sSWQCAV8JAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQACAQIaVGhlcmUgYXJlIG5vIHVzZXIgcG9zaXRpb24DCQBnAgAABQVwcmljZQkAAgECHFByaWNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgUFcHJpY2UFEHRva2VuT3JhY2xlUHJpY2UJAAIBAitQcmljZSBtdXN0IGJlIGxlc3MgdGhhbiBjdXJyZW50IHRva2VuIHByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MFBXByaWNlBQNuaWwBaQEOZGVsZXRlU3RvcExvc3MDBXBvc0lkBnBvb2xJZAdhc3NldElkCQELdmFsdWVPckVsc2UCCQEQaXNBY3RpdmVGb3JVc2VycwAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUGcG9vbElkAhJQb29sIGlzIG5vdCBpbml0ZWQDCQEBIQEJAQxpc1Bvb2xBY3RpdmUCBQZwb29sSWQFBXBUeXBlCQACAQIeUG9vbCBub3QgYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MJAAIBAghObyBlbnRyeQkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MFA25pbAFpAQRpbml0DQxtb25leUJveEFkZHINc2ZGYXJtaW5nQWRkcghsZW5kQWRkcg9wcmljZU9yYWNsZUFkZHIQa2VlcGVyRXhDb250cmFjdA53eFN3YXBDb250cmFjdAtzd29wQXNzZXRJZAl3eEFzc2V0SWQOb3BlcmF0b3JQdWJLZXkSZ3JvdXAxQWRtaW4xUHViS2V5Emdyb3VwMUFkbWluMlB1YktleRJncm91cDJBZG1pbjFQdWJLZXkSZ3JvdXAyQWRtaW4yUHViS2V5CQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkDCQEJaXNEZWZpbmVkAQkAoggBBQ9rT3BlcmF0b3JDYWxsUEsJAAIBAg5BbHJlYWR5IGluaXRlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUMbW9uZXlCb3hBZGRyCQACAQIjbW9uZXlCb3hBZGRyIGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFDXNmRmFybWluZ0FkZHIJAAIBAiRzZkZhcm1pbmdBZGRyIGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCGxlbmRBZGRyCQACAQIfbGVuZEFkZHIgaXMgbm90IGNvcnJlY3QgYWRkcmVzcwMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUPcHJpY2VPcmFjbGVBZGRyCQACAQImcHJpY2VPcmFjbGVBZGRyIGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFEGtlZXBlckV4Q29udHJhY3QJAAIBAidrZWVwZXJFeENvbnRyYWN0IGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQDsBwEJANkEAQULc3dvcEFzc2V0SWQJAAIBAiNzd29wQXNzZXRJZCBpcyBub3QgY29ycmVjdCBhc3NldCBpZAMJAQEhAQkBCWlzRGVmaW5lZAEJAOwHAQkA2QQBBQl3eEFzc2V0SWQJAAIBAiNzd29wQXNzZXRJZCBpcyBub3QgY29ycmVjdCBhc3NldCBpZAMJAQIhPQIJAMgBAQkA2QQBBQ5vcGVyYXRvclB1YktleQAgCQACAQIdb3BlcmF0b3JQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAxQWRtaW4xUHViS2V5ACAJAAIBAiFncm91cDFBZG1pbjFQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAxQWRtaW4yUHViS2V5ACAJAAIBAiFncm91cDFBZG1pbjJQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAyQWRtaW4xUHViS2V5ACAJAAIBAiFncm91cDJBZG1pbjFQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAyQWRtaW4yUHViS2V5ACAJAAIBAiFncm91cDJBZG1pbjJQdWJLZXkgaXMgbm90IGNvcnJlY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa01vbmV5Qm94BQxtb25leUJveEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUOa1NGRmFybWluZ0FkZHIFDXNmRmFybWluZ0FkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUMa0xlbmRTZXJ2aWNlBQhsZW5kQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQxrUHJpY2VPcmFjbGUFD3ByaWNlT3JhY2xlQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQtrRXhDb250cmFjdAUQa2VlcGVyRXhDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBQ9rV3hTd2FwQ29udHJhY3QFDnd4U3dhcENvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFB2tTd29wSWQFC3N3b3BBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWtXeElkBQl3eEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa09wZXJhdG9yQ2FsbFBLBQ5vcGVyYXRvclB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAxQWRtaW4xUEsFEmdyb3VwMUFkbWluMVB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAxQWRtaW4yUEsFEmdyb3VwMUFkbWluMlB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAyQWRtaW4xUEsFEmdyb3VwMkFkbWluMVB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAyQWRtaW4yUEsFEmdyb3VwMkFkbWluMlB1YktleQUDbmlsAWkBEGNyZWF0ZU5ld1JlcXVlc3QBBnBhcmFtcwkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpBAxuZXdSZXF1ZXN0SWQJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDGtSZXF1ZXN0SXRlcgAAAAEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQUMbmV3UmVxdWVzdElkBQprUmVxdWVzdElkBQZwYXJhbXMJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtSZXF1ZXN0SXRlcgUMbmV3UmVxdWVzdElkBQNuaWwFDG5ld1JlcXVlc3RJZAFpARFyZXBsZW5pc2hGcm9tTGFuZAEJcmVxdWVzdElkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNMYW5kQ2FsbAEFAWkEDSR0MDU5ODYyNTk5ODEJAQxwYXJzZVJlcXVlc3QBBQlyZXF1ZXN0SWQEBHVzZXIIBQ0kdDA1OTg2MjU5OTgxAl8xBARwb29sCAUNJHQwNTk4NjI1OTk4MQJfMgQEcG10QQgFDSR0MDU5ODYyNTk5ODECXzMEA0FJZAgFDSR0MDU5ODYyNTk5ODECXzQEBHBtdEIIBQ0kdDA1OTg2MjU5OTgxAl81BANCSWQIBQ0kdDA1OTg2MjU5OTgxAl82BARiYWxBCAUNJHQwNTk4NjI1OTk4MQJfNwQEYmFsQggFDSR0MDU5ODYyNTk5ODECXzgEB3NoYXJlSWQIBQ0kdDA1OTg2MjU5OTgxAl85BAdid0Fzc2V0CAUNJHQwNTk4NjI1OTk4MQNfMTAECGJ3QW1vdW50CAUNJHQwNTk4NjI1OTk4MQNfMTEEDXN0YWtlVG9NYXJrZXQIBQ0kdDA1OTg2MjU5OTgxA18xMgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECEldyb25nIHBheW1lbnQgc2l6ZQMDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQdid0Fzc2V0BgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCGJ3QW1vdW50CQACAQINV3JvbmcgcGF5bWVudAQNJHQwNjAxNzE2MDI3MQMJAAACBQNBSWQFB2J3QXNzZXQJAJQKAgkAZAIFBHBtdEEFCGJ3QW1vdW50BQRwbXRCCQCUCgIFBHBtdEEJAGQCBQRwbXRCBQhid0Ftb3VudAQHcG10QWxsQQgFDSR0MDYwMTcxNjAyNzECXzEEB3BtdEFsbEIIBQ0kdDA2MDE3MTYwMjcxAl8yBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwNjAzNTM2MDQ4MwkBD3JlcGxlbmlzaEJ5VHlwZQsFBXBUeXBlBQRwb29sBQhMT0FOX0ZFRQUHcG10QWxsQQUDQUlkBQdwbXRBbGxCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQFDXN0YWtlVG9NYXJrZXQECnVzZXJTdGFrZWQIBQ0kdDA2MDM1MzYwNDgzAl8xBAdheGx5RmVlCAUNJHQwNjAzNTM2MDQ4MwJfMgQGcG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQUEdXNlcgQNYm9ycm93RW50cmllcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRFrVXNlckJvcnJvd0Ftb3VudAUIYndBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRJrVXNlckJvcnJvd0Fzc2V0SWQFB2J3QXNzZXQFA25pbAQHZW50cmllcwkBEHJlcGxlbmlzaEVudHJpZXMJBQRwb29sBQR1c2VyBQp1c2VyU3Rha2VkBQdheGx5RmVlBQZwb3NOdW0FB3NoYXJlSWQFBXBUeXBlBgUNc3Rha2VUb01hcmtldAQNJHQwNjA4NTg2MDk3MwkBGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQp1c2VyU3Rha2VkBAh3QW1vdW50QQgFDSR0MDYwODU4NjA5NzMCXzEECHdBbW91bnRCCAUNJHQwNjA4NTg2MDk3MwJfMgkAlAoCCQDNCAIJAM4IAgkAzggCBQdlbnRyaWVzCQEOZ2V0Q3Vyc0VudHJpZXMEBQNBSWQFA0JJZAUHc2hhcmVJZAkAzAgCCQCkAwEFCHdBbW91bnRBCQDMCAIJAKQDAQUId0Ftb3VudEIFA25pbAUNYm9ycm93RW50cmllcwkBC0RlbGV0ZUVudHJ5AQkArAICBQlyZXF1ZXN0SWQFCmtSZXF1ZXN0SWQFCnVzZXJTdGFrZWQBaQEJbGlxdWlkYXRlAwR1c2VyBXBvc0lkD2xpcXVpZGF0ZUFtb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzTGFuZENhbGwBBQFpCQEMbGlxdWlkYXRlUG9zBAgFAWkGY2FsbGVyBQR1c2VyBQVwb3NJZAUPbGlxdWlkYXRlQW1vdW50AWkBCHN0b3BMb3NzBAR1c2VyBXBvc0lkBHBvb2wHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBDmlzT3BlcmF0b3JDYWxsAQUBaQQQdG9rZW5PcmFjbGVQcmljZQkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFB2Fzc2V0SWQFDmtQcmljZUluT3JhY2xlBA1zdG9wTG9zc1ByaWNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBXBvc0lkAgFfBQRwb29sAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzAghObyBlbnRyeQMJAGYCBRB0b2tlbk9yYWNsZVByaWNlBQ1zdG9wTG9zc1ByaWNlCQACAQIjVG9rZW4gcHJpY2UgZ3JlYXRlciBzdG9wIGxvc3MgcHJpY2UEA3JlcwkBDndpdGhkcmF3VG9Vc2VyBQUEdXNlcgUEcG9vbAkApAMBBQVwb3NJZAYCAAkAlAoCCQDNCAIIBQNyZXMCXzEJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQVwb3NJZAIBXwUEcG9vbAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwgFA3JlcwJfMgFpAQxjYXBpdGFsaXplRXgFBHBvb2wFcm91dGUJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0JAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQ5pc09wZXJhdG9yQ2FsbAEFAWkEBXBUeXBlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sBAZjaGFuZ2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQAABAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEDSR0MDYyMzg5NjI0NTUJAQtnZXRQb29sRGF0YQIFCHBvb2xBZGRyBQVwVHlwZQQDQUlkCAUNJHQwNjIzODk2MjQ1NQJfMQQDQklkCAUNJHQwNjIzODk2MjQ1NQJfMgQEYmFsQQgFDSR0MDYyMzg5NjI0NTUCXzMEBGJhbEIIBQ0kdDA2MjM4OTYyNDU1Al80BAdzaGFyZUlkCAUNJHQwNjIzODk2MjQ1NQJfNQQQdG90YWxTaGFyZUFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQMaXNNYXJrZXRQb29sCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUEcG9vbAUMa1Bvb2xQTUFya2V0BwQNJHQwNjI1ODQ2MzQxNQMJAGYCBRBhbW91bnRUb0V4Y2hhbmdlAAAEDSR0MDYyNjQ2NjI3NDgJARFjbGFpbUFuZENoZWNrQW1udAUFBHBvb2wFBXBUeXBlBQVjbGFpbQUQYW1vdW50VG9FeGNoYW5nZQUGY2hhbmdlAwkAAAIFDSR0MDYyNjQ2NjI3NDgFDSR0MDYyNjQ2NjI3NDgEDGNsYWltZWRBc3NldAgFDSR0MDYyNjQ2NjI3NDgCXzIEDWNsYWltZWRBbW91bnQIBQ0kdDA2MjY0NjYyNzQ4Al8xBAVyQXJncwkAtQkCBQVyb3V0ZQICX18ED2V4Y2hhbmdlZEFtb3VudAMJAGYCBRBhbW91bnRUb0V4Y2hhbmdlAAADCQAAAgkAkQMCBQVyQXJncwAAAhBkaXJlY3RTd29wZmlDUE1NCQEQZGlyZWN0U3dvcGZpQ1BNTQIFBXJBcmdzBQl0b2tlblRvSWQDCQAAAgkAkQMCBQVyQXJncwAAAg1yb3V0aW5nU3dvcGZpCQETZGlyZWN0Um91dGluZ1N3b3BmaQIFBXJBcmdzBQl0b2tlblRvSWQJAAIBAgtXcm9uZyByb3V0ZQAAAwkAAAIFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50BAluZXdDaGFuZ2UJAGUCCQBkAgUNY2xhaW1lZEFtb3VudAUGY2hhbmdlBRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGcCBQluZXdDaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQUJbmV3Q2hhbmdlBQNuaWwFA25pbAQNJHQwNjMyNDU2MzM1NQkBCmNhcGl0YWxpemUJBQRwb29sBQVwVHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFA0FJZAUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBAtjYXBFbnRlcmlzZQgFDSR0MDYzMjQ1NjMzNTUCXzEEBnN0YWtlZAgFDSR0MDYzMjQ1NjMzNTUCXzIJAJQKAgkAzggCBQtjYXBFbnRlcmlzZQULY2hhbmdlRW50cnkFBnN0YWtlZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwAAAQLY2FwRW50ZXJpc2UIBQ0kdDA2MjU4NDYzNDE1Al8xBAZzdGFrZWQIBQ0kdDA2MjU4NDYzNDE1Al8yBA0kdDA2MzQxODYzNTM1AwUMaXNNYXJrZXRQb29sCQEWY2FwaXRhbGl6ZVB1enpsZU1hcmtldAMFBHBvb2wFBXBUeXBlBQdzaGFyZUlkCQCUCgIFA25pbAAABBBtYXJrZXRDYXBFbnRlcmlzCAUNJHQwNjM0MTg2MzUzNQJfMQQMc3Rha2VkTWFya2V0CAUNJHQwNjM0MTg2MzUzNQJfMgkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgkAZAIFEHRvdGFsU2hhcmVBbW91bnQFBnN0YWtlZAUMc3Rha2VkTWFya2V0BQNuaWwFC2NhcEVudGVyaXNlBRBtYXJrZXRDYXBFbnRlcmlzCQEOZ2V0Q3Vyc0VudHJpZXMEBQNBSWQFA0JJZAUHc2hhcmVJZAUDbmlsAWkBDmNhcGl0YWxpemVOb0V4AwRwb29sBWNsYWltEWFtb3VudEZyb21CYWxhbmNlCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBAVwVHlwZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBA0kdDA2Mzk3MDY0MDM2CQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA0FJZAgFDSR0MDYzOTcwNjQwMzYCXzEEA0JJZAgFDSR0MDYzOTcwNjQwMzYCXzIEBGJhbEEIBQ0kdDA2Mzk3MDY0MDM2Al8zBARiYWxCCAUNJHQwNjM5NzA2NDAzNgJfNAQHc2hhcmVJZAgFDSR0MDYzOTcwNjQwMzYCXzUEEHRvdGFsU2hhcmVBbW91bnQJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wEDSR0MDY0MDg4NjQxODYJARFjbGFpbUFuZENoZWNrQW1udAUFBHBvb2wFBXBUeXBlBQVjbGFpbQURYW1vdW50RnJvbUJhbGFuY2UAAAMJAAACBQ0kdDA2NDA4ODY0MTg2BQ0kdDA2NDA4ODY0MTg2BAxjbGFpbWVkQXNzZXQIBQ0kdDA2NDA4ODY0MTg2Al8yBA1jbGFpbWVkQW1vdW50CAUNJHQwNjQwODg2NDE4NgJfMQQNJHQwNjQxODk2NDMzNQkBCmNhcGl0YWxpemUJBQRwb29sBQVwVHlwZQkBDGFzc2V0SWRUb1N0cgEFDGNsYWltZWRBc3NldAkAZAIFDWNsYWltZWRBbW91bnQFEWFtb3VudEZyb21CYWxhbmNlBQNBSWQFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQLY2FwRW50ZXJpc2UIBQ0kdDA2NDE4OTY0MzM1Al8xBAZzdGFrZWQIBQ0kdDA2NDE4OTY0MzM1Al8yCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgUQdG90YWxTaGFyZUFtb3VudAUGc3Rha2VkBQNuaWwFC2NhcEVudGVyaXNlCQEOZ2V0Q3Vyc0VudHJpZXMEBQNBSWQFA0JJZAUHc2hhcmVJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC2luaXROZXdQb29sCwR0eXBlCHBvb2xUeXBlCHBvb2xBZGRyC2luRmVlTm9Mb2FuCWluRmVlTG9hbgxjYXBGZWVOb0xvYW4OY2FwRmVlV2l0aExvYW4Rc3RvcGxvc3NGZWVOb0xvYW4Tc3RvcGxvc3NGZWVXaXRoTG9hbgljYW5Cb3Jyb3cKY2FuUE1hcmtldAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMDCQECIT0CBQR0eXBlBQdTRl9QT09MCQECIT0CBQR0eXBlBQdXWF9QT09MBwkAAgECCldyb25nIHR5cGUDAwkBAiE9AgUIcG9vbFR5cGUFBENQTU0JAQIhPQIFCHBvb2xUeXBlBQRGTEFUBwkAAgECD1dyb25nIHBvb2wgdHlwZQQNJHQwNjQ5NTg2NTA1MgkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFCHBvb2xBZGRyBQR0eXBlBANhSWQIBQ0kdDA2NDk1ODY1MDUyAl8xBANiSWQIBQ0kdDA2NDk1ODY1MDUyAl8yBARhQmFsCAUNJHQwNjQ5NTg2NTA1MgJfMwQEYkJhbAgFDSR0MDY0OTU4NjUwNTICXzQEB3NoYXJlSWQIBQ0kdDA2NDk1ODY1MDUyAl81AwkAZgIAAAULaW5GZWVOb0xvYW4JAAIBAiJpbkZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUJaW5GZWVMb2FuCQACAQIgaW5GZWVMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQxjYXBGZWVOb0xvYW4JAAIBAiNjYXBGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFDmNhcEZlZVdpdGhMb2FuCQACAQIlY2FwRmVlV2l0aExvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFEXN0b3Bsb3NzRmVlTm9Mb2FuCQACAQIoc3RvcGxvc3NGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFE3N0b3Bsb3NzRmVlV2l0aExvYW4JAAIBAipzdG9wbG9zc0ZlZVdpdGhMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgULaW5GZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEmtBeGx5SW5GZWVXaXRoTG9hbgUJaW5GZWVMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrQXhseU5vTG9hbkNhcEZlZQUMY2FwRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrQXhseVdpdGhMb2FuQ2FwRmVlBQ5jYXBGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUWa0F4bHlTdG9wTG9zc05vTG9hbkZlZQURc3RvcGxvc3NGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFGtBeGx5U3RvcExvc3NMb2FuRmVlBRNzdG9wbG9zc0ZlZVdpdGhMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrUG9vbEludGVyZXN0TG9hbgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrUG9vbEludGVyZXN0Tm9Mb2FuAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQVrUG9vbAUIcG9vbEFkZHIFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQhwb29sQWRkcgUJa1Bvb2xUeXBlBQhwb29sVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB3NoYXJlSWQFCmtTaGFyZVBvb2wFCHBvb2xBZGRyCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFCHBvb2xBZGRyBQ5rUG9vbENhbkJvcnJvdwUJY2FuQm9ycm93CQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFCHBvb2xBZGRyBQxrUG9vbFBNQXJrZXQFCmNhblBNYXJrZXQFA25pbAFpAQ51cGRhdGVQb29sRmVlcwcIcG9vbEFkZHILaW5GZWVOb0xvYW4JaW5GZWVMb2FuDGNhcEZlZU5vTG9hbg5jYXBGZWVXaXRoTG9hbhFzdG9wbG9zc0ZlZU5vTG9hbhNzdG9wbG9zc0ZlZVdpdGhMb2FuCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQhwb29sQWRkcgkAAgEJAKwCAgIaQ2FuJ3QgZmluZCBwb29sIHdpdGggYWRkciAFCHBvb2xBZGRyAwkAZgIAAAULaW5GZWVOb0xvYW4JAAIBAiJpbkZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUJaW5GZWVMb2FuCQACAQIgaW5GZWVMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQxjYXBGZWVOb0xvYW4JAAIBAiNjYXBGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFDmNhcEZlZVdpdGhMb2FuCQACAQIlY2FwRmVlV2l0aExvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFEXN0b3Bsb3NzRmVlTm9Mb2FuCQACAQIoc3RvcGxvc3NGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFE3N0b3Bsb3NzRmVlV2l0aExvYW4JAAIBAipzdG9wbG9zc0ZlZVdpdGhMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgULaW5GZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEmtBeGx5SW5GZWVXaXRoTG9hbgUJaW5GZWVMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrQXhseU5vTG9hbkNhcEZlZQUMY2FwRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrQXhseVdpdGhMb2FuQ2FwRmVlBQ5jYXBGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUWa0F4bHlTdG9wTG9zc05vTG9hbkZlZQURc3RvcGxvc3NGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFGtBeGx5U3RvcExvc3NMb2FuRmVlBRNzdG9wbG9zc0ZlZVdpdGhMb2FuBQNuaWwBaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgkAAgECE2RBcHAgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGBQNuaWwBaQEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQACAQIVZEFwcCBhbHJlYWR5IHNodXRkb3duCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwUDbmlsAWkBEGFjdGl2YXRlRm9yVXNlcnMACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGCQACAQIdZEFwcCBhbHJlYWR5IGFjdGl2ZSBmb3IgdXNlcnMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDGtBY3RpdmVVc2VycwYFA25pbAFpARBzaHV0ZG93bkZvclVzZXJzAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGCQACAQIfZEFwcCBhbHJlYWR5IHNodXRkb3duIGZvciB1c2VycwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMa0FjdGl2ZVVzZXJzBwUDbmlsAWkBCmFjdGl2YXRlU0YACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECFVNXT1BGSSBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQdTRl9QT09MBQtrQWN0aXZlU0ZXWAYFA25pbAFpAQpzaHV0ZG93blNGAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECF1NXT1BGSSBhbHJlYWR5IHNodXRkb3duCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBwUDbmlsAWkBCmFjdGl2YXRlV1gACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1dYX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECEVdYIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFB1dYX1BPT0wFC2tBY3RpdmVTRldYBgUDbmlsAWkBCnNodXRkb3duV1gACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUHV1hfUE9PTAULa0FjdGl2ZVNGV1gGCQACAQITV1ggYWxyZWFkeSBzaHV0ZG93bgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQdXWF9QT09MBQtrQWN0aXZlU0ZXWAcFA25pbAFpAQxhY3RpdmF0ZVBvb2wBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wJAAIBAgxVbmtub3duIHBvb2wDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUEcG9vbAULa1Bvb2xBY3RpdmUGCQACAQITUG9vbCBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYFA25pbAFpAQxzaHV0ZG93blBvb2wBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wJAAIBAgxVbmtub3duIHBvb2wDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYJAAIBAhVQb29sIGFscmVhZHkgc2h1dGRvd24JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUEcG9vbAULa1Bvb2xBY3RpdmUHBQNuaWwBAnR4AQZ2ZXJpZnkABBNtdWx0aVNpZ25lZEJ5QWRtaW5zBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ5ncm91cDFBZG1pbjFQSwABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDmdyb3VwMUFkbWluMlBLAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUOZ3JvdXAxQWRtaW4zUEsAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAIFE211bHRpU2lnbmVkQnlBZG1pbnOspKSZ", "height": 4040300, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HEGwPZPWqQBtMHJENPUpGnPnuTz9Ua9bMYUDWnN9sPbN Next: 79zvNnYB4kxRNQ3Jpk76NcnRYDKYBTVqv5rUJJBdsweD Diff:
OldNewDifferences
19221922 let bs = iJ._3
19231923 let br = iJ._4
19241924 let bv = iJ._5
1925+ let eR = bz(aZ)
19251926 let iK = hg(aZ, cb, hh, iI, 0)
19261927 if ((iK == iK))
19271928 then {
19281929 let hj = iK._2
19291930 let iy = iK._1
1930- eM(aZ, cb, bJ(hj), (iy + iI), eP, eQ, bs, br, bv)
1931+ let iL = eM(aZ, cb, bJ(hj), (iy + iI), eP, eQ, bs, br, bv)
1932+ let iD = iL._1
1933+ let iE = iL._2
1934+ (([IntegerEntry((aZ + E), (eR + iE))] ++ iD) ++ cp(eP, eQ, bv, nil))
19311935 }
19321936 else throw("Strict value is not equal to itself.")
19331937 }))
19351939
19361940
19371941 @Callable(aS)
1938-func initNewPool (ba,iL,bj,iM,iN,iO,iP,iQ,iR,iS,iT) = valueOrElse(aW(), valueOrElse(aT(aS), if (if ((ba != b))
1942+func initNewPool (ba,iM,bj,iN,iO,iP,iQ,iR,iS,iT,iU) = valueOrElse(aW(), valueOrElse(aT(aS), if (if ((ba != b))
19391943 then (ba != c)
19401944 else false)
19411945 then throw("Wrong type")
1942- else if (if ((iL != d))
1943- then (iL != e)
1946+ else if (if ((iM != d))
1947+ then (iM != e)
19441948 else false)
19451949 then throw("Wrong pool type")
19461950 else {
1947- let iU = bx(Address(fromBase58String(bj)), ba)
1948- let bl = iU._1
1949- let bm = iU._2
1950- let dO = iU._3
1951- let dP = iU._4
1952- let bv = iU._5
1953- if ((0 > iM))
1951+ let iV = bx(Address(fromBase58String(bj)), ba)
1952+ let bl = iV._1
1953+ let bm = iV._2
1954+ let dO = iV._3
1955+ let dP = iV._4
1956+ let bv = iV._5
1957+ if ((0 > iN))
19541958 then throw("inFeeNoLoan must be greater than 0")
1955- else if ((0 > iN))
1959+ else if ((0 > iO))
19561960 then throw("inFeeLoan must be greater than 0")
1957- else if ((0 > iO))
1961+ else if ((0 > iP))
19581962 then throw("capFeeNoLoan must be greater than 0")
1959- else if ((0 > iP))
1963+ else if ((0 > iQ))
19601964 then throw("capFeeWithLoan must be greater than 0")
1961- else if ((0 > iQ))
1965+ else if ((0 > iR))
19621966 then throw("stoplossFeeNoLoan must be greater than 0")
1963- else if ((0 > iR))
1967+ else if ((0 > iS))
19641968 then throw("stoplossFeeWithLoan must be greater than 0")
1965- else [IntegerEntry((bj + O), iM), IntegerEntry((bj + P), iN), IntegerEntry((bj + Q), iO), IntegerEntry((bj + R), iP), IntegerEntry((bj + S), iQ), IntegerEntry((bj + T), iR), IntegerEntry((bj + I), 0), IntegerEntry((bj + J), 0), StringEntry((W + bj), ba), StringEntry((bj + X), iL), StringEntry((bv + Y), bj), BooleanEntry((bj + M), iS), BooleanEntry((bj + N), iT)]
1969+ else [IntegerEntry((bj + O), iN), IntegerEntry((bj + P), iO), IntegerEntry((bj + Q), iP), IntegerEntry((bj + R), iQ), IntegerEntry((bj + S), iR), IntegerEntry((bj + T), iS), IntegerEntry((bj + I), 0), IntegerEntry((bj + J), 0), StringEntry((W + bj), ba), StringEntry((bj + X), iM), StringEntry((bv + Y), bj), BooleanEntry((bj + M), iT), BooleanEntry((bj + N), iU)]
19661970 }))
19671971
19681972
19691973
19701974 @Callable(aS)
1971-func updatePoolFees (bj,iM,iN,iO,iP,iQ,iR) = valueOrElse(aW(), valueOrElse(aT(aS), if (!(isDefined(getString(this, (W + bj)))))
1975+func updatePoolFees (bj,iN,iO,iP,iQ,iR,iS) = valueOrElse(aW(), valueOrElse(aT(aS), if (!(isDefined(getString(this, (W + bj)))))
19721976 then throw(("Can't find pool with addr " + bj))
1973- else if ((0 > iM))
1977+ else if ((0 > iN))
19741978 then throw("inFeeNoLoan must be greater than 0")
1975- else if ((0 > iN))
1979+ else if ((0 > iO))
19761980 then throw("inFeeLoan must be greater than 0")
1977- else if ((0 > iO))
1981+ else if ((0 > iP))
19781982 then throw("capFeeNoLoan must be greater than 0")
1979- else if ((0 > iP))
1983+ else if ((0 > iQ))
19801984 then throw("capFeeWithLoan must be greater than 0")
1981- else if ((0 > iQ))
1985+ else if ((0 > iR))
19821986 then throw("stoplossFeeNoLoan must be greater than 0")
1983- else if ((0 > iR))
1987+ else if ((0 > iS))
19841988 then throw("stoplossFeeWithLoan must be greater than 0")
1985- else [IntegerEntry((bj + O), iM), IntegerEntry((bj + P), iN), IntegerEntry((bj + Q), iO), IntegerEntry((bj + R), iP), IntegerEntry((bj + S), iQ), IntegerEntry((bj + T), iR)]))
1989+ else [IntegerEntry((bj + O), iN), IntegerEntry((bj + P), iO), IntegerEntry((bj + Q), iP), IntegerEntry((bj + R), iQ), IntegerEntry((bj + S), iR), IntegerEntry((bj + T), iS)]))
19861990
19871991
19881992
20592063 else [BooleanEntry((aZ + af), false)])
20602064
20612065
2062-@Verifier(iV)
2063-func iW () = {
2064- let iX = {
2065- let iY = if (sigVerify(iV.bodyBytes, iV.proofs[0], aJ))
2066+@Verifier(iW)
2067+func iX () = {
2068+ let iY = {
2069+ let iZ = if (sigVerify(iW.bodyBytes, iW.proofs[0], aJ))
20662070 then 1
20672071 else 0
2068- let iZ = if (sigVerify(iV.bodyBytes, iV.proofs[1], aK))
2072+ let ja = if (sigVerify(iW.bodyBytes, iW.proofs[1], aK))
20692073 then 1
20702074 else 0
2071- let ja = if (sigVerify(iV.bodyBytes, iV.proofs[2], aL))
2075+ let jb = if (sigVerify(iW.bodyBytes, iW.proofs[2], aL))
20722076 then 1
20732077 else 0
2074- (((iY + iZ) + ja) >= 2)
2078+ (((iZ + ja) + jb) >= 2)
20752079 }
2076- iX
2080+ iY
20772081 }
20782082
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = addressFromStringValue(getStringValue(this, "config"))
55
66 let b = "SF"
77
88 let c = "WX"
99
1010 let d = "cpmm"
1111
1212 let e = "flat"
1313
1414 let f = "capNoLoan"
1515
1616 let g = "capLoan"
1717
1818 let h = "stopLossNoLoan"
1919
2020 let i = "stopLossLoan"
2121
2222 let j = "loan"
2323
2424 let k = "noLoan"
2525
2626 let l = "noFee"
2727
2828 let m = 100000000
2929
3030 let n = 10000000000
3131
3232 let o = toBigInt(10000000000000000)
3333
3434 let p = 1000000
3535
3636 let q = "A_asset_balance"
3737
3838 let r = "B_asset_balance"
3939
4040 let s = "A_asset_id"
4141
4242 let t = "B_asset_id"
4343
4444 let u = "share_asset_id"
4545
4646 let v = "share_asset_supply"
4747
4848 let w = "commission"
4949
5050 let x = "_userPosition"
5151
5252 let y = "_userPositionPool"
5353
5454 let z = "_userPositionBorrowAmount"
5555
5656 let A = "_userPositionBorrowAssetId"
5757
5858 let B = "_userPositionNumber"
5959
6060 let C = "_userPositionInterest"
6161
6262 let D = "_userPositionPMarket"
6363
6464 let E = "_poolTotal"
6565
6666 let F = "_poolTotalLoan"
6767
6868 let G = "_poolTotalMarket"
6969
7070 let H = "_poolTotalMarketLoan"
7171
7272 let I = "_poolInterestLoan"
7373
7474 let J = "_poolInterestNoLoan"
7575
7676 let K = "_poolInterestMarketLoan"
7777
7878 let L = "_poolInterestMarketNoLoan"
7979
8080 let M = "_poolCanBorrow"
8181
8282 let N = "_poolPuzzleMarket"
8383
8484 let O = "_axlyFeeNoLoan"
8585
8686 let P = "_axlyFeeWithLoan"
8787
8888 let Q = "_axlyFeeCapNoLoan"
8989
9090 let R = "_axlyFeeCapWithLoan"
9191
9292 let S = "_axlyFeeStoplossWithLoan"
9393
9494 let T = "_axlyFeeStoplossNoLoan"
9595
9696 let U = "_request_id"
9797
9898 let V = "requests_iter"
9999
100100 let W = "pool_"
101101
102102 let X = "_poolType"
103103
104104 let Y = "_poolShareId"
105105
106106 let Z = "_poolCapChange"
107107
108108 let aa = "last_price"
109109
110110 let ab = "_twap5B"
111111
112112 let ac = "active"
113113
114114 let ad = "activeUsers"
115115
116116 let ae = "_active"
117117
118118 let af = "_activePool"
119119
120120 let ag = "_stopLoss"
121121
122122 let ah = "_fallbackExchangeSwopfi"
123123
124124 let ai = "_poolProxyAddress"
125125
126126 let aj = "axly_money_box"
127127
128128 let ak = "swopfi_farming_addr"
129129
130130 let al = "lend_service_addr"
131131
132132 let am = "admin_call_pub_key"
133133
134134 let an = "price_oracle"
135135
136136 let ao = "exchange_contract"
137137
138138 let ap = "wx_swap_contract"
139139
140140 let aq = "wx_rest_addr"
141141
142142 let ar = "swop_id"
143143
144144 let as = "wx_id"
145145
146146 let at = "puzzle_market_address"
147147
148148 let au = "puzzle_market_rest_address"
149149
150150 let av = "group1_admin1_pub_key"
151151
152152 let aw = "group1_admin2_pub_key"
153153
154154 let ax = "group1_admin3_pub_key"
155155
156156 let ay = "group2_admin1_pub_key"
157157
158158 let az = "group2_admin2_pub_key"
159159
160160 let aA = addressFromStringValue(valueOrErrorMessage(getString(a, aj), "No axly moneyBox address"))
161161
162162 let aB = addressFromStringValue(valueOrErrorMessage(getString(a, ao), "No exchange contract address"))
163163
164164 let aC = addressFromStringValue(valueOrErrorMessage(getString(a, an), "No price oracle address"))
165165
166166 let aD = addressFromStringValue(valueOrErrorMessage(getString(a, ap), "No wx swap address"))
167167
168168 let aE = addressFromStringValue(valueOrErrorMessage(getString(a, aq), "No wx rest address"))
169169
170170 let aF = fromBase58String(valueOrErrorMessage(getString(a, ar), "No swop id"))
171171
172172 let aG = fromBase58String(valueOrErrorMessage(getString(a, as), "No wx id"))
173173
174174 let aH = addressFromStringValue(valueOrErrorMessage(getString(a, at), "No puzzle market address"))
175175
176176 let aI = addressFromStringValue(valueOrErrorMessage(getString(a, au), "No puzzle market rest address"))
177177
178178 let aJ = fromBase58String(valueOrErrorMessage(getString(a, av), "Can't get kGroup1Admin1PK"))
179179
180180 let aK = fromBase58String(valueOrErrorMessage(getString(a, aw), "Can't get kGroup1Admin2PK"))
181181
182182 let aL = fromBase58String(valueOrErrorMessage(getString(a, ax), "Can't get kGroup1Admin3PK"))
183183
184184 let aM = fromBase58String(valueOrErrorMessage(getString(this, ay), "Can't get kGroup2Admin1PK"))
185185
186186 let aN = fromBase58String(valueOrErrorMessage(getString(this, az), "Can't get kGroup2Admin1PK"))
187187
188188 let aO = fromBase58String(valueOrErrorMessage(getString(a, am), "Can't get operatorPK"))
189189
190190 func aP () = throw("Wrong pool type")
191191
192192
193193 func aQ () = addressFromStringValue(valueOrErrorMessage(getString(a, al), "Can't get lend service addr"))
194194
195195
196196 func aR (aS) = if (if ((aS.callerPublicKey == aO))
197197 then true
198198 else (aS.caller == aA))
199199 then unit
200200 else throw("Only operator can call this function")
201201
202202
203203 func aT (aS) = if (if ((aS.callerPublicKey == aJ))
204204 then true
205205 else (aS.callerPublicKey == aK))
206206 then unit
207207 else throw("Only admin group1 can call this function")
208208
209209
210210 func aU (aS) = if ((aS.caller == this))
211211 then unit
212212 else throw("Only contract itself can call this function")
213213
214214
215215 func aV (aS) = if ((aS.caller == aQ()))
216216 then unit
217217 else throw("Only land contract can call this function")
218218
219219
220220 func aW () = if ((valueOrElse(getBoolean(this, ac), true) == true))
221221 then unit
222222 else throw("DApp is inactive at this moment")
223223
224224
225225 func aX () = if (if (valueOrElse(getBoolean(this, ac), true))
226226 then (valueOrElse(getBoolean(this, ad), true) == true)
227227 else false)
228228 then unit
229229 else throw("DApp is inactive for users at this moment")
230230
231231
232232 func aY (aZ,ba) = {
233233 let bb = valueOrElse(getBoolean(this, (ba + ae)), true)
234234 let bc = valueOrElse(getBoolean(this, (aZ + af)), true)
235235 if (if (bb)
236236 then bc
237237 else false)
238238 then true
239239 else false
240240 }
241241
242242
243243 func bd (be) = {
244244 let bf = be
245245 if ($isInstanceOf(bf, "ByteVector"))
246246 then {
247247 let bg = bf
248248 assetBalance(this, bg)
249249 }
250250 else if ($isInstanceOf(bf, "Unit"))
251251 then {
252252 let bh = bf
253253 wavesBalance(this).available
254254 }
255255 else throw("Match error")
256256 }
257257
258258
259259 func bi (bj) = $Tuple2(valueOrErrorMessage(getInteger(bj, q), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(bj, r), "Can't get pool B asset balance"))
260260
261261
262262 func bk (bj,bl,bm) = $Tuple2({
263263 let bn = invoke(bj, "getAccBalanceWrapperREADONLY", [bl], nil)
264264 if ($isInstanceOf(bn, "Int"))
265265 then bn
266266 else throw(($getType(bn) + " couldn't be cast to Int"))
267267 }, {
268268 let bn = invoke(bj, "getAccBalanceWrapperREADONLY", [bm], nil)
269269 if ($isInstanceOf(bn, "Int"))
270270 then bn
271271 else throw(($getType(bn) + " couldn't be cast to Int"))
272272 })
273273
274274
275275 func bo (bj,ba,bl,bm) = if ((ba == b))
276276 then bi(bj)
277277 else if ((ba == c))
278278 then bk(bj, bl, bm)
279279 else aP()
280280
281281
282282 func bp (bj) = {
283283 let bq = bi(bj)
284284 if ((bq == bq))
285285 then {
286286 let br = bq._2
287287 let bs = bq._1
288288 $Tuple5(valueOrErrorMessage(getString(bj, s), "Can't get pool A asset id"), valueOrErrorMessage(getString(bj, t), "Can't get pool B asset id"), bs, br, valueOrErrorMessage(getString(bj, u), "Can't get share asset id"))
289289 }
290290 else throw("Strict value is not equal to itself.")
291291 }
292292
293293
294294 func bt (bj) = {
295295 let bu = {
296296 let bn = invoke(bj, "getPoolConfigWrapperREADONLY", nil, nil)
297297 if ($isInstanceOf(bn, "List[Any]"))
298298 then bn
299299 else throw(($getType(bn) + " couldn't be cast to List[Any]"))
300300 }
301301 if ((bu == bu))
302302 then {
303303 let bl = valueOrErrorMessage({
304304 let bn = bu[4]
305305 if ($isInstanceOf(bn, "String"))
306306 then bn
307307 else unit
308308 }, "Can't get pool A asset id")
309309 let bm = valueOrErrorMessage({
310310 let bn = bu[5]
311311 if ($isInstanceOf(bn, "String"))
312312 then bn
313313 else unit
314314 }, "Can't get pool B asset id")
315315 let bv = valueOrErrorMessage({
316316 let bn = bu[3]
317317 if ($isInstanceOf(bn, "String"))
318318 then bn
319319 else unit
320320 }, "Can't get pool LP asset id")
321321 let bw = bk(bj, bl, bm)
322322 if ((bw == bw))
323323 then {
324324 let br = bw._2
325325 let bs = bw._1
326326 $Tuple5(bl, bm, bs, br, bv)
327327 }
328328 else throw("Strict value is not equal to itself.")
329329 }
330330 else throw("Strict value is not equal to itself.")
331331 }
332332
333333
334334 func bx (bj,ba) = if ((ba == b))
335335 then bp(bj)
336336 else if ((ba == c))
337337 then bt(bj)
338338 else aP()
339339
340340
341341 func by (bj,ba,bv) = if ((ba == b))
342342 then valueOrErrorMessage(getInteger(bj, v), "Can't get share asset supply")
343343 else if ((ba == c))
344344 then valueOrErrorMessage(assetInfo(fromBase58String(bv)), "Wrong ShareId").quantity
345345 else aP()
346346
347347
348348 func bz (aZ) = valueOrElse(getInteger(this, (aZ + E)), 0)
349349
350350
351351 func bA (aZ) = valueOrElse(getInteger(this, (aZ + F)), 0)
352352
353353
354354 func bB (bC) = (valueOrElse(getInteger(this, (bC + B)), 0) + 1)
355355
356356
357357 func bD (aZ,bE) = if ((bE == g))
358358 then getIntegerValue(this, (aZ + R))
359359 else if ((bE == f))
360360 then getIntegerValue(this, (aZ + Q))
361361 else if ((bE == j))
362362 then getIntegerValue(this, (aZ + P))
363363 else if ((bE == k))
364364 then getIntegerValue(this, (aZ + O))
365365 else if ((bE == l))
366366 then 0
367367 else throw("Wrong fee type")
368368
369369
370370 func bF () = Address(fromBase58String(valueOrErrorMessage(getString(a, ak), "Can't get swopfi farming addr")))
371371
372372
373373 func bG (bj) = {
374374 let bH = Address(fromBase58String(valueOrErrorMessage(getString(bj, "%s__factoryContract"), "Can't get WX factory contract addr")))
375375 let bI = split(valueOrErrorMessage(getString(bH, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
376376 Address(fromBase58String(bI[1]))
377377 }
378378
379379
380380 func bJ (be) = {
381381 let bf = be
382382 if ($isInstanceOf(bf, "ByteVector"))
383383 then {
384384 let bg = bf
385385 toBase58String(bg)
386386 }
387387 else if ($isInstanceOf(bf, "Unit"))
388388 then {
389389 let bh = bf
390390 "WAVES"
391391 }
392392 else throw("Not Asset id")
393393 }
394394
395395
396396 func bK (be) = if ((be == "WAVES"))
397397 then unit
398398 else fromBase58String(be)
399399
400400
401401 func bL (be) = if ((be == "WAVES"))
402402 then 8
403403 else {
404404 let bf = assetInfo(fromBase58String(be))
405405 if ($isInstanceOf(bf, "Asset"))
406406 then {
407407 let bM = bf
408408 bM.decimals
409409 }
410410 else throw("Can't find asset")
411411 }
412412
413413
414414 func bN (be) = pow(10, 0, bL(be), 0, 0, DOWN)
415415
416416
417417 func bO (bP) = {
418418 func bQ (bR,be) = {
419419 let bS = valueOrElse(getInteger(aC, (be + ab)), -1)
420420 (bR :+ bS)
421421 }
422422
423423 let bT = bP
424424 let bU = size(bT)
425425 let bV = nil
426426 func bW (bX,bY) = if ((bY >= bU))
427427 then bX
428428 else bQ(bX, bT[bY])
429429
430430 func bZ (bX,bY) = if ((bY >= bU))
431431 then bX
432432 else throw("List size exceeds 50")
433433
434434 bZ(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
435435 }
436436
437437
438438 func ca (bv) = {
439439 let aZ = valueOrErrorMessage(getString(this, (bv + Y)), "Can't find pool addr by share id")
440440 let bj = Address(fromBase58String(aZ))
441441 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Pool is not inited")
442442 let cc = bx(bj, cb)
443443 let bl = cc._1
444444 let bm = cc._2
445445 let cd = cc._3
446446 let ce = cc._4
447447 let cf = bO([bl, bm])
448448 let cg = cf[0]
449449 let ch = cf[1]
450450 if (if ((0 > cg))
451451 then true
452452 else (0 > ch))
453453 then -1
454454 else {
455455 let ci = by(bj, cb, bv)
456456 let cj = pow(10, 0, bL(bl), 0, 0, DOWN)
457457 let ck = pow(10, 0, bL(bm), 0, 0, DOWN)
458458 let cl = pow(10, 0, bL(bv), 0, 0, DOWN)
459459 let cm = (fraction(cd, cg, cj) + fraction(ce, ch, ck))
460460 fraction(cm, cl, ci)
461461 }
462462 }
463463
464464
465465 func cn (co) = {
466466 func bQ (bR,bv) = (bR :+ ca(bv))
467467
468468 let bT = co
469469 let bU = size(bT)
470470 let bV = nil
471471 func bW (bX,bY) = if ((bY >= bU))
472472 then bX
473473 else bQ(bX, bT[bY])
474474
475475 func bZ (bX,bY) = if ((bY >= bU))
476476 then bX
477477 else throw("List size exceeds 20")
478478
479479 bZ(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
480480 }
481481
482482
483483 func cp (bl,bm,bv,cq) = {
484484 let cr = bO([bl, bm])
485485 let cs = ca(bv)
486486 let cf = ([toString(cr[0]), toString(cr[1]), toString(cs)] ++ cq)
487487 [StringEntry(aa, makeString(cf, ","))]
488488 }
489489
490490
491491 func ct (cb,bj,cu,cv,bl,cw,bm,bs,br) = if ((cb == b))
492492 then {
493493 let cx = {
494494 let bn = invoke(bj, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(cv), toString(cw)]], nil)
495495 if ($isInstanceOf(bn, "List[Any]"))
496496 then bn
497497 else throw(($getType(bn) + " couldn't be cast to List[Any]"))
498498 }
499499 if ((cx == cx))
500500 then $Tuple5({
501501 let bn = cx[3]
502502 if ($isInstanceOf(bn, "Int"))
503503 then bn
504504 else throw(($getType(bn) + " couldn't be cast to Int"))
505505 }, {
506506 let bn = cx[4]
507507 if ($isInstanceOf(bn, "Int"))
508508 then bn
509509 else throw(($getType(bn) + " couldn't be cast to Int"))
510510 }, {
511511 let bn = cx[1]
512512 if ($isInstanceOf(bn, "Int"))
513513 then bn
514514 else throw(($getType(bn) + " couldn't be cast to Int"))
515515 }, bJ(cx[2]), {
516516 let bn = cx[0]
517517 if ($isInstanceOf(bn, "Int"))
518518 then bn
519519 else throw(($getType(bn) + " couldn't be cast to Int"))
520520 })
521521 else throw("Strict value is not equal to itself.")
522522 }
523523 else if ((cb == c))
524524 then {
525525 let cy = $Tuple2(split({
526526 let bn = invoke(aE, "poolEvaluatePutByAmountAssetREADONLY", [cu, cv], nil)
527527 if ($isInstanceOf(bn, "String"))
528528 then bn
529529 else throw(($getType(bn) + " couldn't be cast to String"))
530530 }, "__"), split({
531531 let bn = invoke(aE, "poolEvaluatePutByPriceAssetREADONLY", [cu, cw], nil)
532532 if ($isInstanceOf(bn, "String"))
533533 then bn
534534 else throw(($getType(bn) + " couldn't be cast to String"))
535535 }, "__"))
536536 if ((cy == cy))
537537 then {
538538 let cz = cy._2
539539 let cA = cy._1
540540 let cB = parseIntValue(cA[1])
541541 let cC = parseIntValue(cz[1])
542542 if ((cC > cB))
543543 then {
544544 let cD = parseIntValue(cA[8])
545545 $Tuple5(cv, cD, (cw - cD), bm, cC)
546546 }
547547 else {
548548 let cD = parseIntValue(cz[7])
549549 $Tuple5(cD, cw, (cv - cD), bl, cB)
550550 }
551551 }
552552 else throw("Strict value is not equal to itself.")
553553 }
554554 else aP()
555555
556556
557557 func cE (bj,cb,cv,bl,cw,bm,cF) = {
558558 let cG = [AttachedPayment(bK(bl), cv), AttachedPayment(bK(bm), cw)]
559559 let cH = valueOrElse(getString(this, (toString(bj) + ai)), "")
560560 if ((cb == b))
561561 then invoke(bj, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], cG)
562562 else if ((cb == c))
563563 then if ((cH == ""))
564564 then invoke(bj, "put", [1000000, false], cG)
565565 else invoke(addressFromStringValue(cH), "wxReplenishTwoTokens", [toString(bj), cF, 1000000, false], cG)
566566 else aP()
567567 }
568568
569569
570570 func cI (bj,cb,cD,cJ,cF) = {
571571 let cG = [AttachedPayment(bK(cJ), cD)]
572572 let cH = valueOrElse(getString(this, (toString(bj) + ai)), "")
573573 if ((cb == b))
574574 then invoke(bj, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], cG)
575575 else if ((cb == c))
576576 then {
577577 let cK = if ((valueOrElse(getString(this, (toString(bj) + X)), "cpmm") == e))
578578 then "putOneTknV2"
579579 else "putOneTkn"
580580 if ((cH == ""))
581581 then invoke(bj, cK, [0, false], cG)
582582 else invoke(addressFromStringValue(cH), "wxReplenishOneToken", [toString(bj), cF, cK, 0, false], cG)
583583 }
584584 else aP()
585585 }
586586
587587
588588 func cL (aZ,cb,bv,cM,cN) = {
589589 let cG = [AttachedPayment(fromBase58String(bv), cM)]
590590 let cH = valueOrElse(getString(this, (aZ + ai)), "")
591591 if (cN)
592592 then invoke(aH, "supply", nil, cG)
593593 else if ((cb == b))
594594 then invoke(bF(), "lockShareTokens", [aZ, 0], cG)
595595 else if ((cb == c))
596596 then {
597597 let cO = bG(addressFromStringValue(aZ))
598598 if ((cH == ""))
599599 then invoke(cO, "stake", nil, cG)
600600 else invoke(addressFromStringValue(cH), "wxStakeLp", [toString(cO)], cG)
601601 }
602602 else aP()
603603 }
604604
605605
606606 func cP (aZ,cb,bv,cM,cQ) = {
607607 let cH = valueOrElse(getString(this, (aZ + ai)), "")
608608 let cR = if (cQ)
609609 then $Tuple3(aH, "withdraw", [bv, cM])
610610 else if ((cb == b))
611611 then $Tuple3(bF(), "withdrawShareTokens", [aZ, cM])
612612 else if ((cb == c))
613613 then {
614614 let cO = bG(Address(fromBase58String(aZ)))
615615 if ((cH == ""))
616616 then $Tuple3(cO, "unstake", [bv, cM])
617617 else $Tuple3(addressFromStringValue(cH), "wxUnstakeLp", [toString(cO), bv, cM])
618618 }
619619 else aP()
620620 let cO = cR._1
621621 let cS = cR._2
622622 let cT = cR._3
623623 let cU = invoke(cO, cS, cT, nil)
624624 if ((cU == cU))
625625 then cM
626626 else throw("Strict value is not equal to itself.")
627627 }
628628
629629
630630 func cV (aZ,cW,cX,bs,br,cY,cZ) = {
631631 let bj = Address(fromBase58String(aZ))
632632 let da = 1000000
633633 let db = getIntegerValue(bj, w)
634634 let dc = fraction(cY, da, (da - db), CEILING)
635635 let dd = if ((cZ == cW))
636636 then {
637637 let de = fraction(dc, br, (bs - dc), CEILING)
638638 $Tuple2(de, cX)
639639 }
640640 else {
641641 let de = fraction(dc, bs, (br - dc), CEILING)
642642 $Tuple2(de, cW)
643643 }
644644 let de = dd._1
645645 let df = dd._2
646646 $Tuple2(df, de)
647647 }
648648
649649
650650 func dg (aZ) = {
651651 let bj = addressFromStringValue(aZ)
652652 let bH = addressFromStringValue(valueOrErrorMessage(getString(bj, "%s__factoryContract"), "Can't get WX factory contract addr"))
653653 let dh = value(getInteger(aD, "%s__poolFee"))
654654 let di = value(getInteger(aD, "%s__protocolFee"))
655655 let bf = invoke(bH, "getSwapFeeREADONLY", [toString(bj)], nil)
656656 if ($isInstanceOf(bf, "(Int, Int)"))
657657 then {
658658 let dj = bf
659659 $Tuple2(dj._1, dj._2)
660660 }
661661 else $Tuple2(dh, di)
662662 }
663663
664664
665665 func dk (aZ,cW,cX,bs,br,cY,cZ) = {
666666 let dl = dg(aZ)
667667 let dm = dl._1
668668 let dn = dl._2
669669 let do = toBigInt(100000000)
670670 let dp = if ((cZ == cW))
671671 then {
672672 let de = fraction(cY, br, (bs - cY))
673673 $Tuple2(de, cX)
674674 }
675675 else {
676676 let de = fraction(cY, bs, (br - cY))
677677 $Tuple2(de, cW)
678678 }
679679 let de = dp._1
680680 let df = dp._2
681681 let dq = toInt(fraction(toBigInt(de), do, (do - toBigInt((dn + dm))), CEILING))
682682 $Tuple2(df, dq)
683683 }
684684
685685
686686 func dr (cb,aZ,cW,cX,bs,br,cY,cZ) = {
687687 let ds = valueOrElse(getString(this, (aZ + ah)), "")
688688 if (if ((cb == b))
689689 then true
690690 else (ds != ""))
691691 then {
692692 let dt = if ((ds == ""))
693693 then $Tuple3(bs, br, aZ)
694694 else {
695695 let du = bi(addressFromStringValue(ds))
696696 let dv = du._1
697697 let dw = du._2
698698 $Tuple3(dv, dw, ds)
699699 }
700700 let dx = dt._1
701701 let dy = dt._2
702702 let dz = dt._3
703703 let dA = cV(dz, cW, cX, dx, dy, cY, cZ)
704704 let df = dA._1
705705 let de = dA._2
706706 invoke(addressFromStringValue(dz), "callFunction", ["exchange", [toString(cY)]], [AttachedPayment(bK(df), de)])
707707 }
708708 else if ((cb == c))
709709 then {
710710 let dB = dk(aZ, cW, cX, bs, br, cY, cZ)
711711 let df = dB._1
712712 let de = dB._2
713713 invoke(aD, "swap", [cY, cZ, toString(this)], [AttachedPayment(bK(df), de)])
714714 }
715715 else aP()
716716 }
717717
718718
719719 func dC (cb,aZ,dD,dE,cZ) = {
720720 let dF = bd(bK(cZ))
721721 if ((dF == dF))
722722 then {
723723 let ds = valueOrElse(getString(this, (aZ + ah)), "")
724724 let cU = if (if ((cb == b))
725725 then true
726726 else (ds != ""))
727727 then {
728728 let dz = if ((ds == ""))
729729 then aZ
730730 else ds
731731 invoke(addressFromStringValue(dz), "callFunction", ["exchange", ["1"]], [AttachedPayment(bK(dE), dD)])
732732 }
733733 else if ((cb == c))
734734 then invoke(aD, "swap", [1, cZ, toString(this)], [AttachedPayment(bK(dE), dD)])
735735 else aP()
736736 if ((cU == cU))
737737 then {
738738 let dG = bd(bK(cZ))
739739 if ((dG == dG))
740740 then (dG - dF)
741741 else throw("Strict value is not equal to itself.")
742742 }
743743 else throw("Strict value is not equal to itself.")
744744 }
745745 else throw("Strict value is not equal to itself.")
746746 }
747747
748748
749749 func dH (bj,cb,bv,dI) = {
750750 let dJ = if ((cb == b))
751751 then {
752752 let cU = {
753753 let bn = invoke(bj, "callFunction", ["withdrawREADONLY", [toString(dI)]], nil)
754754 if ($isInstanceOf(bn, "List[Any]"))
755755 then bn
756756 else throw(($getType(bn) + " couldn't be cast to List[Any]"))
757757 }
758758 if ((cU == cU))
759759 then $Tuple2({
760760 let bn = cU[0]
761761 if ($isInstanceOf(bn, "Int"))
762762 then bn
763763 else throw(($getType(bn) + " couldn't be cast to Int"))
764764 }, {
765765 let bn = cU[1]
766766 if ($isInstanceOf(bn, "Int"))
767767 then bn
768768 else throw(($getType(bn) + " couldn't be cast to Int"))
769769 })
770770 else throw("Strict value is not equal to itself.")
771771 }
772772 else if ((cb == c))
773773 then {
774774 let cU = split({
775775 let bn = invoke(aE, "poolEvaluateGetREADONLY", [bv, dI], nil)
776776 if ($isInstanceOf(bn, "String"))
777777 then bn
778778 else throw(($getType(bn) + " couldn't be cast to String"))
779779 }, "__")
780780 if ((cU == cU))
781781 then $Tuple2(parseIntValue(cU[1]), parseIntValue(cU[2]))
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else aP()
785785 let dK = dJ._1
786786 let dL = dJ._2
787787 $Tuple2(dK, dL)
788788 }
789789
790790
791791 func dM (cb,aZ) = {
792792 let cH = valueOrElse(getString(this, (aZ + ai)), "")
793793 if ((cb == b))
794794 then {
795795 let dF = bd(aF)
796796 if ((dF == dF))
797797 then {
798798 let cU = invoke(bF(), "claim", [aZ], nil)
799799 if ((cU == cU))
800800 then {
801801 let dG = bd(aF)
802802 $Tuple2((dG - dF), aF)
803803 }
804804 else throw("Strict value is not equal to itself.")
805805 }
806806 else throw("Strict value is not equal to itself.")
807807 }
808808 else if ((cb == c))
809809 then {
810810 let dN = bt(addressFromStringValue(aZ))
811811 let bl = dN._1
812812 let bm = dN._2
813813 let dO = dN._3
814814 let dP = dN._4
815815 let cF = dN._5
816816 let dF = bd(aG)
817817 if ((dF == dF))
818818 then {
819819 let cO = bG(addressFromStringValue(aZ))
820820 let cU = if ((cH == ""))
821821 then invoke(cO, "claimWx", [cF], nil)
822822 else invoke(addressFromStringValue(cH), "wxClaimFarmed", [toString(cO), cF], nil)
823823 if ((cU == cU))
824824 then {
825825 let dG = bd(aG)
826826 $Tuple2((dG - dF), aG)
827827 }
828828 else throw("Strict value is not equal to itself.")
829829 }
830830 else throw("Strict value is not equal to itself.")
831831 }
832832 else aP()
833833 }
834834
835835
836836 func dQ (cb,aZ,bE,cv,bl,cw,bm,bs,br,cu,dR) = {
837837 let dS = bd(fromBase58String(cu))
838838 if ((dS == dS))
839839 then {
840840 let bj = addressFromStringValue(aZ)
841841 let dT = if (if ((cv > 0))
842842 then (cw > 0)
843843 else false)
844844 then {
845845 let dU = ct(cb, bj, cu, cv, bl, cw, bm, bs, br)
846846 let dV = dU._1
847847 let dW = dU._2
848848 let dX = dU._3
849849 let dY = dU._4
850850 let cU = cE(bj, cb, dV, bl, dW, bm, cu)
851851 if ((cU == cU))
852852 then $Tuple2(dX, dY)
853853 else throw("Strict value is not equal to itself.")
854854 }
855855 else if ((cv > 0))
856856 then $Tuple2(cv, bl)
857857 else if ((cw > 0))
858858 then $Tuple2(cw, bm)
859859 else throw("pmts must be > 0")
860860 let dX = dT._1
861861 let dY = dT._2
862862 let cU = if ((dX > 0))
863863 then cI(bj, cb, dX, dY, cu)
864864 else nil
865865 if ((cU == cU))
866866 then {
867867 let dZ = bd(fromBase58String(cu))
868868 let ea = (dZ - dS)
869869 let eb = fraction(ea, bD(aZ, bE), p)
870870 let ec = (ea - eb)
871871 if ((0 >= ec))
872872 then throw("amount of staked sharetokens must be > 0")
873873 else {
874874 let ed = cL(aZ, cb, cu, ec, dR)
875875 if ((ed == ed))
876876 then $Tuple2(ec, eb)
877877 else throw("Strict value is not equal to itself.")
878878 }
879879 }
880880 else throw("Strict value is not equal to itself.")
881881 }
882882 else throw("Strict value is not equal to itself.")
883883 }
884884
885885
886886 func ee (aZ,bC,ef,eb,eg,bv,ba,eh,cN) = {
887887 let ei = bz(aZ)
888888 let ej = bA(aZ)
889889 let ek = valueOrElse(getInteger(this, (aZ + G)), 0)
890890 let el = valueOrElse(getInteger(this, (aZ + H)), 0)
891891 let em = valueOrElse(getInteger(this, (aZ + J)), 0)
892892 let en = valueOrElse(getInteger(this, (aZ + I)), 0)
893893 let eo = valueOrElse(getInteger(this, (aZ + L)), 0)
894894 let ep = valueOrElse(getInteger(this, (aZ + K)), 0)
895895 let eq = if (eh)
896896 then if (cN)
897897 then $Tuple2(ep, [IntegerEntry((aZ + G), (ek + ef)), IntegerEntry((aZ + H), (el + ef)), BooleanEntry((((((aZ + "_") + bC) + "_") + toString(eg)) + D), true)])
898898 else $Tuple2(en, [IntegerEntry((aZ + F), (ej + ef))])
899899 else if (cN)
900900 then $Tuple2(eo, [IntegerEntry((aZ + G), (ek + ef)), BooleanEntry((((((aZ + "_") + bC) + "_") + toString(eg)) + D), true)])
901901 else $Tuple2(em, nil)
902902 let er = eq._1
903903 let es = eq._2
904904 ([IntegerEntry((aZ + E), (ei + ef)), IntegerEntry((((((aZ + "_") + bC) + "_") + toString(eg)) + x), ef), IntegerEntry((((((aZ + "_") + bC) + "_") + toString(eg)) + C), er), StringEntry((((bC + "_") + toString(eg)) + y), aZ), IntegerEntry((bC + B), eg), ScriptTransfer(aA, eb, fromBase58String(bv))] ++ es)
905905 }
906906
907907
908908 func et (bR,eu) = (bR :+ parseIntValue(eu))
909909
910910
911911 func ev (ew,ex) = {
912912 let ey = addressFromStringValue(ew[1])
913913 let ez = split(ew[2], "|")
914914 let eA = bd(bK(ex))
915915 if ((eA == eA))
916916 then {
917917 let cD = [AttachedPayment(bK(ez[0]), parseIntValue(ez[1]))]
918918 let eB = ew[3]
919919 let cU = invoke(ey, "callFunction", ["exchange", [eB]], cD)
920920 if ((cU == cU))
921921 then (bd(bK(ex)) - eA)
922922 else throw("Strict value is not equal to itself.")
923923 }
924924 else throw("Strict value is not equal to itself.")
925925 }
926926
927927
928928 func eC (ew,ex) = {
929929 let ey = addressFromStringValue(ew[1])
930930 let eA = bd(bK(ex))
931931 if ((eA == eA))
932932 then {
933933 let cD = {
934934 let ez = split(ew[2], "|")
935935 [AttachedPayment(fromBase58String(ez[0]), parseIntValue(ez[1]))]
936936 }
937937 let eD = {
938938 let eE = split(ew[3], "|")
939939 let eF = split(eE[0], ",")
940940 let eG = split(eE[1], ",")
941941 let eH = {
942942 let bT = split(eE[2], ",")
943943 let bU = size(bT)
944944 let bV = nil
945945 func bW (bX,bY) = if ((bY >= bU))
946946 then bX
947947 else et(bX, bT[bY])
948948
949949 func bZ (bX,bY) = if ((bY >= bU))
950950 then bX
951951 else throw("List size exceeds 3")
952952
953953 bZ(bW(bW(bW(bV, 0), 1), 2), 3)
954954 }
955955 let eI = {
956956 let bT = split(eE[3], ",")
957957 let bU = size(bT)
958958 let bV = nil
959959 func eJ (bX,bY) = if ((bY >= bU))
960960 then bX
961961 else et(bX, bT[bY])
962962
963963 func eK (bX,bY) = if ((bY >= bU))
964964 then bX
965965 else throw("List size exceeds 3")
966966
967967 eK(eJ(eJ(eJ(bV, 0), 1), 2), 3)
968968 }
969969 let eL = split(eE[4], ",")
970970 let eB = parseIntValue(eE[5])
971971 [eF, eG, eH, eI, eL, eB]
972972 }
973973 let cU = invoke(ey, "routingTrade", eD, cD)
974974 if ((cU == cU))
975975 then (bd(bK(ex)) - eA)
976976 else throw("Strict value is not equal to itself.")
977977 }
978978 else throw("Strict value is not equal to itself.")
979979 }
980980
981981
982982 func eM (aZ,cb,eN,eO,eP,eQ,bs,br,bv) = if (if ((eN != eP))
983983 then (eN != eQ)
984984 else false)
985985 then throw("Wrong asset")
986986 else {
987987 let eR = bz(aZ)
988988 if ((eR == 0))
989989 then $Tuple2([ScriptTransfer(aA, eO, fromBase58String(eN))], 0)
990990 else {
991991 let eS = bA(aZ)
992992 let eT = valueOrElse(getInteger(this, (aZ + G)), 0)
993993 let eU = fraction(eS, m, (eR - eT))
994994 let eV = fraction(eO, eU, m)
995995 let eW = (eO - eV)
996996 let eX = fraction(eV, bD(aZ, g), p)
997997 let eY = fraction(eW, bD(aZ, f), p)
998998 let eZ = (eX + eY)
999999 let fa = if ((eN == eP))
10001000 then $Tuple2((eO - eZ), 0)
10011001 else $Tuple2(0, (eO - eZ))
10021002 let cv = fa._1
10031003 let cw = fa._2
10041004 let fb = dQ(cb, aZ, l, cv, eP, cw, eQ, bs, br, bv, false)
10051005 let ef = fb._1
10061006 let fc = fb._2
10071007 let fd = valueOrElse(getInteger(this, (aZ + I)), 0)
10081008 let fe = valueOrElse(getInteger(this, (aZ + J)), 0)
10091009 let ff = fraction(ef, eU, m)
10101010 let fg = (ef - ff)
10111011 let fh = if ((eS > 0))
10121012 then (fd + fraction(ff, n, eS))
10131013 else 0
10141014 let fi = if (((eR - eS) > 0))
10151015 then (fe + fraction(fg, n, (eR - eS)))
10161016 else 0
10171017 $Tuple2([IntegerEntry((aZ + I), fh), IntegerEntry((aZ + J), fi), IntegerEntry((aZ + F), (eS + ff)), ScriptTransfer(aA, eZ, bK(eN))], ef)
10181018 }
10191019 }
10201020
10211021
10221022 func fj (aZ,cb,bv) = {
10231023 let eR = bz(aZ)
10241024 let fk = assetBalance(aH, fromBase58String(bv))
10251025 if ((fk == fk))
10261026 then {
10271027 let fl = {
10281028 let bn = invoke(aI, "assetSupplyByAddressREADONLY", [toString(aH), bv, toString(this)], nil)
10291029 if ($isInstanceOf(bn, "Int"))
10301030 then bn
10311031 else throw(($getType(bn) + " couldn't be cast to Int"))
10321032 }
10331033 if ((fl == fl))
10341034 then {
10351035 let eT = valueOrElse(getInteger(this, (aZ + G)), 0)
10361036 let fm = valueOrElse(getInteger(this, (aZ + H)), 0)
10371037 if (if ((eT == 0))
10381038 then (fl > 0)
10391039 else false)
10401040 then {
10411041 let fn = cP(aZ, cb, bv, fl, true)
10421042 if ((fn == fn))
10431043 then if ((fk > fn))
10441044 then $Tuple2([ScriptTransfer(aA, fn, fromBase58String(bv))], 0)
10451045 else $Tuple2(nil, 0)
10461046 else throw("Strict value is not equal to itself.")
10471047 }
10481048 else {
10491049 let fo = (fl - eT)
10501050 if ((0 >= fo))
10511051 then $Tuple2(nil, 0)
10521052 else {
10531053 let fp = fraction(fm, m, eT)
10541054 let fq = fraction(fo, fp, m)
10551055 let fr = (fo - fq)
10561056 let fs = fraction(fq, bD(aZ, g), p)
10571057 let ft = fraction(fr, bD(aZ, f), p)
10581058 let fu = (fs + ft)
10591059 if ((fu > fk))
10601060 then $Tuple2(nil, 0)
10611061 else {
10621062 let fv = (fo - fu)
10631063 let fw = fraction(fv, fp, m)
10641064 let fx = (fv - fw)
10651065 let fy = valueOrElse(getInteger(this, (aZ + K)), 0)
10661066 let fz = valueOrElse(getInteger(this, (aZ + L)), 0)
10671067 let fA = if ((fm > 0))
10681068 then (fy + fraction(fw, n, fm))
10691069 else 0
10701070 let fB = if (((eT - fm) > 0))
10711071 then (fz + fraction(fx, n, (eT - fm)))
10721072 else 0
10731073 let fn = cP(aZ, cb, bv, fu, true)
10741074 if ((fn == fn))
10751075 then $Tuple2([IntegerEntry((aZ + K), fA), IntegerEntry((aZ + L), fB), IntegerEntry((aZ + G), (eT + fv)), IntegerEntry((aZ + H), (fm + fw)), ScriptTransfer(aA, fu, bK(bv))], fv)
10761076 else throw("Strict value is not equal to itself.")
10771077 }
10781078 }
10791079 }
10801080 }
10811081 else throw("Strict value is not equal to itself.")
10821082 }
10831083 else throw("Strict value is not equal to itself.")
10841084 }
10851085
10861086
10871087 func fC (bC,aZ,fD,fE,fF) = {
10881088 let fG = valueOrErrorMessage(getInteger(this, (((((aZ + "_") + bC) + "_") + fD) + x)), "Unknown position")
10891089 let fH = getIntegerValue(this, (((((aZ + "_") + bC) + "_") + fD) + C))
10901090 let em = valueOrElse(getInteger(this, (aZ + J)), 0)
10911091 let en = valueOrElse(getInteger(this, (aZ + I)), 0)
10921092 let eo = valueOrElse(getInteger(this, (aZ + L)), 0)
10931093 let ep = valueOrElse(getInteger(this, (aZ + K)), 0)
10941094 let fI = if (fE)
10951095 then if (fF)
10961096 then ep
10971097 else en
10981098 else if (fF)
10991099 then eo
11001100 else em
11011101 (fG + fraction(fG, (fI - fH), n))
11021102 }
11031103
11041104
11051105 func fJ (aZ,fK,fL,fM) = {
11061106 let bE = if (fK)
11071107 then i
11081108 else h
11091109 if (fL)
11101110 then fraction(fM, bD(aZ, bE), p)
11111111 else 0
11121112 }
11131113
11141114
11151115 func fN (bC,aZ,fD,fL,fO) = {
11161116 let fG = valueOrErrorMessage(getInteger(this, (((((aZ + "_") + bC) + "_") + fD) + x)), "Unknown position")
11171117 let cQ = valueOrElse(getBoolean(this, (((((aZ + "_") + bC) + "_") + fD) + D)), false)
11181118 let fK = (valueOrElse(getInteger(this, (((((aZ + "_") + bC) + "_") + fD) + z)), 0) > 0)
11191119 let dI = fC(bC, aZ, fD, fK, cQ)
11201120 let fP = bz(aZ)
11211121 let fQ = bA(aZ)
11221122 let eT = valueOrElse(getInteger(this, (aZ + G)), 0)
11231123 let fm = valueOrElse(getInteger(this, (aZ + H)), 0)
11241124 let fR = Address(fromBase58String(bC))
11251125 let bj = Address(fromBase58String(aZ))
11261126 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Unknown pool")
11271127 let fS = bx(bj, cb)
11281128 let fT = fS._1
11291129 let fU = fS._2
11301130 let bs = fS._3
11311131 let br = fS._4
11321132 let bv = fS._5
11331133 let fV = $Tuple2(bK(fT), bK(fU))
11341134 let fW = fV._1
11351135 let fX = fV._2
11361136 let fY = fJ(aZ, fK, fL, dI)
11371137 let cH = valueOrElse(getString(this, (aZ + ai)), "")
11381138 let fZ = bd(fW)
11391139 if ((fZ == fZ))
11401140 then {
11411141 let ga = bd(fX)
11421142 if ((ga == ga))
11431143 then {
11441144 let cU = if ((cb == b))
11451145 then {
11461146 let cU = cP(aZ, cb, bv, fY, cQ)
11471147 if ((cU == cU))
11481148 then invoke(bj, "callFunction", ["withdraw", [toString((dI - fY))]], nil)
11491149 else throw("Strict value is not equal to itself.")
11501150 }
11511151 else if ((cb == c))
11521152 then {
11531153 let cU = cP(aZ, cb, bv, (dI + fY), cQ)
11541154 if ((cU == cU))
11551155 then if ((cH == ""))
11561156 then invoke(bj, "get", nil, [AttachedPayment(bK(bv), dI)])
11571157 else invoke(addressFromStringValue(cH), "wxWithdrawTwoTokens", [aZ, fT, fU], [AttachedPayment(bK(bv), dI)])
11581158 else throw("Strict value is not equal to itself.")
11591159 }
11601160 else aP()
11611161 if ((cU == cU))
11621162 then {
11631163 let gb = bd(fW)
11641164 if ((gb == gb))
11651165 then {
11661166 let gc = bd(fX)
11671167 if ((gc == gc))
11681168 then {
11691169 let gd = $Tuple2((gb - fZ), (gc - ga))
11701170 let ge = gd._1
11711171 let gf = gd._2
11721172 let gg = if (fK)
11731173 then {
11741174 let gh = getStringValue(this, (((((aZ + "_") + bC) + "_") + fD) + A))
11751175 let gi = {
11761176 let bn = invoke(aQ(), "getAssetDebt", [false, ((bC + "_") + fD), gh], nil)
11771177 if ($isInstanceOf(bn, "Int"))
11781178 then bn
11791179 else throw(($getType(bn) + " couldn't be cast to Int"))
11801180 }
11811181 if ((gi == gi))
11821182 then {
11831183 let gj = if (if ((gh == fT))
11841184 then (gi > ge)
11851185 else false)
11861186 then (gi - ge)
11871187 else if (if ((gh == fU))
11881188 then (gi > gf)
11891189 else false)
11901190 then (gi - gf)
11911191 else 0
11921192 let gk = if ((gj > 0))
11931193 then dr(cb, aZ, fT, fU, (bs - ge), (br - gf), gj, gh)
11941194 else nil
11951195 if ((gk == gk))
11961196 then {
11971197 let gl = bd(fW)
11981198 if ((gl == gl))
11991199 then {
12001200 let gm = bd(fX)
12011201 if ((gm == gm))
12021202 then {
12031203 let gn = if ((gi > 0))
12041204 then invoke(aQ(), "repayFor", [((bC + "_") + fD)], [AttachedPayment(bK(gh), gi)])
12051205 else 0
12061206 if ((gn == gn))
12071207 then if ((gh == fT))
12081208 then $Tuple2(((gl - fZ) - gi), (gm - ga))
12091209 else $Tuple2((gl - fZ), ((gm - ga) - gi))
12101210 else throw("Strict value is not equal to itself.")
12111211 }
12121212 else throw("Strict value is not equal to itself.")
12131213 }
12141214 else throw("Strict value is not equal to itself.")
12151215 }
12161216 else throw("Strict value is not equal to itself.")
12171217 }
12181218 else throw("Strict value is not equal to itself.")
12191219 }
12201220 else $Tuple2(ge, gf)
12211221 let go = gg._1
12221222 let gp = gg._2
12231223 let gq = if (fK)
12241224 then [IntegerEntry((aZ + F), (fQ - dI))]
12251225 else nil
12261226 let gr = if (cQ)
12271227 then ([IntegerEntry((aZ + G), (eT - dI))] ++ (if (fK)
12281228 then [IntegerEntry((aZ + H), (fm - dI))]
12291229 else nil))
12301230 else nil
12311231 let gs = if (if ((fO == fT))
12321232 then (gp > 0)
12331233 else false)
12341234 then {
12351235 let gt = dC(cb, aZ, gp, fU, fT)
12361236 if ((gt == gt))
12371237 then $Tuple2((go + gt), 0)
12381238 else throw("Strict value is not equal to itself.")
12391239 }
12401240 else if (if ((fO == fU))
12411241 then (go > 0)
12421242 else false)
12431243 then {
12441244 let gt = dC(cb, aZ, go, fT, fU)
12451245 if ((gt == gt))
12461246 then $Tuple2(0, (gp + gt))
12471247 else throw("Strict value is not equal to itself.")
12481248 }
12491249 else $Tuple2(go, gp)
12501250 let gu = gs._1
12511251 let gv = gs._2
12521252 let gw = ((([DeleteEntry((((((aZ + "_") + bC) + "_") + fD) + x)), DeleteEntry((((bC + "_") + fD) + y)), DeleteEntry((((((aZ + "_") + bC) + "_") + fD) + z)), DeleteEntry((((((aZ + "_") + bC) + "_") + fD) + A)), DeleteEntry((((((aZ + "_") + bC) + "_") + fD) + C)), DeleteEntry((((((aZ + "_") + bC) + "_") + fD) + D)), IntegerEntry((aZ + E), (fP - dI)), ScriptTransfer(fR, gu, fW), ScriptTransfer(fR, gv, fX), ScriptTransfer(aA, fY, fromBase58String(bv))] ++ gq) ++ gr) ++ cp(fT, fU, bv, nil))
12531253 $Tuple2(gw, [gu, gv])
12541254 }
12551255 else throw("Strict value is not equal to itself.")
12561256 }
12571257 else throw("Strict value is not equal to itself.")
12581258 }
12591259 else throw("Strict value is not equal to itself.")
12601260 }
12611261 else throw("Strict value is not equal to itself.")
12621262 }
12631263 else throw("Strict value is not equal to itself.")
12641264 }
12651265
12661266
12671267 func gx (gy,bC,fD,gz) = {
12681268 let aZ = valueOrErrorMessage(getString(this, (((bC + "_") + fD) + y)), "no position")
12691269 let gA = valueOrErrorMessage(getInteger(this, (((((aZ + "_") + bC) + "_") + fD) + z)), "There are no borrow position")
12701270 let fG = valueOrErrorMessage(getInteger(this, (((((aZ + "_") + bC) + "_") + fD) + x)), "Unknown position")
12711271 let cQ = valueOrElse(getBoolean(this, (((((aZ + "_") + bC) + "_") + fD) + D)), false)
12721272 let dI = fC(bC, aZ, fD, true, cQ)
12731273 let fP = bz(aZ)
12741274 let fQ = bA(aZ)
12751275 let eT = valueOrElse(getInteger(this, (aZ + G)), 0)
12761276 let fm = valueOrElse(getInteger(this, (aZ + H)), 0)
12771277 let fR = Address(fromBase58String(bC))
12781278 let bj = Address(fromBase58String(aZ))
12791279 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Unknown pool")
12801280 let gB = bx(bj, cb)
12811281 let fT = gB._1
12821282 let fU = gB._2
12831283 let bs = gB._3
12841284 let br = gB._4
12851285 let bv = gB._5
12861286 let gC = $Tuple2(bK(fT), bK(fU))
12871287 let fW = gC._1
12881288 let fX = gC._2
12891289 let cH = valueOrElse(getString(this, (aZ + ai)), "")
12901290 let gh = getStringValue(this, (((((aZ + "_") + bC) + "_") + fD) + A))
12911291 let en = valueOrElse(getInteger(this, (aZ + I)), 0)
12921292 let ep = valueOrElse(getInteger(this, (aZ + K)), 0)
12931293 if ((gA == 0))
12941294 then throw("You can't liquidate position without borrow")
12951295 else {
12961296 let fZ = bd(fW)
12971297 if ((fZ == fZ))
12981298 then {
12991299 let ga = bd(fX)
13001300 if ((ga == ga))
13011301 then {
13021302 let cU = if ((cb == b))
13031303 then invoke(bj, "callFunction", ["withdraw", [toString(dI)]], nil)
13041304 else if ((cb == c))
13051305 then {
13061306 let cU = cP(aZ, cb, bv, dI, cQ)
13071307 if ((cU == cU))
13081308 then if ((cH == ""))
13091309 then invoke(bj, "get", nil, [AttachedPayment(bK(bv), dI)])
13101310 else invoke(addressFromStringValue(cH), "wxWithdrawTwoTokens", [aZ, fT, fU], [AttachedPayment(bK(bv), dI)])
13111311 else throw("Strict value is not equal to itself.")
13121312 }
13131313 else aP()
13141314 if ((cU == cU))
13151315 then {
13161316 let gb = bd(fW)
13171317 if ((gb == gb))
13181318 then {
13191319 let gc = bd(fX)
13201320 if ((gc == gc))
13211321 then {
13221322 let gD = $Tuple2((gb - fZ), (gc - ga))
13231323 let ge = gD._1
13241324 let gf = gD._2
13251325 let gj = if (if ((gh == fT))
13261326 then (gz > ge)
13271327 else false)
13281328 then (gz - ge)
13291329 else if (if ((gh == fU))
13301330 then (gz > gf)
13311331 else false)
13321332 then (gz - gf)
13331333 else 0
13341334 let gk = if ((gj > 0))
13351335 then dr(cb, aZ, fT, fU, (bs - ge), (br - gf), gj, gh)
13361336 else nil
13371337 if ((gk == gk))
13381338 then {
13391339 let gl = bd(fW)
13401340 if ((gl == gl))
13411341 then {
13421342 let gm = bd(fX)
13431343 if ((gm == gm))
13441344 then {
13451345 let gE = if ((gh == fT))
13461346 then $Tuple2(((gl - fZ) - gz), (gm - ga))
13471347 else $Tuple2((gl - fZ), ((gm - ga) - gz))
13481348 let go = gE._1
13491349 let gp = gE._2
13501350 let gF = bo(bj, cb, fT, fU)
13511351 let gG = gF._1
13521352 let gH = gF._2
13531353 let gI = dQ(cb, aZ, l, go, fT, gp, fU, bs, br, bv, cQ)
13541354 let gJ = gI._1
13551355 let eZ = gI._2
13561356 let gK = (dI - gJ)
13571357 let gL = if (cQ)
13581358 then $Tuple2(ep, [IntegerEntry((aZ + G), (eT - gK)), IntegerEntry((aZ + H), (fm - gK))])
13591359 else $Tuple2(en, nil)
13601360 let er = gL._1
13611361 let gr = gL._2
13621362 $Tuple2((([IntegerEntry((aZ + E), (fP - gK)), IntegerEntry((aZ + F), (fQ - gK)), IntegerEntry((((((aZ + "_") + bC) + "_") + fD) + x), (fG - gK)), IntegerEntry((((((aZ + "_") + bC) + "_") + fD) + C), er), ScriptTransfer(gy, gz, bK(gh))] ++ gr) ++ cp(fT, fU, bv, nil)), gK)
13631363 }
13641364 else throw("Strict value is not equal to itself.")
13651365 }
13661366 else throw("Strict value is not equal to itself.")
13671367 }
13681368 else throw("Strict value is not equal to itself.")
13691369 }
13701370 else throw("Strict value is not equal to itself.")
13711371 }
13721372 else throw("Strict value is not equal to itself.")
13731373 }
13741374 else throw("Strict value is not equal to itself.")
13751375 }
13761376 else throw("Strict value is not equal to itself.")
13771377 }
13781378 else throw("Strict value is not equal to itself.")
13791379 }
13801380 }
13811381
13821382
13831383 func gM (gN) = {
13841384 let gO = split(valueOrErrorMessage(getString(this, (gN + U)), ("No request with id " + gN)), ",")
13851385 let bC = gO[0]
13861386 let aZ = gO[1]
13871387 let cv = parseIntValue(gO[2])
13881388 let eP = gO[3]
13891389 let cw = parseIntValue(gO[4])
13901390 let eQ = gO[5]
13911391 let bs = parseIntValue(gO[6])
13921392 let br = parseIntValue(gO[7])
13931393 let bv = gO[8]
13941394 let gP = gO[9]
13951395 let gQ = parseIntValue(gO[10])
13961396 let cN = (gO[11] == "true")
13971397 $Tuple12(bC, aZ, cv, eP, cw, eQ, bs, br, bv, gP, gQ, cN)
13981398 }
13991399
14001400
14011401 func gR (cv,cw,bl,bm,gS,gT) = if (if ((gT != bl))
14021402 then (gT != bm)
14031403 else false)
14041404 then throw("Wrong borrow asset")
14051405 else {
14061406 let cg = getIntegerValue(aC, (bl + ab))
14071407 let ch = getIntegerValue(aC, (bm + ab))
14081408 let gU = pow(10, 0, bL(bl), 0, 0, DOWN)
14091409 let gV = pow(10, 0, bL(bm), 0, 0, DOWN)
14101410 let gW = (fraction(cg, cv, gU) + fraction(ch, cw, gV))
14111411 let gX = if ((gT == bl))
14121412 then $Tuple2(cg, gU)
14131413 else $Tuple2(ch, gV)
14141414 let gY = gX._1
14151415 let gZ = gX._2
14161416 fraction(fraction(gW, (gS - 100), 100), gZ, gY)
14171417 }
14181418
14191419
14201420 func ha (hb,eP,eQ) = if ((size(hb) == 2))
14211421 then if ((bJ(hb[0].assetId) != eP))
14221422 then throw("Wrong payment asset A")
14231423 else if ((bJ(hb[1].assetId) != eQ))
14241424 then throw("Wrong payment asset B")
14251425 else $Tuple2(hb[0].amount, hb[1].amount)
14261426 else if ((size(hb) == 1))
14271427 then if ((bJ(hb[0].assetId) == eP))
14281428 then $Tuple2(hb[0].amount, 0)
14291429 else if ((bJ(hb[0].assetId) == eQ))
14301430 then $Tuple2(0, hb[0].amount)
14311431 else throw("Wrong payment")
14321432 else throw("One or two payments expected")
14331433
14341434
14351435 func hc (bs,br,hd,he) = {
14361436 let hf = ((m - fraction(fraction(br, m, bs), m, fraction(he, m, hd))) * 100)
14371437 if ((0 > hf))
14381438 then (hf * -1)
14391439 else hf
14401440 }
14411441
14421442
14431443 func hg (aZ,cb,hh,cM,dX) = {
14441444 let hi = if (hh)
14451445 then dM(cb, aZ)
14461446 else {
14471447 let hj = if ((cb == b))
14481448 then aF
14491449 else if ((cb == c))
14501450 then {
14511451 let hk = valueOrElse(getString(this, (aZ + ai)), "")
14521452 let cU = if ((hk != ""))
14531453 then {
14541454 let cH = addressFromStringValue(hk)
14551455 let hl = assetBalance(cH, aG)
14561456 if ((hl > 0))
14571457 then invoke(cH, "wxClaimFinalized", [hl], nil)
14581458 else unit
14591459 }
14601460 else unit
14611461 if ((cU == cU))
14621462 then aG
14631463 else throw("Strict value is not equal to itself.")
14641464 }
14651465 else aP()
14661466 $Tuple2(cM, hj)
14671467 }
14681468 if ((hi == hi))
14691469 then {
14701470 let hm = hi._2
14711471 let hn = hi._1
14721472 let ho = bd(hm)
14731473 if ((ho == ho))
14741474 then if ((cM > ho))
14751475 then throw("To big amount to exchange")
14761476 else $Tuple2(hn, hm)
14771477 else throw("Strict value is not equal to itself.")
14781478 }
14791479 else throw("Strict value is not equal to itself.")
14801480 }
14811481
14821482
14831483 @Callable(aS)
14841484 func getPoolInfoREADONLY (aZ) = {
14851485 let bj = addressFromStringValue(aZ)
14861486 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Pool is not inited")
14871487 let hp = bx(Address(fromBase58String(aZ)), cb)
14881488 let eP = hp._1
14891489 let eQ = hp._2
14901490 let bs = hp._3
14911491 let br = hp._4
14921492 let bv = hp._5
14931493 let ci = by(bj, cb, bv)
14941494 $Tuple2(nil, $Tuple6(eP, eQ, bv, bs, br, ci))
14951495 }
14961496
14971497
14981498
14991499 @Callable(aS)
15001500 func getShareAssetPriceREADONLY (bv) = {
15011501 let hq = ca(bv)
15021502 $Tuple2(nil, hq)
15031503 }
15041504
15051505
15061506
15071507 @Callable(aS)
15081508 func getUserPositionShareAmountREADONLY (bC,eg) = {
15091509 let aZ = valueOrErrorMessage(getString(this, (((bC + "_") + eg) + y)), "Unknown position")
15101510 let gA = getIntegerValue(this, (((((aZ + "_") + bC) + "_") + eg) + z))
15111511 let cQ = valueOrElse(getBoolean(this, (((((aZ + "_") + bC) + "_") + eg) + D)), false)
15121512 let dI = fC(bC, aZ, eg, (gA > 0), cQ)
15131513 $Tuple2(nil, dI)
15141514 }
15151515
15161516
15171517
15181518 @Callable(aS)
15191519 func getUserPositionREADONLY (bC,hr,eg) = {
15201520 func hs (bR,aZ) = {
15211521 let ht = bR
15221522 let hu = ht._1
15231523 let hv = ht._2
15241524 let hw = ht._3
15251525 let hx = ht._4
15261526 let hy = ht._5
15271527 let hz = ht._6
15281528 if (!(isDefined(getInteger(this, (((((aZ + "_") + bC) + "_") + eg[hz]) + x)))))
15291529 then $Tuple6((hu :+ 0), (hv :+ 0), (hw :+ 0), (hx :+ 0), (hy :+ 0), (hz + 1))
15301530 else {
15311531 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Pool is not inited")
15321532 let hA = bx(Address(fromBase58String(aZ)), cb)
15331533 let eP = hA._1
15341534 let eQ = hA._2
15351535 let bs = hA._3
15361536 let br = hA._4
15371537 let bv = hA._5
15381538 let gA = valueOrElse(getInteger(this, (((((aZ + "_") + bC) + "_") + eg[hz]) + z)), 0)
15391539 let cQ = valueOrElse(getBoolean(this, (((((aZ + "_") + bC) + "_") + eg[hz]) + D)), false)
15401540 let dI = fC(bC, aZ, eg[hz], (gA > 0), cQ)
15411541 let hB = dH(Address(fromBase58String(aZ)), cb, bv, dI)
15421542 let hC = hB._1
15431543 let hD = hB._2
15441544 if ((gA > 0))
15451545 then {
15461546 let gh = getStringValue(this, (((((aZ + "_") + bC) + "_") + eg[hz]) + A))
15471547 let gi = {
15481548 let bn = invoke(aQ(), "getAssetDebt", [false, ((bC + "_") + eg[hz]), gh], nil)
15491549 if ($isInstanceOf(bn, "Int"))
15501550 then bn
15511551 else throw(($getType(bn) + " couldn't be cast to Int"))
15521552 }
15531553 if ((gi == gi))
15541554 then {
15551555 let gj = if (if ((gh == eP))
15561556 then (gi > hC)
15571557 else false)
15581558 then (gi - hC)
15591559 else if (if ((gh == eQ))
15601560 then (gi > hD)
15611561 else false)
15621562 then (gi - hD)
15631563 else 0
15641564 let de = if ((gj > 0))
15651565 then if ((cb == b))
15661566 then {
15671567 let hE = cV(aZ, eP, eQ, bs, br, gj, gh)
15681568 hE._2
15691569 }
15701570 else if ((cb == c))
15711571 then {
15721572 let hE = dk(aZ, eP, eQ, bs, br, gj, gh)
15731573 hE._2
15741574 }
15751575 else aP()
15761576 else 0
15771577 let hF = if ((gh == eP))
15781578 then $Tuple2(((hC + gj) - gi), (hD - de))
15791579 else $Tuple2((hC - de), ((hD + gj) - gi))
15801580 let hG = hF._1
15811581 let hH = hF._2
15821582 $Tuple6((hu :+ hC), (hv :+ hD), (hw :+ gi), (hx :+ hG), (hy :+ hH), (hz + 1))
15831583 }
15841584 else throw("Strict value is not equal to itself.")
15851585 }
15861586 else $Tuple6((hu :+ hC), (hv :+ hD), hw, (hu :+ hC), (hv :+ hD), (hz + 1))
15871587 }
15881588 }
15891589
15901590 let hI = {
15911591 let bT = hr
15921592 let bU = size(bT)
15931593 let bV = $Tuple6(nil, nil, nil, nil, nil, 0)
15941594 func bW (bX,bY) = if ((bY >= bU))
15951595 then bX
15961596 else hs(bX, bT[bY])
15971597
15981598 func bZ (bX,bY) = if ((bY >= bU))
15991599 then bX
16001600 else throw("List size exceeds 20")
16011601
16021602 bZ(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bW(bV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
16031603 }
16041604 let hu = hI._1
16051605 let hv = hI._2
16061606 let hw = hI._3
16071607 let hx = hI._4
16081608 let hy = hI._5
16091609 $Tuple2(nil, $Tuple5(hu, hv, hw, hx, hy))
16101610 }
16111611
16121612
16131613
16141614 @Callable(aS)
16151615 func replenish (aZ,gS,gT,cN) = valueOrElse(aX(), {
16161616 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Pool is not inited")
16171617 if (!(aY(aZ, cb)))
16181618 then throw("Pool not active at this moment")
16191619 else if (if ((100 > gS))
16201620 then true
16211621 else (gS > 300))
16221622 then throw("Leverage can't be <100 and >300")
16231623 else if (if (!(getBooleanValue(this, (aZ + M))))
16241624 then (gS > 100)
16251625 else false)
16261626 then throw("You can't borrow in this pool")
16271627 else if (if (cN)
16281628 then !(valueOrElse(getBoolean(this, (aZ + N)), false))
16291629 else false)
16301630 then throw("This pool can't stake to puzzle market")
16311631 else {
16321632 let hJ = bx(Address(fromBase58String(aZ)), cb)
16331633 let eP = hJ._1
16341634 let eQ = hJ._2
16351635 let bs = hJ._3
16361636 let br = hJ._4
16371637 let bv = hJ._5
16381638 if (if ((gT != eP))
16391639 then (gT != eQ)
16401640 else false)
16411641 then throw("Wrong borrow asset")
16421642 else {
16431643 let hK = ha(aS.payments, eP, eQ)
16441644 let cv = hK._1
16451645 let cw = hK._2
16461646 let bC = toString(aS.caller)
16471647 let hL = bB(bC)
16481648 if ((gS > 100))
16491649 then {
16501650 let gA = gR(cv, cw, eP, eQ, gS, gT)
16511651 let gO = makeString([bC, aZ, toString(cv), eP, toString(cw), eQ, toString(bs), toString(br), bv, gT, toString(gA), toString(cN)], ",")
16521652 let hM = {
16531653 let bn = invoke(this, "createNewRequest", [gO], nil)
16541654 if ($isInstanceOf(bn, "Int"))
16551655 then bn
16561656 else throw(($getType(bn) + " couldn't be cast to Int"))
16571657 }
16581658 if ((hM == hM))
16591659 then {
16601660 let eD = [((bC + "_") + toString(hL)), bv, gT, gA, toString(this), "replenishFromLand", toString(valueOrErrorMessage(hM, "Can't create new request"))]
16611661 let cU = reentrantInvoke(aQ(), "flashPosition", eD, nil)
16621662 if ((cU == cU))
16631663 then {
16641664 let gJ = getIntegerValue(this, (((((aZ + "_") + bC) + "_") + toString(hL)) + x))
16651665 let hN = bo(Address(fromBase58String(aZ)), cb, eP, eQ)
16661666 if ((hN == hN))
16671667 then {
16681668 let he = hN._2
16691669 let hd = hN._1
16701670 let hO = hc(bs, br, hd, he)
16711671 let hP = dH(Address(fromBase58String(aZ)), cb, bv, gJ)
16721672 let hC = hP._1
16731673 let hD = hP._2
16741674 $Tuple2(nil, [hO, hC, hD])
16751675 }
16761676 else throw("Strict value is not equal to itself.")
16771677 }
16781678 else throw("Strict value is not equal to itself.")
16791679 }
16801680 else throw("Strict value is not equal to itself.")
16811681 }
16821682 else {
16831683 let hQ = dQ(cb, aZ, k, cv, eP, cw, eQ, bs, br, bv, cN)
16841684 if ((hQ == hQ))
16851685 then {
16861686 let eZ = hQ._2
16871687 let gJ = hQ._1
16881688 let hR = bo(Address(fromBase58String(aZ)), cb, eP, eQ)
16891689 if ((hR == hR))
16901690 then {
16911691 let he = hR._2
16921692 let hd = hR._1
16931693 let hO = hc(bs, br, hd, he)
16941694 let hS = dH(Address(fromBase58String(aZ)), cb, bv, gJ)
16951695 let hC = hS._1
16961696 let hD = hS._2
16971697 $Tuple2((ee(aZ, bC, gJ, eZ, hL, bv, cb, false, cN) ++ cp(eP, eQ, bv, [toString(hC), toString(hD)])), [hO, hC, hD])
16981698 }
16991699 else throw("Strict value is not equal to itself.")
17001700 }
17011701 else throw("Strict value is not equal to itself.")
17021702 }
17031703 }
17041704 }
17051705 })
17061706
17071707
17081708
17091709 @Callable(aS)
17101710 func withdraw (aZ,fD) = valueOrElse(aX(), {
17111711 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Pool is not inited")
17121712 if (!(aY(aZ, cb)))
17131713 then throw("Pool not active at this moment")
17141714 else fN(toString(aS.caller), aZ, toString(fD), false, "")
17151715 })
17161716
17171717
17181718
17191719 @Callable(aS)
17201720 func withdrawOneToken (aZ,fD,eN) = valueOrElse(aX(), {
17211721 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Pool is not inited")
17221722 if (!(aY(aZ, cb)))
17231723 then throw("Pool not active at this moment")
17241724 else fN(toString(aS.caller), aZ, toString(fD), false, eN)
17251725 })
17261726
17271727
17281728
17291729 @Callable(aS)
17301730 func createUpdateStopLoss (fD,hT,be,hU) = valueOrElse(aX(), {
17311731 let hV = getIntegerValue(aC, (be + ab))
17321732 let cb = valueOrErrorMessage(getString(this, (W + hT)), "Pool is not inited")
17331733 if (!(aY(hT, cb)))
17341734 then throw("Pool not active at this moment")
17351735 else if (!(isDefined(getInteger(this, (((((hT + "_") + toString(aS.caller)) + "_") + toString(fD)) + x)))))
17361736 then throw("There are no user position")
17371737 else if ((0 >= hU))
17381738 then throw("Price must be greater than 0")
17391739 else if ((hU > hV))
17401740 then throw("Price must be less than current token price")
17411741 else [IntegerEntry((((((((toString(aS.caller) + "_") + toString(fD)) + "_") + hT) + "_") + be) + ag), hU)]
17421742 })
17431743
17441744
17451745
17461746 @Callable(aS)
17471747 func deleteStopLoss (fD,hT,be) = valueOrElse(aX(), {
17481748 let cb = valueOrErrorMessage(getString(this, (W + hT)), "Pool is not inited")
17491749 if (!(aY(hT, cb)))
17501750 then throw("Pool not active at this moment")
17511751 else if (!(isDefined(getInteger(this, (((((((toString(aS.caller) + "_") + toString(fD)) + "_") + hT) + "_") + be) + ag)))))
17521752 then throw("No entry")
17531753 else [DeleteEntry((((((((toString(aS.caller) + "_") + toString(fD)) + "_") + hT) + "_") + be) + ag))]
17541754 })
17551755
17561756
17571757
17581758 @Callable(aS)
17591759 func init (hW,hX,hY,aC,hZ,aD,ia,ib,ic,id,ie,if,ig) = valueOrElse(aU(aS), if (isDefined(getString(am)))
17601760 then throw("Already inited")
17611761 else if (!(isDefined(addressFromString(hW))))
17621762 then throw("moneyBoxAddr is not correct address")
17631763 else if (!(isDefined(addressFromString(hX))))
17641764 then throw("sfFarmingAddr is not correct address")
17651765 else if (!(isDefined(addressFromString(hY))))
17661766 then throw("lendAddr is not correct address")
17671767 else if (!(isDefined(addressFromString(aC))))
17681768 then throw("priceOracleAddr is not correct address")
17691769 else if (!(isDefined(addressFromString(hZ))))
17701770 then throw("keeperExContract is not correct address")
17711771 else if (!(isDefined(assetInfo(fromBase58String(ia)))))
17721772 then throw("swopAssetId is not correct asset id")
17731773 else if (!(isDefined(assetInfo(fromBase58String(ib)))))
17741774 then throw("swopAssetId is not correct asset id")
17751775 else if ((size(fromBase58String(ic)) != 32))
17761776 then throw("operatorPubKey is not correct")
17771777 else if ((size(fromBase58String(id)) != 32))
17781778 then throw("group1Admin1PubKey is not correct")
17791779 else if ((size(fromBase58String(ie)) != 32))
17801780 then throw("group1Admin2PubKey is not correct")
17811781 else if ((size(fromBase58String(if)) != 32))
17821782 then throw("group2Admin1PubKey is not correct")
17831783 else if ((size(fromBase58String(ig)) != 32))
17841784 then throw("group2Admin2PubKey is not correct")
17851785 else [StringEntry(aj, hW), StringEntry(ak, hX), StringEntry(al, hY), StringEntry(an, aC), StringEntry(ao, hZ), StringEntry(ap, aD), StringEntry(ar, ia), StringEntry(as, ib), StringEntry(am, ic), StringEntry(av, id), StringEntry(aw, ie), StringEntry(ay, if), StringEntry(az, ig)])
17861786
17871787
17881788
17891789 @Callable(aS)
17901790 func createNewRequest (cT) = valueOrElse(aU(aS), {
17911791 let hM = (valueOrElse(getInteger(this, V), 0) + 1)
17921792 $Tuple2([StringEntry((toString(hM) + U), cT), IntegerEntry(V, hM)], hM)
17931793 })
17941794
17951795
17961796
17971797 @Callable(aS)
17981798 func replenishFromLand (gN) = valueOrElse(aW(), valueOrElse(aV(aS), {
17991799 let ih = gM(gN)
18001800 let bC = ih._1
18011801 let aZ = ih._2
18021802 let cv = ih._3
18031803 let eP = ih._4
18041804 let cw = ih._5
18051805 let eQ = ih._6
18061806 let bs = ih._7
18071807 let br = ih._8
18081808 let bv = ih._9
18091809 let gP = ih._10
18101810 let gQ = ih._11
18111811 let cN = ih._12
18121812 if ((size(aS.payments) != 1))
18131813 then throw("Wrong payment size")
18141814 else if (if ((bJ(aS.payments[0].assetId) != gP))
18151815 then true
18161816 else (aS.payments[0].amount != gQ))
18171817 then throw("Wrong payment")
18181818 else {
18191819 let ii = if ((eP == gP))
18201820 then $Tuple2((cv + gQ), cw)
18211821 else $Tuple2(cv, (cw + gQ))
18221822 let ij = ii._1
18231823 let ik = ii._2
18241824 let cb = valueOrErrorMessage(getString(this, (W + aZ)), "Unknown pool")
18251825 let il = dQ(cb, aZ, j, ij, eP, ik, eQ, bs, br, bv, cN)
18261826 let gJ = il._1
18271827 let eZ = il._2
18281828 let eg = bB(bC)
18291829 let im = [IntegerEntry((((((aZ + "_") + bC) + "_") + toString(eg)) + z), gQ), StringEntry((((((aZ + "_") + bC) + "_") + toString(eg)) + A), gP)]
18301830 let gw = ee(aZ, bC, gJ, eZ, eg, bv, cb, true, cN)
18311831 let in = dH(Address(fromBase58String(aZ)), cb, bv, gJ)
18321832 let hC = in._1
18331833 let hD = in._2
18341834 $Tuple2((((gw ++ cp(eP, eQ, bv, [toString(hC), toString(hD)])) ++ im) :+ DeleteEntry((gN + U))), gJ)
18351835 }
18361836 }))
18371837
18381838
18391839
18401840 @Callable(aS)
18411841 func liquidate (bC,fD,io) = valueOrElse(aW(), valueOrElse(aV(aS), gx(aS.caller, bC, fD, io)))
18421842
18431843
18441844
18451845 @Callable(aS)
18461846 func stopLoss (bC,fD,aZ,be) = valueOrElse(aW(), valueOrElse(aR(aS), {
18471847 let hV = getIntegerValue(aC, (be + ab))
18481848 let ip = valueOrErrorMessage(getInteger(this, (((((((bC + "_") + toString(fD)) + "_") + aZ) + "_") + be) + ag)), "No entry")
18491849 if ((hV > ip))
18501850 then throw("Token price greater stop loss price")
18511851 else {
18521852 let iq = fN(bC, aZ, toString(fD), true, "")
18531853 $Tuple2((iq._1 :+ DeleteEntry((((((((bC + "_") + toString(fD)) + "_") + aZ) + "_") + be) + ag))), iq._2)
18541854 }
18551855 }))
18561856
18571857
18581858
18591859 @Callable(aS)
18601860 func capitalizeEx (aZ,ir,is,it,hh) = valueOrElse(aW(), valueOrElse(aR(aS), {
18611861 let cb = getStringValue(this, (W + aZ))
18621862 let dX = valueOrElse(getInteger(this, (aZ + Z)), 0)
18631863 let bj = Address(fromBase58String(aZ))
18641864 let iu = bx(bj, cb)
18651865 let eP = iu._1
18661866 let eQ = iu._2
18671867 let bs = iu._3
18681868 let br = iu._4
18691869 let bv = iu._5
18701870 let eR = bz(aZ)
18711871 let iv = valueOrElse(getBoolean(this, (aZ + N)), false)
18721872 let iw = if ((it > 0))
18731873 then {
18741874 let ix = hg(aZ, cb, hh, it, dX)
18751875 if ((ix == ix))
18761876 then {
18771877 let hj = ix._2
18781878 let iy = ix._1
18791879 let ew = split(ir, "__")
18801880 let iz = if ((it > 0))
18811881 then if ((ew[0] == "directSwopfiCPMM"))
18821882 then ev(ew, is)
18831883 else if ((ew[0] == "routingSwopfi"))
18841884 then eC(ew, is)
18851885 else throw("Wrong route")
18861886 else 0
18871887 if ((iz == iz))
18881888 then {
18891889 let iA = ((iy + dX) - it)
18901890 let iB = if ((iA >= 0))
18911891 then [IntegerEntry((aZ + Z), iA)]
18921892 else nil
18931893 let iC = eM(aZ, cb, is, iz, eP, eQ, bs, br, bv)
18941894 let iD = iC._1
18951895 let iE = iC._2
18961896 $Tuple2((iD ++ iB), iE)
18971897 }
18981898 else throw("Strict value is not equal to itself.")
18991899 }
19001900 else throw("Strict value is not equal to itself.")
19011901 }
19021902 else $Tuple2(nil, 0)
19031903 let iD = iw._1
19041904 let iE = iw._2
19051905 let iF = if (iv)
19061906 then fj(aZ, cb, bv)
19071907 else $Tuple2(nil, 0)
19081908 let iG = iF._1
19091909 let iH = iF._2
19101910 ((([IntegerEntry((aZ + E), ((eR + iE) + iH))] ++ iD) ++ iG) ++ cp(eP, eQ, bv, nil))
19111911 }))
19121912
19131913
19141914
19151915 @Callable(aS)
19161916 func capitalizeNoEx (aZ,hh,iI) = valueOrElse(aW(), valueOrElse(aR(aS), {
19171917 let cb = getStringValue(this, (W + aZ))
19181918 let bj = Address(fromBase58String(aZ))
19191919 let iJ = bx(bj, cb)
19201920 let eP = iJ._1
19211921 let eQ = iJ._2
19221922 let bs = iJ._3
19231923 let br = iJ._4
19241924 let bv = iJ._5
1925+ let eR = bz(aZ)
19251926 let iK = hg(aZ, cb, hh, iI, 0)
19261927 if ((iK == iK))
19271928 then {
19281929 let hj = iK._2
19291930 let iy = iK._1
1930- eM(aZ, cb, bJ(hj), (iy + iI), eP, eQ, bs, br, bv)
1931+ let iL = eM(aZ, cb, bJ(hj), (iy + iI), eP, eQ, bs, br, bv)
1932+ let iD = iL._1
1933+ let iE = iL._2
1934+ (([IntegerEntry((aZ + E), (eR + iE))] ++ iD) ++ cp(eP, eQ, bv, nil))
19311935 }
19321936 else throw("Strict value is not equal to itself.")
19331937 }))
19341938
19351939
19361940
19371941 @Callable(aS)
1938-func initNewPool (ba,iL,bj,iM,iN,iO,iP,iQ,iR,iS,iT) = valueOrElse(aW(), valueOrElse(aT(aS), if (if ((ba != b))
1942+func initNewPool (ba,iM,bj,iN,iO,iP,iQ,iR,iS,iT,iU) = valueOrElse(aW(), valueOrElse(aT(aS), if (if ((ba != b))
19391943 then (ba != c)
19401944 else false)
19411945 then throw("Wrong type")
1942- else if (if ((iL != d))
1943- then (iL != e)
1946+ else if (if ((iM != d))
1947+ then (iM != e)
19441948 else false)
19451949 then throw("Wrong pool type")
19461950 else {
1947- let iU = bx(Address(fromBase58String(bj)), ba)
1948- let bl = iU._1
1949- let bm = iU._2
1950- let dO = iU._3
1951- let dP = iU._4
1952- let bv = iU._5
1953- if ((0 > iM))
1951+ let iV = bx(Address(fromBase58String(bj)), ba)
1952+ let bl = iV._1
1953+ let bm = iV._2
1954+ let dO = iV._3
1955+ let dP = iV._4
1956+ let bv = iV._5
1957+ if ((0 > iN))
19541958 then throw("inFeeNoLoan must be greater than 0")
1955- else if ((0 > iN))
1959+ else if ((0 > iO))
19561960 then throw("inFeeLoan must be greater than 0")
1957- else if ((0 > iO))
1961+ else if ((0 > iP))
19581962 then throw("capFeeNoLoan must be greater than 0")
1959- else if ((0 > iP))
1963+ else if ((0 > iQ))
19601964 then throw("capFeeWithLoan must be greater than 0")
1961- else if ((0 > iQ))
1965+ else if ((0 > iR))
19621966 then throw("stoplossFeeNoLoan must be greater than 0")
1963- else if ((0 > iR))
1967+ else if ((0 > iS))
19641968 then throw("stoplossFeeWithLoan must be greater than 0")
1965- else [IntegerEntry((bj + O), iM), IntegerEntry((bj + P), iN), IntegerEntry((bj + Q), iO), IntegerEntry((bj + R), iP), IntegerEntry((bj + S), iQ), IntegerEntry((bj + T), iR), IntegerEntry((bj + I), 0), IntegerEntry((bj + J), 0), StringEntry((W + bj), ba), StringEntry((bj + X), iL), StringEntry((bv + Y), bj), BooleanEntry((bj + M), iS), BooleanEntry((bj + N), iT)]
1969+ else [IntegerEntry((bj + O), iN), IntegerEntry((bj + P), iO), IntegerEntry((bj + Q), iP), IntegerEntry((bj + R), iQ), IntegerEntry((bj + S), iR), IntegerEntry((bj + T), iS), IntegerEntry((bj + I), 0), IntegerEntry((bj + J), 0), StringEntry((W + bj), ba), StringEntry((bj + X), iM), StringEntry((bv + Y), bj), BooleanEntry((bj + M), iT), BooleanEntry((bj + N), iU)]
19661970 }))
19671971
19681972
19691973
19701974 @Callable(aS)
1971-func updatePoolFees (bj,iM,iN,iO,iP,iQ,iR) = valueOrElse(aW(), valueOrElse(aT(aS), if (!(isDefined(getString(this, (W + bj)))))
1975+func updatePoolFees (bj,iN,iO,iP,iQ,iR,iS) = valueOrElse(aW(), valueOrElse(aT(aS), if (!(isDefined(getString(this, (W + bj)))))
19721976 then throw(("Can't find pool with addr " + bj))
1973- else if ((0 > iM))
1977+ else if ((0 > iN))
19741978 then throw("inFeeNoLoan must be greater than 0")
1975- else if ((0 > iN))
1979+ else if ((0 > iO))
19761980 then throw("inFeeLoan must be greater than 0")
1977- else if ((0 > iO))
1981+ else if ((0 > iP))
19781982 then throw("capFeeNoLoan must be greater than 0")
1979- else if ((0 > iP))
1983+ else if ((0 > iQ))
19801984 then throw("capFeeWithLoan must be greater than 0")
1981- else if ((0 > iQ))
1985+ else if ((0 > iR))
19821986 then throw("stoplossFeeNoLoan must be greater than 0")
1983- else if ((0 > iR))
1987+ else if ((0 > iS))
19841988 then throw("stoplossFeeWithLoan must be greater than 0")
1985- else [IntegerEntry((bj + O), iM), IntegerEntry((bj + P), iN), IntegerEntry((bj + Q), iO), IntegerEntry((bj + R), iP), IntegerEntry((bj + S), iQ), IntegerEntry((bj + T), iR)]))
1989+ else [IntegerEntry((bj + O), iN), IntegerEntry((bj + P), iO), IntegerEntry((bj + Q), iP), IntegerEntry((bj + R), iQ), IntegerEntry((bj + S), iR), IntegerEntry((bj + T), iS)]))
19861990
19871991
19881992
19891993 @Callable(aS)
19901994 func activate () = valueOrElse(aT(aS), if (valueOrElse(getBoolean(this, ac), true))
19911995 then throw("dApp already active")
19921996 else [BooleanEntry(ac, true)])
19931997
19941998
19951999
19962000 @Callable(aS)
19972001 func shutdown () = valueOrElse(aT(aS), if (!(valueOrElse(getBoolean(this, ac), true)))
19982002 then throw("dApp already shutdown")
19992003 else [BooleanEntry(ac, false)])
20002004
20012005
20022006
20032007 @Callable(aS)
20042008 func activateForUsers () = valueOrElse(aT(aS), if (valueOrElse(getBoolean(this, ad), true))
20052009 then throw("dApp already active for users")
20062010 else [BooleanEntry(ad, true)])
20072011
20082012
20092013
20102014 @Callable(aS)
20112015 func shutdownForUsers () = valueOrElse(aT(aS), if (!(valueOrElse(getBoolean(this, ad), true)))
20122016 then throw("dApp already shutdown for users")
20132017 else [BooleanEntry(ad, false)])
20142018
20152019
20162020
20172021 @Callable(aS)
20182022 func activateSF () = valueOrElse(aT(aS), if (valueOrElse(getBoolean(this, (b + ae)), true))
20192023 then throw("SWOPFI already active")
20202024 else [BooleanEntry((b + ae), true)])
20212025
20222026
20232027
20242028 @Callable(aS)
20252029 func shutdownSF () = valueOrElse(aT(aS), if (!(valueOrElse(getBoolean(this, (b + ae)), true)))
20262030 then throw("SWOPFI already shutdown")
20272031 else [BooleanEntry((b + ae), false)])
20282032
20292033
20302034
20312035 @Callable(aS)
20322036 func activateWX () = valueOrElse(aT(aS), if (valueOrElse(getBoolean(this, (c + ae)), true))
20332037 then throw("WX already active")
20342038 else [BooleanEntry((c + ae), true)])
20352039
20362040
20372041
20382042 @Callable(aS)
20392043 func shutdownWX () = valueOrElse(aT(aS), if (!(valueOrElse(getBoolean(this, (c + ae)), true)))
20402044 then throw("WX already shutdown")
20412045 else [BooleanEntry((c + ae), false)])
20422046
20432047
20442048
20452049 @Callable(aS)
20462050 func activatePool (aZ) = valueOrElse(aT(aS), if (!(isDefined(getString(this, (W + aZ)))))
20472051 then throw("Unknown pool")
20482052 else if (valueOrElse(getBoolean(this, (aZ + af)), true))
20492053 then throw("Pool already active")
20502054 else [BooleanEntry((aZ + af), true)])
20512055
20522056
20532057
20542058 @Callable(aS)
20552059 func shutdownPool (aZ) = valueOrElse(aT(aS), if (!(isDefined(getString(this, (W + aZ)))))
20562060 then throw("Unknown pool")
20572061 else if (!(valueOrElse(getBoolean(this, (aZ + af)), true)))
20582062 then throw("Pool already shutdown")
20592063 else [BooleanEntry((aZ + af), false)])
20602064
20612065
2062-@Verifier(iV)
2063-func iW () = {
2064- let iX = {
2065- let iY = if (sigVerify(iV.bodyBytes, iV.proofs[0], aJ))
2066+@Verifier(iW)
2067+func iX () = {
2068+ let iY = {
2069+ let iZ = if (sigVerify(iW.bodyBytes, iW.proofs[0], aJ))
20662070 then 1
20672071 else 0
2068- let iZ = if (sigVerify(iV.bodyBytes, iV.proofs[1], aK))
2072+ let ja = if (sigVerify(iW.bodyBytes, iW.proofs[1], aK))
20692073 then 1
20702074 else 0
2071- let ja = if (sigVerify(iV.bodyBytes, iV.proofs[2], aL))
2075+ let jb = if (sigVerify(iW.bodyBytes, iW.proofs[2], aL))
20722076 then 1
20732077 else 0
2074- (((iY + iZ) + ja) >= 2)
2078+ (((iZ + ja) + jb) >= 2)
20752079 }
2076- iX
2080+ iY
20772081 }
20782082

github/deemru/w8io/3ef1775 
208.66 ms