tx · FrqMnAPBVFDTHsepjajhd6DFybASWHwBRjCX3jbTDnpL

3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn:  -0.02300000 Waves

2023.08.17 14:30 [2714536] smart account 3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn > SELF 0.00000000 Waves

{ "type": 13, "id": "FrqMnAPBVFDTHsepjajhd6DFybASWHwBRjCX3jbTDnpL", "fee": 2300000, "feeAssetId": null, "timestamp": 1692271905788, "version": 2, "chainId": 84, "sender": "3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn", "senderPublicKey": "Fj9LPkCtmW3pDnVU6wPQnvqpZJCBieWSvZqY5FAGeCyp", "proofs": [ "gbHmMDdeATdsxEcL4EHE1opQeHroyEpFqVX4F3kDM2h68gM6XD3NNANupDoqK4BzG5jLNMrGtvtAFQtq3TmhUXq", "jNBa7xRyw7HgcVY5RTSBHr4Mj9UCXhWcC5vSjX5bGk1qNmKLjYKGf41PczRhqZpiRTXNPbxMG52vGnTfG18GEve" ], "script": "base64:BgIhCAISABIAEgQKAggIEgMKAQgSBwoFCAgIAQESAwoBCBIAUQAGU0NBTEU4AIDC1y8AC0xFTkRFUlNfQVBSCQDMCAIAlgEJAMwIAgB4CQDMCAIAZAkAzAgCAFAJAMwIAgA8CQDMCAIAKAkAzAgCAB4JAMwIAgAUCQDMCAIACgUDbmlsABNMRU5ERVJTX0FQUl9QRVJJT0RTCQDMCAICAzEtMQkAzAgCAgMyLTIJAMwIAgIDMy0zCQDMCAICAzQtNAkAzAgCAgM1LTgJAMwIAgIEOS0xMgkAzAgCAgcxNCAtIDE2CQDMCAICBTE3LTIwCQDMCAICBjIwLTEwNAUDbmlsABNMRU5ERVJTX01BWF9QRVJJT0RTAGgABkxQX0FQUgkAzAgCAJYBCQDMCAIAeAkAzAgCAGQJAMwIAgBQCQDMCAIAPAkAzAgCACgFA25pbAAOTFBfQVBSX1BFUklPRFMJAMwIAgIDMS0xCQDMCAICAzItMgkAzAgCAgMzLTMJAMwIAgIDNC00CQDMCAICAzUtOAkAzAgCAgQ5LTEyBQNuaWwADkxQX01BWF9QRVJJT0RTAAwADGtTdGFydEhlaWdodAILc3RhcnRIZWlnaHQADWtQZXJpb2RMZW5ndGgCDHBlcmlvZExlbmd0aAARa0xlbmRlcnNNYXhBbW91bnQCEWxlbmRSZXdhcmRzQW1vdW50AAxrTFBNYXhBbW91bnQCDmxwUmV3YXJkQW1vdW50AAdrVG9rZW5zAgZ0b2tlbnMAC2tVc2VyU3VwcGx5AhBfdXNlclRvdGFsU3VwcGx5AA5rVG9rZW5JbnRlcmVzdAIOX3Rva2VuSW50ZXJlc3QAFGtUb2tlbkludGVyZXN0SGVpZ2h0AhRfdG9rZW5JbnRlcmVzdEhlaWdodAAUa1Rva2VuUmV3YXJkUGVyQmxvY2sCFF90b2tlblJld2FyZFBlckJsb2NrABNrUmV3YXJkVXBkYXRlSGVpZ2h0AhJyZXdhcmRVcGRhdGVIZWlnaHQAEWtVc2VyTGVuZEludGVyZXN0AhFfdXNlckxhbmRJbnRlcmVzdAAXa1VzZXJMZW5kQXZhaWxhYmxlQ2xhaW0CF191c2VyTGVuZEF2YWlsYWJsZUNsYWltABVrVXNlckxwQXZhaWxhYmxlQ2xhaW0CFV91c2VyTHBBdmFpbGFibGVDbGFpbQALa0xwSW50ZXJlc3QCCmxwSW50ZXJlc3QAEWtMcEludGVyZXN0SGVpZ2h0AhBscEludGVyZXN0SGVpZ2h0AA1rUHJldkxQU3VwcGx5AhFwcmV2TFBUb3RhbFN1cHBseQARa0xwUmV3YXJkUGVyQmxvY2sCEGxwUmV3YXJkUGVyQmxvY2sAD2tVc2VyTHBJbnRlcmVzdAIPX3VzZXJMcEludGVyZXN0AA5rUHJpY2VJbk9yYWNsZQIHX3R3YXA1QgAUa1ByZXZMZW5kVG9rZW5TdXBwbHkCFF9wcmV2TGVuZFRvdGFsU3VwcGx5AAxrQVhMWVRva2VuSWQCC2F4bHlUb2tlbklkABBrTGVuZFRva2VuU3VwcGx5Ag90b3RhbF9zdXBwbGllZF8AD2tMZW5kVXNlclN1cHBseQIKX3N1cHBsaWVkXwAQa0xlbmRTZXR1cFRva2VucwIMc2V0dXBfdG9rZW5zAA5rU0ZUb3RhbFN1cHBseQIaX3RvdGFsX3NoYXJlX3Rva2Vuc19sb2NrZWQAEmtTRlVzZXJUb3RhbFN1cHBseQIUX3NoYXJlX3Rva2Vuc19sb2NrZWQACWtBeGx5UG9vbAIIYXhseVBvb2wABWtMcElkAg5zaGFyZV9hc3NldF9pZAAMa1ByaWNlT3JhY2xlAgxwcmljZV9vcmFjbGUAEWtBeGx5TWFpbkNvbnRyYWN0AgxtYWluQ29udHJhY3QAFmtBeGx5VG9rZW5vbWljQ29udHJhY3QCEXRva2Vub21pY0NvbnRyYWN0ABJrU0ZGYXJtaW5nQ29udHJhY3QCE3N3b3BmaV9mYXJtaW5nX2FkZHIADWtMZW5kQ29udHJhY3QCEWxlbmRfc2VydmljZV9hZGRyAAlrQWRtaW4xUEsCFWdyb3VwMV9hZG1pbjFfcHViX2tleQAJa0FkbWluMlBLAhVncm91cDFfYWRtaW4yX3B1Yl9rZXkACWtBZG1pbjNQSwIVZ3JvdXAxX2FkbWluM19wdWJfa2V5AA9rT3BlcmF0b3JDYWxsUEsCEmFkbWluX2NhbGxfcHViX2tleQAIYXhseVBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQlrQXhseVBvb2wCFkNhbid0IGdldCBheGx5UG9vbCBrZXkADG1haW5Db250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFEWtBeGx5TWFpbkNvbnRyYWN0AhlDYW4ndCBnZXQgbWFpbkNvbnRhY3Qga2V5AA10b2tlbkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUWa0F4bHlUb2tlbm9taWNDb250cmFjdAIfQ2FuJ3QgZ2V0IHRva2Vub21pY0NvbnRyYWN0IGtleQAMbGVuZENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMbWFpbkNvbnRyYWN0BQ1rTGVuZENvbnRyYWN0Ah9DYW4ndCBnZXQgbGVuZF9zZXJ2aWNlX2FkZHIga2V5ABFzZkZhcm1pbmdDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUSa1NGRmFybWluZ0NvbnRyYWN0AiFDYW4ndCBnZXQgc3dvcGZpX2Zhcm1pbmdfYWRkciBrZXkAD3ByaWNlT3JhY2xlQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUMa1ByaWNlT3JhY2xlAhpDYW4ndCBnZXQgcHJpY2Vfb3JhY2xlIGtleQAIYWRtaW4xUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUJa0FkbWluMVBLAhJDYW4ndCBnZXQgYWRtaW4xUEsACGFkbWluMlBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFCWtBZG1pbjJQSwISQ2FuJ3QgZ2V0IGFkbWluMlBLAAhhZG1pbjNQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMbWFpbkNvbnRyYWN0BQlrQWRtaW4zUEsCFENhbid0IGdldCBvcGVyYXRvclBLAApvcGVyYXRvclBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rT3BlcmF0b3JDYWxsUEsCFENhbid0IGdldCBvcGVyYXRvclBLAAZheGx5SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ10b2tlbkNvbnRyYWN0BQxrQVhMWVRva2VuSWQCF0Nhbid0IGdldCBBeGx5IHRva2VuIGlkAAtzdGFydEhlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUMa1N0YXJ0SGVpZ2h0AAxwZXJpb2RMZW5ndGgJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtQZXJpb2RMZW5ndGgACWN1clBlcmlvZAkAaQIJAGUCBQZoZWlnaHQFC3N0YXJ0SGVpZ2h0BQxwZXJpb2RMZW5ndGgADWxlbmRNYXhBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDXRva2VuQ29udHJhY3QFEWtMZW5kZXJzTWF4QW1vdW50ABNsZW5kTWF4UGVyaW9kQW1vdW50CQBpAgUNbGVuZE1heEFtb3VudAUTTEVOREVSU19NQVhfUEVSSU9EUwALbHBNYXhBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDXRva2VuQ29udHJhY3QFDGtMUE1heEFtb3VudAARbHBNYXhQZXJpb2RBbW91bnQJAGkCBQtscE1heEFtb3VudAUOTFBfTUFYX1BFUklPRFMACWFsbFRva2VucwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFB2tUb2tlbnMCAAIBLAELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhZG1pbjFQSwkAzAgCBQhhZG1pbjJQSwkAzAgCBQhhZG1pbjNQSwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAihPbmx5IGFkbWluIGdyb3VwMSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BDmlzT3BlcmF0b3JDYWxsAQFpAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUKb3BlcmF0b3JQSwUEdW5pdAkAAgECJE9ubHkgb3BlcmF0b3IgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNMYW5kQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFDGxlbmRDb250cmFjdAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQ9pc1NGRmFybWluZ0NhbGwBAWkDCQAAAggFAWkGY2FsbGVyBRFzZkZhcm1pbmdDb250cmFjdAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQ1nZXRBc3NldFByaWNlAQdhc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUBEGdldEFzc2V0RGVjaW1hbHMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMACAQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIZGVjaW1hbHMJAAIBAhBDYW4ndCBmaW5kIGFzc2V0ARFnZXRBc3NldFByZWNpc2lvbgEHYXNzZXRJZAkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB2Fzc2V0SWQAAAAABQRET1dOARVnZXRBZG9wdGVkQVBSQnlQZXJpb2QDBnBlcmlvZAphcHJQZXJpb2RzA2FwcgoBA2ZvcgIBYQdhcGVyaW9kBAskdDA1MzUxNTM3MwUBYQQFaW5kZXgIBQskdDA1MzUxNTM3MwJfMQQFZm91bmQIBQskdDA1MzUxNTM3MwJfMgQCZnQJALUJAgUHYXBlcmlvZAIBLQQLJHQwNTQxMDU0NzMJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZ0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJmdAABBARmcm9tCAULJHQwNTQxMDU0NzMCXzEEAnRvCAULJHQwNTQxMDU0NzMCXzIDBQVmb3VuZAUBYQMDCQBnAgUGcGVyaW9kBQRmcm9tCQBnAgUCdG8FBnBlcmlvZAcJAJQKAgUFaW5kZXgGCQCUCgIJAGQCBQVpbmRleAABBwQLJHQwNTYxMDU2NzYKAAIkbAUTTEVOREVSU19BUFJfUEVSSU9EUwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDZm9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJBAVpbmRleAgFCyR0MDU2MTA1Njc2Al8xBAVmb3VuZAgFCyR0MDU2MTA1Njc2Al8yAwUFZm91bmQJAGsDCQBoAgkAkQMCBQtMRU5ERVJTX0FQUgUFaW5kZXgFBlNDQUxFOAAHAO0CAAABF2dldFRvdGFsU3VwcGx5QWxsVG9rZW5zAAoBA2ZvcgIBYQd0b2tlbklkBAskdDA1ODY0NTkyMAUBYQQLdG90YWxTdXBwbHkIBQskdDA1ODY0NTkyMAJfMQQOdG90YWxTdXBwbHlVc2QIBQskdDA1ODY0NTkyMAJfMgQRdG90YWxTdXBwbHlVc2RBbGwIBQskdDA1ODY0NTkyMAJfMwQHdFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxsZW5kQ29udHJhY3QJAKwCAgUQa0xlbmRUb2tlblN1cHBseQUHdG9rZW5JZAAABAphc3NldFByaWNlCQENZ2V0QXNzZXRQcmljZQEFB3Rva2VuSWQEDmFzc2V0UHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQd0b2tlbklkBAp0U3VwcGx5VXNkCQBrAwUHdFN1cHBseQUKYXNzZXRQcmljZQUOYXNzZXRQcmVjaXNpb24JAJUKAwkAzQgCBQt0b3RhbFN1cHBseQUHdFN1cHBseQkAzQgCBQ50b3RhbFN1cHBseVVzZAUKdFN1cHBseVVzZAkAZAIFEXRvdGFsU3VwcGx5VXNkQWxsBQp0U3VwcGx5VXNkCgACJGwFCWFsbFRva2VucwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDZm9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAzMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgERZ2V0VG90YWxTdXBwbHlVc2QBB3Rva2VuSWQEB3RTdXBwbHkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMbGVuZENvbnRyYWN0CQCsAgIFEGtMZW5kVG9rZW5TdXBwbHkFB3Rva2VuSWQAAAQKYXNzZXRQcmljZQkBDWdldEFzc2V0UHJpY2UBBQd0b2tlbklkBA5hc3NldFByZWNpc2lvbgkBEWdldEFzc2V0UHJlY2lzaW9uAQUHdG9rZW5JZAkAawMFB3RTdXBwbHkFCmFzc2V0UHJpY2UFDmFzc2V0UHJlY2lzaW9uARRjYWxjTmV3VG9rZW5JbnRlcmVzdAIHdG9rZW5JZAt0b3RhbFN1cHBseQMJAGcCBQZoZWlnaHQFC3N0YXJ0SGVpZ2h0AAAEDnJld2FyZFBlckJsb2NrCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB3Rva2VuSWQFFGtUb2tlblJld2FyZFBlckJsb2NrBAtvbGRJbnRlcmVzdAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQd0b2tlbklkBQ5rVG9rZW5JbnRlcmVzdAQMdXBkYXRlSGVpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0BAZyZXdhcmQJAGgCCQBlAgUGaGVpZ2h0BQx1cGRhdGVIZWlnaHQFDnJld2FyZFBlckJsb2NrBAhpbnRlcmVzdAMJAGYCBQt0b3RhbFN1cHBseQAACQBrAwUGcmV3YXJkBQZTQ0FMRTgFC3RvdGFsU3VwcGx5AAAJAGQCBQtvbGRJbnRlcmVzdAUIaW50ZXJlc3QBEWNhbGNOZXdMcEludGVyZXN0AQt0b3RhbFN1cHBseQMJAGcCBQZoZWlnaHQFC3N0YXJ0SGVpZ2h0AAAEDnJld2FyZFBlckJsb2NrCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRFrTHBSZXdhcmRQZXJCbG9jawQLb2xkSW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFC2tMcEludGVyZXN0BAx1cGRhdGVIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFEWtMcEludGVyZXN0SGVpZ2h0BAZyZXdhcmQJAGgCCQBlAgUGaGVpZ2h0BQx1cGRhdGVIZWlnaHQFDnJld2FyZFBlckJsb2NrBAhpbnRlcmVzdAMJAGYCBQt0b3RhbFN1cHBseQAACQBrAwUGcmV3YXJkBQZTQ0FMRTgFC3RvdGFsU3VwcGx5AAAJAGQCBQtvbGRJbnRlcmVzdAUIaW50ZXJlc3QBEmNhbGNMZW5kVXNlclJld2FyZAIEdXNlcgd0b2tlbklkBAt0b3RhbFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxsZW5kQ29udHJhY3QJAKwCAgUQa0xlbmRUb2tlblN1cHBseQUHdG9rZW5JZAAABA10b2tlbkludGVyZXN0CQEUY2FsY05ld1Rva2VuSW50ZXJlc3QCBQd0b2tlbklkBQt0b3RhbFN1cHBseQQKdXNlclN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxsZW5kQ29udHJhY3QJAKwCAgkArAICBQR1c2VyBQ9rTGVuZFVzZXJTdXBwbHkFB3Rva2VuSWQAAAQRdXNlclRva2VuSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUHdG9rZW5JZAIBXwUEdXNlcgURa1VzZXJMZW5kSW50ZXJlc3QDCQAAAgUKdXNlclN1cHBseQAABQ10b2tlbkludGVyZXN0AAAEBnJld2FyZAkAawMFCnVzZXJTdXBwbHkJAGUCBQ10b2tlbkludGVyZXN0BRF1c2VyVG9rZW5JbnRlcmVzdAUGU0NBTEU4CQCVCgMFBnJld2FyZAUNdG9rZW5JbnRlcmVzdAUKdXNlclN1cHBseQEQY2FsY0xwVXNlclJld2FyZAEEdXNlcgQLdG90YWxTdXBwbHkJAQt2YWx1ZU9yRWxzZQIJAJoIAgURc2ZGYXJtaW5nQ29udHJhY3QJAKwCAgUIYXhseVBvb2wFDmtTRlRvdGFsU3VwcGx5AAAEDXRva2VuSW50ZXJlc3QJARFjYWxjTmV3THBJbnRlcmVzdAEFC3RvdGFsU3VwcGx5BAp1c2VyU3VwcGx5CQELdmFsdWVPckVsc2UCCQCaCAIFDGxlbmRDb250cmFjdAkArAICCQCsAgIJAKwCAgUIYXhseVBvb2wCAV8FBHVzZXIFEmtTRlVzZXJUb3RhbFN1cHBseQAABBF1c2VyVG9rZW5JbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFD2tVc2VyTHBJbnRlcmVzdAMJAAACBQp1c2VyU3VwcGx5AAAFDXRva2VuSW50ZXJlc3QAAAQGcmV3YXJkCQBrAwUKdXNlclN1cHBseQkAZQIFDXRva2VuSW50ZXJlc3QFEXVzZXJUb2tlbkludGVyZXN0BQZTQ0FMRTgJAJUKAwUGcmV3YXJkBQ10b2tlbkludGVyZXN0BQp1c2VyU3VwcGx5ARhjbGFpbUxlbmRlclJld2FyZHNDb21tb24CBHVzZXIIcmVhZE9ubHkKAQVjbGFpbQIBYQd0b2tlbklkBAskdDA4NzY0ODgwOAUBYQQIdG9rZW5JZHMIBQskdDA4NzY0ODgwOAJfMQQHY0Ftb3VudAgFCyR0MDg3NjQ4ODA4Al8yBAV0b3RhbAgFCyR0MDg3NjQ4ODA4Al8zBAhlbnRlcmllcwgFCyR0MDg3NjQ4ODA4Al80BBJ1c2VyQXZhaWxhYmxlQ2xhaW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUHdG9rZW5JZAIBXwUEdXNlcgUXa1VzZXJMZW5kQXZhaWxhYmxlQ2xhaW0AAAQLJHQwODkyMTkwMDAJARJjYWxjTGVuZFVzZXJSZXdhcmQCBQR1c2VyBQd0b2tlbklkBAd1UmV3YXJkCAULJHQwODkyMTkwMDACXzEEEG5ld1Rva2VuSW50ZXJlc3QIBQskdDA4OTIxOTAwMAJfMgQKdXNlclN1cHBseQgFCyR0MDg5MjE5MDAwAl8zBAx0b3RhbFRvQ2xhaW0JAGQCBRJ1c2VyQXZhaWxhYmxlQ2xhaW0FB3VSZXdhcmQDAwkAZgIFDHRvdGFsVG9DbGFpbQAABgkAZgIFCnVzZXJTdXBwbHkAAAQMbmV3RW50cmVyaWVzAwMFCHJlYWRPbmx5BgkAAAIFDHRvdGFsVG9DbGFpbQAABQhlbnRlcmllcwkAzggCBQhlbnRlcmllcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUHdG9rZW5JZAIBXwUEdXNlcgURa1VzZXJMZW5kSW50ZXJlc3QFEG5ld1Rva2VuSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFB3Rva2VuSWQCAV8FBHVzZXIFF2tVc2VyTGVuZEF2YWlsYWJsZUNsYWltAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUOa1Rva2VuSW50ZXJlc3QFEG5ld1Rva2VuSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUUa1Rva2VuSW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsCQCWCgQJAM0IAgUIdG9rZW5JZHMFB3Rva2VuSWQJAM0IAgUHY0Ftb3VudAUMdG90YWxUb0NsYWltCQBkAgUFdG90YWwFDHRvdGFsVG9DbGFpbQUMbmV3RW50cmVyaWVzCQCWCgQFCHRva2VuSWRzBQdjQW1vdW50BQV0b3RhbAUIZW50ZXJpZXMKAAIkbAUJYWxsVG9rZW5zCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEBQNuaWwFA25pbAAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWNsYWltAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAzMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgEUY2xhaW1McFJld2FyZHNDb21tb24CBHVzZXIIcmVhZE9ubHkEEnVzZXJBdmFpbGFibGVDbGFpbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFFWtVc2VyTHBBdmFpbGFibGVDbGFpbQAABAskdDA5OTI3OTk5MgkBEGNhbGNMcFVzZXJSZXdhcmQBBQR1c2VyBAd1UmV3YXJkCAULJHQwOTkyNzk5OTICXzEEDW5ld0xwSW50ZXJlc3QIBQskdDA5OTI3OTk5MgJfMgQKdXNlclN1cHBseQgFCyR0MDk5Mjc5OTkyAl8zBAx0b3RhbFRvQ2xhaW0JAGQCBRJ1c2VyQXZhaWxhYmxlQ2xhaW0FB3VSZXdhcmQDAwUIcmVhZE9ubHkGCQAAAgUMdG90YWxUb0NsYWltAAAJAJQKAgUMdG90YWxUb0NsYWltBQNuaWwJAJQKAgUMdG90YWxUb0NsYWltCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFD2tVc2VyTHBJbnRlcmVzdAUNbmV3THBJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRVrVXNlckxwQXZhaWxhYmxlQ2xhaW0AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgULa0xwSW50ZXJlc3QFDW5ld0xwSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtMcEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAENZ2V0VG9rZW5zQVBScwAECWF4bHlQcmljZQkBDWdldEFzc2V0UHJpY2UBBQZheGx5SWQEDWF4bHlQcmVjaXNpb24JARFnZXRBc3NldFByZWNpc2lvbgEFBmF4bHlJZAoBCnRva2Vuc0FwcnMCA2Fwcgd0b2tlbklkBARyd3BiCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sAAAQHcndwYlVzZAkAawMFBHJ3cGIFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQGcndZZWFyCQBoAgkAaAIFB3J3cGJVc2QFDHBlcmlvZExlbmd0aAA0BA50b3RhbFN1cHBseVVzZAkBEWdldFRvdGFsU3VwcGx5VXNkAQUHdG9rZW5JZAkAzQgCBQNhcHIJAGsDBQZyd1llYXIFBlNDQUxFOAUOdG90YWxTdXBwbHlVc2QEBGFwcnMKAAIkbAUJYWxsVG9rZW5zCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQp0b2tlbnNBcHJzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAzMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgQNbHBUb3RhbFN1cHBseQkBEUBleHRyTmF0aXZlKDEwNTApAgURc2ZGYXJtaW5nQ29udHJhY3QJAKwCAgUIYXhseVBvb2wFDmtTRlRvdGFsU3VwcGx5BARscElkCQERQGV4dHJOYXRpdmUoMTA1MykCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhheGx5UG9vbAUFa0xwSWQEC2xwUHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQRscElkBAdscFByaWNlCgABQAkAkQMCCgABQAkA/AcEBQxtYWluQ29udHJhY3QCGmdldFNoYXJlQXNzZXRQcmljZVJFQURPTkxZCQDMCAIJAMwIAgUEbHBJZAUDbmlsBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0AAAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEEGxwVG90YWxTdXBwbHlVc2QJAGsDBQ1scFRvdGFsU3VwcGx5BQdscFByaWNlBQtscFByZWNpc2lvbgQEcndwYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFrTHBSZXdhcmRQZXJCbG9jawAABAdyd3BiVXNkCQBrAwUEcndwYgUJYXhseVByaWNlBQ1heGx5UHJlY2lzaW9uBAZyd1llYXIJAGgCCQBoAgUHcndwYlVzZAUMcGVyaW9kTGVuZ3RoADQEBWxwQXByCQBrAwUGcndZZWFyBQZTQ0FMRTgFEGxwVG90YWxTdXBwbHlVc2QJAJUKAwUJYWxsVG9rZW5zBQRhcHJzBQVscEFwcgcBaQESY2xhaW1MZW5kZXJSZXdhcmRzAAQIY2xhaW1SZXMJARhjbGFpbUxlbmRlclJld2FyZHNDb21tb24CCQClCAEIBQFpBmNhbGxlcgcDCQAAAggFCGNsYWltUmVzAl8zAAAJAAIBAiNjbGFpbSBhbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAQDaW52CQD8BwQFDXRva2VuQ29udHJhY3QCEndpdGhkcmF3TGVuZFJld2FyZAkAzAgCCAUIY2xhaW1SZXMCXzMJAMwIAgkApQgBCAUBaQZjYWxsZXIFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52CAUIY2xhaW1SZXMCXzQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY2xhaW1McFJld2FyZHMABAhjbGFpbVJlcwkBFGNsYWltTHBSZXdhcmRzQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIHAwkAAAIIBQhjbGFpbVJlcwJfMQAACQACAQIjY2xhaW0gYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAEA2ludgkA/AcEBQ10b2tlbkNvbnRyYWN0AhB3aXRoZHJhd0xwUmV3YXJkCQDMCAIIBQhjbGFpbVJlcwJfMQkAzAgCCQClCAEIBQFpBmNhbGxlcgUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYIBQhjbGFpbVJlcwJfMgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpsZW5kQWN0aW9uAgR1c2VyB3Rva2VuSWQJAQt2YWx1ZU9yRWxzZQIJAQppc0xhbmRDYWxsAQUBaQQSdXNlckF2YWlsYWJsZUNsYWltCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUHdG9rZW5JZAUXa1VzZXJMZW5kQXZhaWxhYmxlQ2xhaW0AAAQNJHQwMTIzNTQxMjQyMQkBEmNhbGNMZW5kVXNlclJld2FyZAIFBHVzZXIFB3Rva2VuSWQEB3VSZXdhcmQIBQ0kdDAxMjM1NDEyNDIxAl8xBBBuZXdUb2tlbkludGVyZXN0CAUNJHQwMTIzNTQxMjQyMQJfMgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUHdG9rZW5JZAURa1VzZXJMZW5kSW50ZXJlc3QFEG5ld1Rva2VuSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FB3Rva2VuSWQFF2tVc2VyTGVuZEF2YWlsYWJsZUNsYWltCQBkAgUSdXNlckF2YWlsYWJsZUNsYWltBQd1UmV3YXJkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFDmtUb2tlbkludGVyZXN0BRBuZXdUb2tlbkludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAFpAQhscEFjdGlvbgEEdXNlcgkBC3ZhbHVlT3JFbHNlAgkBD2lzU0ZGYXJtaW5nQ2FsbAEFAWkEEnVzZXJBdmFpbGFibGVDbGFpbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRVrVXNlckxwQXZhaWxhYmxlQ2xhaW0AAAQNJHQwMTI4ODYxMjkzOQkBEGNhbGNMcFVzZXJSZXdhcmQBBQR1c2VyBAd1UmV3YXJkCAUNJHQwMTI4ODYxMjkzOQJfMQQNbmV3THBJbnRlcmVzdAgFDSR0MDEyODg2MTI5MzkCXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUPa1VzZXJMcEludGVyZXN0BQ1uZXdMcEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFFWtVc2VyTHBBdmFpbGFibGVDbGFpbQkAZAIFEnVzZXJBdmFpbGFibGVDbGFpbQUHdVJld2FyZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBQtrTHBJbnRlcmVzdAUNbmV3THBJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRFrTHBJbnRlcmVzdEhlaWdodAUGaGVpZ2h0BQNuaWwBaQEEaW5pdAUUYXhseU1haW5Db250cmFjdEFkZHIZYXhseVRva2Vub21pY0NvbnRyYWN0QWRkcgxheGx5UG9vbEFkZHISZmFybWluZ1N0YXJ0SGVpZ2h0DHBlcmlvZExlbmd0aAkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBRRheGx5TWFpbkNvbnRyYWN0QWRkcgkAAgECFVdyb25nIGZhcm1pbmcgYWRkcmVzcwMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUZYXhseVRva2Vub21pY0NvbnRyYWN0QWRkcgkAAgECG1dyb25nIG1haW4gY29udHJhY3QgYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCBRFrQXhseU1haW5Db250cmFjdAUUYXhseU1haW5Db250cmFjdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUWa0F4bHlUb2tlbm9taWNDb250cmFjdAUZYXhseVRva2Vub21pY0NvbnRyYWN0QWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXhseVBvb2wFDGF4bHlQb29sQWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa1N0YXJ0SGVpZ2h0BRJmYXJtaW5nU3RhcnRIZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtQZXJpb2RMZW5ndGgFDHBlcmlvZExlbmd0aAUDbmlsAWkBDGluaXROZXdUb2tlbgEHdG9rZW5JZAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgUHdG9rZW5JZAUOa1Rva2VuSW50ZXJlc3QJAAIBAhR0b2tlbiBhbHJlYWR5IGluaXRlZAMJAQEhAQkBCGNvbnRhaW5zAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUMbGVuZENvbnRyYWN0BRBrTGVuZFNldHVwVG9rZW5zBQd0b2tlbklkCQACAQITbm8gdG9rZW4gb24gbGFuZGluZwQMbmV3QWxsVG9rZW5zAwkAAAIJAJADAQUJYWxsVG9rZW5zAAAJAMwIAgUHdG9rZW5JZAUDbmlsCQDNCAIFCWFsbFRva2VucwUHdG9rZW5JZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBQ5rVG9rZW5JbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0CQCWAwEJAMwIAgULc3RhcnRIZWlnaHQJAMwIAgUGaGVpZ2h0BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa1Rva2VucwkAuQkCBQxuZXdBbGxUb2tlbnMCASwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sAAAUDbmlsAWkBDXVwZGF0ZVJld2FyZHMACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBBBsYXN0VXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tSZXdhcmRVcGRhdGVIZWlnaHQAAAMJAGYCCQBkAgUQbGFzdFVwZGF0ZUhlaWdodAUMcGVyaW9kTGVuZ3RoBQZoZWlnaHQJAAIBAiVyZXdhcmRzIGFscmVkeSB1cGRhdGVkIGluIHRoaXMgcGVyaW9kBA0kdDAxNDc0NjE0ODI2CQEXZ2V0VG90YWxTdXBwbHlBbGxUb2tlbnMABAt0b3RhbFN1cHBseQgFDSR0MDE0NzQ2MTQ4MjYCXzEEDnRvdGFsU3VwcGx5VXNkCAUNJHQwMTQ3NDYxNDgyNgJfMgQRdG90YWxTdXBwbHlVc2RBbGwIBQ0kdDAxNDc0NjE0ODI2Al8zBAlheGx5UHJpY2UJAQ1nZXRBc3NldFByaWNlAQUGYXhseUlkBA1heGx5UHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQZheGx5SWQEBm1heEFQUgkBFWdldEFkb3B0ZWRBUFJCeVBlcmlvZAMFCWN1clBlcmlvZAUTTEVOREVSU19BUFJfUEVSSU9EUwULTEVOREVSU19BUFIKAQx1cGRhdGVSZXdhcmQCAWEHdG9rZW5JZAQNJHQwMTUwNzAxNTA5NQUBYQQIZW50ZXJpZXMIBQ0kdDAxNTA3MDE1MDk1Al8xBAVpbmRleAgFDSR0MDE1MDcwMTUwOTUCXzIDCQAAAgkAkQMCBQt0b3RhbFN1cHBseQUFaW5kZXgAAAkAlAoCCQDOCAIFCGVudGVyaWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlblJld2FyZFBlckJsb2NrAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUOa1Rva2VuSW50ZXJlc3QJARRjYWxjTmV3VG9rZW5JbnRlcmVzdAIFB3Rva2VuSWQJAJEDAgULdG90YWxTdXBwbHkFBWluZGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAkAZAIFBWluZGV4AAEEBXNoYXJlCQBrAwkAkQMCBQ50b3RhbFN1cHBseVVzZAUFaW5kZXgFBlNDQUxFOAURdG90YWxTdXBwbHlVc2RBbGwECW1heFJld2FyZAkAawMFBXNoYXJlBRNsZW5kTWF4UGVyaW9kQW1vdW50BQZTQ0FMRTgEDG1heFJld2FyZFVzZAkAawMFCW1heFJld2FyZAUJYXhseVByaWNlBQ1heGx5UHJlY2lzaW9uBA9wcmV2VG90YWxTdXBwbHkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUUa1ByZXZMZW5kVG9rZW5TdXBwbHkAAAQGcnRDb2VmAwMJAAACBQ9wcmV2VG90YWxTdXBwbHkAAAYJAAACCQCRAwIFC3RvdGFsU3VwcGx5BQVpbmRleAAAAAAJAGsDBQ9wcmV2VG90YWxTdXBwbHkFBlNDQUxFOAkAkQMCBQt0b3RhbFN1cHBseQUFaW5kZXgEBnJld2FyZAkAaQIJAJcDAQkAzAgCCQBoAgUGbWF4QVBSCQBkAgUGU0NBTEU4BQZydENvZWYJAMwIAgkAawMFBm1heEFQUgkAaAIADwUGU0NBTEU4AAoFA25pbAUGU0NBTEU4BAlyZXdhcmRVc2QJAJcDAQkAzAgCBQxtYXhSZXdhcmRVc2QJAMwIAgkAawMJAJEDAgUOdG90YWxTdXBwbHlVc2QFBWluZGV4BQZyZXdhcmQFBlNDQUxFOAUDbmlsBAxyZXdhcmRQZXJpb2QJAGsDBQlyZXdhcmRVc2QFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQOcmV3YXJkUGVyQmxvY2sJAGkCBQxyZXdhcmRQZXJpb2QFDHBlcmlvZExlbmd0aAkAlAoCCQDOCAIFCGVudGVyaWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtQcmV2TGVuZFRva2VuU3VwcGx5CQCRAwIFC3RvdGFsU3VwcGx5BQVpbmRleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrVG9rZW5SZXdhcmRQZXJCbG9jawUOcmV3YXJkUGVyQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUOa1Rva2VuSW50ZXJlc3QJARRjYWxjTmV3VG9rZW5JbnRlcmVzdAIFB3Rva2VuSWQJAJEDAgULdG90YWxTdXBwbHkFBWluZGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAkAZAIFBWluZGV4AAEEDSR0MDE2NTY2MTY2MzgKAAIkbAUJYWxsVG9rZW5zCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMdXBkYXRlUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAzMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgQOdG9rZW5zRW50ZXJpZXMIBQ0kdDAxNjU2NjE2NjM4Al8xBAVpbmRleAgFDSR0MDE2NTY2MTY2MzgCXzIECGxwTWF4QVBSCQEVZ2V0QWRvcHRlZEFQUkJ5UGVyaW9kAwUJY3VyUGVyaW9kBQ5MUF9BUFJfUEVSSU9EUwUGTFBfQVBSBA1scFRvdGFsU3VwcGx5CQERQGV4dHJOYXRpdmUoMTA1MCkCBRFzZkZhcm1pbmdDb250cmFjdAkArAICBQhheGx5UG9vbAUOa1NGVG90YWxTdXBwbHkEC3ByZUxQU3VwcGx5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtQcmV2TFBTdXBwbHkAAAQEbHBJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUIYXhseVBvb2wFBWtMcElkBAtscFByZWNpc2lvbgkBEWdldEFzc2V0UHJlY2lzaW9uAQUEbHBJZAQHbHBQcmljZQoAAUAJAJEDAgoAAUAJAPwHBAUMbWFpbkNvbnRyYWN0AhpnZXRTaGFyZUFzc2V0UHJpY2VSRUFET05MWQkAzAgCCQDMCAIFBGxwSWQFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BBBscFRvdGFsU3VwcGx5VXNkCQBrAwUNbHBUb3RhbFN1cHBseQUHbHBQcmljZQULbHBQcmVjaXNpb24EDm1heExQUmV3YXJkVXNkCQBrAwURbHBNYXhQZXJpb2RBbW91bnQFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQIcnRMUENvZWYDAwkAAAIFC3ByZUxQU3VwcGx5AAAGCQAAAgUNbHBUb3RhbFN1cHBseQAAAAAJAGsDBQtwcmVMUFN1cHBseQUGU0NBTEU4BQ1scFRvdGFsU3VwcGx5BAhyZXdhcmRMcAkAaQIJAJcDAQkAzAgCCQBoAgUIbHBNYXhBUFIJAGQCBQZTQ0FMRTgFCHJ0TFBDb2VmCQDMCAIJAGsDBQhscE1heEFQUgkAaAIADwUGU0NBTEU4AAoFA25pbAUGU0NBTEU4BAtyZXdhcmRMcFVzZAkAlwMBCQDMCAIFDm1heExQUmV3YXJkVXNkCQDMCAIJAGsDBRBscFRvdGFsU3VwcGx5VXNkBQhyZXdhcmRMcAUGU0NBTEU4BQNuaWwEDnJld2FyZExwUGVyaW9kCQBrAwULcmV3YXJkTHBVc2QFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQQcmV3YXJkTHBQZXJCbG9jawkAaQIFDnJld2FyZExwUGVyaW9kBQxwZXJpb2RMZW5ndGgECmxwRW50ZXJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtQcmV2TFBTdXBwbHkFDWxwVG90YWxTdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtMcFJld2FyZFBlckJsb2NrBRByZXdhcmRMcFBlckJsb2NrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrTHBJbnRlcmVzdAkBEWNhbGNOZXdMcEludGVyZXN0AQUNbHBUb3RhbFN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgURa0xwSW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsCQDNCAIJAM4IAgUKbHBFbnRlcmllcwUOdG9rZW5zRW50ZXJpZXMJAQxJbnRlZ2VyRW50cnkCBRNrUmV3YXJkVXBkYXRlSGVpZ2h0BQZoZWlnaHQBAnR4AQZ2ZXJpZnkABBNtdWx0aVNpZ25lZEJ5QWRtaW5zBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQhhZG1pbjFQSwABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCGFkbWluMlBLAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUIYWRtaW4zUEsAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAIEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDAEBmlzU2VsZgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQQKaXNSaWdodEZlZQMJAAACCAUDaW52A2ZlZQCg9zYJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHBAppc0luaXRDYWxsCQAAAggFA2ludghmdW5jdGlvbgIEaW5pdAQMaXNub1BheW1lbnRzCQAAAgkAkAMBCAUDaW52CHBheW1lbnRzAAADAwMDBQppc1JpZ2h0RmVlBQppc0luaXRDYWxsBwUGaXNTZWxmBwUMaXNub1BheW1lbnRzBwYFE211bHRpU2lnbmVkQnlBZG1pbnMFE211bHRpU2lnbmVkQnlBZG1pbnOU/7hh", "height": 2714536, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HPd3puN7tEcmzDUKnvuojKqwJ42wuyfm9xUkHuGPHmjT Next: A2SapnPHH4MQ9YHSLWFDqkyu5oAnJSDgs5bP9WNFq6jT Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = [150, 120, 100, 80, 60, 40, 30, 20, 10]
77
88 let c = ["1-1", "2-2", "3-3", "4-4", "5-8", "9-12", "14 - 16", "17-20", "20-104"]
99
1010 let d = 104
1111
1212 let e = [150, 120, 100, 80, 60, 40]
1313
1414 let f = ["1-1", "2-2", "3-3", "4-4", "5-8", "9-12"]
1515
1616 let g = 12
1717
1818 let h = "startHeight"
1919
2020 let i = "periodLength"
2121
2222 let j = "lendRewardsAmount"
2323
2424 let k = "lpRewardAmount"
2525
2626 let l = "tokens"
2727
2828 let m = "_userTotalSupply"
2929
3030 let n = "_tokenInterest"
3131
3232 let o = "_tokenInterestHeight"
3333
3434 let p = "_tokenRewardPerBlock"
3535
3636 let q = "rewardUpdateHeight"
3737
3838 let r = "_userLandInterest"
3939
4040 let s = "_userLendAvailableClaim"
4141
4242 let t = "_userLpAvailableClaim"
4343
4444 let u = "lpInterest"
4545
4646 let v = "lpInterestHeight"
4747
4848 let w = "prevLPTotalSupply"
4949
5050 let x = "lpRewardPerBlock"
5151
5252 let y = "_userLpInterest"
5353
5454 let z = "_twap5B"
5555
5656 let A = "_prevLendTotalSupply"
5757
5858 let B = "axlyTokenId"
5959
6060 let C = "total_supplied_"
6161
6262 let D = "_supplied_"
6363
6464 let E = "setup_tokens"
6565
6666 let F = "_total_share_tokens_locked"
6767
6868 let G = "_share_tokens_locked"
6969
7070 let H = "axlyPool"
7171
7272 let I = "share_asset_id"
7373
7474 let J = "price_oracle"
7575
7676 let K = "mainContract"
7777
7878 let L = "tokenomicContract"
7979
8080 let M = "swopfi_farming_addr"
8181
8282 let N = "lend_service_addr"
8383
8484 let O = "group1_admin1_pub_key"
8585
8686 let P = "group1_admin2_pub_key"
8787
8888 let Q = "group1_admin3_pub_key"
8989
9090 let R = "admin_call_pub_key"
9191
9292 let S = valueOrErrorMessage(getString(this, H), "Can't get axlyPool key")
9393
9494 let T = addressFromStringValue(valueOrErrorMessage(getString(this, K), "Can't get mainContact key"))
9595
9696 let U = addressFromStringValue(valueOrErrorMessage(getString(this, L), "Can't get tokenomicContract key"))
9797
9898 let V = addressFromStringValue(valueOrErrorMessage(getString(T, N), "Can't get lend_service_addr key"))
9999
100100 let W = addressFromStringValue(valueOrErrorMessage(getString(T, M), "Can't get swopfi_farming_addr key"))
101101
102102 let X = addressFromStringValue(valueOrErrorMessage(getString(T, J), "Can't get price_oracle key"))
103103
104104 let Y = fromBase58String(valueOrErrorMessage(getString(T, O), "Can't get admin1PK"))
105105
106106 let Z = fromBase58String(valueOrErrorMessage(getString(T, P), "Can't get admin2PK"))
107107
108108 let aa = fromBase58String(valueOrErrorMessage(getString(T, Q), "Can't get operatorPK"))
109109
110110 let ab = fromBase58String(valueOrErrorMessage(getString(this, R), "Can't get operatorPK"))
111111
112112 let ac = valueOrErrorMessage(getString(U, B), "Can't get Axly token id")
113113
114114 let ad = getIntegerValue(this, h)
115115
116116 let ae = getIntegerValue(this, i)
117117
118118 let af = ((height - ad) / ae)
119119
120120 let ag = getIntegerValue(U, j)
121121
122122 let ah = (ag / d)
123123
124124 let ai = getIntegerValue(U, k)
125125
126126 let aj = (ai / g)
127127
128128 let ak = split(valueOrElse(getString(this, l), ""), ",")
129129
130130 func al (am) = if (containsElement([Y, Z, aa], am.callerPublicKey))
131131 then unit
132132 else throw("Only admin group1 can call this function")
133133
134134
135135 func an (am) = if ((am.caller == this))
136136 then unit
137137 else throw("Only contract itself can call this function")
138138
139139
140140 func ao (am) = if ((am.callerPublicKey == ab))
141141 then unit
142142 else throw("Only operator can call this function")
143143
144144
145145 func ap (am) = if ((am.caller == V))
146146 then unit
147147 else throw("Only land contract can call this function")
148148
149149
150150 func aq (am) = if ((am.caller == W))
151151 then unit
152152 else throw("Only land contract can call this function")
153153
154154
155155 func ar (as) = getIntegerValue(X, (as + z))
156156
157157
158158 func at (as) = if ((as == "WAVES"))
159159 then 8
160160 else {
161161 let au = assetInfo(fromBase58String(as))
162162 if ($isInstanceOf(au, "Asset"))
163163 then {
164164 let av = au
165165 av.decimals
166166 }
167167 else throw("Can't find asset")
168168 }
169169
170170
171171 func aw (as) = pow(10, 0, at(as), 0, 0, DOWN)
172172
173173
174174 func ax (ay,az,aA) = {
175175 func aB (aC,aD) = {
176176 let aE = aC
177177 let aF = aE._1
178178 let aG = aE._2
179179 let aH = split(aD, "-")
180180 let aI = $Tuple2(parseIntValue(aH[0]), parseIntValue(aH[1]))
181181 let aJ = aI._1
182182 let aK = aI._2
183183 if (aG)
184184 then aC
185185 else if (if ((ay >= aJ))
186186 then (aK >= ay)
187187 else false)
188188 then $Tuple2(aF, true)
189189 else $Tuple2((aF + 1), false)
190190 }
191191
192192 let aL = {
193193 let aM = c
194194 let aN = size(aM)
195195 let aO = $Tuple2(0, false)
196196 func aP (aQ,aR) = if ((aR >= aN))
197197 then aQ
198198 else aB(aQ, aM[aR])
199199
200200 func aS (aQ,aR) = if ((aR >= aN))
201201 then aQ
202202 else throw("List size exceeds 9")
203203
204204 aS(aP(aP(aP(aP(aP(aP(aP(aP(aP(aO, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
205205 }
206206 let aF = aL._1
207207 let aG = aL._2
208208 if (aG)
209209 then fraction((b[aF] * a), 7, 365)
210210 else 0
211211 }
212212
213213
214214 func aT () = {
215215 func aB (aC,aU) = {
216216 let aV = aC
217217 let aW = aV._1
218218 let aX = aV._2
219219 let aY = aV._3
220220 let aZ = valueOrElse(getInteger(V, (C + aU)), 0)
221221 let ba = ar(aU)
222222 let bb = aw(aU)
223223 let bc = fraction(aZ, ba, bb)
224224 $Tuple3((aW :+ aZ), (aX :+ bc), (aY + bc))
225225 }
226226
227227 let aM = ak
228228 let aN = size(aM)
229229 let aO = $Tuple3(nil, nil, 0)
230230 func aP (aQ,aR) = if ((aR >= aN))
231231 then aQ
232232 else aB(aQ, aM[aR])
233233
234234 func aS (aQ,aR) = if ((aR >= aN))
235235 then aQ
236236 else throw("List size exceeds 30")
237237
238238 aS(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aO, 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)
239239 }
240240
241241
242242 func bd (aU) = {
243243 let aZ = valueOrElse(getInteger(V, (C + aU)), 0)
244244 let ba = ar(aU)
245245 let bb = aw(aU)
246246 fraction(aZ, ba, bb)
247247 }
248248
249249
250250 func be (aU,aW) = if ((height >= ad))
251251 then 0
252252 else {
253253 let bf = getIntegerValue(this, (aU + p))
254254 let bg = getIntegerValue(this, (aU + n))
255255 let bh = getIntegerValue(this, (aU + o))
256256 let bi = ((height - bh) * bf)
257257 let bj = if ((aW > 0))
258258 then fraction(bi, a, aW)
259259 else 0
260260 (bg + bj)
261261 }
262262
263263
264264 func bk (aW) = if ((height >= ad))
265265 then 0
266266 else {
267267 let bf = getIntegerValue(this, x)
268268 let bg = getIntegerValue(this, u)
269269 let bh = getIntegerValue(this, v)
270270 let bi = ((height - bh) * bf)
271271 let bj = if ((aW > 0))
272272 then fraction(bi, a, aW)
273273 else 0
274274 (bg + bj)
275275 }
276276
277277
278278 func bl (bm,aU) = {
279279 let aW = valueOrElse(getInteger(V, (C + aU)), 0)
280280 let bn = be(aU, aW)
281281 let bo = valueOrElse(getInteger(V, ((bm + D) + aU)), 0)
282282 let bp = valueOrElse(getInteger(this, (((aU + "_") + bm) + r)), if ((bo == 0))
283283 then bn
284284 else 0)
285285 let bi = fraction(bo, (bn - bp), a)
286286 $Tuple3(bi, bn, bo)
287287 }
288288
289289
290290 func bq (bm) = {
291291 let aW = valueOrElse(getInteger(W, (S + F)), 0)
292292 let bn = bk(aW)
293293 let bo = valueOrElse(getInteger(V, (((S + "_") + bm) + G)), 0)
294294 let bp = valueOrElse(getInteger(this, (bm + y)), if ((bo == 0))
295295 then bn
296296 else 0)
297297 let bi = fraction(bo, (bn - bp), a)
298298 $Tuple3(bi, bn, bo)
299299 }
300300
301301
302302 func br (bm,bs) = {
303303 func bt (aC,aU) = {
304304 let bu = aC
305305 let bv = bu._1
306306 let bw = bu._2
307307 let bx = bu._3
308308 let by = bu._4
309309 let bz = valueOrElse(getInteger(this, (((aU + "_") + bm) + s)), 0)
310310 let bA = bl(bm, aU)
311311 let bB = bA._1
312312 let bC = bA._2
313313 let bo = bA._3
314314 let bD = (bz + bB)
315315 if (if ((bD > 0))
316316 then true
317317 else (bo > 0))
318318 then {
319319 let bE = if (if (bs)
320320 then true
321321 else (bD == 0))
322322 then by
323323 else (by ++ [IntegerEntry((((aU + "_") + bm) + r), bC), IntegerEntry((((aU + "_") + bm) + s), 0), IntegerEntry((aU + n), bC), IntegerEntry((aU + o), height)])
324324 $Tuple4((bv :+ aU), (bw :+ bD), (bx + bD), bE)
325325 }
326326 else $Tuple4(bv, bw, bx, by)
327327 }
328328
329329 let aM = ak
330330 let aN = size(aM)
331331 let aO = $Tuple4(nil, nil, 0, nil)
332332 func aP (aQ,aR) = if ((aR >= aN))
333333 then aQ
334334 else bt(aQ, aM[aR])
335335
336336 func aS (aQ,aR) = if ((aR >= aN))
337337 then aQ
338338 else throw("List size exceeds 30")
339339
340340 aS(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aO, 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)
341341 }
342342
343343
344344 func bF (bm,bs) = {
345345 let bz = valueOrElse(getInteger(this, (bm + t)), 0)
346346 let bG = bq(bm)
347347 let bB = bG._1
348348 let bH = bG._2
349349 let bo = bG._3
350350 let bD = (bz + bB)
351351 if (if (bs)
352352 then true
353353 else (bD == 0))
354354 then $Tuple2(bD, nil)
355355 else $Tuple2(bD, [IntegerEntry((bm + y), bH), IntegerEntry((bm + t), 0), IntegerEntry(u, bH), IntegerEntry(v, height)])
356356 }
357357
358358
359359 func bI () = {
360360 let bJ = ar(ac)
361361 let bK = aw(ac)
362362 func bL (aA,aU) = {
363363 let bM = valueOrElse(getInteger(this, (aU + p)), 0)
364364 let bN = fraction(bM, bJ, bK)
365365 let bO = ((bN * ae) * 52)
366366 let aX = bd(aU)
367367 (aA :+ fraction(bO, a, aX))
368368 }
369369
370370 let bP = {
371371 let aM = ak
372372 let aN = size(aM)
373373 let aO = nil
374374 func aP (aQ,aR) = if ((aR >= aN))
375375 then aQ
376376 else bL(aQ, aM[aR])
377377
378378 func aS (aQ,aR) = if ((aR >= aN))
379379 then aQ
380380 else throw("List size exceeds 30")
381381
382382 aS(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aO, 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)
383383 }
384384 let bQ = getIntegerValue(W, (S + F))
385385 let bR = getStringValue(addressFromStringValue(S), I)
386386 let bS = aw(bR)
387387 let bT = {
388388 let bU = ({
389389 let bU = invoke(T, "getShareAssetPriceREADONLY", [[bR]], nil)
390390 if ($isInstanceOf(bU, "List[Any]"))
391391 then bU
392392 else throw(($getType(bU) + " couldn't be cast to List[Any]"))
393393 })[0]
394394 if ($isInstanceOf(bU, "Int"))
395395 then bU
396396 else throw(($getType(bU) + " couldn't be cast to Int"))
397397 }
398398 let bV = fraction(bQ, bT, bS)
399399 let bM = valueOrElse(getInteger(this, x), 0)
400400 let bN = fraction(bM, bJ, bK)
401401 let bO = ((bN * ae) * 52)
402402 let bW = fraction(bO, a, bV)
403403 $Tuple3(ak, bP, bW)
404404 }
405405
406406
407407 @Callable(am)
408408 func claimLenderRewards () = {
409409 let bX = br(toString(am.caller), false)
410410 if ((bX._3 == 0))
411411 then throw("claim amount must be greater than 0")
412412 else {
413413 let bY = invoke(U, "withdrawLendReward", [bX._3, toString(am.caller)], nil)
414414 if ((bY == bY))
415415 then bX._4
416416 else throw("Strict value is not equal to itself.")
417417 }
418418 }
419419
420420
421421
422422 @Callable(am)
423423 func claimLpRewards () = {
424424 let bX = bF(toString(am.caller), false)
425425 if ((bX._1 == 0))
426426 then throw("claim amount must be greater than 0")
427427 else {
428428 let bY = invoke(U, "withdrawLpReward", [bX._1, toString(am.caller)], nil)
429429 if ((bY == bY))
430430 then bX._2
431431 else throw("Strict value is not equal to itself.")
432432 }
433433 }
434434
435435
436436
437437 @Callable(am)
438438 func lendAction (bm,aU) = valueOrElse(ap(am), {
439439 let bz = valueOrElse(getInteger(this, (aU + s)), 0)
440440 let bZ = bl(bm, aU)
441441 let bB = bZ._1
442442 let bC = bZ._2
443443 [IntegerEntry((((bm + "_") + aU) + r), bC), IntegerEntry((((bm + "_") + aU) + s), (bz + bB)), IntegerEntry((aU + n), bC), IntegerEntry((aU + o), height)]
444444 })
445445
446446
447447
448448 @Callable(am)
449449 func lpAction (bm) = valueOrElse(aq(am), {
450450 let bz = valueOrElse(getInteger(this, t), 0)
451451 let ca = bq(bm)
452452 let bB = ca._1
453453 let bH = ca._2
454454 [IntegerEntry((bm + y), bH), IntegerEntry((bm + t), (bz + bB)), IntegerEntry((bm + u), bH), IntegerEntry((bm + v), height)]
455455 })
456456
457457
458458
459459 @Callable(am)
460460 func init (cb,cc,cd,ce,ae) = valueOrElse(an(am), if (!(isDefined(addressFromString(cb))))
461461 then throw("Wrong farming address")
462462 else if (!(isDefined(addressFromString(cc))))
463463 then throw("Wrong main contract address")
464464 else [StringEntry(K, cb), StringEntry(L, cc), StringEntry(H, cd), IntegerEntry(h, ce), IntegerEntry(i, ae)])
465465
466466
467467
468468 @Callable(am)
469469 func initNewToken (aU) = valueOrElse(al(am), if (isDefined(getInteger(this, (aU + n))))
470470 then throw("token already inited")
471471 else if (!(contains(getStringValue(V, E), aU)))
472472 then throw("no token on landing")
473473 else {
474474 let cf = if ((size(ak) == 0))
475475 then [aU]
476476 else (ak :+ aU)
477477 [IntegerEntry((aU + n), 0), IntegerEntry((aU + o), max([ad, height])), StringEntry(l, makeString(cf, ",")), IntegerEntry((aU + p), 0)]
478478 })
479479
480480
481481
482482 @Callable(am)
483483 func updateRewards () = valueOrElse(ao(am), {
484484 let cg = valueOrElse(getInteger(this, q), 0)
485485 if (((cg + ae) > height))
486486 then throw("rewards alredy updated in this period")
487487 else {
488488 let ch = aT()
489489 let aW = ch._1
490490 let aX = ch._2
491491 let aY = ch._3
492492 let bJ = ar(ac)
493493 let bK = aw(ac)
494494 let ci = ax(af, c, b)
495495 func cj (aC,aU) = {
496496 let ck = aC
497497 let by = ck._1
498498 let aF = ck._2
499499 if ((aW[aF] == 0))
500500 then $Tuple2((by ++ [IntegerEntry((aU + p), 0), IntegerEntry((aU + n), be(aU, aW[aF])), IntegerEntry((aU + o), height)]), (aF + 1))
501501 else {
502502 let cl = fraction(aX[aF], a, aY)
503503 let cm = fraction(cl, ah, a)
504504 let cn = fraction(cm, bJ, bK)
505505 let co = valueOrElse(getInteger(this, A), 0)
506506 let cp = if (if ((co == 0))
507507 then true
508508 else (aW[aF] == 0))
509509 then 0
510510 else fraction(co, a, aW[aF])
511511 let bi = (min([(ci * (a + cp)), fraction(ci, (15 * a), 10)]) / a)
512512 let cq = min([cn, fraction(aX[aF], bi, a)])
513513 let cr = fraction(cq, bJ, bK)
514514 let bf = (cr / ae)
515515 $Tuple2((by ++ [IntegerEntry((aU + A), aW[aF]), IntegerEntry((aU + p), bf), IntegerEntry((aU + n), be(aU, aW[aF])), IntegerEntry((aU + o), height)]), (aF + 1))
516516 }
517517 }
518518
519519 let cs = {
520520 let aM = ak
521521 let aN = size(aM)
522522 let aO = $Tuple2(nil, 0)
523523 func aP (aQ,aR) = if ((aR >= aN))
524524 then aQ
525525 else cj(aQ, aM[aR])
526526
527527 func aS (aQ,aR) = if ((aR >= aN))
528528 then aQ
529529 else throw("List size exceeds 30")
530530
531531 aS(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aO, 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)
532532 }
533533 let ct = cs._1
534534 let aF = cs._2
535535 let cu = ax(af, f, e)
536536 let bQ = getIntegerValue(W, (S + F))
537537 let cv = valueOrElse(getInteger(this, w), 0)
538538 let bR = getStringValue(addressFromStringValue(S), I)
539539 let bS = aw(bR)
540540 let bT = {
541541 let bU = ({
542542 let bU = invoke(T, "getShareAssetPriceREADONLY", [[bR]], nil)
543543 if ($isInstanceOf(bU, "List[Any]"))
544544 then bU
545545 else throw(($getType(bU) + " couldn't be cast to List[Any]"))
546546 })[0]
547547 if ($isInstanceOf(bU, "Int"))
548548 then bU
549549 else throw(($getType(bU) + " couldn't be cast to Int"))
550550 }
551551 let bV = fraction(bQ, bT, bS)
552552 let cw = fraction(aj, bJ, bK)
553553 let cx = if (if ((cv == 0))
554554 then true
555555 else (bQ == 0))
556556 then 0
557557 else fraction(cv, a, bQ)
558558 let cy = (min([(cu * (a + cx)), fraction(cu, (15 * a), 10)]) / a)
559559 let cz = min([cw, fraction(bV, cy, a)])
560560 let cA = fraction(cz, bJ, bK)
561561 let cB = (cA / ae)
562562 let cC = [IntegerEntry(w, bQ), IntegerEntry(x, cB), IntegerEntry(u, bk(bQ)), IntegerEntry(v, height)]
563563 ((cC ++ ct) :+ IntegerEntry(q, height))
564564 }
565565 })
566566
567567
568568 @Verifier(cD)
569569 func cE () = {
570570 let cF = {
571571 let cG = if (sigVerify(cD.bodyBytes, cD.proofs[0], Y))
572572 then 1
573573 else 0
574574 let cH = if (sigVerify(cD.bodyBytes, cD.proofs[1], Z))
575575 then 1
576576 else 0
577577 let cI = if (sigVerify(cD.bodyBytes, cD.proofs[2], aa))
578578 then 1
579579 else 0
580580 (((cG + cH) + cI) >= 2)
581581 }
582582 let au = cD
583583 if ($isInstanceOf(au, "InvokeScriptTransaction"))
584584 then {
585585 let bY = au
586586 let cJ = sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
587587 let cK = if ((bY.fee == 900000))
588588 then (bY.feeAssetId == unit)
589589 else false
590590 let cL = (bY.function == "init")
591591 let cM = (size(bY.payments) == 0)
592592 if (if (if (if (cK)
593593 then cL
594594 else false)
595595 then cJ
596596 else false)
597597 then cM
598598 else false)
599599 then true
600600 else cF
601601 }
602602 else cF
603603 }
604604

github/deemru/w8io/169f3d6 
60.59 ms