tx · 4cm6n2Y8AQCmEn2JokGEGFNNMNbt4cVBz7LJ25u7ztvy

3N34tFqSq5Y1WeWBRmEFay3AjMDnmhDG5FF:  -0.42000000 Waves

2023.06.16 15:34 [2625193] smart account 3N34tFqSq5Y1WeWBRmEFay3AjMDnmhDG5FF > SELF 0.00000000 Waves

{ "type": 13, "id": "4cm6n2Y8AQCmEn2JokGEGFNNMNbt4cVBz7LJ25u7ztvy", "fee": 42000000, "feeAssetId": null, "timestamp": 1686918849716, "version": 2, "chainId": 84, "sender": "3N34tFqSq5Y1WeWBRmEFay3AjMDnmhDG5FF", "senderPublicKey": "3H3jQSMsXpDqwfs2jeMQXJ6JVCBs8MjWRgpeA9LWDFda", "proofs": [ "3YC6qacX5XBWAPV7LykJ1HgFygWRN3jGhStkvMABGuPjTxRnuZrxmJ2cTVgDzNgXCMN5p7oX2t2WKCb3s8hrXw32", "eHQHzDSuDsD2zdV27DCKMV7Qk2Vmw9Doq8hEChwn3mC8NWLT5kPrmNMourneDmPiTNbcXuHnxpfZxyLzywFBFFq" ], "script": "base64:BgJaCAISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESUwAHdmVyc2lvbgIFMS4wLjAACGtWZXJzaW9uAgd2ZXJzaW9uAAdrQWN0aXZlAgZhY3RpdmUAC2tEZXByZWNhdGVkAgtkZXByZWNhdGVkXwAJa0Fzc2V0SWRBAgpBX2Fzc2V0X2lkAAlrQXNzZXRJZEICCkJfYXNzZXRfaWQACWtCYWxhbmNlQQIPQV9hc3NldF9iYWxhbmNlAAlrQmFsYW5jZUICD0JfYXNzZXRfYmFsYW5jZQANa0JhbGFuY2VJbml0QQIMQV9hc3NldF9pbml0AA1rQmFsYW5jZUluaXRCAgxCX2Fzc2V0X2luaXQADWtTaGFyZUFzc2V0SWQCDnNoYXJlX2Fzc2V0X2lkABFrU2hhcmVBc3NldFN1cHBseQISc2hhcmVfYXNzZXRfc3VwcGx5AARrRmVlAgpjb21taXNzaW9uAAZrQ2F1c2UCDnNodXRkb3duX2NhdXNlAA1rRmlyc3RIYXJ2ZXN0Ag1maXJzdF9oYXJ2ZXN0ABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AhRmaXJzdF9oYXJ2ZXN0X2hlaWdodAALa1NoYXJlTGltaXQCHHNoYXJlX2xpbWl0X29uX2ZpcnN0X2hhcnZlc3QAC2tCYXNlUGVyaW9kAgtiYXNlX3BlcmlvZAANa1BlcmlvZExlbmd0aAINcGVyaW9kX2xlbmd0aAAMa1N0YXJ0SGVpZ2h0AgxzdGFydF9oZWlnaHQADGtVU0ROQWRkcmVzcwIYc3Rha2luZ191c2RubnNidF9hZGRyZXNzAAxrRVVSTkFkZHJlc3MCFHN0YWtpbmdfZXVybl9hZGRyZXNzAA5rTGVhc2luZ0Ftb3VudAIObGVhc2luZ19hbW91bnQADGtVU0ROQXNzZXRJZAINdXNkbl9hc3NldF9pZAAMa0VVUk5Bc3NldElkAg1ldXJuX2Fzc2V0X2lkAA5rU3Rha2luZ0Fzc2V0cwIOc3Rha2luZ19hc3NldHMADWtPcmFjbGVBY3RpdmUCFGFjdGl2ZV9hbGxfY29udHJhY3RzAAprRGlzY291bnRzAglkaXNjb3VudHMAD2tEaXNjb3VudFZhbHVlcwIPZGlzY291bnRfdmFsdWVzAA9rVXNlckdTd29wSW5Hb3YCDV9HU3dvcF9hbW91bnQADmtVc2VyU3dvcEluR292AgxfU1dPUF9hbW91bnQAC2tPcmFjbGVQb29sAgVwb29sXwANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwASa0FkbWluSW52b2tlUHViS2V5AhBhZG1pbl9pbnZva2VfcHViABBrTW9uZXlCb3hBZGRyZXNzAhFtb25leV9ib3hfYWRkcmVzcwAPa1RlYW1Cb3hBZGRyZXNzAhB0ZWFtX2JveF9hZGRyZXNzAA5rVm90aW5nQWRkcmVzcwIOdm90aW5nX2FkZHJlc3MAC2tHb3ZBZGRyZXNzAhJnb3Zlcm5hbmNlX2FkZHJlc3MAD2tGYXJtaW5nQWRkcmVzcwIPZmFybWluZ19hZGRyZXNzAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVRIE5cMwNMzzCUygLYp96dkaICr48x7S5kBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMAEWFkbWluSW52b2tlUHViS2V5CQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEmtBZG1pbkludm9rZVB1YktleQAPbW9uZXlCb3hBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUQa01vbmV5Qm94QWRkcmVzcwAOdGVhbUJveEFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ9rVGVhbUJveEFkZHJlc3MADXZvdGluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ5rVm90aW5nQWRkcmVzcwAKZ292QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzAA5mYXJtaW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFD2tGYXJtaW5nQWRkcmVzcwAEVVNETgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrVVNETkFzc2V0SWQABEVVUk4JARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0VVUk5Bc3NldElkAA1zdGFraW5nQXNzZXRzCQERQGV4dHJOYXRpdmUoMTA1MykCBQZvcmFjbGUFDmtTdGFraW5nQXNzZXRzABJzdGFraW5nVVNETkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrVVNETkFkZHJlc3MAEnN0YWtpbmdFVVJOQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtFVVJOQWRkcmVzcwAKYmFzZVBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MFC2tCYXNlUGVyaW9kAhFFbXB0eSBrQmFzZVBlcmlvZAALc3RhcnRIZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ12b3RpbmdBZGRyZXNzBQxrU3RhcnRIZWlnaHQCEkVtcHR5IGtTdGFydEhlaWdodAAMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNdm90aW5nQWRkcmVzcwUNa1BlcmlvZExlbmd0aAITRW1wdHkga1BlcmlvZExlbmd0aAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kCQBkAgkAZAIFCmJhc2VQZXJpb2QJAGkCCQBlAgUGaGVpZ2h0BQtzdGFydEhlaWdodAUMcGVyaW9kTGVuZ3RoAAMABmFjdGl2ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUGb3JhY2xlBQ1rT3JhY2xlQWN0aXZlAAlmZWVTY2FsZTYAwIQ9AAZzY2FsZTgAgMLXLwAHc2NhbGUxNgkAtgIBAICAhP6m3uERAQ5hY2NvdW50QmFsYW5jZQIHYXNzZXRJZARwb29sBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFBHBvb2wFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCAkA7wcBBQRwb29sCWF2YWlsYWJsZQkAAgECC01hdGNoIGVycm9yAQxzdGFrZWRBbW91bnQCB2Fzc2V0SWQEcG9vbAQWc3Rha2VkQW1vdW50Q2FsY3VsYXRlZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBANhSWQFByRtYXRjaDADCQAAAgUDYUlkBQRVU0ROCQCaCAIFEnN0YWtpbmdVU0ROQWRkcmVzcwkArAICCQCsAgIJAKwCAgIMcnBkX2JhbGFuY2VfCQDYBAEFA2FJZAIBXwkApQgBBQRwb29sAwkAAAIFA2FJZAUERVVSTgkAmggCBRJzdGFraW5nRVVSTkFkZHJlc3MJAKwCAgkArAICCQCsAgICGCVzJXMlc19fc3Rha2luZ0JhbGFuY2VfXwkA2AQBBQNhSWQCAl9fCQClCAEFBHBvb2wAAAMJAAECBQckbWF0Y2gwAgRVbml0CQELdmFsdWVPckVsc2UCCQCaCAIFBHBvb2wFDmtMZWFzaW5nQW1vdW50AAAJAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMAUWc3Rha2VkQW1vdW50Q2FsY3VsYXRlZAMJAAECBQckbWF0Y2gwAgNJbnQEAWkFByRtYXRjaDAFAWkAAAEMZ2V0QXNzZXRJbmZvAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwMJAAECBQckbWF0Y2gwAgZTdHJpbmcGCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAECyR0MDQwNzk0MjUxBAckbWF0Y2gxBQJpZAMJAAECBQckbWF0Y2gxAgpCeXRlVmVjdG9yBANhSWQFByRtYXRjaDEJAJQKAgkA2AQBBQNhSWQFA2FJZAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEA2FJZAUHJG1hdGNoMQkAlAoCBQNhSWQJANkEAQUDYUlkCQACAQILTWF0Y2ggZXJyb3IECHN0cmluZ0lkCAULJHQwNDA3OTQyNTECXzEEB2J5dGVzSWQIBQskdDA0MDc5NDI1MQJfMgQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFB2J5dGVzSWQJAKwCAgkArAICAgZBc3NldCAFCHN0cmluZ0lkAg4gZG9lc24ndCBleGlzdAkAlQoDBQhzdHJpbmdJZAgFBGluZm8EbmFtZQgFBGluZm8IZGVjaW1hbHMDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAJAJUKAwIFV0FWRVMCBVdBVkVTAAgJAAIBAgtNYXRjaCBlcnJvcgEHc3VzcGVuZAEFY2F1c2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtDYXVzZQUFY2F1c2UFA25pbAEUY2FsY3VsYXRlRmVlRGlzY291bnQBCHVzZXJBZGRyBApzd29wQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgkApQgBBQh1c2VyQWRkcgUOa1VzZXJTd29wSW5Hb3YAAAQLZ1N3b3BBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEFCHVzZXJBZGRyBQ9rVXNlckdTd29wSW5Hb3YFCnN3b3BBbW91bnQEDmRpc2NvdW50VmFsdWVzCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUPa0Rpc2NvdW50VmFsdWVzAgEsBAlkaXNjb3VudHMJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUGb3JhY2xlBQprRGlzY291bnRzAgEsAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAAJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAQULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAADAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAQkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwACBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAQMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwACCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAMFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwACAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMABAULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwAECQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAQFCWZlZVNjYWxlNgENY2FsY3VsYXRlRmVlcwcJcG10QW1vdW50Em1pbkFtb3VudFRvUmVjZWl2ZQl0b2tlbkZyb20HdG9rZW5UbwNmZWUGZmVlR292B2ZlZVRlYW0EEGFtb3VudFdpdGhvdXRGZWUJAGsDBQd0b2tlblRvBQlwbXRBbW91bnQJAGQCBQlwbXRBbW91bnQFCXRva2VuRnJvbQQNYW1vdW50V2l0aEZlZQkAawMFEGFtb3VudFdpdGhvdXRGZWUJAGUCBQlmZWVTY2FsZTYFA2ZlZQUJZmVlU2NhbGU2BBBnb3Zlcm5hbmNlUmV3YXJkCQBrAwUQYW1vdW50V2l0aG91dEZlZQUGZmVlR292BQlmZWVTY2FsZTYECnRlYW1SZXdhcmQJAGsDBRBhbW91bnRXaXRob3V0RmVlBQdmZWVUZWFtBQlmZWVTY2FsZTYDCQBmAgUSbWluQW1vdW50VG9SZWNlaXZlBQ1hbW91bnRXaXRoRmVlCQACAQkArAICCQCsAgIJAKwCAgIdQ2FsY3VsYXRlZCBhbW91bnQgdG8gcmVjZWl2ZSAJAKQDAQUNYW1vdW50V2l0aEZlZQIgIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQgbWluaW11bSAJAKQDAQUSbWluQW1vdW50VG9SZWNlaXZlCQCWCgQFEGFtb3VudFdpdGhvdXRGZWUFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQBEGNhbGN1bGF0ZVZpcnRQYXkDCXBtdEFtb3VudAdiYWxhbmNlA2ZlZQQBRgkAZQIFCWZlZVNjYWxlNgUDZmVlBAFrCQBrAwUDZmVlADcAZAQBYQkAZAIFBnNjYWxlOAkAawMJAGgCBQFGBQFrBQZzY2FsZTgJAGgCBQlmZWVTY2FsZTYFCWZlZVNjYWxlNgQBYgkAZQIJAGUCCQBkAgkAZAIFB2JhbGFuY2UJAGsDBQdiYWxhbmNlBQFGBQlmZWVTY2FsZTYJAGsDBQlwbXRBbW91bnQFAUYFCWZlZVNjYWxlNgUJcG10QW1vdW50CQBrAwUJcG10QW1vdW50CQBoAgUBRgUBawkAaAIFCWZlZVNjYWxlNgUJZmVlU2NhbGU2BAFjCQC5AgIJAL4CAQkAtgIBBQdiYWxhbmNlCQC2AgEFCXBtdEFtb3VudAQBRAkAuAICCQC5AgIJALYCAQUBYgkAtgIBBQFiCQC8AgMJALkCAgkAtgIBAAQFAWMJALYCAQUBYQkAtgIBBQZzY2FsZTgJAKADAQkAvAIDCQC3AgIJAL4CAQkAtgIBBQFiCQEKc3FydEJpZ0ludAQFAUQAAAAABQRET1dOCQC2AgEFBnNjYWxlOAkAtgIBCQBoAgACBQFhARFwYXJzZVBheW1lbnRBc3NldAEHYXNzZXRJZAMJAAACBQdhc3NldElkAQAFBHVuaXQFB2Fzc2V0SWQBEXN1c3BlbmRTdXNwaWNpb3VzBg9hY2NvdW50QmFsYW5jZUEPYWNjb3VudEJhbGFuY2VCCGJhbGFuY2VBCGJhbGFuY2VCCGFzc2V0SWRBCGFzc2V0SWRCCQEHc3VzcGVuZAEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICI1N1c3BpY2lvdXMgc3RhdGUuIEFjdHVhbCBiYWxhbmNlczogCQCkAwEFD2FjY291bnRCYWxhbmNlQQIBIAUIYXNzZXRJZEECAiwgCQCkAwEFD2FjY291bnRCYWxhbmNlQgIBIAUIYXNzZXRJZEICCS4gU3RhdGU6IAkApAMBBQhiYWxhbmNlQQIBIAUIYXNzZXRJZEECAiwgCQCkAwEFCGJhbGFuY2VCAgEgBQhhc3NldElkQgEIaXNBY3RpdmUAAwUGYWN0aXZlBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAEMaXNPcmFjbGVQb29sAQtwb29sQWRkcmVzcwMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBQtrT3JhY2xlUG9vbAULcG9vbEFkZHJlc3MFBHVuaXQJAAIBAhtEQXBwIGlzIG5vdCByZWdpc3RlcmVkIHBvb2wBDGlzRGVwcmljYXRlZAELcG9vbEFkZHJlc3MDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlCQCsAgIFC2tEZXByZWNhdGVkBQtwb29sQWRkcmVzcwcFBHVuaXQJAAIBAjFQb29sIGlzIGRlcHJlY2F0ZWQuIE9ubHkgd2l0aGRyYXcgYWN0aW9uIGFsbG93ZWQuAQ9nZXRQb29sQmFsYW5jZXMDBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIECGJhbGFuY2VBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQRwb29sBQlrQmFsYW5jZUEECGJhbGFuY2VCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQRwb29sBQlrQmFsYW5jZUIEDXN0YWtlZEFtb3VudEEJAQxzdGFrZWRBbW91bnQCBQhhc3NldElkQQUEcG9vbAQNc3Rha2VkQW1vdW50QgkBDHN0YWtlZEFtb3VudAIFCGFzc2V0SWRCBQRwb29sBA9hY2NvdW50QmFsYW5jZUEJAGQCCQEOYWNjb3VudEJhbGFuY2UCBQhhc3NldElkQQUEcG9vbAUNc3Rha2VkQW1vdW50QQQPYWNjb3VudEJhbGFuY2VCCQBkAgkBDmFjY291bnRCYWxhbmNlAgUIYXNzZXRJZEIFBHBvb2wFDXN0YWtlZEFtb3VudEIEC3NoYXJlU3VwcGx5CQERQGV4dHJOYXRpdmUoMTA1MCkCBQRwb29sBRFrU2hhcmVBc3NldFN1cHBseQkAlwoFBQhiYWxhbmNlQQUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQtzaGFyZVN1cHBseQENZ2V0UG9vbEFzc2V0cwEEcG9vbAQLc3RyQXNzZXRJZEEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHBvb2wFCWtBc3NldElkQQQLc3RyQXNzZXRJZEIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHBvb2wFCWtBc3NldElkQgQIYXNzZXRJZEEDCQAAAgULc3RyQXNzZXRJZEECBVdBVkVTBQR1bml0CQDZBAEFC3N0ckFzc2V0SWRBBAhhc3NldElkQgMJAAACBQtzdHJBc3NldElkQgIFV0FWRVMFBHVuaXQJANkEAQULc3RyQXNzZXRJZEIEDHNoYXJlQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRwb29sBQ1rU2hhcmVBc3NldElkCQCXCgUFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgUIYXNzZXRJZEEFCGFzc2V0SWRCBQxzaGFyZUFzc2V0SWQBDGdldEZlZVBhcmFtcwIEcG9vbAZjYWxsZXIEC2ZlZURpc2NvdW50CQEUY2FsY3VsYXRlRmVlRGlzY291bnQBBQZjYWxsZXIEA2ZlZQkAbgQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFBGtGZWUFC2ZlZURpc2NvdW50BQlmZWVTY2FsZTYFB0NFSUxJTkcEBmdvdkZlZQkAawMFA2ZlZQAjAGQEB3RlYW1GZWUJAGsDBQNmZWUACgBkCQCVCgMFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlAR9jYWxjTFBBbW91bnRSZXBsZW5zaXNoVHdvVG9rZW5zBwRwbXRBBHBtdEIGcG10SWRBBnBtdElkQgRiYWxBBGJhbEIQc2hhcmVBc3NldFN1cHBseQQLJHQwOTU2Mjk2MzQJAQxnZXRBc3NldEluZm8BBQZwbXRJZEEEDnBtdFN0ckFzc2V0SWRBCAULJHQwOTU2Mjk2MzQCXzEEDXBtdEFzc2V0TmFtZUEIBQskdDA5NTYyOTYzNAJfMgQMcG10RGVjaW1hbHNBCAULJHQwOTU2Mjk2MzQCXzMECyR0MDk2Mzk5NzExCQEMZ2V0QXNzZXRJbmZvAQUGcG10SWRCBA5wbXRTdHJBc3NldElkQggFCyR0MDk2Mzk5NzExAl8xBA1wbXRBc3NldE5hbWVCCAULJHQwOTYzOTk3MTECXzIEDHBtdERlY2ltYWxzQggFCyR0MDk2Mzk5NzExAl8zBAdpbml0aWFsCQAAAgkAZAIFBGJhbEEFBGJhbEIAAAQMJHQwOTc1NDEwNDEzAwUHaW5pdGlhbAkAlwoFBQRwbXRBBQRwbXRCAAAFBnBtdElkQQkAtgIBAAEEE3JhdGlvU2hhcmVUb2tlbnNJbkEJALwCAwUHc2NhbGUxNgkAtgIBBQRwbXRBCQC2AgEFBGJhbEEEE3JhdGlvU2hhcmVUb2tlbnNJbkIJALwCAwUHc2NhbGUxNgkAtgIBBQRwbXRCCQC2AgEFBGJhbEIDCQC/AgIFE3JhdGlvU2hhcmVUb2tlbnNJbkIFE3JhdGlvU2hhcmVUb2tlbnNJbkEEA3BtdAkAawMFBHBtdEEFBGJhbEIFBGJhbEEJAJcKBQUEcG10QQUDcG10CQBlAgUEcG10QgUDcG10BQZwbXRJZEIFE3JhdGlvU2hhcmVUb2tlbnNJbkEEA3BtdAkAawMFBHBtdEIFBGJhbEEFBGJhbEIJAJcKBQUDcG10BQRwbXRCCQBlAgUEcG10QQUDcG10BQZwbXRJZEEFE3JhdGlvU2hhcmVUb2tlbnNJbkIECnBtdEFtb3VudEEIBQwkdDA5NzU0MTA0MTMCXzEECnBtdEFtb3VudEIIBQwkdDA5NzU0MTA0MTMCXzIEBmNoYW5nZQgFDCR0MDk3NTQxMDQxMwJfMwQNY2hhbmdlQXNzZXRJZAgFDCR0MDk3NTQxMDQxMwJfNAQPc2hhcmVUb2tlblJhdGlvCAUMJHQwOTc1NDEwNDEzAl81BBVzaGFyZVRva2VuVG9QYXlBbW91bnQDBQdpbml0aWFsBA1zaGFyZURlY2ltYWxzCQBpAgkAZAIFDHBtdERlY2ltYWxzQQUMcG10RGVjaW1hbHNCAAIJAGsDCQBsBgUKcG10QW1vdW50QQUMcG10RGVjaW1hbHNBAAUAAQUMcG10RGVjaW1hbHNBBQRET1dOCQBsBgUKcG10QW1vdW50QgUMcG10RGVjaW1hbHNCAAUAAQUMcG10RGVjaW1hbHNCBQRET1dOCQBsBgAKAAAFDXNoYXJlRGVjaW1hbHMAAAAABQRET1dOCQCgAwEJALwCAwUPc2hhcmVUb2tlblJhdGlvCQC2AgEFEHNoYXJlQXNzZXRTdXBwbHkFB3NjYWxlMTYJAJcKBQUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQZjaGFuZ2UFDWNoYW5nZUFzc2V0SWQFCnBtdEFtb3VudEEFCnBtdEFtb3VudEIBHmNhbGNMUEFtb3VudFJlcGxhbnNpc2hPbmVUb2tlbgsJcG10QW1vdW50CnBtdEFzc2V0SWQDYUlkA2JJZARiYWxBBGJhbEIIbHBTdXBwbHkDZmVlBmdvdkZlZQd0ZWFtRmVlEHZpcnRHZXRNaW5BbW91bnQDCQAAAgUKcG10QXNzZXRJZAUDYUlkBA12aXJ0UGF5QW1vdW50CQEQY2FsY3VsYXRlVmlydFBheQMFCXBtdEFtb3VudAUEYmFsQQUDZmVlBA0kdDAxMTI3ODExNDI1CQENY2FsY3VsYXRlRmVlcwcFDXZpcnRQYXlBbW91bnQFEHZpcnRHZXRNaW5BbW91bnQFBGJhbEEFBGJhbEIFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMTEyNzgxMTQyNQJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDExMjc4MTE0MjUCXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAxMTI3ODExNDI1Al8zBAd0UmV3YXJkCAUNJHQwMTEyNzgxMTQyNQJfNAQMYmFsYW5jZUFWaXJ0CQBkAgUEYmFsQQUNdmlydFBheUFtb3VudAQMYmFsYW5jZUJWaXJ0CQBlAgkAZQIJAGQCBQRiYWxCBRBhbW91bnRXaXRob3V0RmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBAtuZXdCYWxhbmNlQQkAZAIFBGJhbEEFCXBtdEFtb3VudAQLbmV3QmFsYW5jZUIJAGUCCQBlAgUEYmFsQgUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQTcmF0aW9TaGFyZVRva2Vuc0luQQkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUMYmFsYW5jZUFWaXJ0BBNyYXRpb1NoYXJlVG9rZW5zSW5CCQC8AgMJALYCAQUNYW1vdW50V2l0aEZlZQUHc2NhbGUxNgkAtgIBBQxiYWxhbmNlQlZpcnQEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAoAMBCQC8AgMJAJkDAQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5BCQDMCAIFE3JhdGlvU2hhcmVUb2tlbnNJbkIFA25pbAkAtgIBBQhscFN1cHBseQUHc2NhbGUxNgQbc2hhcmVUb2tlblRvUGF5QW1vdW50SW5Cb3RoCQCgAwEJALwCAwkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUEYmFsQQkAtgIBBQhscFN1cHBseQUHc2NhbGUxNgQEbG9zcwkAawMJAGUCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFG3NoYXJlVG9rZW5Ub1BheUFtb3VudEluQm90aAUGc2NhbGU4BRtzaGFyZVRva2VuVG9QYXlBbW91bnRJbkJvdGgJAJkKBwUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQtuZXdCYWxhbmNlQQULbmV3QmFsYW5jZUIFEGdvdmVybmFuY2VSZXdhcmQFB3RSZXdhcmQFA2JJZAUEbG9zcwQNdmlydFBheUFtb3VudAkBEGNhbGN1bGF0ZVZpcnRQYXkDBQlwbXRBbW91bnQFBGJhbEIFA2ZlZQQNJHQwMTI0NjkxMjYxNgkBDWNhbGN1bGF0ZUZlZXMHBQ12aXJ0UGF5QW1vdW50BRB2aXJ0R2V0TWluQW1vdW50BQRiYWxCBQRiYWxBBQNmZWUFBmdvdkZlZQUHdGVhbUZlZQQQYW1vdW50V2l0aG91dEZlZQgFDSR0MDEyNDY5MTI2MTYCXzEEDWFtb3VudFdpdGhGZWUIBQ0kdDAxMjQ2OTEyNjE2Al8yBBBnb3Zlcm5hbmNlUmV3YXJkCAUNJHQwMTI0NjkxMjYxNgJfMwQHdFJld2FyZAgFDSR0MDEyNDY5MTI2MTYCXzQEDGJhbGFuY2VBVmlydAkAZQIJAGUCCQBkAgUEYmFsQQUQYW1vdW50V2l0aG91dEZlZQUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQMYmFsYW5jZUJWaXJ0CQBkAgUEYmFsQgUNdmlydFBheUFtb3VudAQLbmV3QmFsYW5jZUEJAGUCCQBlAgUEYmFsQQUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQLbmV3QmFsYW5jZUIJAGQCBQRiYWxCBQlwbXRBbW91bnQEE3JhdGlvU2hhcmVUb2tlbnNJbkEJALwCAwkAtgIBBQ1hbW91bnRXaXRoRmVlBQdzY2FsZTE2CQC2AgEFDGJhbGFuY2VBVmlydAQTcmF0aW9TaGFyZVRva2Vuc0luQgkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUMYmFsYW5jZUJWaXJ0BBVzaGFyZVRva2VuVG9QYXlBbW91bnQJAKADAQkAvAIDCQCZAwEJAMwIAgUTcmF0aW9TaGFyZVRva2Vuc0luQQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5CBQNuaWwJALYCAQUIbHBTdXBwbHkFB3NjYWxlMTYEG3NoYXJlVG9rZW5Ub1BheUFtb3VudEluQm90aAkAoAMBCQC8AgMJALwCAwkAtgIBCQBlAgUJcG10QW1vdW50BQ12aXJ0UGF5QW1vdW50BQdzY2FsZTE2CQC2AgEFBGJhbEIJALYCAQUIbHBTdXBwbHkFB3NjYWxlMTYEBGxvc3MJAGsDCQBlAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BRtzaGFyZVRva2VuVG9QYXlBbW91bnRJbkJvdGgFBnNjYWxlOAUbc2hhcmVUb2tlblRvUGF5QW1vdW50SW5Cb3RoCQCZCgcFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAULbmV3QmFsYW5jZUEFC25ld0JhbGFuY2VCBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBQNhSWQFBGxvc3MBF2NhbGNMUFJlcGxlbmlzaERpZmZQcm9wCwRwbXRBBHBtdEIGcG10SWRBBnBtdElkQgRiYWxBBGJhbEIIbHBTdXBwbHkDZmVlBmdvdkZlZQd0ZWFtRmVlEHZpcnRHZXRNaW5BbW91bnQEDSR0MDEzNzgzMTM5MzEJAR9jYWxjTFBBbW91bnRSZXBsZW5zaXNoVHdvVG9rZW5zBwUEcG10QQUEcG10QgUGcG10SWRBBQZwbXRJZEIFBGJhbEEFBGJhbEIFCGxwU3VwcGx5BAtscFR3b0Ftb3VudAgFDSR0MDEzNzgzMTM5MzECXzEEBmNoYW5nZQgFDSR0MDEzNzgzMTM5MzECXzIEDWNoYW5nZUFzc2V0SWQIBQ0kdDAxMzc4MzEzOTMxAl8zBApwbXRBbW91bnRBCAUNJHQwMTM3ODMxMzkzMQJfNAQKcG10QW1vdW50QggFDSR0MDEzNzgzMTM5MzECXzUDCQBmAgUGY2hhbmdlAAAEDSR0MDEzOTYzMTQxOTgJAR5jYWxjTFBBbW91bnRSZXBsYW5zaXNoT25lVG9rZW4LBQZjaGFuZ2UFDWNoYW5nZUFzc2V0SWQFBnBtdElkQQUGcG10SWRCCQBkAgUEYmFsQQUKcG10QW1vdW50QQkAZAIFBGJhbEIFCnBtdEFtb3VudEIFCGxwU3VwcGx5BQNmZWUFBmdvdkZlZQUHdGVhbUZlZQUQdmlydEdldE1pbkFtb3VudAQFbHBPbmUIBQ0kdDAxMzk2MzE0MTk4Al8xBAtuZXdCYWxhbmNlQQgFDSR0MDEzOTYzMTQxOTgCXzIEC25ld0JhbGFuY2VCCAUNJHQwMTM5NjMxNDE5OAJfMwQQZ292ZXJuYW5jZVJld2FyZAgFDSR0MDEzOTYzMTQxOTgCXzQEB3RSZXdhcmQIBQ0kdDAxMzk2MzE0MTk4Al81BANnSWQIBQ0kdDAxMzk2MzE0MTk4Al82BARsb3NzCAUNJHQwMTM5NjMxNDE5OAJfNwkAmQoHCQBkAgULbHBUd29BbW91bnQFBWxwT25lBQRsb3NzBQtuZXdCYWxhbmNlQQULbmV3QmFsYW5jZUIFEGdvdmVybmFuY2VSZXdhcmQFB3RSZXdhcmQFA2dJZAkAmQoHBQtscFR3b0Ftb3VudAAACQBkAgUEYmFsQQUKcG10QW1vdW50QQkAZAIFBGJhbEIFCnBtdEFtb3VudEIAAAAABQR1bml0CwFpAR9jYWxjTFBSZXBsZW5pc2hEaWZmUHJvcFJFQURPTkxZBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwQNJHQwMTQ1MzQxNDYyNAkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMTQ1MzQxNDYyNAJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAxNDUzNDE0NjI0Al8yBAhhc3NldElkQQgFDSR0MDE0NTM0MTQ2MjQCXzMECGFzc2V0SWRCCAUNJHQwMTQ1MzQxNDYyNAJfNAQMc2hhcmVBc3NldElkCAUNJHQwMTQ1MzQxNDYyNAJfNQQNJHQwMTQ2MjkxNDcyMQkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBARiYWxBCAUNJHQwMTQ2MjkxNDcyMQJfMQQEYmFsQggFDSR0MDE0NjI5MTQ3MjECXzIEB2FjY0JhbEEIBQ0kdDAxNDYyOTE0NzIxAl8zBAdhY2NCYWxCCAUNJHQwMTQ2MjkxNDcyMQJfNAQIbHBTdXBwbHkIBQ0kdDAxNDYyOTE0NzIxAl81BARwbXRBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABARwbXRCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwABBBB2aXJ0R2V0TWluQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwACBA0kdDAxNDg1NTE0OTIyCQEMZ2V0RmVlUGFyYW1zAggFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEA2ZlZQgFDSR0MDE0ODU1MTQ5MjICXzEEBmdvdkZlZQgFDSR0MDE0ODU1MTQ5MjICXzIEB3RlYW1GZWUIBQ0kdDAxNDg1NTE0OTIyAl8zBA0kdDAxNDkyNzE1MTE5CQEXY2FsY0xQUmVwbGVuaXNoRGlmZlByb3ALBQRwbXRBBQRwbXRCBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFCGxwU3VwcGx5BQNmZWUFBmdvdkZlZQUHdGVhbUZlZQUQdmlydEdldE1pbkFtb3VudAQCbHAIBQ0kdDAxNDkyNzE1MTE5Al8xBARsb3NzCAUNJHQwMTQ5MjcxNTExOQJfMgQLbmV3QmFsYW5jZUEIBQ0kdDAxNDkyNzE1MTE5Al8zBAtuZXdCYWxhbmNlQggFDSR0MDE0OTI3MTUxMTkCXzQEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAxNDkyNzE1MTE5Al81BAd0UmV3YXJkCAUNJHQwMTQ5MjcxNTExOQJfNgQDYUlkCAUNJHQwMTQ5MjcxNTExOQJfNwkAlAoCBQNuaWwJAJQKAgUDbmlsCQDMCAIFAmxwCQDMCAIFBGxvc3MJAMwIAgULbmV3QmFsYW5jZUEJAMwIAgULbmV3QmFsYW5jZUIJAMwIAgUQZ292ZXJuYW5jZVJld2FyZAkAzAgCBQd0UmV3YXJkCQDMCAIFA2FJZAUDbmlsAWkBEHdpdGhkcmF3UkVBRE9OTFkEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBA0kdDAxNTM0NjE1NDM2CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAxNTM0NjE1NDM2Al8xBAtzdHJBc3NldElkQggFDSR0MDE1MzQ2MTU0MzYCXzIECGFzc2V0SWRBCAUNJHQwMTUzNDYxNTQzNgJfMwQIYXNzZXRJZEIIBQ0kdDAxNTM0NjE1NDM2Al80BAxzaGFyZUFzc2V0SWQIBQ0kdDAxNTM0NjE1NDM2Al81BA0kdDAxNTQ0MTE1NTY1CQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMTU0NDExNTU2NQJfMQQIYmFsYW5jZUIIBQ0kdDAxNTQ0MTE1NTY1Al8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAxNTQ0MTE1NTY1Al8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAxNTQ0MTE1NTY1Al80BBBzaGFyZUFzc2V0U3VwcGx5CAUNJHQwMTU0NDExNTU2NQJfNQQOd2l0aGRyYXdBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAEDSR0MDE1NjE5MTU3ODEDCQAAAgkAkAMBBQRhcmdzAAMJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAgkAlAoCBQhiYWxhbmNlQQUIYmFsYW5jZUIEBGJhbEEIBQ0kdDAxNTYxOTE1NzgxAl8xBARiYWxCCAUNJHQwMTU2MTkxNTc4MQJfMgQMYW1vdW50VG9QYXlBCQBrAwUOd2l0aGRyYXdBbW91bnQFBGJhbEEFEHNoYXJlQXNzZXRTdXBwbHkEDGFtb3VudFRvUGF5QgkAawMFDndpdGhkcmF3QW1vdW50BQRiYWxCBRBzaGFyZUFzc2V0U3VwcGx5CQCUCgIFA25pbAkAlAoCBQNuaWwJAMwIAgUMYW1vdW50VG9QYXlBCQDMCAIFDGFtb3VudFRvUGF5QgUDbmlsAWkBBGluaXQEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDE2MTM2MTYyMTQJAJQKAgkAkQMCBQhwQW1vdW50cwAACQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAABApwbXRBbW91bnRBCAUNJHQwMTYxMzYxNjIxNAJfMQQLcG10QXNzZXRJZEEIBQ0kdDAxNjEzNjE2MjE0Al8yBA0kdDAxNjIxOTE2Mjk3CQCUCgIJAJEDAgUIcEFtb3VudHMAAQkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAQQKcG10QW1vdW50QggFDSR0MDE2MjE5MTYyOTcCXzEEC3BtdEFzc2V0SWRCCAUNJHQwMTYyMTkxNjI5NwJfMgMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMJAMwIAgURYWRtaW5JbnZva2VQdWJLZXkFA25pbAgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQEJaXNEZWZpbmVkAQkAmwgCBQZjYWxsZXIFB2tBY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAIFC3BtdEFzc2V0SWRBBQtwbXRBc3NldElkQgkAAgECGEFzc2V0cyBtdXN0IGJlIGRpZmZlcmVudAQNJHQwMTY3MzIxNjgwOQkBDGdldEFzc2V0SW5mbwEFC3BtdEFzc2V0SWRBBA5wbXRTdHJBc3NldElkQQgFDSR0MDE2NzMyMTY4MDkCXzEEDXBtdEFzc2V0TmFtZUEIBQ0kdDAxNjczMjE2ODA5Al8yBAxwbXREZWNpbWFsc0EIBQ0kdDAxNjczMjE2ODA5Al8zBA0kdDAxNjgxODE2ODk1CQEMZ2V0QXNzZXRJbmZvAQULcG10QXNzZXRJZEIEDnBtdFN0ckFzc2V0SWRCCAUNJHQwMTY4MTgxNjg5NQJfMQQNcG10QXNzZXROYW1lQggFDSR0MDE2ODE4MTY4OTUCXzIEDHBtdERlY2ltYWxzQggFDSR0MDE2ODE4MTY4OTUCXzMEDGZpcnN0SGFydmVzdAkAAAIJAJEDAgUEYXJncwAAAgR0cnVlBAlzaGFyZU5hbWUJAKwCAgkArAICCQCsAgICAXMJAK8CAgUNcG10QXNzZXROYW1lQQAHAgFfCQCvAgIFDXBtdEFzc2V0TmFtZUIABwQQc2hhcmVEZXNjcmlwdGlvbgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIlNoYXJlVG9rZW4gb2YgU3dvcEZpIHByb3RvY29sIGZvciAFDXBtdEFzc2V0TmFtZUECBSBhbmQgBQ1wbXRBc3NldE5hbWVCAgwgYXQgYWRkcmVzcyAJAKUIAQUEdGhpcwQNc2hhcmVEZWNpbWFscwkAaQIJAGQCBQxwbXREZWNpbWFsc0EFDHBtdERlY2ltYWxzQgACBARhcmcxCQBsBgUKcG10QW1vdW50QQUMcG10RGVjaW1hbHNBAAUAAQUMcG10RGVjaW1hbHNBBQRET1dOBARhcmcyCQBsBgUKcG10QW1vdW50QgUMcG10RGVjaW1hbHNCAAUAAQUMcG10RGVjaW1hbHNCBQRET1dOBARhcmczCQBsBgAKAAAFDXNoYXJlRGVjaW1hbHMAAAAABQRET1dOBBJzaGFyZUluaXRpYWxTdXBwbHkJAGsDBQRhcmcxBQRhcmcyBQRhcmczBApzaGFyZUlzc3VlCQDCCAUFCXNoYXJlTmFtZQUQc2hhcmVEZXNjcmlwdGlvbgUSc2hhcmVJbml0aWFsU3VwcGx5BQ1zaGFyZURlY2ltYWxzBgQMc2hhcmVJc3N1ZUlkCQC4CAEFCnNoYXJlSXNzdWUEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDnBtdFN0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEEJAMwIAgUOcG10U3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDnBtdFN0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEIJAMwIAgUOcG10U3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIECWJhc2VFbnRyeQkAzAgCCQELU3RyaW5nRW50cnkCBQhrVmVyc2lvbgUHdmVyc2lvbgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0Fzc2V0SWRBBQ5wbXRTdHJBc3NldElkQQkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXNzZXRJZEIFDnBtdFN0ckFzc2V0SWRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEFCnBtdEFtb3VudEEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgUKcG10QW1vdW50QgkAzAgCCQEMSW50ZWdlckVudHJ5AgUEa0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUGb3JhY2xlAg1iYXNlX2ZlZV9jcG1tCQDMCAIFCnNoYXJlSXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgUNa1NoYXJlQXNzZXRJZAkA2AQBBQxzaGFyZUlzc3VlSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5BRJzaGFyZUluaXRpYWxTdXBwbHkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBRJzaGFyZUluaXRpYWxTdXBwbHkFDHNoYXJlSXNzdWVJZAUDbmlsAwUMZmlyc3RIYXJ2ZXN0CQCUCgIFA25pbAkAlAoCCQDOCAIFCWJhc2VFbnRyeQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa0ZpcnN0SGFydmVzdAUMZmlyc3RIYXJ2ZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQJAGgCBRVmaXJzdEhhcnZlc3RFbmRQZXJpb2QFDHBlcmlvZExlbmd0aAUDbmlsBQNuaWwJAJQKAgUDbmlsCQCUCgIFCWJhc2VFbnRyeQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWluaXRXaXRoSW5pdFJhdGlvBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA0kdDAxOTExNjE5MzE2CQCXCgUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAEJAJEDAgUEYXJncwACCQCRAwIFBGFyZ3MAAwkAAAIJAJEDAgUEYXJncwAEAgR0cnVlBAlhbXRBc3NldEEIBQ0kdDAxOTExNjE5MzE2Al8xBAlhbXRBc3NldEIIBQ0kdDAxOTExNjE5MzE2Al8yBAthc3NldElkQVN0cggFDSR0MDE5MTE2MTkzMTYCXzMEC2Fzc2V0SWRCU3RyCAUNJHQwMTkxMTYxOTMxNgJfNAQMZmlyc3RIYXJ2ZXN0CAUNJHQwMTkxMTYxOTMxNgJfNQMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMJAMwIAgURYWRtaW5JbnZva2VQdWJLZXkFA25pbAgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkBAiE9AgkAkAMBBQRhcmdzAAUJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQEJaXNEZWZpbmVkAQkAmwgCBQZjYWxsZXIFB2tBY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAIFC2Fzc2V0SWRBU3RyBQthc3NldElkQlN0cgkAAgECGEFzc2V0cyBtdXN0IGJlIGRpZmZlcmVudAQNJHQwMTk3NTExOTgyOAkBDGdldEFzc2V0SW5mbwEFC2Fzc2V0SWRBU3RyBA5wbXRTdHJBc3NldElkQQgFDSR0MDE5NzUxMTk4MjgCXzEEDXBtdEFzc2V0TmFtZUEIBQ0kdDAxOTc1MTE5ODI4Al8yBAxwbXREZWNpbWFsc0EIBQ0kdDAxOTc1MTE5ODI4Al8zBA0kdDAxOTgzNzE5OTE0CQEMZ2V0QXNzZXRJbmZvAQULYXNzZXRJZEJTdHIEDnBtdFN0ckFzc2V0SWRCCAUNJHQwMTk4MzcxOTkxNAJfMQQNcG10QXNzZXROYW1lQggFDSR0MDE5ODM3MTk5MTQCXzIEDHBtdERlY2ltYWxzQggFDSR0MDE5ODM3MTk5MTQCXzMECXNoYXJlTmFtZQkArAICCQCsAgIJAKwCAgIBcwkArwICBQ1wbXRBc3NldE5hbWVBAAcCAV8JAK8CAgUNcG10QXNzZXROYW1lQgAHBBBzaGFyZURlc2NyaXB0aW9uCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUNcG10QXNzZXROYW1lQQIFIGFuZCAFDXBtdEFzc2V0TmFtZUICDCBhdCBhZGRyZXNzIAkApQgBBQR0aGlzBA1zaGFyZURlY2ltYWxzCQBpAgkAZAIFDHBtdERlY2ltYWxzQQUMcG10RGVjaW1hbHNCAAIEEnNoYXJlSW5pdGlhbFN1cHBseQAABApzaGFyZUlzc3VlCQDCCAUFCXNoYXJlTmFtZQUQc2hhcmVEZXNjcmlwdGlvbgUSc2hhcmVJbml0aWFsU3VwcGx5BQ1zaGFyZURlY2ltYWxzBgQMc2hhcmVJc3N1ZUlkCQC4CAEFCnNoYXJlSXNzdWUECWJhc2VFbnRyeQkAzAgCCQELU3RyaW5nRW50cnkCBQhrVmVyc2lvbgUHdmVyc2lvbgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0Fzc2V0SWRBBQ5wbXRTdHJBc3NldElkQQkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXNzZXRJZEIFDnBtdFN0ckFzc2V0SWRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rQmFsYW5jZUluaXRBBQlhbXRBc3NldEEJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtCYWxhbmNlSW5pdEIFCWFtdEFzc2V0QgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQRrRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQZvcmFjbGUCDWJhc2VfZmVlX2NwbW0JAMwIAgUKc2hhcmVJc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQ1rU2hhcmVBc3NldElkCQDYBAEFDHNoYXJlSXNzdWVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkFEnNoYXJlSW5pdGlhbFN1cHBseQUDbmlsAwUMZmlyc3RIYXJ2ZXN0CQCUCgIFA25pbAkAlAoCCQDOCAIFCWJhc2VFbnRyeQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa0ZpcnN0SGFydmVzdAUMZmlyc3RIYXJ2ZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQJAGgCBRVmaXJzdEhhcnZlc3RFbmRQZXJpb2QFDHBlcmlvZExlbmd0aAUDbmlsBQNuaWwJAJQKAgUDbmlsCQCUCgIFCWJhc2VFbnRyeQUDbmlsAWkBGGtlZXBMaW1pdEZvckZpcnN0SGFydmVzdAQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMJAMwIAgURYWRtaW5JbnZva2VQdWJLZXkFA25pbAgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUECnNoYXJlTGltaXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAJAJQKAgUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tTaGFyZUxpbWl0BQpzaGFyZUxpbWl0BQNuaWwFA25pbAFpAQhleGNoYW5nZQQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBDGlzRGVwcmljYXRlZAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDIyMzQwMjI0MTYJAJQKAgkAkQMCBQhwQW1vdW50cwAACQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAABAlwbXRBbW91bnQIBQ0kdDAyMjM0MDIyNDE2Al8xBApwbXRBc3NldElkCAUNJHQwMjIzNDAyMjQxNgJfMgQSbWluQW1vdW50VG9SZWNlaXZlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABA0kdDAyMjQ4MTIyNTU3CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAyMjQ4MTIyNTU3Al8xBAtzdHJBc3NldElkQggFDSR0MDIyNDgxMjI1NTcCXzIECGFzc2V0SWRBCAUNJHQwMjI0ODEyMjU1NwJfMwQIYXNzZXRJZEIIBQ0kdDAyMjQ4MTIyNTU3Al80BA0kdDAyMjU2NjIyNjcyCQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMjI1NjYyMjY3MgJfMQQIYmFsYW5jZUIIBQ0kdDAyMjU2NjIyNjcyAl8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAyMjU2NjIyNjcyAl8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAyMjU2NjIyNjcyAl80AwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUDAwkAAAIFCGJhbGFuY2VBAAAGCQAAAgUIYmFsYW5jZUIAAAkAAgECIENhbid0IGV4Y2hhbmdlIHdpdGggemVybyBiYWxhbmNlAwkAZwIAAAUSbWluQW1vdW50VG9SZWNlaXZlCQACAQkArAICAjRNaW5pbWFsIGFtb3VudCB0byByZWNlaXZlIG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQCkAwEFEm1pbkFtb3VudFRvUmVjZWl2ZQMJAQIhPQIJAJADAQUIcEFtb3VudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhc3NldElkQQkAzAgCBQhhc3NldElkQgUDbmlsBQpwbXRBc3NldElkCQACAQkArAICCQCsAgIJAKwCAgIkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQtzdHJBc3NldElkQQIEIG9yIAULc3RyQXNzZXRJZEIDAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDSR0MDIzNTcyMjM2MzkJAQxnZXRGZWVQYXJhbXMCCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQDZmVlCAUNJHQwMjM1NzIyMzYzOQJfMQQGZ292RmVlCAUNJHQwMjM1NzIyMzYzOQJfMgQHdGVhbUZlZQgFDSR0MDIzNTcyMjM2MzkCXzMEDSR0MDIzNjUyMjQwMDMDCQAAAgUKcG10QXNzZXRJZAUIYXNzZXRJZEEJAQ1jYWxjdWxhdGVGZWVzBwUJcG10QW1vdW50BRJtaW5BbW91bnRUb1JlY2VpdmUFCGJhbGFuY2VBBQhiYWxhbmNlQgUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUJAQ1jYWxjdWxhdGVGZWVzBwUJcG10QW1vdW50BRJtaW5BbW91bnRUb1JlY2VpdmUFCGJhbGFuY2VCBQhiYWxhbmNlQQUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUEEGFtb3VudFdpdGhvdXRGZWUIBQ0kdDAyMzY1MjI0MDAzAl8xBA1hbW91bnRXaXRoRmVlCAUNJHQwMjM2NTIyNDAwMwJfMgQQZ292ZXJuYW5jZVJld2FyZAgFDSR0MDIzNjUyMjQwMDMCXzMECnRlYW1SZXdhcmQIBQ0kdDAyMzY1MjI0MDAzAl80BA0kdDAyNDAxNzI0MzUyAwkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQCVCgMJAGQCBQhiYWxhbmNlQQUJcG10QW1vdW50CQBlAgkAZQIJAGUCBQhiYWxhbmNlQgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAUIYXNzZXRJZEIJAJUKAwkAZQIJAGUCCQBlAgUIYmFsYW5jZUEFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQJAGQCBQhiYWxhbmNlQgUJcG10QW1vdW50BQhhc3NldElkQQQLbmV3QmFsYW5jZUEIBQ0kdDAyNDAxNzI0MzUyAl8xBAtuZXdCYWxhbmNlQggFDSR0MDI0MDE3MjQzNTICXzIEC2Fzc2V0SWRTZW5kCAUNJHQwMjQwMTcyNDM1MgJfMwQNJHQwMjQzNjYyNDYyNgMJAAACBQpwbXRBc3NldElkBQhhc3NldElkQQkAlAoCBQlwbXRBbW91bnQJAGQCCQBkAgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAkAlAoCCQBkAgkAZAIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQFCXBtdEFtb3VudAQMc3Rha2VBbW91bnRBCAUNJHQwMjQzNjYyNDYyNgJfMQQMc3Rha2VBbW91bnRCCAUNJHQwMjQzNjYyNDYyNgJfMgQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQDMCAIFDHN0YWtlQW1vdW50QQkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRCCQDMCAIFDHN0YWtlQW1vdW50QgkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgkAlAoCBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBBQtuZXdCYWxhbmNlQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCBQtuZXdCYWxhbmNlQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFDWFtb3VudFdpdGhGZWUFC2Fzc2V0SWRTZW5kCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwUQZ292ZXJuYW5jZVJld2FyZAULYXNzZXRJZFNlbmQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCnRlYW1SZXdhcmQFC2Fzc2V0SWRTZW5kBQNuaWwJAMwIAgUNYW1vdW50V2l0aEZlZQkAzAgCBQthc3NldElkU2VuZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQxpc0RlcHJpY2F0ZWQBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBAtwbXRBc3NldElkQQkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAQLcG10QXNzZXRJZEIJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAEEDHN0YWtlRmFybWluZwkAAAIJAJEDAgUEYXJncwAAAgR0cnVlBAhsb2NrVHlwZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQQNJHQwMjU5NDEyNjAzMQkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMjU5NDEyNjAzMQJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAyNTk0MTI2MDMxAl8yBAhhc3NldElkQQgFDSR0MDI1OTQxMjYwMzECXzMECGFzc2V0SWRCCAUNJHQwMjU5NDEyNjAzMQJfNAQMc2hhcmVBc3NldElkCAUNJHQwMjU5NDEyNjAzMQJfNQQNJHQwMjYwNDAyNjE2NAkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDI2MDQwMjYxNjQCXzEECGJhbGFuY2VCCAUNJHQwMjYwNDAyNjE2NAJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMjYwNDAyNjE2NAJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMjYwNDAyNjE2NAJfNAQQc2hhcmVBc3NldFN1cHBseQgFDSR0MDI2MDQwMjYxNjQCXzUDCQECIT0CCQCQAwEFBGFyZ3MAAgkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMDCQECIT0CCQCQAwEFCHBBbW91bnRzAAIJAQIhPQIJAJADAQUIcEFtb3VudHMAAwcJAAIBAh5Ud28gb3IgdGhyZWUgcGF5bWVudHMgZXhwZWN0ZWQDAwkBAiE9AgULcG10QXNzZXRJZEEFCGFzc2V0SWRBBgkBAiE9AgULcG10QXNzZXRJZEIFCGFzc2V0SWRCCQACAQkArAICCQCsAgIJAKwCAgIlSW5jb3JyZWN0IGFzc2V0cyBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAULc3RyQXNzZXRJZEECBSBhbmQgBQtzdHJBc3NldElkQgMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAkQMCBQhwQW1vdW50cwAABQtwbXRBc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAJEDAgUIcEFtb3VudHMAAQULcG10QXNzZXRJZEIFA25pbAMJAAACCQCQAwEFCHBBbW91bnRzAAMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIDCQAAAgkAkQMCBQlwQXNzZXRJZHMAAgEABQR1bml0CQCRAwIFCXBBc3NldElkcwACCQCRAwIFCHBBbW91bnRzAAIFA25pbAkAzggCBQNuaWwJARFzdXNwZW5kU3VzcGljaW91cwYFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQQUIYmFsYW5jZUIFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQNJHQwMjcxMDEyNzI5OQkBH2NhbGNMUEFtb3VudFJlcGxlbnNpc2hUd29Ub2tlbnMHCQCRAwIFCHBBbW91bnRzAAAJAJEDAgUIcEFtb3VudHMAAQULcG10QXNzZXRJZEEFC3BtdEFzc2V0SWRCBQhiYWxhbmNlQQUIYmFsYW5jZUIFEHNoYXJlQXNzZXRTdXBwbHkEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAgFDSR0MDI3MTAxMjcyOTkCXzEEBmNoYW5nZQgFDSR0MDI3MTAxMjcyOTkCXzIEDWNoYW5nZUFzc2V0SWQIBQ0kdDAyNzEwMTI3Mjk5Al8zBApwbXRBbW91bnRBCAUNJHQwMjcxMDEyNzI5OQJfNAQKcG10QW1vdW50QggFDSR0MDI3MTAxMjcyOTkCXzUDCQAAAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAJAAIBAh1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAGYCAAAFBmNoYW5nZQkAAgECCkNoYW5nZSA8IDAEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEEJAMwIAgULc3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEIJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIEDHNoYXJlVG9rZW5TVAMFDHN0YWtlRmFybWluZwQKc3RQYXltZW50cwkAzggCCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxzaGFyZUFzc2V0SWQFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwACAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAIJAJEDAgUIcEFtb3VudHMAAgUDbmlsBQNuaWwEB3JlaXNzdWUJAPwHBAgFAWkGY2FsbGVyAhFyZWlzc3VlU2hhcmVUb2tlbgkAzAgCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFA25pbAUDbmlsAwkAAAIFB3JlaXNzdWUFB3JlaXNzdWUEBnN0YWtlMwkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIXbG9ja1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUIbG9ja1R5cGUFA25pbAUKc3RQYXltZW50cwMJAAACBQZzdGFrZTMFBnN0YWtlMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQdSZWlzc3VlAwUMc2hhcmVBc3NldElkBRVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEJAGQCBQhiYWxhbmNlQQUKcG10QW1vdW50QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCCQBkAgUIYmFsYW5jZUIFCnBtdEFtb3VudEIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBkAgUQc2hhcmVBc3NldFN1cHBseQUVc2hhcmVUb2tlblRvUGF5QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUGY2hhbmdlBQ1jaGFuZ2VBc3NldElkBQNuaWwFDHNoYXJlVG9rZW5TVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXJlcGxlbmlzaFdpdGhPbmVUb2tlbgQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBDGlzRGVwcmljYXRlZAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMECnBtdEFzc2V0SWQJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAAECXBtdEFtb3VudAkAkQMCBQhwQW1vdW50cwAABBB2aXJ0R2V0TWluQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABAxzdGFrZUZhcm1pbmcJAAACCQCRAwIFBGFyZ3MAAQIEdHJ1ZQQIbG9ja1R5cGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAIEDSR0MDI5NTU4Mjk2NDgJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDI5NTU4Mjk2NDgCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMjk1NTgyOTY0OAJfMgQIYXNzZXRJZEEIBQ0kdDAyOTU1ODI5NjQ4Al8zBAhhc3NldElkQggFDSR0MDI5NTU4Mjk2NDgCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDI5NTU4Mjk2NDgCXzUEDSR0MDI5NjUzMjk3NzcJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAyOTY1MzI5Nzc3Al8xBAhiYWxhbmNlQggFDSR0MDI5NjUzMjk3NzcCXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDI5NjUzMjk3NzcCXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDI5NjUzMjk3NzcCXzQEEHNoYXJlQXNzZXRTdXBwbHkIBQ0kdDAyOTY1MzI5Nzc3Al81BAdpbml0aWFsCQAAAgkAZAIFCGJhbGFuY2VBBQhiYWxhbmNlQgAAAwkBAiE9AgkAkAMBBQRhcmdzAAMJAAIBAg9Xcm9uZyBhcmdzIHNpemUDAwkBAiE9AgkAkAMBBQhwQW1vdW50cwABCQECIT0CCQCQAwEFCHBBbW91bnRzAAIHCQACAQIjVHdvIG9yIG9uZSBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAiE9AgUKcG10QXNzZXRJZAUIYXNzZXRJZEEJAQIhPQIFCnBtdEFzc2V0SWQFCGFzc2V0SWRCBwkAAgEJAKwCAgkArAICCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAULc3RyQXNzZXRJZEECBCBvciAFC3N0ckFzc2V0SWRCAwUHaW5pdGlhbAkAAgECMEZvciBpbml0aWFsIGV4Y2hhbmdlciB5b3UgbmVlZCB0byB1c2UgdHdvIHRva2VucwMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJcG10QW1vdW50BQpwbXRBc3NldElkBQNuaWwDCQAAAgkAkAMBBQhwQW1vdW50cwACCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCAwkAAAIJAJEDAgUJcEFzc2V0SWRzAAIBAAUEdW5pdAkAkQMCBQlwQXNzZXRJZHMAAgkAkQMCBQhwQW1vdW50cwACBQNuaWwJAM4IAgUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDSR0MDMwNjg5MzA3NTYJAQxnZXRGZWVQYXJhbXMCCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQDZmVlCAUNJHQwMzA2ODkzMDc1NgJfMQQGZ292RmVlCAUNJHQwMzA2ODkzMDc1NgJfMgQHdGVhbUZlZQgFDSR0MDMwNjg5MzA3NTYCXzMEDSR0MDMwNzY1MzA4MjcJAQxnZXRBc3NldEluZm8BBQpwbXRBc3NldElkBA1wbXRBc3NldElkU3RyCAUNJHQwMzA3NjUzMDgyNwJfMQQOcG10QXNzZXRJZE5hbWUIBQ0kdDAzMDc2NTMwODI3Al8yBA0kdDAzMDg0NTMxMDkxCQEeY2FsY0xQQW1vdW50UmVwbGFuc2lzaE9uZVRva2VuCwUJcG10QW1vdW50BQpwbXRBc3NldElkBQhhc3NldElkQQUIYXNzZXRJZEIFCGJhbGFuY2VBBQhiYWxhbmNlQgUQc2hhcmVBc3NldFN1cHBseQUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUFEHZpcnRHZXRNaW5BbW91bnQEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAgFDSR0MDMwODQ1MzEwOTECXzEEC25ld0JhbGFuY2VBCAUNJHQwMzA4NDUzMTA5MQJfMgQLbmV3QmFsYW5jZUIIBQ0kdDAzMDg0NTMxMDkxAl8zBAlnb3ZSZXdhcmQIBQ0kdDAzMDg0NTMxMDkxAl80BAp0ZWFtUmV3YXJkCAUNJHQwMzA4NDUzMTA5MQJfNQQOZ292UmV3YXJkQXNzZXQIBQ0kdDAzMDg0NTMxMDkxAl82BBFnb3ZSZXdhcmRBc3NldFN0cgMJAAACBQ5nb3ZSZXdhcmRBc3NldAUIYXNzZXRJZEEFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgMJAAACBRVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAkAAgECHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoBAZzdGFrZTEDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQ1wbXRBc3NldElkU3RyCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCXBtdEFtb3VudAkAzAgCBQ1wbXRBc3NldElkU3RyBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBRFnb3ZSZXdhcmRBc3NldFN0cgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBwkAzAgCCQBkAgUJZ292UmV3YXJkBQp0ZWFtUmV3YXJkCQDMCAIFEWdvdlJld2FyZEFzc2V0U3RyBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMgUGc3Rha2UyBAxzaGFyZVRva2VuU1QDBQxzdGFrZUZhcm1pbmcECnN0UGF5bWVudHMJAM4IAgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMc2hhcmVBc3NldElkBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFA25pbAMJAAACCQCQAwEFCHBBbW91bnRzAAIJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIDCQAAAgkAkQMCBQlwQXNzZXRJZHMAAQEABQR1bml0CQCRAwIFCXBBc3NldElkcwABCQCRAwIFCHBBbW91bnRzAAEFA25pbAUDbmlsBAdyZWlzc3VlCQD8BwQIBQFpBmNhbGxlcgIRcmVpc3N1ZVNoYXJlVG9rZW4JAMwIAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQNuaWwFA25pbAMJAAACBQdyZWlzc3VlBQdyZWlzc3VlBAZzdGFrZTMJAPwHBAUOZmFybWluZ0FkZHJlc3MCF2xvY2tTaGFyZVRva2Vuc0Zyb21Qb29sCQDMCAIFC2NhbGxlckJ5dGVzCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFCGxvY2tUeXBlBQNuaWwFCnN0UGF5bWVudHMDCQAAAgUGc3Rha2UzBQZzdGFrZTMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEHUmVpc3N1ZQMFDHNoYXJlQXNzZXRJZAUVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUMc2hhcmVBc3NldElkBQNuaWwJAJQKAgUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBBQtuZXdCYWxhbmNlQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCBQtuZXdCYWxhbmNlQgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkJAGQCBRBzaGFyZUFzc2V0U3VwcGx5BRVzaGFyZVRva2VuVG9QYXlBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzBQlnb3ZSZXdhcmQFDmdvdlJld2FyZEFzc2V0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBQ5nb3ZSZXdhcmRBc3NldAUDbmlsBQxzaGFyZVRva2VuU1QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA0kdDAzMzE1OTMzMjQ5CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAzMzE1OTMzMjQ5Al8xBAtzdHJBc3NldElkQggFDSR0MDMzMTU5MzMyNDkCXzIECGFzc2V0SWRBCAUNJHQwMzMxNTkzMzI0OQJfMwQIYXNzZXRJZEIIBQ0kdDAzMzE1OTMzMjQ5Al80BAxzaGFyZUFzc2V0SWQIBQ0kdDAzMzE1OTMzMjQ5Al81BA0kdDAzMzI1ODMzMzgyCQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMzMyNTgzMzM4MgJfMQQIYmFsYW5jZUIIBQ0kdDAzMzI1ODMzMzgyAl8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAzMzI1ODMzMzgyAl8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAzMzI1ODMzMzgyAl80BBBzaGFyZUFzc2V0U3VwcGx5CAUNJHQwMzMyNTgzMzM4MgJfNQQNJHQwMzMzOTEzMzc3MQMJAAACCQCQAwEFCHBBbW91bnRzAAEEBnBBc3NldAkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAMJAQIhPQIFBnBBc3NldAUMc2hhcmVBc3NldElkCQACAQkArAICAiRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJANgEAQUMc2hhcmVBc3NldElkCQCUCgIJAJEDAgUIcEFtb3VudHMAAAUGcEFzc2V0CQCUCgIAAAUMc2hhcmVBc3NldElkBAlwbXRBbW91bnQIBQ0kdDAzMzM5MTMzNzcxAl8xBApwbXRBc3NldElkCAUNJHQwMzMzOTEzMzc3MQJfMgMJAQIhPQIJAJADAQUEYXJncwABCQACAQIPV3JvbmcgYXJncyBzaXplAwkAZgIJAJADAQUIcEFtb3VudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwMJAGYCBQhiYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VBBgkAZgIFCGJhbGFuY2VCBQ9hY2NvdW50QmFsYW5jZUIJAJQKAgUDbmlsCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQlwbXRBbW91bnQFCnBtdEFzc2V0SWQFA25pbAkBEXN1c3BlbmRTdXNwaWNpb3VzBgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VBBQhiYWxhbmNlQgULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBAx1bmxvY2tBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkBC3ZhbHVlT3JFbHNlAgkAkQMCBQRhcmdzAAACATAEBnVubG9jawMJAGYCBQx1bmxvY2tBbW91bnQAAAkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIbd2l0aGRyYXdTaGFyZVRva2Vuc0Zyb21Qb29sCQDMCAIFC2NhbGxlckJ5dGVzCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFDHVubG9ja0Ftb3VudAUDbmlsBQNuaWwAAAMJAAACBQZ1bmxvY2sFBnVubG9jawQOd2l0aGRyYXdBbW91bnQJAGQCBQlwbXRBbW91bnQFDHVubG9ja0Ftb3VudAQMYW1vdW50VG9QYXlBCQBrAwUOd2l0aGRyYXdBbW91bnQFCGJhbGFuY2VBBRBzaGFyZUFzc2V0U3VwcGx5BAxhbW91bnRUb1BheUIJAGsDBQ53aXRoZHJhd0Ftb3VudAUIYmFsYW5jZUIFEHNoYXJlQXNzZXRTdXBwbHkEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIHCQDMCAIFDGFtb3VudFRvUGF5QQkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgUMYW1vdW50VG9QYXlCCQDMCAIFC3N0ckFzc2V0SWRCBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMgUGc3Rha2UyCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQx1bmxvY2tBbW91bnQFDHNoYXJlQXNzZXRJZAUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQkAZQIFCGJhbGFuY2VBBQxhbW91bnRUb1BheUEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgkAZQIFCGJhbGFuY2VCBQxhbW91bnRUb1BheUIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBlAgUQc2hhcmVBc3NldFN1cHBseQUOd2l0aGRyYXdBbW91bnQJAMwIAgkBBEJ1cm4CBQxzaGFyZUFzc2V0SWQFDndpdGhkcmF3QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUMYW1vdW50VG9QYXlBBQhhc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFDGFtb3VudFRvUGF5QgUIYXNzZXRJZEIFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEHdpdGhkcmF3T25lVG9rZW4EC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQxpc0RlcHJpY2F0ZWQBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA13aXRoZHJhd0Fzc2V0AwkAAAIJAJEDAgUEYXJncwAAAgAFBHVuaXQJANkEAQkAkQMCBQRhcmdzAAAEDSR0MDM1OTg5MzYwNzkJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDM1OTg5MzYwNzkCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMzU5ODkzNjA3OQJfMgQIYXNzZXRJZEEIBQ0kdDAzNTk4OTM2MDc5Al8zBAhhc3NldElkQggFDSR0MDM1OTg5MzYwNzkCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDM1OTg5MzYwNzkCXzUEDSR0MDM2MDg4MzYyMTIJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAzNjA4ODM2MjEyAl8xBAhiYWxhbmNlQggFDSR0MDM2MDg4MzYyMTICXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDM2MDg4MzYyMTICXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDM2MDg4MzYyMTICXzQEEHNoYXJlQXNzZXRTdXBwbHkIBQ0kdDAzNjA4ODM2MjEyAl81BA0kdDAzNjIyMTM2NTczAwkAAAIJAJADAQUIcEFtb3VudHMAAQQGcEFzc2V0CQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAAAwkBAiE9AgUGcEFzc2V0BQxzaGFyZUFzc2V0SWQJAAIBCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAkA2AQBBQxzaGFyZUFzc2V0SWQJAJQKAgkAkQMCBQhwQW1vdW50cwAABQZwQXNzZXQJAJQKAgAABQxzaGFyZUFzc2V0SWQECXBtdEFtb3VudAgFDSR0MDM2MjIxMzY1NzMCXzEECnBtdEFzc2V0SWQIBQ0kdDAzNjIyMTM2NTczAl8yBA92aXJ0TWluVG9SZWNpdmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAEDCQECIT0CCQCQAwEFBGFyZ3MAAwkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMJAGYCCQCQAwEFCHBBbW91bnRzAAEJAAIBAh1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQIhPQIFCnBtdEFzc2V0SWQFDHNoYXJlQXNzZXRJZAkAAgEJAKwCAgIkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQDYBAEFDHNoYXJlQXNzZXRJZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUIYXNzZXRJZEEJAMwIAgUIYXNzZXRJZEIFA25pbAUNd2l0aGRyYXdBc3NldAkAAgECGUluY29ycmVjdCB3aXRoZHJhdyBhc3NldC4DAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDHVubG9ja0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQELdmFsdWVPckVsc2UCCQCRAwIFBGFyZ3MAAgIBMAQGdW5sb2NrAwkAZgIFDHVubG9ja0Ftb3VudAAACQD8BwQFDmZhcm1pbmdBZGRyZXNzAht3aXRoZHJhd1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUMdW5sb2NrQW1vdW50BQNuaWwFA25pbAAAAwkAAAIFBnVubG9jawUGdW5sb2NrBA53aXRoZHJhd0Ftb3VudAkAZAIFCXBtdEFtb3VudAUMdW5sb2NrQW1vdW50BAxhbW91bnRUb1BheUEJAGsDBQ53aXRoZHJhd0Ftb3VudAUIYmFsYW5jZUEFEHNoYXJlQXNzZXRTdXBwbHkEDGFtb3VudFRvUGF5QgkAawMFDndpdGhkcmF3QW1vdW50BQhiYWxhbmNlQgUQc2hhcmVBc3NldFN1cHBseQQNJHQwMzc4NDAzNzkwNwkBDGdldEZlZVBhcmFtcwIIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBANmZWUIBQ0kdDAzNzg0MDM3OTA3Al8xBAZnb3ZGZWUIBQ0kdDAzNzg0MDM3OTA3Al8yBAd0ZWFtRmVlCAUNJHQwMzc4NDAzNzkwNwJfMwQNJHQwMzc5MjAzODMzNAMJAAACBQ13aXRoZHJhd0Fzc2V0BQhhc3NldElkQQkBDWNhbGN1bGF0ZUZlZXMHBQxhbW91bnRUb1BheUIFD3ZpcnRNaW5Ub1JlY2l2ZQkAZQIFCGJhbGFuY2VCBQxhbW91bnRUb1BheUIJAGUCBQhiYWxhbmNlQQUMYW1vdW50VG9QYXlBBQNmZWUFBmdvdkZlZQUHdGVhbUZlZQkBDWNhbGN1bGF0ZUZlZXMHBQxhbW91bnRUb1BheUEFD3ZpcnRNaW5Ub1JlY2l2ZQkAZQIFCGJhbGFuY2VBBQxhbW91bnRUb1BheUEJAGUCBQhiYWxhbmNlQgUMYW1vdW50VG9QYXlCBQNmZWUFBmdvdkZlZQUHdGVhbUZlZQQQYW1vdW50V2l0aG91dEZlZQgFDSR0MDM3OTIwMzgzMzQCXzEEDWFtb3VudFdpdGhGZWUIBQ0kdDAzNzkyMDM4MzM0Al8yBBBnb3Zlcm5hbmNlUmV3YXJkCAUNJHQwMzc5MjAzODMzNAJfMwQKdGVhbVJld2FyZAgFDSR0MDM3OTIwMzgzMzQCXzQEDSR0MDM4MzQ3Mzk2NTcDCQAAAgUNd2l0aGRyYXdBc3NldAUIYXNzZXRJZEEEB3Vuc3Rha2UDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQQkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBwkAzAgCCQBkAgkAZAIJAGQCBQxhbW91bnRUb1BheUEFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQJAMwIAgULc3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkAlgoECQBlAgkAZQIJAGUCCQBlAgUIYmFsYW5jZUEFDGFtb3VudFRvUGF5QQUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAUIYmFsYW5jZUIFCGFzc2V0SWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAZAIFDGFtb3VudFRvUGF5QQUNYW1vdW50V2l0aEZlZQUIYXNzZXRJZEEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQHdW5zdGFrZQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIHCQDMCAIJAGQCCQBkAgkAZAIFDGFtb3VudFRvUGF5QgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQCWCgQFCGJhbGFuY2VBCQBlAgkAZQIJAGUCCQBlAgUIYmFsYW5jZUIFDGFtb3VudFRvUGF5QgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAUIYXNzZXRJZEIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBkAgUMYW1vdW50VG9QYXlCBQ1hbW91bnRXaXRoRmVlBQhhc3NldElkQgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAtuZXdCYWxhbmNlQQgFDSR0MDM4MzQ3Mzk2NTcCXzEEC25ld0JhbGFuY2VCCAUNJHQwMzgzNDczOTY1NwJfMgQQZ292UmV3YXJkQXNzZXRJZAgFDSR0MDM4MzQ3Mzk2NTcCXzMEDHVzZXJUcmFuc2ZlcggFDSR0MDM4MzQ3Mzk2NTcCXzQJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDHVubG9ja0Ftb3VudAUMc2hhcmVBc3NldElkBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEFC25ld0JhbGFuY2VBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIFC25ld0JhbGFuY2VCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQkAZQIFEHNoYXJlQXNzZXRTdXBwbHkFDndpdGhkcmF3QW1vdW50CQDMCAIJAQRCdXJuAgUMc2hhcmVBc3NldElkBQ53aXRoZHJhd0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9tb25leUJveEFkZHJlc3MFEGdvdmVybmFuY2VSZXdhcmQFEGdvdlJld2FyZEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCnRlYW1SZXdhcmQFEGdvdlJld2FyZEFzc2V0SWQFA25pbAUMdXNlclRyYW5zZmVyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQNJHQwNDA0MTc0MDQ5MwkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwNDA0MTc0MDQ5MwJfMQQLc3RyQXNzZXRJZEIIBQ0kdDA0MDQxNzQwNDkzAl8yBAhhc3NldElkQQgFDSR0MDQwNDE3NDA0OTMCXzMECGFzc2V0SWRCCAUNJHQwNDA0MTc0MDQ5MwJfNAQFY2xhaW0DAwkAAAIFCGFzc2V0SWRBBQRVU0ROBgkAAAIFCGFzc2V0SWRCBQRVU0ROCQD8BwQIBQFpBmNhbGxlcgITY2xhaW1OZXRyaW5vUmV3YXJkcwUDbmlsBQNuaWwAAAMJAAACBQVjbGFpbQUFY2xhaW0EDSR0MDQwNjUzNDA3NTkJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDA0MDY1MzQwNzU5Al8xBAhiYWxhbmNlQggFDSR0MDQwNjUzNDA3NTkCXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDQwNjUzNDA3NTkCXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDQwNjUzNDA3NTkCXzQEDWFtb3VudEVucm9sbEEJAGUCBQ9hY2NvdW50QmFsYW5jZUEFCGJhbGFuY2VBBA1hbW91bnRFbnJvbGxCCQBlAgUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQgMJAQIhPQIJAJADAQUEYXJncwAACQACAQIPV3JvbmcgYXJncyBzaXplAwkBAiE9AgUPbW9uZXlCb3hBZGRyZXNzCAUBaQxvcmlnaW5DYWxsZXIJAAIBAiZPbmx5IHRoZSB3YWxsZXQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMDCQBmAgAABQ1hbW91bnRFbnJvbGxBBgkAZgIAAAUNYW1vdW50RW5yb2xsQgkBB3N1c3BlbmQBAhZFbnJvbGwgYW1vdW50IG5lZ2F0aXZlAwMJAAACBQ1hbW91bnRFbnJvbGxBAAAJAAACBQ1hbW91bnRFbnJvbGxCAAAHCQACAQIQTm8gbW9uZXkgdG8gdGFrZQQGc3Rha2UxAwMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRBCQBmAgUNYW1vdW50RW5yb2xsQQAABwkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBgkAzAgCBQ1hbW91bnRFbnJvbGxBCQDMCAIFC3N0ckFzc2V0SWRBBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAGYCBQ1hbW91bnRFbnJvbGxCAAAHCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFDWFtb3VudEVucm9sbEIJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIJAJQKAgUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQkAZAIFCGJhbGFuY2VBBQ1hbW91bnRFbnJvbGxBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIJAGQCBQhiYWxhbmNlQgUNYW1vdW50RW5yb2xsQgUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABBNtdWx0aVNpZ25lZEJ5QWRtaW5zBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAIFE211bHRpU2lnbmVkQnlBZG1pbnP9Jo0n", "height": 2625193, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 734WmNFnizCPuZdhVFvEirqcDUXbQYcReB9sr1ZAPaoh Next: none Diff:
OldNewDifferences
385385 let bZ = fraction(toBigInt((aP - co)), aq, toBigInt(cr))
386386 let ca = fraction(toBigInt(aX), aq, toBigInt(cs))
387387 let ch = toInt(fraction(min([bZ, ca]), toBigInt(cm), aq))
388- let cv = toInt(fraction(fraction(toBigInt(aP), aq, toBigInt(bM)), toBigInt(cm), aq))
388+ let cv = toInt(fraction(fraction(toBigInt((aP - co)), aq, toBigInt(bM)), toBigInt(cm), aq))
389389 let cw = fraction((ch - cv), ap, cv)
390390 $Tuple7(ch, ct, cu, aY, cq, cl, cw)
391391 }
403403 let bZ = fraction(toBigInt(aX), aq, toBigInt(cr))
404404 let ca = fraction(toBigInt((aP - co)), aq, toBigInt(cs))
405405 let ch = toInt(fraction(min([bZ, ca]), toBigInt(cm), aq))
406- let cv = toInt(fraction(fraction(toBigInt(aP), aq, toBigInt(bN)), toBigInt(cm), aq))
406+ let cv = toInt(fraction(fraction(toBigInt((aP - co)), aq, toBigInt(bN)), toBigInt(cm), aq))
407407 let cw = fraction((ch - cv), ap, cv)
408408 $Tuple7(ch, ct, cu, aY, cq, ay, cw)
409409 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "deprecated_"
1111
1212 let e = "A_asset_id"
1313
1414 let f = "B_asset_id"
1515
1616 let g = "A_asset_balance"
1717
1818 let h = "B_asset_balance"
1919
2020 let i = "A_asset_init"
2121
2222 let j = "B_asset_init"
2323
2424 let k = "share_asset_id"
2525
2626 let l = "share_asset_supply"
2727
2828 let m = "commission"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "staking_usdnnsbt_address"
4545
4646 let v = "staking_eurn_address"
4747
4848 let w = "leasing_amount"
4949
5050 let x = "usdn_asset_id"
5151
5252 let y = "eurn_asset_id"
5353
5454 let z = "staking_assets"
5555
5656 let A = "active_all_contracts"
5757
5858 let B = "discounts"
5959
6060 let C = "discount_values"
6161
6262 let D = "_GSwop_amount"
6363
6464 let E = "_SWOP_amount"
6565
6666 let F = "pool_"
6767
6868 let G = "admin_pub_1"
6969
7070 let H = "admin_pub_2"
7171
7272 let I = "admin_pub_3"
7373
7474 let J = "admin_invoke_pub"
7575
7676 let K = "money_box_address"
7777
7878 let L = "team_box_address"
7979
8080 let M = "voting_address"
8181
8282 let N = "governance_address"
8383
8484 let O = "farming_address"
8585
8686 let P = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
8787
8888 func Q (R) = {
8989 let S = getString(P, R)
9090 if ($isInstanceOf(S, "String"))
9191 then {
9292 let T = S
9393 fromBase58String(T)
9494 }
9595 else {
9696 let U = S
9797 throw((R + "is empty"))
9898 }
9999 }
100100
101101
102102 let V = Q(G)
103103
104104 let W = Q(H)
105105
106106 let X = Q(I)
107107
108108 let Y = Q(J)
109109
110110 let Z = Address(Q(K))
111111
112112 let aa = Address(Q(L))
113113
114114 let ab = Address(Q(M))
115115
116116 let ac = Address(Q(N))
117117
118118 let ad = Address(Q(O))
119119
120120 let ae = Q(x)
121121
122122 let af = Q(y)
123123
124124 let ag = getStringValue(P, z)
125125
126126 let ah = Address(Q(u))
127127
128128 let ai = Address(Q(v))
129129
130130 let aj = valueOrErrorMessage(getInteger(ab, r), "Empty kBasePeriod")
131131
132132 let ak = valueOrErrorMessage(getInteger(ab, t), "Empty kStartHeight")
133133
134134 let al = valueOrErrorMessage(getInteger(ab, s), "Empty kPeriodLength")
135135
136136 let am = ((aj + ((height - ak) / al)) + 3)
137137
138138 let an = getBooleanValue(P, A)
139139
140140 let ao = 1000000
141141
142142 let ap = 100000000
143143
144144 let aq = toBigInt(10000000000000000)
145145
146146 func ar (as,at) = {
147147 let S = as
148148 if ($isInstanceOf(S, "ByteVector"))
149149 then {
150150 let au = S
151151 assetBalance(at, au)
152152 }
153153 else if ($isInstanceOf(S, "Unit"))
154154 then {
155155 let av = S
156156 wavesBalance(at).available
157157 }
158158 else throw("Match error")
159159 }
160160
161161
162162 func aw (as,at) = {
163163 let ax = {
164164 let S = as
165165 if ($isInstanceOf(S, "ByteVector"))
166166 then {
167167 let ay = S
168168 if ((ay == ae))
169169 then getInteger(ah, ((("rpd_balance_" + toBase58String(ay)) + "_") + toString(at)))
170170 else if ((ay == af))
171171 then getInteger(ai, ((("%s%s%s__stakingBalance__" + toBase58String(ay)) + "__") + toString(at)))
172172 else 0
173173 }
174174 else if ($isInstanceOf(S, "Unit"))
175175 then valueOrElse(getInteger(at, w), 0)
176176 else throw("Match error")
177177 }
178178 let S = ax
179179 if ($isInstanceOf(S, "Int"))
180180 then {
181181 let az = S
182182 az
183183 }
184184 else 0
185185 }
186186
187187
188188 func aA (as) = {
189189 let S = as
190190 if (if ($isInstanceOf(S, "String"))
191191 then true
192192 else $isInstanceOf(S, "ByteVector"))
193193 then {
194194 let au = S
195195 let aB = {
196196 let aC = au
197197 if ($isInstanceOf(aC, "ByteVector"))
198198 then {
199199 let ay = aC
200200 $Tuple2(toBase58String(ay), ay)
201201 }
202202 else if ($isInstanceOf(aC, "String"))
203203 then {
204204 let ay = aC
205205 $Tuple2(ay, fromBase58String(ay))
206206 }
207207 else throw("Match error")
208208 }
209209 let aD = aB._1
210210 let aE = aB._2
211211 let aF = valueOrErrorMessage(assetInfo(aE), (("Asset " + aD) + " doesn't exist"))
212212 $Tuple3(aD, aF.name, aF.decimals)
213213 }
214214 else if ($isInstanceOf(S, "Unit"))
215215 then {
216216 let av = S
217217 $Tuple3("WAVES", "WAVES", 8)
218218 }
219219 else throw("Match error")
220220 }
221221
222222
223223 func aG (aH) = [BooleanEntry(c, false), StringEntry(n, aH)]
224224
225225
226226 func aI (aJ) = {
227227 let aK = valueOrElse(getInteger(ac, (toString(aJ) + E)), 0)
228228 let aL = valueOrElse(getInteger(ac, (toString(aJ) + D)), aK)
229229 let aM = split(getStringValue(P, C), ",")
230230 let aN = split(getStringValue(P, B), ",")
231231 if (if ((aL >= parseIntValue(aM[0])))
232232 then (parseIntValue(aM[1]) > aL)
233233 else false)
234234 then (ao - parseIntValue(aN[0]))
235235 else if (if ((aL >= parseIntValue(aM[1])))
236236 then (parseIntValue(aM[2]) > aL)
237237 else false)
238238 then (ao - parseIntValue(aN[1]))
239239 else if (if ((aL >= parseIntValue(aM[2])))
240240 then (parseIntValue(aM[3]) > aL)
241241 else false)
242242 then (ao - parseIntValue(aN[2]))
243243 else if (if ((aL >= parseIntValue(aM[3])))
244244 then (parseIntValue(aM[4]) > aL)
245245 else false)
246246 then (ao - parseIntValue(aN[3]))
247247 else if ((aL >= parseIntValue(aM[4])))
248248 then (ao - parseIntValue(aN[4]))
249249 else ao
250250 }
251251
252252
253253 func aO (aP,aQ,aR,aS,aT,aU,aV) = {
254254 let aW = fraction(aS, aP, (aP + aR))
255255 let aX = fraction(aW, (ao - aT), ao)
256256 let aY = fraction(aW, aU, ao)
257257 let aZ = fraction(aW, aV, ao)
258258 if ((aQ > aX))
259259 then throw(((("Calculated amount to receive " + toString(aX)) + " is less than specified minimum ") + toString(aQ)))
260260 else $Tuple4(aW, aX, aY, aZ)
261261 }
262262
263263
264264 func ba (aP,bb,aT) = {
265265 let bc = (ao - aT)
266266 let bd = fraction(aT, 55, 100)
267267 let be = (ap + fraction((bc * bd), ap, (ao * ao)))
268268 let bf = ((((bb + fraction(bb, bc, ao)) + fraction(aP, bc, ao)) - aP) - fraction(aP, (bc * bd), (ao * ao)))
269269 let bg = (-(toBigInt(bb)) * toBigInt(aP))
270270 let bh = ((toBigInt(bf) * toBigInt(bf)) - fraction((toBigInt(4) * bg), toBigInt(be), toBigInt(ap)))
271271 toInt(fraction((-(toBigInt(bf)) + sqrtBigInt(bh, 0, 0, DOWN)), toBigInt(ap), toBigInt((2 * be))))
272272 }
273273
274274
275275 func bi (as) = if ((as == base58''))
276276 then unit
277277 else as
278278
279279
280280 func bj (bk,bl,bm,bn,bo,bp) = aG(((((((((((((((("Suspicious state. Actual balances: " + toString(bk)) + " ") + bo) + ", ") + toString(bl)) + " ") + bp) + ". State: ") + toString(bm)) + " ") + bo) + ", ") + toString(bn)) + " ") + bp))
281281
282282
283283 func bq () = if (an)
284284 then unit
285285 else throw("DApp is inactive at this moment")
286286
287287
288288 func br (bs) = if (isDefined(getString(P, (F + bs))))
289289 then unit
290290 else throw("DApp is not registered pool")
291291
292292
293293 func bt (bs) = if (!(valueOrElse(getBoolean(P, (d + bs)), false)))
294294 then unit
295295 else throw("Pool is deprecated. Only withdraw action allowed.")
296296
297297
298298 func bu (at,bo,bp) = {
299299 let bm = getIntegerValue(at, g)
300300 let bn = getIntegerValue(at, h)
301301 let bv = aw(bo, at)
302302 let bw = aw(bp, at)
303303 let bk = (ar(bo, at) + bv)
304304 let bl = (ar(bp, at) + bw)
305305 let bx = getIntegerValue(at, l)
306306 $Tuple5(bm, bn, bk, bl, bx)
307307 }
308308
309309
310310 func by (at) = {
311311 let bz = getStringValue(at, e)
312312 let bA = getStringValue(at, f)
313313 let bo = if ((bz == "WAVES"))
314314 then unit
315315 else fromBase58String(bz)
316316 let bp = if ((bA == "WAVES"))
317317 then unit
318318 else fromBase58String(bA)
319319 let bB = fromBase58String(getStringValue(at, k))
320320 $Tuple5(bz, bA, bo, bp, bB)
321321 }
322322
323323
324324 func bC (at,bD) = {
325325 let bE = aI(bD)
326326 let aT = fraction(getIntegerValue(at, m), bE, ao, CEILING)
327327 let bF = fraction(aT, 35, 100)
328328 let bG = fraction(aT, 10, 100)
329329 $Tuple3(aT, bF, bG)
330330 }
331331
332332
333333 func bH (bI,bJ,bK,bL,bM,bN,bO) = {
334334 let bP = aA(bK)
335335 let bQ = bP._1
336336 let bR = bP._2
337337 let bS = bP._3
338338 let bT = aA(bL)
339339 let bU = bT._1
340340 let bV = bT._2
341341 let bW = bT._3
342342 let bX = ((bM + bN) == 0)
343343 let bY = if (bX)
344344 then $Tuple5(bI, bJ, 0, bK, toBigInt(1))
345345 else {
346346 let bZ = fraction(aq, toBigInt(bI), toBigInt(bM))
347347 let ca = fraction(aq, toBigInt(bJ), toBigInt(bN))
348348 if ((ca > bZ))
349349 then {
350350 let cb = fraction(bI, bN, bM)
351351 $Tuple5(bI, cb, (bJ - cb), bL, bZ)
352352 }
353353 else {
354354 let cb = fraction(bJ, bM, bN)
355355 $Tuple5(cb, bJ, (bI - cb), bK, ca)
356356 }
357357 }
358358 let cc = bY._1
359359 let cd = bY._2
360360 let ce = bY._3
361361 let cf = bY._4
362362 let cg = bY._5
363363 let ch = if (bX)
364364 then {
365365 let ci = ((bS + bW) / 2)
366366 fraction(pow(cc, bS, 5, 1, bS, DOWN), pow(cd, bW, 5, 1, bW, DOWN), pow(10, 0, ci, 0, 0, DOWN))
367367 }
368368 else toInt(fraction(cg, toBigInt(bO), aq))
369369 $Tuple5(ch, ce, cf, cc, cd)
370370 }
371371
372372
373373 func cj (aP,ck,ay,cl,bM,bN,cm,aT,bF,bG,cn) = if ((ck == ay))
374374 then {
375375 let co = ba(aP, bM, aT)
376376 let cp = aO(co, cn, bM, bN, aT, bF, bG)
377377 let aW = cp._1
378378 let aX = cp._2
379379 let aY = cp._3
380380 let cq = cp._4
381381 let cr = (bM + co)
382382 let cs = (((bN + aW) - aY) - cq)
383383 let ct = (bM + aP)
384384 let cu = ((bN - aY) - cq)
385385 let bZ = fraction(toBigInt((aP - co)), aq, toBigInt(cr))
386386 let ca = fraction(toBigInt(aX), aq, toBigInt(cs))
387387 let ch = toInt(fraction(min([bZ, ca]), toBigInt(cm), aq))
388- let cv = toInt(fraction(fraction(toBigInt(aP), aq, toBigInt(bM)), toBigInt(cm), aq))
388+ let cv = toInt(fraction(fraction(toBigInt((aP - co)), aq, toBigInt(bM)), toBigInt(cm), aq))
389389 let cw = fraction((ch - cv), ap, cv)
390390 $Tuple7(ch, ct, cu, aY, cq, cl, cw)
391391 }
392392 else {
393393 let co = ba(aP, bN, aT)
394394 let cx = aO(co, cn, bN, bM, aT, bF, bG)
395395 let aW = cx._1
396396 let aX = cx._2
397397 let aY = cx._3
398398 let cq = cx._4
399399 let cr = (((bM + aW) - aY) - cq)
400400 let cs = (bN + co)
401401 let ct = ((bM - aY) - cq)
402402 let cu = (bN + aP)
403403 let bZ = fraction(toBigInt(aX), aq, toBigInt(cr))
404404 let ca = fraction(toBigInt((aP - co)), aq, toBigInt(cs))
405405 let ch = toInt(fraction(min([bZ, ca]), toBigInt(cm), aq))
406- let cv = toInt(fraction(fraction(toBigInt(aP), aq, toBigInt(bN)), toBigInt(cm), aq))
406+ let cv = toInt(fraction(fraction(toBigInt((aP - co)), aq, toBigInt(bN)), toBigInt(cm), aq))
407407 let cw = fraction((ch - cv), ap, cv)
408408 $Tuple7(ch, ct, cu, aY, cq, ay, cw)
409409 }
410410
411411
412412 func cy (bI,bJ,bK,bL,bM,bN,cm,aT,bF,bG,cn) = {
413413 let cz = bH(bI, bJ, bK, bL, bM, bN, cm)
414414 let cA = cz._1
415415 let ce = cz._2
416416 let cf = cz._3
417417 let cc = cz._4
418418 let cd = cz._5
419419 if ((ce > 0))
420420 then {
421421 let cB = cj(ce, cf, bK, bL, (bM + cc), (bN + cd), cm, aT, bF, bG, cn)
422422 let cC = cB._1
423423 let ct = cB._2
424424 let cu = cB._3
425425 let aY = cB._4
426426 let cq = cB._5
427427 let cD = cB._6
428428 let cw = cB._7
429429 $Tuple7((cA + cC), cw, ct, cu, aY, cq, cD)
430430 }
431431 else $Tuple7(cA, 0, (bM + cc), (bN + cd), 0, 0, unit)
432432 }
433433
434434
435435 @Callable(az)
436436 func calcLPReplenishDiffPropREADONLY (cE,cF,cG,cH) = {
437437 let cI = by(az.caller)
438438 let bz = cI._1
439439 let bA = cI._2
440440 let bo = cI._3
441441 let bp = cI._4
442442 let bB = cI._5
443443 let cJ = bu(az.caller, bo, bp)
444444 let bM = cJ._1
445445 let bN = cJ._2
446446 let cK = cJ._3
447447 let cL = cJ._4
448448 let cm = cJ._5
449449 let bI = parseIntValue(cF[0])
450450 let bJ = parseIntValue(cF[1])
451451 let cn = parseIntValue(cF[2])
452452 let cM = bC(az.caller, az.originCaller)
453453 let aT = cM._1
454454 let bF = cM._2
455455 let bG = cM._3
456456 let cN = cy(bI, bJ, bo, bp, bM, bN, cm, aT, bF, bG, cn)
457457 let cO = cN._1
458458 let cw = cN._2
459459 let ct = cN._3
460460 let cu = cN._4
461461 let aY = cN._5
462462 let cq = cN._6
463463 let ay = cN._7
464464 $Tuple2(nil, $Tuple2(nil, [cO, cw, ct, cu, aY, cq, ay]))
465465 }
466466
467467
468468
469469 @Callable(az)
470470 func withdrawREADONLY (cE,cF,cG,cH) = {
471471 let cP = by(az.caller)
472472 let bz = cP._1
473473 let bA = cP._2
474474 let bo = cP._3
475475 let bp = cP._4
476476 let bB = cP._5
477477 let cQ = bu(az.caller, bo, bp)
478478 let bm = cQ._1
479479 let bn = cQ._2
480480 let bk = cQ._3
481481 let bl = cQ._4
482482 let bO = cQ._5
483483 let cR = parseIntValue(cF[0])
484484 let cS = if ((size(cF) == 3))
485485 then $Tuple2(parseIntValue(cF[1]), parseIntValue(cF[2]))
486486 else $Tuple2(bm, bn)
487487 let bM = cS._1
488488 let bN = cS._2
489489 let cT = fraction(cR, bM, bO)
490490 let cU = fraction(cR, bN, bO)
491491 $Tuple2(nil, $Tuple2(nil, [cT, cU]))
492492 }
493493
494494
495495
496496 @Callable(az)
497497 func init (cE,cF,cG,cH) = {
498498 let bD = Address(cE)
499499 let cV = $Tuple2(cG[0], bi(cH[0]))
500500 let cc = cV._1
501501 let cW = cV._2
502502 let cX = $Tuple2(cG[1], bi(cH[1]))
503503 let cd = cX._1
504504 let cY = cX._2
505505 if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
506506 then throw("Only admin can call this function")
507507 else if ((size(cF) != 1))
508508 then throw("Wrong args size")
509509 else if (isDefined(getBoolean(bD, c)))
510510 then throw("DApp is already active")
511511 else if ((cW == cY))
512512 then throw("Assets must be different")
513513 else {
514514 let cZ = aA(cW)
515515 let bQ = cZ._1
516516 let bR = cZ._2
517517 let bS = cZ._3
518518 let da = aA(cY)
519519 let bU = da._1
520520 let bV = da._2
521521 let bW = da._3
522522 let db = (cF[0] == "true")
523523 let dc = ((("s" + take(bR, 7)) + "_") + take(bV, 7))
524524 let dd = ((((("ShareToken of SwopFi protocol for " + bR) + " and ") + bV) + " at address ") + toString(this))
525525 let ci = ((bS + bW) / 2)
526526 let de = pow(cc, bS, 5, 1, bS, DOWN)
527527 let df = pow(cd, bW, 5, 1, bW, DOWN)
528528 let dg = pow(10, 0, ci, 0, 0, DOWN)
529529 let dh = fraction(de, df, dg)
530530 let di = Issue(dc, dd, dh, ci, true)
531531 let dj = calculateAssetId(di)
532532 let dk = if (contains(ag, bQ))
533533 then invoke(az.caller, "stakeUnstake", [true, cc, bQ], nil)
534534 else 0
535535 if ((dk == dk))
536536 then {
537537 let dl = if (contains(ag, bU))
538538 then invoke(az.caller, "stakeUnstake", [true, cd, bU], nil)
539539 else 0
540540 if ((dl == dl))
541541 then {
542542 let dm = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bQ), StringEntry(f, bU), IntegerEntry(g, cc), IntegerEntry(h, cd), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), di, StringEntry(k, toBase58String(dj)), IntegerEntry(l, dh), ScriptTransfer(bD, dh, dj)]
543543 if (db)
544544 then $Tuple2(nil, $Tuple2((dm ++ [BooleanEntry(o, db), IntegerEntry(p, (ak + (am * al)))]), nil))
545545 else $Tuple2(nil, $Tuple2(dm, nil))
546546 }
547547 else throw("Strict value is not equal to itself.")
548548 }
549549 else throw("Strict value is not equal to itself.")
550550 }
551551 }
552552
553553
554554
555555 @Callable(az)
556556 func initWithInitRatio (cE,cF,cG,cH) = {
557557 let bD = Address(cE)
558558 let dn = $Tuple5(parseIntValue(cF[0]), parseIntValue(cF[1]), cF[2], cF[3], (cF[4] == "true"))
559559 let do = dn._1
560560 let dp = dn._2
561561 let dq = dn._3
562562 let dr = dn._4
563563 let db = dn._5
564564 if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
565565 then throw("Only admin can call this function")
566566 else if ((size(cF) != 5))
567567 then throw("Wrong args size")
568568 else if (isDefined(getBoolean(bD, c)))
569569 then throw("DApp is already active")
570570 else if ((dq == dr))
571571 then throw("Assets must be different")
572572 else {
573573 let ds = aA(dq)
574574 let bQ = ds._1
575575 let bR = ds._2
576576 let bS = ds._3
577577 let dt = aA(dr)
578578 let bU = dt._1
579579 let bV = dt._2
580580 let bW = dt._3
581581 let dc = ((("s" + take(bR, 7)) + "_") + take(bV, 7))
582582 let dd = ((((("ShareToken of SwopFi protocol for " + bR) + " and ") + bV) + " at address ") + toString(this))
583583 let ci = ((bS + bW) / 2)
584584 let dh = 0
585585 let di = Issue(dc, dd, dh, ci, true)
586586 let dj = calculateAssetId(di)
587587 let dm = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bQ), StringEntry(f, bU), IntegerEntry(i, do), IntegerEntry(j, dp), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), di, StringEntry(k, toBase58String(dj)), IntegerEntry(l, dh)]
588588 if (db)
589589 then $Tuple2(nil, $Tuple2((dm ++ [BooleanEntry(o, db), IntegerEntry(p, (ak + (am * al)))]), nil))
590590 else $Tuple2(nil, $Tuple2(dm, nil))
591591 }
592592 }
593593
594594
595595
596596 @Callable(az)
597597 func keepLimitForFirstHarvest (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
598598 then throw("Only admin can call this function")
599599 else if ((size(cF) != 1))
600600 then throw("Wrong args size")
601601 else {
602602 let du = parseIntValue(cF[0])
603603 $Tuple2(nil, $Tuple2([IntegerEntry(q, du)], nil))
604604 }))
605605
606606
607607
608608 @Callable(az)
609609 func exchange (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
610610 let bD = Address(cE)
611611 let dv = $Tuple2(cG[0], bi(cH[0]))
612612 let aP = dv._1
613613 let ck = dv._2
614614 let aQ = parseIntValue(cF[0])
615615 let dw = by(az.caller)
616616 let bz = dw._1
617617 let bA = dw._2
618618 let bo = dw._3
619619 let bp = dw._4
620620 let dx = bu(az.caller, bo, bp)
621621 let bm = dx._1
622622 let bn = dx._2
623623 let bk = dx._3
624624 let bl = dx._4
625625 if ((size(cF) != 1))
626626 then throw("Wrong args size")
627627 else if (if ((bm == 0))
628628 then true
629629 else (bn == 0))
630630 then throw("Can't exchange with zero balance")
631631 else if ((0 >= aQ))
632632 then throw(("Minimal amount to receive must be positive. Actual: " + toString(aQ)))
633633 else if ((size(cG) != 1))
634634 then throw("One attached payment expected")
635635 else if (!(containsElement([bo, bp], ck)))
636636 then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
637637 else if (if ((bm > bk))
638638 then true
639639 else (bn > bl))
640640 then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
641641 else {
642642 let dy = bC(az.caller, az.originCaller)
643643 let aT = dy._1
644644 let bF = dy._2
645645 let bG = dy._3
646646 let dz = if ((ck == bo))
647647 then aO(aP, aQ, bm, bn, aT, bF, bG)
648648 else aO(aP, aQ, bn, bm, aT, bF, bG)
649649 let aW = dz._1
650650 let aX = dz._2
651651 let aY = dz._3
652652 let aZ = dz._4
653653 let dA = if ((ck == bo))
654654 then $Tuple3((bm + aP), (((bn - aX) - aY) - aZ), bp)
655655 else $Tuple3((((bm - aX) - aY) - aZ), (bn + aP), bo)
656656 let ct = dA._1
657657 let cu = dA._2
658658 let dB = dA._3
659659 let dC = if ((ck == bo))
660660 then $Tuple2(aP, ((aX + aY) + aZ))
661661 else $Tuple2(((aX + aY) + aZ), aP)
662662 let dD = dC._1
663663 let dE = dC._2
664664 let dk = if (contains(ag, bz))
665665 then invoke(az.caller, "stakeUnstake", [(ck == bo), dD, bz], nil)
666666 else 0
667667 if ((dk == dk))
668668 then {
669669 let dl = if (contains(ag, bA))
670670 then invoke(az.caller, "stakeUnstake", [(ck == bp), dE, bA], nil)
671671 else 0
672672 if ((dl == dl))
673673 then $Tuple2(nil, $Tuple2([IntegerEntry(g, ct), IntegerEntry(h, cu), ScriptTransfer(bD, aX, dB), ScriptTransfer(Z, aY, dB), ScriptTransfer(aa, aZ, dB)], [aX, dB]))
674674 else throw("Strict value is not equal to itself.")
675675 }
676676 else throw("Strict value is not equal to itself.")
677677 }
678678 })))
679679
680680
681681
682682 @Callable(az)
683683 func replenishWithTwoTokens (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
684684 let bD = Address(cE)
685685 let cW = bi(cH[0])
686686 let cY = bi(cH[1])
687687 let dF = (cF[0] == "true")
688688 let dG = parseIntValue(cF[1])
689689 let dH = by(az.caller)
690690 let bz = dH._1
691691 let bA = dH._2
692692 let bo = dH._3
693693 let bp = dH._4
694694 let bB = dH._5
695695 let dI = bu(az.caller, bo, bp)
696696 let bm = dI._1
697697 let bn = dI._2
698698 let bk = dI._3
699699 let bl = dI._4
700700 let bO = dI._5
701701 if ((size(cF) != 2))
702702 then throw("Wrong args size")
703703 else if (if ((size(cG) != 2))
704704 then (size(cG) != 3)
705705 else false)
706706 then throw("Two or three payments expected")
707707 else if (if ((cW != bo))
708708 then true
709709 else (cY != bp))
710710 then throw(((("Incorrect assets attached. Expected: " + bz) + " and ") + bA))
711711 else if (if ((bm > bk))
712712 then true
713713 else (bn > bl))
714714 then $Tuple2(nil, ([ScriptTransfer(bD, cG[0], cW), ScriptTransfer(bD, cG[1], cY)] ++ (if ((size(cG) == 3))
715715 then [AttachedPayment(if ((cH[2] == base58''))
716716 then unit
717717 else cH[2], cG[2])]
718718 else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
719719 else {
720720 let dJ = bH(cG[0], cG[1], cW, cY, bm, bn, bO)
721721 let ch = dJ._1
722722 let ce = dJ._2
723723 let cf = dJ._3
724724 let cc = dJ._4
725725 let cd = dJ._5
726726 if ((ch == 0))
727727 then throw("Too small amount to replenish")
728728 else if ((0 > ce))
729729 then throw("Change < 0")
730730 else {
731731 let dk = if (contains(ag, bz))
732732 then invoke(az.caller, "stakeUnstake", [true, cc, bz], nil)
733733 else 0
734734 if ((dk == dk))
735735 then {
736736 let dl = if (contains(ag, bA))
737737 then invoke(az.caller, "stakeUnstake", [true, cd, bA], nil)
738738 else 0
739739 if ((dl == dl))
740740 then {
741741 let dK = if (dF)
742742 then {
743743 let dL = ([AttachedPayment(bB, ch)] ++ (if ((size(cG) == 3))
744744 then [AttachedPayment(if ((cH[2] == base58''))
745745 then unit
746746 else cH[2], cG[2])]
747747 else nil))
748748 let dM = invoke(az.caller, "reissueShareToken", [ch], nil)
749749 if ((dM == dM))
750750 then {
751751 let dN = invoke(ad, "lockShareTokensFromPool", [cE, toString(az.caller), dG], dL)
752752 if ((dN == dN))
753753 then nil
754754 else throw("Strict value is not equal to itself.")
755755 }
756756 else throw("Strict value is not equal to itself.")
757757 }
758758 else [Reissue(bB, ch, true), ScriptTransfer(bD, ch, bB)]
759759 $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bm + cc)), IntegerEntry(h, (bn + cd)), IntegerEntry(l, (bO + ch)), ScriptTransfer(bD, ce, cf)] ++ dK), nil))
760760 }
761761 else throw("Strict value is not equal to itself.")
762762 }
763763 else throw("Strict value is not equal to itself.")
764764 }
765765 }
766766 })))
767767
768768
769769
770770 @Callable(az)
771771 func replenishWithOneToken (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
772772 let bD = Address(cE)
773773 let ck = bi(cH[0])
774774 let aP = cG[0]
775775 let cn = parseIntValue(cF[0])
776776 let dF = (cF[1] == "true")
777777 let dG = parseIntValue(cF[2])
778778 let dO = by(az.caller)
779779 let bz = dO._1
780780 let bA = dO._2
781781 let bo = dO._3
782782 let bp = dO._4
783783 let bB = dO._5
784784 let dP = bu(az.caller, bo, bp)
785785 let bm = dP._1
786786 let bn = dP._2
787787 let bk = dP._3
788788 let bl = dP._4
789789 let bO = dP._5
790790 let bX = ((bm + bn) == 0)
791791 if ((size(cF) != 3))
792792 then throw("Wrong args size")
793793 else if (if ((size(cG) != 1))
794794 then (size(cG) != 2)
795795 else false)
796796 then throw("Two or one attached assets expected")
797797 else if (if ((ck != bo))
798798 then (ck != bp)
799799 else false)
800800 then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
801801 else if (bX)
802802 then throw("For initial exchanger you need to use two tokens")
803803 else if (if ((bm > bk))
804804 then true
805805 else (bn > bl))
806806 then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ (if ((size(cG) == 2))
807807 then [AttachedPayment(if ((cH[2] == base58''))
808808 then unit
809809 else cH[2], cG[2])]
810810 else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
811811 else {
812812 let dQ = bC(az.caller, az.originCaller)
813813 let aT = dQ._1
814814 let bF = dQ._2
815815 let bG = dQ._3
816816 let dR = aA(ck)
817817 let dS = dR._1
818818 let dT = dR._2
819819 let dU = cj(aP, ck, bo, bp, bm, bn, bO, aT, bF, bG, cn)
820820 let ch = dU._1
821821 let ct = dU._2
822822 let cu = dU._3
823823 let dV = dU._4
824824 let aZ = dU._5
825825 let dW = dU._6
826826 let dX = if ((dW == bo))
827827 then bz
828828 else bA
829829 if ((ch == 0))
830830 then throw("Too small amount to replenish")
831831 else {
832832 let dk = if (contains(ag, dS))
833833 then invoke(az.caller, "stakeUnstake", [true, aP, dS], nil)
834834 else 0
835835 if ((dk == dk))
836836 then {
837837 let dl = if (contains(ag, dX))
838838 then invoke(az.caller, "stakeUnstake", [false, (dV + aZ), dX], nil)
839839 else 0
840840 if ((dl == dl))
841841 then {
842842 let dK = if (dF)
843843 then {
844844 let dL = ([AttachedPayment(bB, ch)] ++ (if ((size(cG) == 2))
845845 then [AttachedPayment(if ((cH[1] == base58''))
846846 then unit
847847 else cH[1], cG[1])]
848848 else nil))
849849 let dM = invoke(az.caller, "reissueShareToken", [ch], nil)
850850 if ((dM == dM))
851851 then {
852852 let dN = invoke(ad, "lockShareTokensFromPool", [cE, toString(az.caller), dG], dL)
853853 if ((dN == dN))
854854 then nil
855855 else throw("Strict value is not equal to itself.")
856856 }
857857 else throw("Strict value is not equal to itself.")
858858 }
859859 else [Reissue(bB, ch, true), ScriptTransfer(bD, ch, bB)]
860860 $Tuple2(nil, $Tuple2(([IntegerEntry(g, ct), IntegerEntry(h, cu), IntegerEntry(l, (bO + ch)), ScriptTransfer(Z, dV, dW), ScriptTransfer(aa, aZ, dW)] ++ dK), nil))
861861 }
862862 else throw("Strict value is not equal to itself.")
863863 }
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 }
867867 })))
868868
869869
870870
871871 @Callable(az)
872872 func withdraw (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
873873 let bD = Address(cE)
874874 let dY = by(az.caller)
875875 let bz = dY._1
876876 let bA = dY._2
877877 let bo = dY._3
878878 let bp = dY._4
879879 let bB = dY._5
880880 let dZ = bu(az.caller, bo, bp)
881881 let bm = dZ._1
882882 let bn = dZ._2
883883 let bk = dZ._3
884884 let bl = dZ._4
885885 let bO = dZ._5
886886 let ea = if ((size(cG) == 1))
887887 then {
888888 let eb = bi(cH[0])
889889 if ((eb != bB))
890890 then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
891891 else $Tuple2(cG[0], eb)
892892 }
893893 else $Tuple2(0, bB)
894894 let aP = ea._1
895895 let ck = ea._2
896896 if ((size(cF) != 1))
897897 then throw("Wrong args size")
898898 else if ((size(cG) > 1))
899899 then throw("One attached payment expected")
900900 else if (if ((bm > bk))
901901 then true
902902 else (bn > bl))
903903 then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
904904 else {
905905 let ec = parseIntValue(valueOrElse(cF[0], "0"))
906906 let ed = if ((ec > 0))
907907 then invoke(ad, "withdrawShareTokensFromPool", [cE, toString(az.caller), ec], nil)
908908 else 0
909909 if ((ed == ed))
910910 then {
911911 let cR = (aP + ec)
912912 let cT = fraction(cR, bm, bO)
913913 let cU = fraction(cR, bn, bO)
914914 let dk = if (contains(ag, bz))
915915 then invoke(az.caller, "stakeUnstake", [false, cT, bz], nil)
916916 else 0
917917 if ((dk == dk))
918918 then {
919919 let dl = if (contains(ag, bA))
920920 then invoke(az.caller, "stakeUnstake", [false, cU, bA], nil)
921921 else 0
922922 if ((dl == dl))
923923 then $Tuple2([ScriptTransfer(az.caller, ec, bB)], $Tuple2([IntegerEntry(g, (bm - cT)), IntegerEntry(h, (bn - cU)), IntegerEntry(l, (bO - cR)), Burn(bB, cR), ScriptTransfer(bD, cT, bo), ScriptTransfer(bD, cU, bp)], nil))
924924 else throw("Strict value is not equal to itself.")
925925 }
926926 else throw("Strict value is not equal to itself.")
927927 }
928928 else throw("Strict value is not equal to itself.")
929929 }
930930 }))
931931
932932
933933
934934 @Callable(az)
935935 func withdrawOneToken (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
936936 let bD = Address(cE)
937937 let ee = if ((cF[0] == ""))
938938 then unit
939939 else fromBase58String(cF[0])
940940 let ef = by(az.caller)
941941 let bz = ef._1
942942 let bA = ef._2
943943 let bo = ef._3
944944 let bp = ef._4
945945 let bB = ef._5
946946 let eg = bu(az.caller, bo, bp)
947947 let bm = eg._1
948948 let bn = eg._2
949949 let bk = eg._3
950950 let bl = eg._4
951951 let bO = eg._5
952952 let eh = if ((size(cG) == 1))
953953 then {
954954 let eb = bi(cH[0])
955955 if ((eb != bB))
956956 then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
957957 else $Tuple2(cG[0], eb)
958958 }
959959 else $Tuple2(0, bB)
960960 let aP = eh._1
961961 let ck = eh._2
962962 let ei = parseIntValue(cF[1])
963963 if ((size(cF) != 3))
964964 then throw("Wrong args size")
965965 else if ((size(cG) > 1))
966966 then throw("One attached payment expected")
967967 else if ((ck != bB))
968968 then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
969969 else if (!(containsElement([bo, bp], ee)))
970970 then throw("Incorrect withdraw asset.")
971971 else if (if ((bm > bk))
972972 then true
973973 else (bn > bl))
974974 then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
975975 else {
976976 let ec = parseIntValue(valueOrElse(cF[2], "0"))
977977 let ed = if ((ec > 0))
978978 then invoke(ad, "withdrawShareTokensFromPool", [cE, toString(az.caller), ec], nil)
979979 else 0
980980 if ((ed == ed))
981981 then {
982982 let cR = (aP + ec)
983983 let cT = fraction(cR, bm, bO)
984984 let cU = fraction(cR, bn, bO)
985985 let ej = bC(az.caller, az.originCaller)
986986 let aT = ej._1
987987 let bF = ej._2
988988 let bG = ej._3
989989 let ek = if ((ee == bo))
990990 then aO(cU, ei, (bn - cU), (bm - cT), aT, bF, bG)
991991 else aO(cT, ei, (bm - cT), (bn - cU), aT, bF, bG)
992992 let aW = ek._1
993993 let aX = ek._2
994994 let aY = ek._3
995995 let aZ = ek._4
996996 let el = if ((ee == bo))
997997 then {
998998 let em = if (contains(ag, bz))
999999 then invoke(az.caller, "stakeUnstake", [false, (((cT + aX) + aY) + aZ), bz], nil)
10001000 else 0
10011001 if ((em == em))
10021002 then $Tuple4(((((bm - cT) - aX) - aY) - aZ), bn, bo, [ScriptTransfer(bD, (cT + aX), bo)])
10031003 else throw("Strict value is not equal to itself.")
10041004 }
10051005 else {
10061006 let em = if (contains(ag, bA))
10071007 then invoke(az.caller, "stakeUnstake", [false, (((cU + aX) + aY) + aZ), bA], nil)
10081008 else 0
10091009 if ((em == em))
10101010 then $Tuple4(bm, ((((bn - cU) - aX) - aY) - aZ), bp, [ScriptTransfer(bD, (cU + aX), bp)])
10111011 else throw("Strict value is not equal to itself.")
10121012 }
10131013 let ct = el._1
10141014 let cu = el._2
10151015 let en = el._3
10161016 let eo = el._4
10171017 $Tuple2([ScriptTransfer(az.caller, ec, bB)], $Tuple2(([IntegerEntry(g, ct), IntegerEntry(h, cu), IntegerEntry(l, (bO - cR)), Burn(bB, cR), ScriptTransfer(Z, aY, en), ScriptTransfer(aa, aZ, en)] ++ eo), nil))
10181018 }
10191019 else throw("Strict value is not equal to itself.")
10201020 }
10211021 })))
10221022
10231023
10241024
10251025 @Callable(az)
10261026 func takeIntoAccountExtraFunds (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
10271027 let ep = by(az.caller)
10281028 let bz = ep._1
10291029 let bA = ep._2
10301030 let bo = ep._3
10311031 let bp = ep._4
10321032 let eq = if (if ((bo == ae))
10331033 then true
10341034 else (bp == ae))
10351035 then invoke(az.caller, "claimNetrinoRewards", nil, nil)
10361036 else 0
10371037 if ((eq == eq))
10381038 then {
10391039 let er = bu(az.caller, bo, bp)
10401040 let bm = er._1
10411041 let bn = er._2
10421042 let bk = er._3
10431043 let bl = er._4
10441044 let es = (bk - bm)
10451045 let et = (bl - bn)
10461046 if ((size(cF) != 0))
10471047 then throw("Wrong args size")
10481048 else if ((Z != az.originCaller))
10491049 then throw("Only the wallet can call this function")
10501050 else if (if ((0 > es))
10511051 then true
10521052 else (0 > et))
10531053 then aG("Enroll amount negative")
10541054 else if (if ((es == 0))
10551055 then (et == 0)
10561056 else false)
10571057 then throw("No money to take")
10581058 else {
10591059 let dk = if (if (contains(ag, bz))
10601060 then (es > 0)
10611061 else false)
10621062 then invoke(az.caller, "stakeUnstake", [true, es, bz], nil)
10631063 else 0
10641064 if ((dk == dk))
10651065 then {
10661066 let dl = if (if (contains(ag, bA))
10671067 then (et > 0)
10681068 else false)
10691069 then invoke(az.caller, "stakeUnstake", [true, et, bA], nil)
10701070 else 0
10711071 if ((dl == dl))
10721072 then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bm + es)), IntegerEntry(h, (bn + et))], nil))
10731073 else throw("Strict value is not equal to itself.")
10741074 }
10751075 else throw("Strict value is not equal to itself.")
10761076 }
10771077 }
10781078 else throw("Strict value is not equal to itself.")
10791079 }))
10801080
10811081
10821082 @Verifier(eu)
10831083 func ev () = {
10841084 let ew = {
10851085 let ex = if (sigVerify(eu.bodyBytes, eu.proofs[0], V))
10861086 then 1
10871087 else 0
10881088 let ey = if (sigVerify(eu.bodyBytes, eu.proofs[1], W))
10891089 then 1
10901090 else 0
10911091 let ez = if (sigVerify(eu.bodyBytes, eu.proofs[2], X))
10921092 then 1
10931093 else 0
10941094 (((ex + ey) + ez) >= 2)
10951095 }
10961096 ew
10971097 }
10981098

github/deemru/w8io/169f3d6 
104.52 ms