tx · DtFwinjC8cbkAWcPjTwRSSqTs1VXSbLgXbVWL43u6jTs

3N2yNznNNBCevaJdCMr8XhM87sKKuBjMdEq:  -0.10000000 Waves

2022.10.10 12:52 [2266084] smart account 3N2yNznNNBCevaJdCMr8XhM87sKKuBjMdEq > SELF 0.00000000 Waves

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

github/deemru/w8io/169f3d6 
85.56 ms