tx · 6QACzCbi8XsmZVwFWSnC6qkL3htxBzLT3yA8C59gSqTh

3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK:  -0.14000000 Waves

2022.10.21 18:34 [2282360] smart account 3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK > SELF 0.00000000 Waves

{ "type": 13, "id": "6QACzCbi8XsmZVwFWSnC6qkL3htxBzLT3yA8C59gSqTh", "fee": 14000000, "feeAssetId": null, "timestamp": 1666366446759, "version": 2, "chainId": 84, "sender": "3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK", "senderPublicKey": "FFdBua5rzzMkZebvsvmN7sAdU7XhFK8QNJ3hiwwxAYRA", "proofs": [ "Vn7PXv4y3821hoytCnSNX6DfdHTAdT3AKfuRaJSnyaCbJzA9ov2m1MomhYk2bn7TxyxqWy3MnpnEitenzHFiBPP", "rFV3gqH6y9P2FfPn99vTwKzLX3KwGkvGS64cZSmtgAZsTRbNu7R3EXtfW88RzAT9MJ1CwV4yp6KsRkpHsvU1t3T" ], "script": "base64:BgJICAISAwoBCBIDCgEIEgMKAQgSBAoCCAESBQoDCAEBEgQKAggIEgQKAggBEgMKAQgSAwoBCBIDCgEYEgMKARgSBAoCCAgSABIAWgAHa0FjdGl2ZQIGYWN0aXZlAAtrQWN0aXZlR2xvYgIUYWN0aXZlX2FsbF9jb250cmFjdHMABmtDYXVzZQIOc2h1dGRvd25fY2F1c2UAGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50Ah1fY3VycmVudF9wb29sX2ZyYWN0aW9uX3Jld2FyZAAba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAh5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAE2tIZWlnaHRQb29sRnJhY3Rpb24CGl9wb29sX3Jld2FyZF91cGRhdGVfaGVpZ2h0ABtrVG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCHnRvdGFsX3Jld2FyZF9wZXJfYmxvY2tfY3VycmVudAAca1RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIfdG90YWxfcmV3YXJkX3Blcl9ibG9ja19wcmV2aW91cwATa1Jld2FyZFVwZGF0ZUhlaWdodAIUcmV3YXJkX3VwZGF0ZV9oZWlnaHQAFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQCFF9zaGFyZV90b2tlbnNfbG9ja2VkABZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAhVfc2hhcmVfdG9rZW5zX2Jsb2NrZWQAGmtVc2VyU2hhcmVUb2tlbnNMb2NrZWRUeXBlAhpfc2hhcmVfdG9rZW5zX2Jsb2NrZWRfdHlwZQAca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAIcX3NoYXJlX3Rva2Vuc19ibG9ja2VkX2hlaWdodAAXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwCFV9zaGFyZV90b2tlbnNfdmlydHVhbAAWa1NoYXJlVG90YWxTaGFyZVRva2VucwIaX3RvdGFsX3NoYXJlX3Rva2Vuc19sb2NrZWQAE2tTaGFyZVRva2Vuc1ZpcnR1YWwCG190b3RhbF9zaGFyZV90b2tlbnNfdmlydHVhbAALa0xvY2tQYXJhbXMCDF9sb2NrX3BhcmFtcwANa0xvY2tXYXZlc0ZlZQIObG9ja193YXZlc19mZWUADmtQb29sQm9vc3RDb2VmAgtfYm9vc3RfY29lZgARa0Zhcm1MYXN0SW50ZXJlc3QCDl9sYXN0X2ludGVyZXN0ABVrRmFybVVzZXJMYXN0SW50ZXJlc3QCDl9sYXN0X2ludGVyZXN0ABJrQm9vc3RMYXN0SW50ZXJlc3QCEF9sYXN0X2ludGVyZXN0X2IAFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QCEl9sYXN0X2ludGVyZXN0X3VfYgAUa0Jvb3N0TFBMYXN0SW50ZXJlc3QCEl9sYXN0X2ludGVyZXN0X2xwYgAYa0Jvb3N0TFBVc2VyTGFzdEludGVyZXN0AhRfbGFzdF9pbnRlcmVzdF91X2xwYgATa0xhc3RJbnRlcmVzdEhlaWdodAIVX2xhc3RfaW50ZXJlc3RfaGVpZ2h0AAdrU1dPUGlkAgdTV09QX2lkAA5rQXZhaWxhYmxlU1dPUAIPX2F2YWlsYWJsZV9TV09QABFrU3dvcFllYXJFbWlzc2lvbgISc3dvcF95ZWFyX2VtaXNzaW9uABBrSGFydmVzdFBvb2xWb3RlAhhfaGFydmVzdF9wb29sX3ZvdGVfZ1NXT1AACWtQb29sVm90ZQIQX3Bvb2xfdm90ZV9nU1dPUAANa1VzZXJQb29sVm90ZQIQX3VzZXJfdm90ZV9nU1dPUAAUa0hhcnZlc3RVc2VyUG9vbFZvdGUCHV9oYXJ2ZXN0X3VzZXJfcG9vbF92b3RlX2dTV09QAAtrQmFzZVBlcmlvZAILYmFzZV9wZXJpb2QADWtQZXJpb2RMZW5ndGgCDXBlcmlvZF9sZW5ndGgADGtTdGFydEhlaWdodAIMc3RhcnRfaGVpZ2h0ABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AhRmaXJzdF9oYXJ2ZXN0X2hlaWdodAANa1NoYXJlTGltaXRGSAIcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwASa0FkbWluSW52b2tlUHViS2V5AhBhZG1pbl9pbnZva2VfcHViABBrTW9uZXlCb3hBZGRyZXNzAhFtb25leV9ib3hfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzABFrTFBGYXJtaW5nQWRkcmVzcwIKbHBfZmFybWluZwAUa0Zhcm1pbmdUcmVhc3VyZUFkZHICEGZhcm1pbmdfdHJlYXN1cmUABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAOdG90YWxWb3RlU2hhcmUAgMivoCUAEmxvY2tCb29zdENvZWZTY2FsZQDoBwAQZGVmUG9vbEJvb3N0Q29lZgD0AwETZ2V0QmFzZTU4RnJvbU9yYWNsZQEDa2V5BAckbWF0Y2gwCQCdCAIFBm9yYWNsZQUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwCQDZBAEFBnN0cmluZwQHbm90aGluZwUHJG1hdGNoMAkAAgEJAKwCAgUDa2V5AghpcyBlbXB0eQAMYWRtaW5QdWJLZXkxCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MwAPbW9uZXlCb3hBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUQa01vbmV5Qm94QWRkcmVzcwANdm90aW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDmtWb3RpbmdBZGRyZXNzAApnb3ZBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQULa0dvdkFkZHJlc3MAEWFkbWluSW52b2tlUHViS2V5CQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEmtBZG1pbkludm9rZVB1YktleQAQbHBGYXJtaW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEWtMUEZhcm1pbmdBZGRyZXNzABNmYXJtaW5nVHJlYXN1cmVBZGRyCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUUa0Zhcm1pbmdUcmVhc3VyZUFkZHIACmJhc2VQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ12b3RpbmdBZGRyZXNzBQtrQmFzZVBlcmlvZAIRRW1wdHkga0Jhc2VQZXJpb2QAC3N0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNdm90aW5nQWRkcmVzcwUMa1N0YXJ0SGVpZ2h0AhJFbXB0eSBrU3RhcnRIZWlnaHQADHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MFDWtQZXJpb2RMZW5ndGgCE0VtcHR5IGtQZXJpb2RMZW5ndGgACmN1cnJQZXJpb2QJAGQCBQpiYXNlUGVyaW9kCQBpAgkAZQIFBmhlaWdodAULc3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAAGYWN0aXZlCQERQGV4dHJOYXRpdmUoMTA1MSkCBQR0aGlzBQdrQWN0aXZlAAphY3RpdmVHbG9iCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQULa0FjdGl2ZUdsb2IGABBTd29wWWVhckVtaXNzaW9uCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRFrU3dvcFllYXJFbWlzc2lvbgAEU1dPUAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQdrU1dPUGlkARVnZXRIZWlnaHRGaXJzdEhhcnZlc3QBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFE2tGaXJzdEhhcnZlc3RIZWlnaHQAAAEUZ2V0RkhTaGFyZUxpbWl0VG9rZW4BBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRwb29sBQ1rU2hhcmVMaW1pdEZICQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQ1rU2hhcmVMaW1pdEZIARJnZXRUb3RhbFNoYXJlVG9rZW4BBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAUWa1NoYXJlVG90YWxTaGFyZVRva2VucwEMZ2V0UG9vbFZvdGVkAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgUEcG9vbAUJa1Bvb2xWb3RlAAABEGdldFVzZXJQb29sVm90ZWQCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQRwb29sBQlrUG9vbFZvdGUAAAEPZ2V0U2hhcmVBc3NldElkAQRwb29sCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQV2YWx1ZQEJAKYIAQUEcG9vbAIOc2hhcmVfYXNzZXRfaWQBDmFjY291bnRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFBHRoaXMFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkAAgECC01hdGNoIGVycm9yAQxnZXRBc3NldEluZm8BB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAECHN0cmluZ0lkCQDYBAEFAmlkBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCaWQJAKwCAgkArAICAgZBc3NldCAFCHN0cmluZ0lkAg4gZG9lc24ndCBleGlzdAkAlQoDBQhzdHJpbmdJZAgFBGluZm8EbmFtZQgFBGluZm8IZGVjaW1hbHMDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAJAJUKAwIFV0FWRVMCBVdBVkVTAAgJAAIBAgtNYXRjaCBlcnJvcgEOY2FsY1NjYWxlVmFsdWUCCGFzc2V0SWQxCGFzc2V0SWQyBBBhc3NldElkMURlY2ltYWxzCAkBBXZhbHVlAQkA7AcBBQhhc3NldElkMQhkZWNpbWFscwQQYXNzZXRJZDJEZWNpbWFscwgJAQV2YWx1ZQEJAOwHAQUIYXNzZXRJZDIIZGVjaW1hbHMEC3NjYWxlRGlnaXRzCQBkAgkAZQIFEGFzc2V0SWQyRGVjaW1hbHMFEGFzc2V0SWQxRGVjaW1hbHMACAkAbAYACgAABQtzY2FsZURpZ2l0cwAAAAAFBERPV04BEXVzZXJBdmFpbGFibGVTV09QAgRwb29sBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwkApQgBBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAAAAQpyZXdhcmRJbmZvAQRwb29sBBp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MFG2tUb3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFG2tUb3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAIMIGF0IGFkZHJlc3MgCQClCAEFCmdvdkFkZHJlc3MEG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MFHGtUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAKwCAgkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBRxrVG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzAgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQJAKwCAgkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQScmV3YXJkVXBkYXRlSGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwUTa1Jld2FyZFVwZGF0ZUhlaWdodAkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFE2tSZXdhcmRVcGRhdGVIZWlnaHQCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUTa0hlaWdodFBvb2xGcmFjdGlvbgUScmV3YXJkVXBkYXRlSGVpZ2h0BBpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQCsAgIJAKwCAgkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQRwb29sBRtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBFyZXdhcmRQb29sQ3VycmVudAkAawMFGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50BRlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQ50b3RhbFZvdGVTaGFyZQQScmV3YXJkUG9vbFByZXZpb3VzCQBrAwUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQFGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQ50b3RhbFZvdGVTaGFyZQMDCQBmAgURcmV3YXJkUG9vbEN1cnJlbnQFGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50BgkAZgIFEnJld2FyZFBvb2xQcmV2aW91cwUbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQACAQJicmV3YXJkUG9vbEN1cnJlbnQgPiB0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudCBvciByZXdhcmRQb29sUHJldmlvdXMgPiB0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAJYKBAURcmV3YXJkUG9vbEN1cnJlbnQFEnJld2FyZFVwZGF0ZUhlaWdodAUScmV3YXJkUG9vbFByZXZpb3VzBRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0ARNnZXRMYXN0SW50ZXJlc3RJbmZvAQRwb29sBAxmYXJtSW50ZXJlc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0CQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BA1ib29zdEludGVyZXN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QED2Jvb3N0TFBJbnRlcmVzdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QEEmxhc3RJbnRlcmVzdEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAlgoEBRJsYXN0SW50ZXJlc3RIZWlnaHQFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAUPYm9vc3RMUEludGVyZXN0AQtjYWxjRmFybVJ3ZAIEcG9vbA5jdXJUb3RhbFJld2FyZAQNcG9vbEJvb3N0Q29lZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQm9vc3RDb2VmBRBkZWZQb29sQm9vc3RDb2VmCQBpAgkAaQIFDmN1clRvdGFsUmV3YXJkCQBkAgUNcG9vbEJvb3N0Q29lZgDoBwUSbG9ja0Jvb3N0Q29lZlNjYWxlAQxjYWxjQm9vc3RSd2QCBHBvb2wOY3VyVG90YWxSZXdhcmQEDXBvb2xCb29zdENvZWYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbEJvb3N0Q29lZgUQZGVmUG9vbEJvb3N0Q29lZgkAaQIJAGsDBQ5jdXJUb3RhbFJld2FyZAUNcG9vbEJvb3N0Q29lZgkAZAIFDXBvb2xCb29zdENvZWYA6AcFEmxvY2tCb29zdENvZWZTY2FsZQEMY2FsY0ludGVyZXN0DARwb29sEmxhc3RJbnRlcmVzdEhlaWdodBJyZXdhcmRVcGRhdGVIZWlnaHQWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAxmYXJtSW50ZXJlc3QNYm9vc3RJbnRlcmVzdAlwb29sVm90ZWQPYm9vc3RMcEludGVyZXN0FWN1cnJlbnRSZXdhcmRQZXJCbG9jaxBzaGFyZVRva2VuTG9ja2VkFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sKc2NhbGVWYWx1ZQMJAAACBRBzaGFyZVRva2VuTG9ja2VkAAAJAJUKAwAAAAAAAAMDCQBmAgUScmV3YXJkVXBkYXRlSGVpZ2h0BQZoZWlnaHQJAAACBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAZyZXdhcmQJAGgCBRZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQBlAgUGaGVpZ2h0BRJsYXN0SW50ZXJlc3RIZWlnaHQED25ld0Zhcm1JbnRlcmVzdAkAZAIFDGZhcm1JbnRlcmVzdAkAawMJAQtjYWxjRmFybVJ3ZAIFBHBvb2wFBnJld2FyZAUKc2NhbGVWYWx1ZQUQc2hhcmVUb2tlbkxvY2tlZAQQbmV3Qm9vc3RJbnRlcmVzdAkAZAIFDWJvb3N0SW50ZXJlc3QDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUGcmV3YXJkBQpzY2FsZVZhbHVlBQlwb29sVm90ZWQAAAQSbmV3Qm9vc3RMUEludGVyZXN0CQBkAgUPYm9vc3RMcEludGVyZXN0AwMJAGYCBQlwb29sVm90ZWQAAAkAZgIFEHNoYXJlVG9rZW5Mb2NrZWQAAAcJAGkCCQBrAwkBDGNhbGNCb29zdFJ3ZAIFBHBvb2wFBnJld2FyZAUKc2NhbGVWYWx1ZQUQc2hhcmVUb2tlbkxvY2tlZAUJcG9vbFZvdGVkAAAJAJUKAwUPbmV3RmFybUludGVyZXN0BRBuZXdCb29zdEludGVyZXN0BRJuZXdCb29zdExQSW50ZXJlc3QDAwkAZgIFBmhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQECIT0CBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAZyZXdhcmQJAGgCBRZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQBlAgUGaGVpZ2h0BRJsYXN0SW50ZXJlc3RIZWlnaHQED25ld0Zhcm1JbnRlcmVzdAkAZAIFDGZhcm1JbnRlcmVzdAkAawMJAQtjYWxjRmFybVJ3ZAIFBHBvb2wFBnJld2FyZAUKc2NhbGVWYWx1ZQUQc2hhcmVUb2tlbkxvY2tlZAQQbmV3Qm9vc3RJbnRlcmVzdAkAZAIFDWJvb3N0SW50ZXJlc3QDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUGcmV3YXJkBQpzY2FsZVZhbHVlBQlwb29sVm90ZWQAAAQSbmV3Qm9vc3RMUEludGVyZXN0CQBkAgUPYm9vc3RMcEludGVyZXN0AwMJAGYCBQlwb29sVm90ZWQAAAkAZgIFEHNoYXJlVG9rZW5Mb2NrZWQAAAcJAGkCCQBrAwkBDGNhbGNCb29zdFJ3ZAIFBHBvb2wFBnJld2FyZAUKc2NhbGVWYWx1ZQUQc2hhcmVUb2tlbkxvY2tlZAUJcG9vbFZvdGVkAAAJAJUKAwUPbmV3RmFybUludGVyZXN0BRBuZXdCb29zdEludGVyZXN0BRJuZXdCb29zdExQSW50ZXJlc3QDAwMJAGYCBQZoZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcJAGYCBRJsYXN0SW50ZXJlc3RIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAcEBnJld2FyZAkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFBmhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0BA9uZXdGYXJtSW50ZXJlc3QJAGQCBQxmYXJtSW50ZXJlc3QJAGsDCQELY2FsY0Zhcm1Sd2QCBQRwb29sBQZyZXdhcmQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQEEG5ld0Jvb3N0SW50ZXJlc3QJAGQCBQ1ib29zdEludGVyZXN0AwkAZgIFCXBvb2xWb3RlZAAACQBrAwkBDGNhbGNCb29zdFJ3ZAIFBHBvb2wFBnJld2FyZAUKc2NhbGVWYWx1ZQUJcG9vbFZvdGVkAAAEEm5ld0Jvb3N0TFBJbnRlcmVzdAkAZAIFD2Jvb3N0THBJbnRlcmVzdAMDCQBmAgUJcG9vbFZvdGVkAAAJAGYCBRBzaGFyZVRva2VuTG9ja2VkAAAHCQBpAgkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQZyZXdhcmQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQFCXBvb2xWb3RlZAAACQCVCgMFD25ld0Zhcm1JbnRlcmVzdAUQbmV3Qm9vc3RJbnRlcmVzdAUSbmV3Qm9vc3RMUEludGVyZXN0BAlyd2RCZnJVcGQJAGgCBRZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQBlAgUScmV3YXJkVXBkYXRlSGVpZ2h0BRJsYXN0SW50ZXJlc3RIZWlnaHQEDmZyYW1JbnRyQWZ0clVwCQBkAgUMZmFybUludGVyZXN0CQBrAwkBC2NhbGNGYXJtUndkAgUEcG9vbAUJcndkQmZyVXBkBQpzY2FsZVZhbHVlBRBzaGFyZVRva2VuTG9ja2VkBA9ib29zdEludHJBZnRyVXAJAGQCBQ1ib29zdEludGVyZXN0AwkAZgIFCXBvb2xWb3RlZAAACQBrAwkBDGNhbGNCb29zdFJ3ZAIFBHBvb2wFCXJ3ZEJmclVwZAUKc2NhbGVWYWx1ZQUJcG9vbFZvdGVkAAAEEGJvc3RMUEludHJBZnRyVXAJAGQCBQxmYXJtSW50ZXJlc3QDAwkAZgIFCXBvb2xWb3RlZAAACQBmAgUQc2hhcmVUb2tlbkxvY2tlZAAABwkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQlyd2RCZnJVcGQFCnNjYWxlVmFsdWUFCXBvb2xWb3RlZAAABAZyZXdhcmQJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQZoZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAQPbmV3RmFybUludGVyZXN0CQBkAgUOZnJhbUludHJBZnRyVXAJAGsDCQELY2FsY0Zhcm1Sd2QCBQRwb29sBQZyZXdhcmQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQEEG5ld0Jvb3N0SW50ZXJlc3QJAGQCBQ9ib29zdEludHJBZnRyVXADCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUGcmV3YXJkBQpzY2FsZVZhbHVlBQlwb29sVm90ZWQAAAQSbmV3Qm9vc3RMUEludGVyZXN0CQBkAgUQYm9zdExQSW50ckFmdHJVcAMDCQBmAgUJcG9vbFZvdGVkAAAJAGYCBRBzaGFyZVRva2VuTG9ja2VkAAAHCQBpAgkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQZyZXdhcmQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQFCXBvb2xWb3RlZAAACQCVCgMFD25ld0Zhcm1JbnRlcmVzdAUQbmV3Qm9vc3RJbnRlcmVzdAUSbmV3Qm9vc3RMUEludGVyZXN0AQljbGFpbUNhbGMCBHBvb2wEdXNlcgQKc2NhbGVWYWx1ZQkBDmNhbGNTY2FsZVZhbHVlAgUEU1dPUAkBD2dldFNoYXJlQXNzZXRJZAEFBHBvb2wECXBvb2xWb3RlZAkBDGdldFBvb2xWb3RlZAEFBHBvb2wECnVQb29sVm90ZWQJARBnZXRVc2VyUG9vbFZvdGVkAgUEcG9vbAUEdXNlcgQKc2hhcmVUb2tlbgkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUKc2hhcmVUb2tlbgQNJHQwMTQyODUxNDM4MwkBE2dldExhc3RJbnRlcmVzdEluZm8BBQRwb29sBBJsYXN0SW50ZXJlc3RIZWlnaHQIBQ0kdDAxNDI4NTE0MzgzAl8xBAxmYXJtSW50ZXJlc3QIBQ0kdDAxNDI4NTE0MzgzAl8yBA1ib29zdEludGVyZXN0CAUNJHQwMTQyODUxNDM4MwJfMwQPYm9vc3RMUEludGVyZXN0CAUNJHQwMTQyODUxNDM4MwJfNAQNJHQwMTQzODgxNDUwMgkBCnJld2FyZEluZm8BBQRwb29sBBVjdXJyZW50UmV3YXJkUGVyQmxvY2sIBQ0kdDAxNDM4ODE0NTAyAl8xBBJyZXdhcmRVcGRhdGVIZWlnaHQIBQ0kdDAxNDM4ODE0NTAyAl8yBBZwcmV2aW91c1Jld2FyZFBlckJsb2NrCAUNJHQwMTQzODgxNDUwMgJfMwQWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAgFDSR0MDE0Mzg4MTQ1MDICXzQEDXVGYXJtSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QEDnVCb29zdEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QEEHVCb29zdExQSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUYa0Jvb3N0TFBVc2VyTGFzdEludGVyZXN0BQ9ib29zdExQSW50ZXJlc3QEEnVTaGFyZVRva2Vuc1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAEEHVTaGFyZVRva2Vuc1ZpcnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEnVTaGFyZVRva2Vuc1N0YWtlZAQNJHQwMTUwNzAxNTQ2MwkBDGNhbGNJbnRlcmVzdAwFBHBvb2wFEmxhc3RJbnRlcmVzdEhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFCXBvb2xWb3RlZAUPYm9vc3RMUEludGVyZXN0BRVjdXJyZW50UmV3YXJkUGVyQmxvY2sFEXRvdGFsU2hhcmVWaXJ0dWFsBRZwcmV2aW91c1Jld2FyZFBlckJsb2NrBQpzY2FsZVZhbHVlBA9uZXdGYXJtSW50ZXJlc3QIBQ0kdDAxNTA3MDE1NDYzAl8xBBBuZXdCb29zdEludGVyZXN0CAUNJHQwMTUwNzAxNTQ2MwJfMgQSbmV3Qm9vc3RMUEludGVyZXN0CAUNJHQwMTUwNzAxNTQ2MwJfMwQMY2xhaW1GYXJtaW5nCQBrAwUQdVNoYXJlVG9rZW5zVmlydAkAZQIFD25ld0Zhcm1JbnRlcmVzdAUNdUZhcm1JbnRlcmVzdAUKc2NhbGVWYWx1ZQQQY2xhaW1Cb29zdGluZ01heAkAawMFCnVQb29sVm90ZWQJAGUCBRBuZXdCb29zdEludGVyZXN0BQ51Qm9vc3RJbnRlcmVzdAUKc2NhbGVWYWx1ZQQNY2xhaW1Cb29zdGluZwkAawMJAGgCBRB1U2hhcmVUb2tlbnNWaXJ0BQp1UG9vbFZvdGVkCQBlAgUSbmV3Qm9vc3RMUEludGVyZXN0BRB1Qm9vc3RMUEludGVyZXN0BQpzY2FsZVZhbHVlBAp0b1RyZWFzdXJ5CQBlAgUQY2xhaW1Cb29zdGluZ01heAUNY2xhaW1Cb29zdGluZwkAlwoFBQ9uZXdGYXJtSW50ZXJlc3QFEG5ld0Jvb3N0SW50ZXJlc3QFEm5ld0Jvb3N0TFBJbnRlcmVzdAkAZAIFDGNsYWltRmFybWluZwUNY2xhaW1Cb29zdGluZwUKdG9UcmVhc3VyeQEVY2FuTG9ja0luRmlyc3RIYXJ2ZXN0BQRwb29sBHVzZXIVdXNlclNoYXJlVG9rZW5zU3Rha2VkCXBtdEFtb3VudAhsb2NrVHlwZQMJAGYCCQEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQUEcG9vbAUGaGVpZ2h0BA90b3RhbFZvdGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNdm90aW5nQWRkcmVzcwkArAICBQRwb29sBRBrSGFydmVzdFBvb2xWb3RlAAAEDnVzZXJWb3RlQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBHBvb2wFEGtIYXJ2ZXN0UG9vbFZvdGUAAAQRRkhTaGFyZVRva2VuTGltaXQJARRnZXRGSFNoYXJlTGltaXRUb2tlbgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEFUZIU2hhcmVUb2tlblVzZXJMaW1pdAkAZQIJAGsDBRFGSFNoYXJlVG9rZW5MaW1pdAUOdXNlclZvdGVBbW91bnQFD3RvdGFsVm90ZUFtb3VudAUVdXNlclNoYXJlVG9rZW5zU3Rha2VkAwkAZgIFCGxvY2tUeXBlAAAJAAIBAjJZb3UgY2FuJ3QgbG9jayBzaGFyZVRva2VucyB0aWxsIGZpcnN0IGhhcnZlc3QgZW5kLgMJAAACBQ51c2VyVm90ZUFtb3VudAAAAAADCQBnAgUJcG10QW1vdW50BRVGSFNoYXJlVG9rZW5Vc2VyTGltaXQJAGUCBQlwbXRBbW91bnQFFUZIU2hhcmVUb2tlblVzZXJMaW1pdAAAAAABDWdldExvY2tQYXJhbXMBBHR5cGUECmxvY2tQYXJhbXMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgkApAMBBQR0eXBlBQtrTG9ja1BhcmFtcwkArAICAh5UaGVyZSBhcmUgbm8ga2V5IGZvciBsb2NrIHR5cGUJAKQDAQUEdHlwZQIBXwkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKbG9ja1BhcmFtcwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKbG9ja1BhcmFtcwABAQdzdXNwZW5kAQVjYXVzZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQcJAMwIAgkBC1N0cmluZ0VudHJ5AgUGa0NhdXNlBQVjYXVzZQUDbmlsAQhpc0FjdGl2ZQADAwUGYWN0aXZlBQphY3RpdmVHbG9iBwUEdW5pdAkAAgECH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQBC2lzQWRtaW5DYWxsAQFpAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMFA25pbAgFAWkPY2FsbGVyUHVibGljS2V5BQR1bml0CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uDgFpAQRpbml0AQdlYXJseUxQAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUHa1NXT1BpZAkAAgECGFNXT1AgYWxyZWFkeSBpbml0aWFsaXplZAQKaW5pdEFtb3VudACAgOmDsd4WBAlTV09QaXNzdWUJAMIIBQIEU1dPUAITU1dPUCBwcm90b2NvbCB0b2tlbgUKaW5pdEFtb3VudAAIBgQGU1dPUGlkCQC4CAEFCVNXT1Bpc3N1ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkAwggFAgRTV09QAhNTV09QIHByb3RvY29sIHRva2VuBQppbml0QW1vdW50AAgGCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2tTV09QaWQJANgEAQUGU1dPUGlkBQNuaWwBaQEUaW5pdFBvb2xTaGFyZUZhcm1pbmcBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUWa1NoYXJlVG90YWxTaGFyZVRva2VucwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0AAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0AAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAFpARJ1cGRhdGVQb29sSW50ZXJlc3QBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCAUBaQZjYWxsZXIFCmdvdkFkZHJlc3MJAAIBAiZPbmx5IEdvdmVybmFuY2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQEdXNlcgkApQgBCQCnCAEFEWFkbWluSW52b2tlUHViS2V5BA0kdDAxODQ4MDE4NTU0CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMTg0ODAxODU1NAJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDE4NDgwMTg1NTQCXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDE4NDgwMTg1NTQCXzMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAFpAQ9sb2NrU2hhcmVUb2tlbnMCBHBvb2wIbG9ja1R5cGUJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDHNoYXJlQXNzZXRJZAkBD2dldFNoYXJlQXNzZXRJZAEFBHBvb2wEBHVzZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAp0b3RhbFNoYXJlCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQp0b3RhbFNoYXJlBBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQPdXNlckxvY2tlZEhlaWd0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBR0b3RhbFVzZXJTaGFyZVRva2VucwkAZAIJAGQCBRB1c2VyU3Rha2VkQW1vdW50BRB1c2VyTG9ja2VkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQNJHQwMTk2NjMxOTcxNQkBDWdldExvY2tQYXJhbXMBBQhsb2NrVHlwZQQKbG9ja1BlcmlvZAgFDSR0MDE5NjYzMTk3MTUCXzEECGxvY2tDb2VmCAUNJHQwMTk2NjMxOTcxNQJfMgQMbG9ja1dhdmVzRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rTG9ja1dhdmVzRmVlAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxzaGFyZUFzc2V0SWQJAAIBAhtXcm9uZyBzaGFyZXRva2VuIGluIHBheW1lbnQDCQBnAgAACAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAAgECJVBheW1lbnQgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQhsb2NrVHlwZQkAAgECFWxvY2tUeXBlIG11c3QgYmUgPj0gMAQVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQEVY2FuTG9ja0luRmlyc3RIYXJ2ZXN0BQUEcG9vbAUEdXNlcgUQdXNlclN0YWtlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCGxvY2tUeXBlAwkAAAIFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZIBA0kdDAyMDE0MjIxOTg3AwkAAAIFCGxvY2tUeXBlAAAEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBlAgkAZAIFEXVzZXJBbW91bnRWaXJ0dWFsCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQJAGUCCQBkAgUQdXNlclN0YWtlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBlAgkAZAIFEXRvdGFsU2hhcmVWaXJ0dWFsCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpDG9yaWdpbkNhbGxlcgUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAkAZQIJAGQCBQp0b3RhbFNoYXJlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZIAwMJAAACBQ91c2VyTG9ja2VkSGVpZ3QAAAMDCQBmAgACCQCQAwEIBQFpCHBheW1lbnRzBgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBQR1bml0BgkAZgIFDGxvY2tXYXZlc0ZlZQgJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQHCQACAQkArAICCQCsAgICK1lvdSBuZWVkIHRvIHBheSBhZGRpdGlvbmFsIHdhdmVzIGNvbWlzc2lvbiAJAKQDAQUMbG9ja1dhdmVzRmVlAgVXQVZFUwMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QJAAIBAk9Zb3UgY2Fubm90IGxvY2sgc2hhcmV0b2tlbnMgZm9yIGEgcGVyaW9kIGxlc3MgdGhhbiB3aGF0IHlvdSBoYXZlIGFscmVhZHkgbG9ja2VkBBN1c2VyTG9ja2VkQW1vdW50TmV3CQBkAgUQdXNlckxvY2tlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEEnVzZXJMb2NrZWRIZWlndE5ldwkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGQCCQBrAwUTdXNlckxvY2tlZEFtb3VudE5ldwUIbG9ja0NvZWYFEmxvY2tCb29zdENvZWZTY2FsZQUQdXNlclN0YWtlZEFtb3VudAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkBRN1c2VyTG9ja2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0BRJ1c2VyTG9ja2VkSGVpZ3ROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFGmtVc2VyU2hhcmVUb2tlbnNMb2NrZWRUeXBlBQhsb2NrVHlwZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwJAGQCCQBlAgURdG90YWxTaGFyZVZpcnR1YWwFEXVzZXJBbW91bnRWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwUDbmlsCQBkAgUKdG90YWxTaGFyZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEC2xvY2tFbnRyaWVzCAUNJHQwMjAxNDIyMTk4NwJfMQQNdG90YWxTaGFyZU5ldwgFDSR0MDIwMTQyMjE5ODcCXzIDCQBmAgkBDmFjY291bnRCYWxhbmNlAQUMc2hhcmVBc3NldElkBQ10b3RhbFNoYXJlTmV3CQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50BA0kdDAyMjExMjIyMjExCQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjIxMTIyMjIxMQJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDIyMTEyMjIyMTECXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDIyMTEyMjIyMTECXzMEC2NsYWltQW1vdW50CAUNJHQwMjIxMTIyMjIxMQJfNAQKdG9UcmVhc3VyZQgFDSR0MDIyMTEyMjIyMTECXzUEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAgFAWkMb3JpZ2luQ2FsbGVyBQtjbGFpbUFtb3VudAQEdXBscAMJAAACCQCdCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd2ZXJzaW9uAgUzLjAuMAkA/AcEBRBscEZhcm1pbmdBZGRyZXNzAhJ1cGRhdGVVc2VySW50ZXJlc3QJAMwIAgUEcG9vbAkAzAgCBRR0b3RhbFVzZXJTaGFyZVRva2VucwUDbmlsBQNuaWwAAAMJAAACBQR1cGxwBQR1cGxwCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMFDXRvdGFsU2hhcmVOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AFA25pbAULbG9ja0VudHJpZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVbG9ja1N0YWtlZFNoYXJlVG9rZW5zAwRwb29sCGxvY2tUeXBlCmxvY2tBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDHNoYXJlQXNzZXRJZAkBD2dldFNoYXJlQXNzZXRJZAEFBHBvb2wEBHVzZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAp0b3RhbFNoYXJlCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQp0b3RhbFNoYXJlBBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQPdXNlckxvY2tlZEhlaWd0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBR0b3RhbFVzZXJTaGFyZVRva2VucwkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQEDSR0MDI0MTE5MjQxNzEJAQ1nZXRMb2NrUGFyYW1zAQUIbG9ja1R5cGUECmxvY2tQZXJpb2QIBQ0kdDAyNDExOTI0MTcxAl8xBAhsb2NrQ29lZggFDSR0MDI0MTE5MjQxNzECXzIEDGxvY2tXYXZlc0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQMJAGYCCQEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQUEcG9vbAUGaGVpZ2h0CQACAQIyWW91IGNhbid0IGxvY2sgc2hhcmVUb2tlbnMgdGlsbCBmaXJzdCBoYXJ2ZXN0IGVuZC4DCQBnAgAABQhsb2NrVHlwZQkAAgECFGxvY2tUeXBlIG11c3QgYmUgPiAwAwkAZgIFCmxvY2tBbW91bnQFEHVzZXJTdGFrZWRBbW91bnQJAAIBCQCsAgICGVlvdSBjYW4ndCBsb2NrIG1vcmUgdGhhbiAJAKQDAQUQdXNlclN0YWtlZEFtb3VudAMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQxzaGFyZUFzc2V0SWQFCnRvdGFsU2hhcmUJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQDAwkAAAIFD3VzZXJMb2NrZWRIZWlndAAAAwMJAGYCAAEJAJADAQgFAWkIcGF5bWVudHMGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQGCQBmAgUMbG9ja1dhdmVzRmVlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAcJAAIBCQCsAgIJAKwCAgIrWW91IG5lZWQgdG8gcGF5IGFkZGl0aW9uYWwgd2F2ZXMgY29taXNzaW9uIAkApAMBBQxsb2NrV2F2ZXNGZWUCBVdBVkVTAwkAZgIFD3VzZXJMb2NrZWRIZWlndAkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAkAAgECT1lvdSBjYW5ub3QgbG9jayBzaGFyZXRva2VucyBmb3IgYSBwZXJpb2QgbGVzcyB0aGFuIHdoYXQgeW91IGhhdmUgYWxyZWFkeSBsb2NrZWQEE3VzZXJMb2NrZWRBbW91bnROZXcJAGQCBRB1c2VyTG9ja2VkQW1vdW50BQpsb2NrQW1vdW50BBN1c2VyU3Rha2VkQW1vdW50TmV3CQBlAgUQdXNlclN0YWtlZEFtb3VudAUKbG9ja0Ftb3VudAQSdXNlckxvY2tlZEhlaWd0TmV3CQBkAgUGaGVpZ2h0BQpsb2NrUGVyaW9kBBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZAIJAGsDBRN1c2VyTG9ja2VkQW1vdW50TmV3BQhsb2NrQ29lZgUSbG9ja0Jvb3N0Q29lZlNjYWxlBRB1c2VyU3Rha2VkQW1vdW50BA0kdDAyNTI4OTI1Mzg4CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjUyODkyNTM4OAJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDI1Mjg5MjUzODgCXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDI1Mjg5MjUzODgCXzMEC2NsYWltQW1vdW50CAUNJHQwMjUyODkyNTM4OAJfNAQKdG9UcmVhc3VyZQgFDSR0MDI1Mjg5MjUzODgCXzUEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAgFAWkMb3JpZ2luQ2FsbGVyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAUTdXNlckxvY2tlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAUSdXNlckxvY2tlZEhlaWd0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQUIbG9ja1R5cGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBkAgkAZQIFEXRvdGFsU2hhcmVWaXJ0dWFsBRF1c2VyQW1vdW50VmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QBQNuaWwBaQEOdW5sb2NrVXNlckxvY2sCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQMbG9ja1dhdmVzRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rTG9ja1dhdmVzRmVlBA91c2VyTG9ja2VkSGVpZ3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0CQCsAgIJAKwCAgkArAICCQCsAgICEVRoZXJlIGlzIG5vIHBvb2wgBQRwb29sAgkgb3IgdXNlciAFBHVzZXICCXdpdGggbG9jawQRdG90YWxTaGFyZVZpcnR1YWwJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QFBmhlaWdodAkAAgEJAKwCAgIiWW91IGNhbid0IHVubG9jayBzaGFyZXRva2VucyB0aWxsIAkApAMBBQ91c2VyTG9ja2VkSGVpZ3QEE3VzZXJTdGFrZWRBbW91bnROZXcJAGQCBRB1c2VyU3Rha2VkQW1vdW50BRB1c2VyTG9ja2VkQW1vdW50BA0kdDAyNzYyNDI3NzIzCQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjc2MjQyNzcyMwJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDI3NjI0Mjc3MjMCXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDI3NjI0Mjc3MjMCXzMEC2NsYWltQW1vdW50CAUNJHQwMjc2MjQyNzcyMwJfNAQKdG9UcmVhc3VyZQgFDSR0MDI3NjI0Mjc3MjMCXzUEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAgFAWkMb3JpZ2luQ2FsbGVyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRN1c2VyU3Rha2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwJAGQCCQBlAgURdG90YWxTaGFyZVZpcnR1YWwFEXVzZXJBbW91bnRWaXJ0dWFsBRN1c2VyU3Rha2VkQW1vdW50TmV3CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxsb2NrV2F2ZXNGZWUFBHVuaXQFA25pbAFpARN3aXRoZHJhd1NoYXJlVG9rZW5zAgRwb29sGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDXNoYXJlVG9rZW5zSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAQEdXNlcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEDSR0MDI5MjI3MjkzMjYJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAyOTIyNzI5MzI2Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMjkyMjcyOTMyNgJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMjkyMjcyOTMyNgJfMwQLY2xhaW1BbW91bnQIBQ0kdDAyOTIyNzI5MzI2Al80BAp0b1RyZWFzdXJlCAUNJHQwMjkyMjcyOTMyNgJfNQQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQTdXNlclN0YWtlZEFtb3VudE5ldwkAZQIFEHVzZXJTdGFrZWRBbW91bnQFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAgFAWkMb3JpZ2luQ2FsbGVyBQtjbGFpbUFtb3VudAQQdG90YWxTaGFyZUFtb3VudAkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUQdG90YWxTaGFyZUFtb3VudAQTdG90YWxTaGFyZUFtb3VudE5ldwkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEFHRvdGFsU2hhcmVWaXJ0dWFsTmV3CQBlAgURdG90YWxTaGFyZVZpcnR1YWwFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBlAgURdXNlckFtb3VudFZpcnR1YWwFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQDCQBmAgUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUQdXNlclN0YWtlZEFtb3VudAkAAgECLFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50AwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDXNoYXJlVG9rZW5zSWQFEHRvdGFsU2hhcmVBbW91bnQJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQEBHVwbHADCQAAAgkAnQgCCQEHQWRkcmVzcwEJANkEAQUEcG9vbAIHdmVyc2lvbgIFMy4wLjAJAPwHBAUQbHBGYXJtaW5nQWRkcmVzcwISdXBkYXRlVXNlckludGVyZXN0CQDMCAIFBHBvb2wJAMwIAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQFA25pbAUDbmlsAAADCQAAAgUEdXBscAUEdXBscAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zBRN0b3RhbFNoYXJlQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFFHRvdGFsU2hhcmVWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUNc2hhcmVUb2tlbnNJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBWNsYWltAQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA1zaGFyZVRva2Vuc0lkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQV2YWx1ZQEJAKYIAQUEcG9vbAIOc2hhcmVfYXNzZXRfaWQEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBBBzaGFyZVRva2VuTG9ja2VkCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQNJHQwMzE5OTUzMjA5NAkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDMxOTk1MzIwOTQCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAzMTk5NTMyMDk0Al8yBA9ib29zdExQaW50ZXJlc3QIBQ0kdDAzMTk5NTMyMDk0Al8zBAtjbGFpbUFtb3VudAgFDSR0MDMxOTk1MzIwOTQCXzQECnRvVHJlYXN1cmUIBQ0kdDAzMTk5NTMyMDk0Al81BA1hdmFpbGFibGVGdW5kCQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAgFAWkGY2FsbGVyBQtjbGFpbUFtb3VudAMJAAACBQ1hdmFpbGFibGVGdW5kAAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QAwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDXNoYXJlVG9rZW5zSWQFEHNoYXJlVG9rZW5Mb2NrZWQJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAAJAMwIAgkBB1JlaXNzdWUDBQRTV09QCQBkAgUKdG9UcmVhc3VyZQUNYXZhaWxhYmxlRnVuZAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDWF2YWlsYWJsZUZ1bmQFBFNXT1AFA25pbAUNYXZhaWxhYmxlRnVuZAFpAQ1jbGFpbUFuZFN0YWtlAQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAtjbGFpbUFtb3VudAoAAUAJAPwHBAUEdGhpcwIFY2xhaW0JAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFC2NsYWltQW1vdW50BQtjbGFpbUFtb3VudAQKc3Rha2VUb0dvdgkA/AcEBQpnb3ZBZGRyZXNzAhNsb2NrU1dPUEZyb21GYXJtaW5nBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBFNXT1AFC2Ns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bmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF3VwZGF0ZVVzZXJCb29zdEludGVyZXN0AgRwb29sBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCAUBaQZjYWxsZXIFDXZvdGluZ0FkZHJlc3MJAAIBAiNPbmx5IHZvaXRpbmcgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQNJHQwMzQ0NzQzNDU3MwkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDM0NDc0MzQ1NzMCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAzNDQ3NDM0NTczAl8yBA9ib29zdExQaW50ZXJlc3QIBQ0kdDAzNDQ3NDM0NTczAl8zBAtjbGFpbUFtb3VudAgFDSR0MDM0NDc0MzQ1NzMCXzQECnRvVHJlYXN1cmUIBQ0kdDAzNDQ3NDM0NTczAl81BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wIBQFpDG9yaWdpbkNhbGxlcgULY2xhaW1BbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QBQNuaWwBaQEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBBQZhY3RpdmUJAAIBCQCsAgICIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa0NhdXNlAhp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAkBB3N1c3BlbmQBAg9QYXVzZWQgYnkgYWRtaW4BaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwUGYWN0aXZlCQACAQIWREFwcCBpcyBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUGa0NhdXNlBQNuaWwBAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAAChPyZmA==", "height": 2282360, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E3v6qChruFFDtEJuLkt9jL1rqTsMZT2Wkz8NZ9bxF4RW Next: FQPudS2DfBSA8X6Wi9M8oHkbMTg2YWBfe8brKb76Zmfu Diff:
OldNewDifferences
350350 let bG = valueOrElse(getInteger(this, (((aw + "_") + aB) + y)), bd)
351351 let bH = valueOrElse(getInteger(this, (((aw + "_") + aB) + j)), 0)
352352 let bI = valueOrElse(getInteger(this, (((aw + "_") + aB) + n)), bH)
353- let bJ = bj(aw, be, aV, aW, bb, bc, bk, bd, bm, bA, bo, bp)
353+ let bJ = bj(aw, be, aV, aW, bb, bc, bk, bd, bm, bB, bo, bp)
354354 let br = bJ._1
355355 let bs = bJ._2
356356 let bt = bJ._3
459459 let cw = if ((bR == 0))
460460 then {
461461 let cx = ((cp + cd.payments[0].amount) - cv)
462- $Tuple3([IntegerEntry((((aw + "_") + aB) + j), ((cm + cd.payments[0].amount) - cv)), IntegerEntry((aw + p), ((bB + cd.payments[0].amount) - cv)), ScriptTransfer(cd.originCaller, cv, cd.payments[0].assetId)], cx, ((cl + cd.payments[0].amount) - cv))
462+ $Tuple2([IntegerEntry((((aw + "_") + aB) + j), ((cm + cd.payments[0].amount) - cv)), IntegerEntry((aw + p), ((bB + cd.payments[0].amount) - cv)), ScriptTransfer(cd.originCaller, cv, cd.payments[0].assetId)], ((cl + cd.payments[0].amount) - cv))
463463 }
464464 else if (if ((cn == 0))
465465 then if (if ((2 > size(cd.payments)))
475475 let cy = (co + cd.payments[0].amount)
476476 let cz = (height + cs)
477477 let cx = (fraction(cy, ct, X) + cm)
478- $Tuple3([IntegerEntry((((aw + "_") + aB) + k), cy), IntegerEntry((((aw + "_") + aB) + m), cz), IntegerEntry((((aw + "_") + aB) + l), bR), IntegerEntry((((aw + "_") + aB) + n), cx), IntegerEntry((aw + p), ((bB - cp) + cx))], cx, (cl + cd.payments[0].amount))
478+ $Tuple2([IntegerEntry((((aw + "_") + aB) + k), cy), IntegerEntry((((aw + "_") + aB) + m), cz), IntegerEntry((((aw + "_") + aB) + l), bR), IntegerEntry((((aw + "_") + aB) + n), cx), IntegerEntry((aw + p), ((bB - cp) + cx))], (cl + cd.payments[0].amount))
479479 }
480480 let cA = cw._1
481- let cx = cw._2
482- let cB = cw._3
481+ let cB = cw._2
483482 if ((aD(ck) > cB))
484483 then throw("Balance of share-token is lower than totalAmount")
485484 else {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "active_all_contracts"
77
88 let c = "shutdown_cause"
99
1010 let d = "_current_pool_fraction_reward"
1111
1212 let e = "_previous_pool_fraction_reward"
1313
1414 let f = "_pool_reward_update_height"
1515
1616 let g = "total_reward_per_block_current"
1717
1818 let h = "total_reward_per_block_previous"
1919
2020 let i = "reward_update_height"
2121
2222 let j = "_share_tokens_locked"
2323
2424 let k = "_share_tokens_blocked"
2525
2626 let l = "_share_tokens_blocked_type"
2727
2828 let m = "_share_tokens_blocked_height"
2929
3030 let n = "_share_tokens_virtual"
3131
3232 let o = "_total_share_tokens_locked"
3333
3434 let p = "_total_share_tokens_virtual"
3535
3636 let q = "_lock_params"
3737
3838 let r = "lock_waves_fee"
3939
4040 let s = "_boost_coef"
4141
4242 let t = "_last_interest"
4343
4444 let u = "_last_interest"
4545
4646 let v = "_last_interest_b"
4747
4848 let w = "_last_interest_u_b"
4949
5050 let x = "_last_interest_lpb"
5151
5252 let y = "_last_interest_u_lpb"
5353
5454 let z = "_last_interest_height"
5555
5656 let A = "SWOP_id"
5757
5858 let B = "_available_SWOP"
5959
6060 let C = "swop_year_emission"
6161
6262 let D = "_harvest_pool_vote_gSWOP"
6363
6464 let E = "_pool_vote_gSWOP"
6565
6666 let F = "_user_vote_gSWOP"
6767
6868 let G = "_harvest_user_pool_vote_gSWOP"
6969
7070 let H = "base_period"
7171
7272 let I = "period_length"
7373
7474 let J = "start_height"
7575
7676 let K = "first_harvest_height"
7777
7878 let L = "share_limit_on_first_harvest"
7979
8080 let M = "admin_pub_1"
8181
8282 let N = "admin_pub_2"
8383
8484 let O = "admin_pub_3"
8585
8686 let P = "admin_invoke_pub"
8787
8888 let Q = "money_box_address"
8989
9090 let R = "voting_address"
9191
9292 let S = "governance_address"
9393
9494 let T = "lp_farming"
9595
9696 let U = "farming_treasure"
9797
9898 let V = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9999
100100 let W = 10000000000
101101
102102 let X = 1000
103103
104104 let Y = 500
105105
106106 func Z (aa) = {
107107 let ab = getString(V, aa)
108108 if ($isInstanceOf(ab, "String"))
109109 then {
110110 let ac = ab
111111 fromBase58String(ac)
112112 }
113113 else {
114114 let ad = ab
115115 throw((aa + "is empty"))
116116 }
117117 }
118118
119119
120120 let ae = Z(M)
121121
122122 let af = Z(N)
123123
124124 let ag = Z(O)
125125
126126 let ah = Address(Z(Q))
127127
128128 let ai = Address(Z(R))
129129
130130 let aj = Address(Z(S))
131131
132132 let ak = Z(P)
133133
134134 let al = Address(Z(T))
135135
136136 let am = Address(Z(U))
137137
138138 let an = valueOrErrorMessage(getInteger(ai, H), "Empty kBasePeriod")
139139
140140 let ao = valueOrErrorMessage(getInteger(ai, J), "Empty kStartHeight")
141141
142142 let ap = valueOrErrorMessage(getInteger(ai, I), "Empty kPeriodLength")
143143
144144 let aq = (an + ((height - ao) / ap))
145145
146146 let ar = getBooleanValue(this, a)
147147
148148 let as = valueOrElse(getBoolean(V, b), true)
149149
150150 let at = getIntegerValue(this, C)
151151
152152 let au = fromBase58String(getStringValue(this, A))
153153
154154 func av (aw) = valueOrElse(getInteger(Address(fromBase58String(aw)), K), 0)
155155
156156
157157 func ax (aw) = valueOrErrorMessage(getInteger(aw, L), ("No data on the key: " + L))
158158
159159
160160 func ay (aw) = valueOrErrorMessage(getInteger(this, (aw + o)), (("No data on the key: " + aw) + o))
161161
162162
163163 func az (aw) = valueOrElse(getInteger(ai, (aw + E)), 0)
164164
165165
166166 func aA (aw,aB) = valueOrElse(getInteger(ai, (((aB + "_") + aw) + E)), 0)
167167
168168
169169 func aC (aw) = fromBase58String(getStringValue(value(addressFromString(aw)), "share_asset_id"))
170170
171171
172172 func aD (aE) = {
173173 let ab = aE
174174 if ($isInstanceOf(ab, "ByteVector"))
175175 then {
176176 let aF = ab
177177 assetBalance(this, aF)
178178 }
179179 else if ($isInstanceOf(ab, "Unit"))
180180 then {
181181 let aG = ab
182182 wavesBalance(this).available
183183 }
184184 else throw("Match error")
185185 }
186186
187187
188188 func aH (aE) = {
189189 let ab = aE
190190 if ($isInstanceOf(ab, "ByteVector"))
191191 then {
192192 let aF = ab
193193 let aI = toBase58String(aF)
194194 let aJ = valueOrErrorMessage(assetInfo(aF), (("Asset " + aI) + " doesn't exist"))
195195 $Tuple3(aI, aJ.name, aJ.decimals)
196196 }
197197 else if ($isInstanceOf(ab, "Unit"))
198198 then {
199199 let aG = ab
200200 $Tuple3("WAVES", "WAVES", 8)
201201 }
202202 else throw("Match error")
203203 }
204204
205205
206206 func aK (aL,aM) = {
207207 let aN = value(assetInfo(aL)).decimals
208208 let aO = value(assetInfo(aM)).decimals
209209 let aP = ((aO - aN) + 8)
210210 pow(10, 0, aP, 0, 0, DOWN)
211211 }
212212
213213
214214 func aQ (aw,aB) = valueOrElse(getInteger(this, (((aw + "_") + toString(aB)) + B)), 0)
215215
216216
217217 func aR (aw) = {
218218 let aS = valueOrErrorMessage(getInteger(aj, g), ((("No data on the key: " + g) + " at address ") + toString(aj)))
219219 let aT = valueOrErrorMessage(getInteger(aj, h), ((("No data on the key: " + h) + " at address ") + toString(aj)))
220220 let aU = valueOrErrorMessage(getInteger(aj, (aw + d)), (((("No data on the key: " + aw) + d) + " at address ") + toString(aj)))
221221 let aV = valueOrErrorMessage(getInteger(aj, i), ((("No data on the key: " + i) + " at address ") + toString(aj)))
222222 let aW = valueOrElse(getInteger(aj, (aw + f)), aV)
223223 let aX = valueOrErrorMessage(getInteger(aj, (aw + e)), (((("No data on the key: " + aw) + e) + " at address ") + toString(aj)))
224224 let aY = fraction(aS, aU, W)
225225 let aZ = fraction(aS, aX, W)
226226 if (if ((aY > aS))
227227 then true
228228 else (aZ > aT))
229229 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
230230 else $Tuple4(aY, aV, aZ, aW)
231231 }
232232
233233
234234 func ba (aw) = {
235235 let bb = valueOrErrorMessage(getInteger(this, (aw + t)), (("No data on the key: " + aw) + t))
236236 let bc = valueOrErrorMessage(getInteger(this, (aw + t)), (("No data on the key: " + aw) + v))
237237 let bd = valueOrErrorMessage(getInteger(this, (aw + t)), (("No data on the key: " + aw) + x))
238238 let be = valueOrElse(getInteger(this, (aw + z)), height)
239239 $Tuple4(be, bb, bc, bd)
240240 }
241241
242242
243243 func bf (aw,bg) = {
244244 let bh = valueOrElse(getInteger(this, (aw + s)), Y)
245245 ((bg / (bh + 1000)) / X)
246246 }
247247
248248
249249 func bi (aw,bg) = {
250250 let bh = valueOrElse(getInteger(this, (aw + s)), Y)
251251 (fraction(bg, bh, (bh + 1000)) / X)
252252 }
253253
254254
255255 func bj (aw,be,aV,aW,bb,bc,bk,bl,bm,bn,bo,bp) = if ((bn == 0))
256256 then $Tuple3(0, 0, 0)
257257 else if (if ((aV > height))
258258 then (aV == aW)
259259 else false)
260260 then {
261261 let bq = (bo * (height - be))
262262 let br = (bb + fraction(bf(aw, bq), bp, bn))
263263 let bs = (bc + (if ((bk > 0))
264264 then fraction(bi(aw, bq), bp, bk)
265265 else 0))
266266 let bt = (bl + (if (if ((bk > 0))
267267 then (bn > 0)
268268 else false)
269269 then (fraction(bi(aw, bq), bp, bn) / bk)
270270 else 0))
271271 $Tuple3(br, bs, bt)
272272 }
273273 else if (if ((height > aV))
274274 then (aV != aW)
275275 else false)
276276 then {
277277 let bq = (bo * (height - be))
278278 let br = (bb + fraction(bf(aw, bq), bp, bn))
279279 let bs = (bc + (if ((bk > 0))
280280 then fraction(bi(aw, bq), bp, bk)
281281 else 0))
282282 let bt = (bl + (if (if ((bk > 0))
283283 then (bn > 0)
284284 else false)
285285 then (fraction(bi(aw, bq), bp, bn) / bk)
286286 else 0))
287287 $Tuple3(br, bs, bt)
288288 }
289289 else if (if (if ((height > aV))
290290 then (aV == aW)
291291 else false)
292292 then (be > aV)
293293 else false)
294294 then {
295295 let bq = (bm * (height - be))
296296 let br = (bb + fraction(bf(aw, bq), bp, bn))
297297 let bs = (bc + (if ((bk > 0))
298298 then fraction(bi(aw, bq), bp, bk)
299299 else 0))
300300 let bt = (bl + (if (if ((bk > 0))
301301 then (bn > 0)
302302 else false)
303303 then (fraction(bi(aw, bq), bp, bn) / bk)
304304 else 0))
305305 $Tuple3(br, bs, bt)
306306 }
307307 else {
308308 let bu = (bo * (aV - be))
309309 let bv = (bb + fraction(bf(aw, bu), bp, bn))
310310 let bw = (bc + (if ((bk > 0))
311311 then fraction(bi(aw, bu), bp, bk)
312312 else 0))
313313 let bx = (bb + (if (if ((bk > 0))
314314 then (bn > 0)
315315 else false)
316316 then fraction(bi(aw, bu), bp, bk)
317317 else 0))
318318 let bq = (bm * (height - aV))
319319 let br = (bv + fraction(bf(aw, bq), bp, bn))
320320 let bs = (bw + (if ((bk > 0))
321321 then fraction(bi(aw, bq), bp, bk)
322322 else 0))
323323 let bt = (bx + (if (if ((bk > 0))
324324 then (bn > 0)
325325 else false)
326326 then (fraction(bi(aw, bq), bp, bn) / bk)
327327 else 0))
328328 $Tuple3(br, bs, bt)
329329 }
330330
331331
332332 func by (aw,aB) = {
333333 let bp = aK(au, aC(aw))
334334 let bk = az(aw)
335335 let bz = aA(aw, aB)
336336 let bA = ay(aw)
337337 let bB = valueOrElse(getInteger(this, (aw + p)), bA)
338338 let bC = ba(aw)
339339 let be = bC._1
340340 let bb = bC._2
341341 let bc = bC._3
342342 let bd = bC._4
343343 let bD = aR(aw)
344344 let bm = bD._1
345345 let aV = bD._2
346346 let bo = bD._3
347347 let aW = bD._4
348348 let bE = valueOrElse(getInteger(this, (((aw + "_") + aB) + u)), bb)
349349 let bF = valueOrElse(getInteger(this, (((aw + "_") + aB) + w)), bc)
350350 let bG = valueOrElse(getInteger(this, (((aw + "_") + aB) + y)), bd)
351351 let bH = valueOrElse(getInteger(this, (((aw + "_") + aB) + j)), 0)
352352 let bI = valueOrElse(getInteger(this, (((aw + "_") + aB) + n)), bH)
353- let bJ = bj(aw, be, aV, aW, bb, bc, bk, bd, bm, bA, bo, bp)
353+ let bJ = bj(aw, be, aV, aW, bb, bc, bk, bd, bm, bB, bo, bp)
354354 let br = bJ._1
355355 let bs = bJ._2
356356 let bt = bJ._3
357357 let bK = fraction(bI, (br - bE), bp)
358358 let bL = fraction(bz, (bs - bF), bp)
359359 let bM = fraction((bI * bz), (bt - bG), bp)
360360 let bN = (bL - bM)
361361 $Tuple5(br, bs, bt, (bK + bM), bN)
362362 }
363363
364364
365365 func bO (aw,aB,bP,bQ,bR) = if ((av(aw) > height))
366366 then {
367367 let bS = valueOrElse(getInteger(ai, (aw + D)), 0)
368368 let bT = valueOrElse(getInteger(ai, (((aB + "_") + aw) + D)), 0)
369369 let bU = ax(addressFromStringValue(aw))
370370 let bV = (fraction(bU, bT, bS) - bP)
371371 if ((bR > 0))
372372 then throw("You can't lock shareTokens till first harvest end.")
373373 else if ((bT == 0))
374374 then 0
375375 else if ((bQ >= bV))
376376 then (bQ - bV)
377377 else 0
378378 }
379379 else 0
380380
381381
382382 func bW (bX) = {
383383 let bY = split(valueOrErrorMessage(getString(this, (toString(bX) + q)), ("There are no key for lock type" + toString(bX))), "_")
384384 $Tuple2(parseIntValue(bY[0]), parseIntValue(bY[1]))
385385 }
386386
387387
388388 func bZ (ca) = [BooleanEntry(a, false), StringEntry(c, ca)]
389389
390390
391391 func cb () = if (if (ar)
392392 then as
393393 else false)
394394 then unit
395395 else throw("DApp is inactive at this moment")
396396
397397
398398 func cc (cd) = if (containsElement([ae, af, ag], cd.callerPublicKey))
399399 then unit
400400 else throw("Only admin can call this function")
401401
402402
403403 @Callable(cd)
404404 func init (ce) = if (isDefined(getString(this, A)))
405405 then throw("SWOP already initialized")
406406 else {
407407 let cf = 100000000000000
408408 let cg = Issue("SWOP", "SWOP protocol token", cf, 8, true)
409409 let ch = calculateAssetId(cg)
410410 [BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", cf, 8, true), StringEntry(A, toBase58String(ch))]
411411 }
412412
413413
414414
415415 @Callable(cd)
416416 func initPoolShareFarming (aw) = valueOrElse(cc(cd), [IntegerEntry((aw + o), 0), IntegerEntry((aw + t), 0), IntegerEntry((aw + v), 0), IntegerEntry((aw + x), 0), IntegerEntry((aw + z), height)])
417417
418418
419419
420420 @Callable(cd)
421421 func updatePoolInterest (aw) = valueOrElse(cb(), if ((cd.caller != aj))
422422 then throw("Only Governance can call this function")
423423 else {
424424 let aB = toString(addressFromPublicKey(ak))
425425 let ci = by(aw, aB)
426426 let bb = ci._1
427427 let bc = ci._2
428428 let cj = ci._3
429429 [IntegerEntry((aw + t), bb), IntegerEntry((aw + v), bc), IntegerEntry((aw + x), cj), IntegerEntry((aw + z), height)]
430430 })
431431
432432
433433
434434 @Callable(cd)
435435 func lockShareTokens (aw,bR) = valueOrElse(cb(), {
436436 let ck = aC(aw)
437437 let aB = toString(cd.originCaller)
438438 let cl = ay(aw)
439439 let bB = valueOrElse(getInteger(this, (aw + p)), cl)
440440 let cm = valueOrElse(getInteger(this, (((aw + "_") + aB) + j)), 0)
441441 let cn = valueOrElse(getInteger(this, (((aw + "_") + aB) + m)), 0)
442442 let co = valueOrElse(getInteger(this, (((aw + "_") + aB) + k)), 0)
443443 let cp = valueOrElse(getInteger(this, (((aw + "_") + aB) + n)), cm)
444444 let cq = ((cm + co) + cd.payments[0].amount)
445445 let cr = bW(bR)
446446 let cs = cr._1
447447 let ct = cr._2
448448 let cu = getIntegerValue(this, r)
449449 if ((cd.payments[0].assetId != ck))
450450 then throw("Wrong sharetoken in payment")
451451 else if ((0 >= cd.payments[0].amount))
452452 then throw("Payment amount must be greater than 0")
453453 else if ((0 > bR))
454454 then throw("lockType must be >= 0")
455455 else {
456456 let cv = bO(aw, aB, cm, cd.payments[0].amount, bR)
457457 if ((cv == cv))
458458 then {
459459 let cw = if ((bR == 0))
460460 then {
461461 let cx = ((cp + cd.payments[0].amount) - cv)
462- $Tuple3([IntegerEntry((((aw + "_") + aB) + j), ((cm + cd.payments[0].amount) - cv)), IntegerEntry((aw + p), ((bB + cd.payments[0].amount) - cv)), ScriptTransfer(cd.originCaller, cv, cd.payments[0].assetId)], cx, ((cl + cd.payments[0].amount) - cv))
462+ $Tuple2([IntegerEntry((((aw + "_") + aB) + j), ((cm + cd.payments[0].amount) - cv)), IntegerEntry((aw + p), ((bB + cd.payments[0].amount) - cv)), ScriptTransfer(cd.originCaller, cv, cd.payments[0].assetId)], ((cl + cd.payments[0].amount) - cv))
463463 }
464464 else if (if ((cn == 0))
465465 then if (if ((2 > size(cd.payments)))
466466 then true
467467 else (cd.payments[1].assetId != unit))
468468 then true
469469 else (cu > cd.payments[1].amount)
470470 else false)
471471 then throw((("You need to pay additional waves comission " + toString(cu)) + "WAVES"))
472472 else if ((cn > (height + cs)))
473473 then throw("You cannot lock sharetokens for a period less than what you have already locked")
474474 else {
475475 let cy = (co + cd.payments[0].amount)
476476 let cz = (height + cs)
477477 let cx = (fraction(cy, ct, X) + cm)
478- $Tuple3([IntegerEntry((((aw + "_") + aB) + k), cy), IntegerEntry((((aw + "_") + aB) + m), cz), IntegerEntry((((aw + "_") + aB) + l), bR), IntegerEntry((((aw + "_") + aB) + n), cx), IntegerEntry((aw + p), ((bB - cp) + cx))], cx, (cl + cd.payments[0].amount))
478+ $Tuple2([IntegerEntry((((aw + "_") + aB) + k), cy), IntegerEntry((((aw + "_") + aB) + m), cz), IntegerEntry((((aw + "_") + aB) + l), bR), IntegerEntry((((aw + "_") + aB) + n), cx), IntegerEntry((aw + p), ((bB - cp) + cx))], (cl + cd.payments[0].amount))
479479 }
480480 let cA = cw._1
481- let cx = cw._2
482- let cB = cw._3
481+ let cB = cw._2
483482 if ((aD(ck) > cB))
484483 then throw("Balance of share-token is lower than totalAmount")
485484 else {
486485 let cC = by(aw, aB)
487486 let bb = cC._1
488487 let bc = cC._2
489488 let cj = cC._3
490489 let cD = cC._4
491490 let cE = cC._5
492491 let cF = (aQ(aw, cd.originCaller) + cD)
493492 let cG = if ((getString(Address(fromBase58String(aw)), "version") == "3.0.0"))
494493 then invoke(al, "updateUserInterest", [aw, cq], nil)
495494 else 0
496495 if ((cG == cG))
497496 then ([IntegerEntry((((aw + "_") + aB) + u), bb), IntegerEntry((((aw + "_") + aB) + w), bc), IntegerEntry((((aw + "_") + aB) + x), cj), IntegerEntry((aw + t), bb), IntegerEntry((aw + v), bc), IntegerEntry((aw + x), cj), IntegerEntry((aw + z), height), IntegerEntry((aw + o), cB), IntegerEntry((((aw + "_") + aB) + B), cF), Reissue(au, cE, true), ScriptTransfer(am, cE, au)] ++ cA)
498497 else throw("Strict value is not equal to itself.")
499498 }
500499 }
501500 else throw("Strict value is not equal to itself.")
502501 }
503502 })
504503
505504
506505
507506 @Callable(cd)
508507 func lockStakedShareTokens (aw,bR,cH) = valueOrElse(cb(), {
509508 let ck = aC(aw)
510509 let aB = toString(cd.originCaller)
511510 let cl = ay(aw)
512511 let bB = valueOrElse(getInteger(this, (aw + p)), cl)
513512 let cm = valueOrElse(getInteger(this, (((aw + "_") + aB) + j)), 0)
514513 let cn = valueOrElse(getInteger(this, (((aw + "_") + aB) + m)), 0)
515514 let co = valueOrElse(getInteger(this, (((aw + "_") + aB) + k)), 0)
516515 let cp = valueOrElse(getInteger(this, (((aw + "_") + aB) + n)), cm)
517516 let cq = (cm + co)
518517 let cI = bW(bR)
519518 let cs = cI._1
520519 let ct = cI._2
521520 let cu = getIntegerValue(this, r)
522521 if ((av(aw) > height))
523522 then throw("You can't lock shareTokens till first harvest end.")
524523 else if ((0 >= bR))
525524 then throw("lockType must be > 0")
526525 else if ((cH > cm))
527526 then throw(("You can't lock more than " + toString(cm)))
528527 else if ((aD(ck) > cl))
529528 then throw("Balance of share-token is lower than totalAmount")
530529 else if (if ((cn == 0))
531530 then if (if ((1 > size(cd.payments)))
532531 then true
533532 else (cd.payments[0].assetId != unit))
534533 then true
535534 else (cu > cd.payments[0].amount)
536535 else false)
537536 then throw((("You need to pay additional waves comission " + toString(cu)) + "WAVES"))
538537 else if ((cn > (height + cs)))
539538 then throw("You cannot lock sharetokens for a period less than what you have already locked")
540539 else {
541540 let cy = (co + cH)
542541 let cJ = (cm - cH)
543542 let cz = (height + cs)
544543 let cx = (fraction(cy, ct, X) + cm)
545544 let cK = by(aw, aB)
546545 let bb = cK._1
547546 let bc = cK._2
548547 let cj = cK._3
549548 let cD = cK._4
550549 let cE = cK._5
551550 let cF = (aQ(aw, cd.originCaller) + cD)
552551 [IntegerEntry((((aw + "_") + aB) + j), cJ), IntegerEntry((((aw + "_") + aB) + k), cy), IntegerEntry((((aw + "_") + aB) + m), cz), IntegerEntry((((aw + "_") + aB) + l), bR), IntegerEntry((((aw + "_") + aB) + n), cx), IntegerEntry((aw + p), ((bB - cp) + cx)), IntegerEntry((((aw + "_") + aB) + u), bb), IntegerEntry((((aw + "_") + aB) + w), bc), IntegerEntry((((aw + "_") + aB) + x), cj), IntegerEntry((aw + t), bb), IntegerEntry((aw + v), bc), IntegerEntry((aw + x), cj), IntegerEntry((aw + z), height), IntegerEntry((((aw + "_") + aB) + B), cF), Reissue(au, cE, true), ScriptTransfer(am, cE, au)]
553552 }
554553 })
555554
556555
557556
558557 @Callable(cd)
559558 func unlockUserLock (aw,aB) = valueOrElse(cb(), {
560559 let cu = getIntegerValue(this, r)
561560 let cn = valueOrErrorMessage(getInteger(this, (((aw + "_") + aB) + m)), (((("There is no pool " + aw) + " or user ") + aB) + "with lock"))
562561 let bB = getIntegerValue(this, (aw + p))
563562 let cm = valueOrElse(getInteger(this, (((aw + "_") + aB) + j)), 0)
564563 let co = valueOrElse(getInteger(this, (((aw + "_") + aB) + k)), 0)
565564 let cp = valueOrElse(getInteger(this, (((aw + "_") + aB) + n)), cm)
566565 if ((cn > height))
567566 then throw(("You can't unlock sharetokens till " + toString(cn)))
568567 else {
569568 let cJ = (cm + co)
570569 let cL = by(aw, aB)
571570 let bb = cL._1
572571 let bc = cL._2
573572 let cj = cL._3
574573 let cD = cL._4
575574 let cE = cL._5
576575 let cF = (aQ(aw, cd.originCaller) + cD)
577576 [IntegerEntry((((aw + "_") + aB) + u), bb), IntegerEntry((((aw + "_") + aB) + w), bc), IntegerEntry((((aw + "_") + aB) + x), cj), IntegerEntry((aw + t), bb), IntegerEntry((aw + v), bc), IntegerEntry((aw + x), cj), IntegerEntry((aw + z), height), IntegerEntry((((aw + "_") + aB) + j), cJ), IntegerEntry((((aw + "_") + aB) + n), cJ), IntegerEntry((aw + p), ((bB - cp) + cJ)), DeleteEntry((((aw + "_") + aB) + k)), DeleteEntry((((aw + "_") + aB) + m)), DeleteEntry((((aw + "_") + aB) + l)), Reissue(au, cE, true), ScriptTransfer(am, cE, au), ScriptTransfer(cd.caller, cu, unit)]
578577 }
579578 })
580579
581580
582581
583582 @Callable(cd)
584583 func withdrawShareTokens (aw,cM) = valueOrElse(cb(), {
585584 let cN = fromBase58String(getStringValue(value(addressFromString(aw)), "share_asset_id"))
586585 let aB = toString(cd.originCaller)
587586 let cO = by(aw, aB)
588587 let bb = cO._1
589588 let bc = cO._2
590589 let cj = cO._3
591590 let cD = cO._4
592591 let cE = cO._5
593592 let cm = valueOrElse(getInteger(this, (((aw + "_") + aB) + j)), 0)
594593 let co = valueOrElse(getInteger(this, (((aw + "_") + aB) + k)), 0)
595594 let cp = valueOrElse(getInteger(this, (((aw + "_") + aB) + n)), cm)
596595 let cJ = (cm - cM)
597596 let cF = (aQ(aw, cd.originCaller) + cD)
598597 let cP = ay(aw)
599598 let bB = valueOrElse(getInteger(this, (aw + p)), cP)
600599 let cQ = (cP - cM)
601600 let cR = (bB - cM)
602601 let cx = (cp - cM)
603602 if ((cM > cm))
604603 then throw("Withdraw amount more then user locked amount")
605604 else if ((aD(cN) > cP))
606605 then throw("Balance of share-token is lower than totalAmount")
607606 else {
608607 let cG = if ((getString(Address(fromBase58String(aw)), "version") == "3.0.0"))
609608 then invoke(al, "updateUserInterest", [aw, (cm + co)], nil)
610609 else 0
611610 if ((cG == cG))
612611 then [IntegerEntry((((aw + "_") + aB) + u), bb), IntegerEntry((((aw + "_") + aB) + w), bc), IntegerEntry((((aw + "_") + aB) + x), cj), IntegerEntry((aw + t), bb), IntegerEntry((aw + v), bc), IntegerEntry((aw + x), cj), IntegerEntry((aw + z), height), IntegerEntry((((aw + "_") + aB) + j), cJ), IntegerEntry((((aw + "_") + aB) + n), cx), IntegerEntry((aw + o), cQ), IntegerEntry((aw + p), cR), IntegerEntry((((aw + "_") + aB) + B), cF), Reissue(au, cE, true), ScriptTransfer(am, cE, au), ScriptTransfer(cd.caller, cM, cN)]
613612 else throw("Strict value is not equal to itself.")
614613 }
615614 })
616615
617616
618617
619618 @Callable(cd)
620619 func claim (aw) = valueOrElse(cb(), {
621620 let cN = fromBase58String(getStringValue(value(addressFromString(aw)), "share_asset_id"))
622621 let aB = toString(cd.caller)
623622 let bn = ay(aw)
624623 let cS = by(aw, aB)
625624 let bb = cS._1
626625 let bc = cS._2
627626 let cj = cS._3
628627 let cD = cS._4
629628 let cE = cS._5
630629 let cT = (aQ(aw, cd.caller) + cD)
631630 if ((cT == 0))
632631 then throw("You have 0 available SWOP")
633632 else if ((aD(cN) > bn))
634633 then throw("Balance of share-token is lower than totalAmount")
635634 else $Tuple2([IntegerEntry((((aw + "_") + aB) + u), bb), IntegerEntry((((aw + "_") + aB) + w), bc), IntegerEntry((((aw + "_") + aB) + x), cj), IntegerEntry((aw + t), bb), IntegerEntry((aw + v), bc), IntegerEntry((aw + x), cj), IntegerEntry((aw + z), height), IntegerEntry((((aw + "_") + aB) + B), 0), Reissue(au, (cE + cT), true), ScriptTransfer(am, cE, au), ScriptTransfer(cd.caller, cT, au)], cT)
636635 })
637636
638637
639638
640639 @Callable(cd)
641640 func claimAndStake (aw) = valueOrElse(cb(), {
642641 let cD = {
643642 let cU = invoke(this, "claim", [aw], nil)
644643 if ($isInstanceOf(cU, "Int"))
645644 then cU
646645 else throw(($getType(cU) + " couldn't be cast to Int"))
647646 }
648647 if ((cD == cD))
649648 then {
650649 let cV = invoke(aj, "lockSWOPFromFarming", nil, [AttachedPayment(au, cD)])
651650 if ((cV == cV))
652651 then nil
653652 else throw("Strict value is not equal to itself.")
654653 }
655654 else throw("Strict value is not equal to itself.")
656655 })
657656
658657
659658
660659 @Callable(cd)
661660 func claimAll (cW) = valueOrElse(cb(), {
662661 func cX (cY,aw) = {
663662 let cD = {
664663 let cU = invoke(this, "claim", [aw], nil)
665664 if ($isInstanceOf(cU, "Int"))
666665 then cU
667666 else throw(($getType(cU) + " couldn't be cast to Int"))
668667 }
669668 if ((cD == cD))
670669 then (cY + cD)
671670 else throw("Strict value is not equal to itself.")
672671 }
673672
674673 let cY = {
675674 let cZ = cW
676675 let da = size(cZ)
677676 let db = 0
678677 func dc (dd,de) = if ((de >= da))
679678 then dd
680679 else cX(dd, cZ[de])
681680
682681 func df (dd,de) = if ((de >= da))
683682 then dd
684683 else throw("List size exceeds 60")
685684
686685 df(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(db, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
687686 }
688687 if ((cY == 0))
689688 then throw("You have 0 available SWOP")
690689 else [ScriptTransfer(cd.caller, cY, au)]
691690 })
692691
693692
694693
695694 @Callable(cd)
696695 func claimAllAndStake (cW) = valueOrElse(cb(), {
697696 func cX (cY,aw) = {
698697 let cD = {
699698 let cU = invoke(this, "claim", [aw], nil)
700699 if ($isInstanceOf(cU, "Int"))
701700 then cU
702701 else throw(($getType(cU) + " couldn't be cast to Int"))
703702 }
704703 if ((cD == cD))
705704 then (cY + cD)
706705 else throw("Strict value is not equal to itself.")
707706 }
708707
709708 let cY = {
710709 let cZ = cW
711710 let da = size(cZ)
712711 let db = 0
713712 func dc (dd,de) = if ((de >= da))
714713 then dd
715714 else cX(dd, cZ[de])
716715
717716 func df (dd,de) = if ((de >= da))
718717 then dd
719718 else throw("List size exceeds 60")
720719
721720 df(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(dc(db, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
722721 }
723722 if ((cY == 0))
724723 then throw("You have 0 available SWOP")
725724 else {
726725 let cV = invoke(aj, "lockSWOPFromFarming", nil, [AttachedPayment(au, cY)])
727726 if ((cV == cV))
728727 then nil
729728 else throw("Strict value is not equal to itself.")
730729 }
731730 })
732731
733732
734733
735734 @Callable(cd)
736735 func updateUserBoostInterest (aw,aB) = valueOrElse(cb(), if ((cd.caller != ai))
737736 then throw("Only voiting can call this function")
738737 else {
739738 let dg = by(aw, aB)
740739 let bb = dg._1
741740 let bc = dg._2
742741 let cj = dg._3
743742 let cD = dg._4
744743 let cE = dg._5
745744 let cF = (aQ(aw, cd.originCaller) + cD)
746745 [IntegerEntry((((aw + "_") + aB) + u), bb), IntegerEntry((((aw + "_") + aB) + w), bc), IntegerEntry((((aw + "_") + aB) + x), cj), IntegerEntry((aw + t), bb), IntegerEntry((aw + v), bc), IntegerEntry((aw + x), cj), IntegerEntry((aw + z), height), IntegerEntry((((aw + "_") + aB) + B), cF), Reissue(au, cE, true), ScriptTransfer(am, cE, au)]
747746 })
748747
749748
750749
751750 @Callable(cd)
752751 func shutdown () = valueOrElse(cc(cd), if (!(ar))
753752 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
754753 else bZ("Paused by admin"))
755754
756755
757756
758757 @Callable(cd)
759758 func activate () = valueOrElse(cc(cd), if (ar)
760759 then throw("DApp is already active")
761760 else [BooleanEntry(a, true), DeleteEntry(c)])
762761
763762
764763 @Verifier(dh)
765764 func di () = {
766765 let ab = dh
767766 let dj = if (sigVerify(dh.bodyBytes, dh.proofs[0], ae))
768767 then 1
769768 else 0
770769 let dk = if (sigVerify(dh.bodyBytes, dh.proofs[1], af))
771770 then 1
772771 else 0
773772 let dl = if (sigVerify(dh.bodyBytes, dh.proofs[2], ag))
774773 then 1
775774 else 0
776775 (((dj + dk) + dl) >= 2)
777776 }
778777

github/deemru/w8io/026f985 
220.78 ms