tx · 3XHBoMsryPB4XqoSBmRCwemQaYrZJVxh7GPM5GTDUU92

3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5:  -0.01800000 Waves

2023.09.20 10:59 [2763426] smart account 3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5 > SELF 0.00000000 Waves

{ "type": 13, "id": "3XHBoMsryPB4XqoSBmRCwemQaYrZJVxh7GPM5GTDUU92", "fee": 1800000, "feeAssetId": null, "timestamp": 1695196848650, "version": 2, "chainId": 84, "sender": "3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5", "senderPublicKey": "2LmNyaN5YAXdg9C5vsXcTLU66hsW2KUNPsN7KcHBYhUo", "proofs": [ "ynwD6S3bD28TGqZk4dLFqbPVzoUY8FJgLysFxnaTWVwy4wdBfroNr78sq6QY9jUwSqA2CCE4CxfEdYTU54yK8dm" ], "script": "base64:BgIgCAISAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgEAA5kQXBwU2luY2VTdGFydADA9/eMqjEAClhUTkFzc2V0SUQBIAhlhLcP8IpqGvPiaOguCJAkw9MnWAPNLPYuXgvf2hWkABFDb2xsZWN0RmVlQWRkcmVzcwkApwgBASBSg9mgi9eQkjsz5eBARHIbc7Hg/F4fmB0sxZ6ySMfiIAEJY291bnRkYXlzAAQHVFNfRGlmZgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQ5kQXBwU2luY2VTdGFydAQJZGF5bnVtYmVyCQBrAwABBQdUU19EaWZmAIC4mSkFCWRheW51bWJlcgYBaQEMUmVnaXN0ZXJQYWlyAQxFbnRlckFzc2V0SUQEBHBtdDEJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQEcG10MgkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABBApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEBVdBVkVTCQEBIQEJAQlpc0RlZmluZWQBCAUEcG10Mgdhc3NldElkBAlmZXRjaHBhaXIJAJ0IAgUEdGhpcwkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBA1hc3NldGluZm9wbXQyCQDZBAEFDEVudGVyQXNzZXRJRAQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUMRW50ZXJBc3NldElECQCsAgIJAKwCAgIGQXNzZXQgBQxFbnRlckFzc2V0SUQCDiBkb2Vzbid0IGV4aXN0BARuYW1lCAUEaW5mbwRuYW1lBAhkZWNpbWFscwgFBGluZm8IZGVjaW1hbHMECkxQZGVjaW1hbHMJAGsDCQBkAgUIZGVjaW1hbHMABgABAAIECkZpcnN0TFBRdHkJAGgCAAEJAGwGAAoAAAUKTFBkZWNpbWFscwAAAAAFB0NFSUxJTkcEEG11bHRpcGx5X2Ftb3VudHMJAGsDCAUEcG10MQZhbW91bnQIBQRwbXQyBmFtb3VudAUKRmlyc3RMUFF0eQQHZ2V0U3FydAkBBHNxcnQEBRBtdWx0aXBseV9hbW91bnRzBQpMUGRlY2ltYWxzBQpMUGRlY2ltYWxzBQdDRUlMSU5HBAdMUGlzc3VlCQDCCAUJAKwCAgkArAICAgNMUC0JAK8CAgUEbmFtZQAIAgQtWFROCQCsAgIJAKwCAgkArAICCQCsAgICA0xQLQUEbmFtZQIELVhUTgIuIGlzIGEgTGlxdWlkaXR5IFByb3ZpZGVyIFRva2VuIElzc3VlZCBBZ2FpbnN0IAUMRW50ZXJBc3NldElEBQdnZXRTcXJ0BQpMUGRlY2ltYWxzBgQETFBpZAkAuAgBBQdMUGlzc3VlAwkAAAIFCWZldGNocGFpcgUMRW50ZXJBc3NldElECQACAQIbUGFpciBBbHJlYWR5IEV4aXN0IGluIExpc3QuAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQJyVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZCBhcyBwYXltZW50LiBLaW5kbHkgQXR0YWNoIHBheW1lbnQxID0gV0FWRVMgVG9rZW4gJiBwYXltZW50MiA9IFRva2VuIHlvdSB3YW50IHRvIExpc3QuAwkBAiE9AggFBHBtdDEHYXNzZXRJZAUKWFROQXNzZXRJRAkAAgECP0luY29ycmVjdCBhc3NldCBhdHRhY2hlZCBhcyBwYXltZW50WzFdLCBwbGVhc2UgYXR0YWNoIFhUTiBvbmx5LgMJAGYCAKCNBggFBHBtdDEGYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgkArAICAhJZb3UgYXR0YWNoZWQgb25seSAJAKQDAQkAawMIBQRwbXQxBmFtb3VudAABAIDC1y8CAS4JAKQDAQkAawMIBQRwbXQxBmFtb3VudAABAICt4gQCOSBXQVZFUyBmb3IgTGlzdGluZyBpbiBwYXltZW50WzFdLCBwbGVhc2UgYXR0YWNoIDEwIFdBVkVTLgMJAQIhPQIIBQRwbXQyB2Fzc2V0SWQFDWFzc2V0aW5mb3BtdDIJAAIBAjxJbnB1dCBTdHJpbmcgJiBBdHRhY2hlZCBBc3NldElEIGluIHBheW1lbnQyIGlzIG5vdCBtYXRjaGluZy4DCQAAAgUFV0FWRVMGCQACAQJdWW91IEF0dGFjaGVkIFdBVkVTIEFzc2V0IElEIGZvciBMaXN0aW5nLCBwbGVhc2UgYXR0YWNoIFRva2VucyBZb3Ugd2FudCB0byBsaXN0IGluIHBheW1lbnRbMl0uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAUMRW50ZXJBc3NldElECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICDExpc3RpbmdfRmVlXwUMRW50ZXJBc3NldElECAUEcG10MQZhbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdnZXRTcXJ0BQpYVE5Bc3NldElECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQIBQRwbXQxBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQUKWFROQXNzZXRJRAIBXwUMRW50ZXJBc3NldElECAUEcG10MgZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBCQEJY291bnRkYXlzAAIMX0RheV9Wb2x1bWVfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQkBCWNvdW50ZGF5cwACDF9EYXlfVm9sdW1lXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQAAAkAzAgCBQdMUGlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIDTFBfBQxFbnRlckFzc2V0SUQJANgEAQUETFBpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUHZ2V0U3FydAUDbmlsAWkBDElzc3VlTFBUb2tlbgEMRW50ZXJBc3NldElEBAthZG1pbnJpZ2h0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMCD0xQX0FkbWluX1JpZ2h0cwJQTFAgQWRtaW4gUmlnaHRzIGFyZSBOb3QgSW5jbHVkZWQgaW50byBTbWFydCBDb250cmFjdC4gRGVwbG95IEFkbWluIFJpZ2h0cyBGaXJzdC4EDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAIkQXNzZXQgbm90IEZvdW5kIGluIFdoaXRlbGlzdGVkIFRva2VuBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QEBG5hbWUIBQRpbmZvBG5hbWUECGRlY2ltYWxzCAUEaW5mbwhkZWNpbWFscwQKRmlyc3RMUFF0eQkAaAIAAQkAbAYACgAACQBrAwkAZAIFCGRlY2ltYWxzAAYAAQACAAAAAAUHQ0VJTElORwQHTFBpc3N1ZQkAwggFCQCsAgIJAKwCAgIDTFAtCQCvAgIFBG5hbWUACAIELVhUTgkArAICCQCsAgIJAKwCAgkArAICAgNMUC0FBG5hbWUCBC1YVE4CLiBpcyBhIExpcXVpZGl0eSBQcm92aWRlciBUb2tlbiBJc3N1ZWQgQWdhaW5zdCAFDEVudGVyQXNzZXRJRAUKRmlyc3RMUFF0eQkAawMJAGQCBQhkZWNpbWFscwAGAAEAAgYEBExQaWQJALgIAQUHTFBpc3N1ZQMJAQIhPQIFC2FkbWlucmlnaHRzBQ1jYWxsZXJhZGRyZXNzCQACAQkArAICCQCsAgICLllvdXIgYXJlIG5vdCBhbGxvd2RlZCB0byBJc3N1ZSBMUCBUb2tlbi4gT25seSAFC2FkbWlucmlnaHRzAhggY2FuIGlzc3VlIHRoZSBMUCBUb2tlbi4DCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAh5QYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gTGlzdC4JAMwIAgUHTFBpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICA0xQXwUMRW50ZXJBc3NldElECQDYBAEFBExQaWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQFCkZpcnN0TFBRdHkFA25pbAFpARdTd2FwQXNzZXRUb1hUTlBhaXJFbnRyeQEMRW50ZXJBc3NldElEBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECNVdoaXRlbGlzdGVkIFRva2VuIGlzIHJlcXVpcmVkIGFzIEF0dGFjaGVkIHBheW1lbnRbMV0uBBljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAQPQ2hlY2tYVE5CYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQED25ld2JhbGFuY2VvZlhUTgkAawMFD0NoZWNrWFROQmFsYW5jZQURQ2hlY2tBc3NldEJhbGFuY2UJAGQCBRFDaGVja0Fzc2V0QmFsYW5jZQgFA3BtdAZhbW91bnQEFHF1YW50aXR5b2ZwcmljZWFzc2V0CQBlAgUPQ2hlY2tYVE5CYWxhbmNlBQ9uZXdiYWxhbmNlb2ZYVE4EB1N3YXBGZWUAAwQKQ3VycmVudGRheQkBCWNvdW50ZGF5cwAEEFN3YXBGZWV0b3JlY2VpdmUJAGkCCQBoAgUUcXVhbnRpdHlvZnByaWNlYXNzZXQFB1N3YXBGZWUA6AcEFHVzZXJiYWxhbmNldG9yZWNlaXZlCQBlAgkAZQIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBhTdW11cG9mQXNzZXRUb1hUTlN3YXBGZWUEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEG05ld1N1bXVwb2ZBc3NldFRvWFROU3dhcEZlZQkAZAIJAGQCBRhTdW11cG9mQXNzZXRUb1hUTlN3YXBGZWUFEFN3YXBGZWV0b3JlY2VpdmUFEFN3YXBGZWV0b3JlY2VpdmUEEVN1bXVwQXNzZXRCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAZAIFEUNoZWNrQXNzZXRCYWxhbmNlCAUDcG10BmFtb3VudAQPU3VtdXBYVE5CYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQUTmV3U3VtdXBvZlhUTkJhbGFuY2UJAGQCCQBlAgUPQ2hlY2tYVE5CYWxhbmNlBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQQEVE9QVAQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEBk5ld1RQVAkAZAIFBFRPUFQAAQQEVE9QVgQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFCkN1cnJlbnRkYXkCDF9EYXlfVm9sdW1lXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEBk5ld1RQVgkAZAIFBFRPUFYIBQNwbXQGYW1vdW50AwkAAAIFDEVudGVyQXNzZXRJRAkA2AQBBQpYVE5Bc3NldElECQACAQKFAUlucHV0IGNhbiBOZXZlciBiZSBhIFhUTiBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0ICYgQXR0YWNoIFdoaXRlbGlzdGVkIEFzc2V0IGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsxXS4DCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIIBQNwbXQHYXNzZXRJZAUKWFROQXNzZXRJRAkAAgECUllvdSBjYW4ndCBBdHRhY2ggWFROIGFzIGFuIEF0dGFjaGVkIFBheW1lbnQuIE9ubHkgV2hpdGVsaXN0ZWQgVG9rZW5zIGFyZSBhY2NlcHRlZC4DCQECIT0CCAUDcG10B2Fzc2V0SWQJANkEAQUMRW50ZXJBc3NldElECQACAQkArAICAjBJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQsIHBsZWFzZSBhdHRhY2ggb3Igc2VuZCAFDEVudGVyQXNzZXRJRAMJAAACBQ9DaGVja1hUTkJhbGFuY2UAAAkAAgECZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuAwkAAAIFEUNoZWNrQXNzZXRCYWxhbmNlAAAJAAIBAmVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAGYCAKCNBgUUcXVhbnRpdHlvZnByaWNlYXNzZXQJAAIBCQCsAgIJAKwCAgI0WW91ciBBdHRhY2hlZCBBc3NldCBBbW91bnQgaXMgdmVyeSBsb3cuIEF0dGFjaCBNb3JlIAUMRW50ZXJBc3NldElEAjogVG9rZW5zIHRvIENsYWltIHRoZSBtaW5pbXVtIEFtb3VudCBvZiAwLjEgZG9sbGFyIGF0bGVhc3QuAwkAZgIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BQ9DaGVja1hUTkJhbGFuY2UJAAIBCQCsAgIJAKwCAgIdUG9vbCBPbmx5IGhhcyBhIExpcXVpZGl0eSBvZiAJAKQDAQkAaQIFD0NoZWNrWFROQmFsYW5jZQkAbAYACgAAAAYAAAAABQdDRUlMSU5HAh4gWFROLiBBZGQgTGlxdWlkaXR5IGludG8gUG9vbC4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBRtOZXdTdW11cG9mQXNzZXRUb1hUTlN3YXBGZWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBBQpDdXJyZW50ZGF5AgxfRGF5X1ZvbHVtZV8JANgEAQUKWFROQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBQZOZXdUUFYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEBQZOZXdUUFQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBRROZXdTdW11cG9mWFROQmFsYW5jZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFFHVzZXJiYWxhbmNldG9yZWNlaXZlBQpYVE5Bc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEUNvbGxlY3RGZWVBZGRyZXNzBRBTd2FwRmVldG9yZWNlaXZlBQpYVE5Bc3NldElEBQNuaWwBaQEXU3dhcFhUTlRvQXNzZXRQYWlyRW50cnkBDEVudGVyQXNzZXRJRAQNY2FsbGVyYWRkcmVzcwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBCQCsAgIJAKwCAgIFT25seSAJANgEAQUKWFROQXNzZXRJRAIxIFhUTiBUb2tlbiBpcyByZXF1aXJlZCBhcyBhbiBBdHRhY2hlZCBwYXltZW50WzFdLgQPQ2hlY2tYVE5CYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQEEW5ld2JhbGFuY2VvZkFzc2V0CQBrAwUPQ2hlY2tYVE5CYWxhbmNlBRFDaGVja0Fzc2V0QmFsYW5jZQkAZAIFD0NoZWNrWFROQmFsYW5jZQgFA3BtdAZhbW91bnQEFHF1YW50aXR5b2ZwcmljZWFzc2V0CQBlAgURQ2hlY2tBc3NldEJhbGFuY2UFEW5ld2JhbGFuY2VvZkFzc2V0BBljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAQHU3dhcEZlZQADBBBTd2FwRmVldG9yZWNlaXZlCQBpAgkAaAIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BQdTd2FwRmVlAOgHBBR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkAZQIJAGUCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQUQU3dhcEZlZXRvcmVjZWl2ZQQYU3VtdXBvZlhUTlRvQXNzZXRTd2FwRmVlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBtOZXdTdW11cG9mWFROVG9Bc3NldFN3YXBGZWUJAGQCCQBkAgUYU3VtdXBvZlhUTlRvQXNzZXRTd2FwRmVlBRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBFTdW11cEFzc2V0QmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFk5ld1N1bXVwb2ZBc3NldEJhbGFuY2UJAGQCCQBlAgURQ2hlY2tBc3NldEJhbGFuY2UFFHF1YW50aXR5b2ZwcmljZWFzc2V0BRBTd2FwRmVldG9yZWNlaXZlBA9TdW11cFhUTkJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBROZXdTdW11cG9mWFROQmFsYW5jZQkAZAIFD0NoZWNrWFROQmFsYW5jZQgFA3BtdAZhbW91bnQEBFRPUFQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAZOZXdUUFQJAGQCBQRUT1BUAAEEBFRPUFYEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBCQEJY291bnRkYXlzAAIMX0RheV9Wb2x1bWVfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQGTmV3VFBWCQBkAgUEVE9QVggFA3BtdAZhbW91bnQDCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIFDEVudGVyQXNzZXRJRAkA2AQBBQpYVE5Bc3NldElECQACAQJ3SW5wdXQgY2FuIE5ldmVyIGJlIGEgWFROIEFzc2V0SUQuIEVudGVyIFdoaXRlbGlzdGVkIEFzc2V0SUQgaW4gaW5wdXQgJiBBdHRhY2ggWFROIGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsxXS4DCQECIT0CCAUDcG10B2Fzc2V0SWQFClhUTkFzc2V0SUQJAAIBAntZb3UgY2FuIEF0dGFjaCBYVE4gYXMgYW4gQXR0YWNoZWQgUGF5bWVudFsxXSB0byBTd2FwIFhUTiBUbyBSZXF1aXJlZCBUb2tlbi4gQW55IG90aGVyIGFzc2V0IGVsc2UgdGhhbiBYVE4gd2lsbCBiZSByZWplY3RlZC4DCQBmAgCgjQYIBQNwbXQGYW1vdW50CQACAQJZWW91ciBBdHRhY2hlZCBYVE4gQW1vdW50IGlzIHZlcnkgbG93LiBBdHRhY2ggQXRsZWFzdCAwLjEgWFROIHRvIENsYWltIHRoZSBtaW5pbXVtIFRva2Vucy4DCQAAAgUPQ2hlY2tYVE5CYWxhbmNlAAAJAAIBAmVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAAACBRFDaGVja0Fzc2V0QmFsYW5jZQAACQACAQJlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQBmAgUUcXVhbnRpdHlvZnByaWNlYXNzZXQFEUNoZWNrQXNzZXRCYWxhbmNlCQACAQkArAICCQCsAgICHVBvb2wgT25seSBoYXMgYSBMaXF1aWRpdHkgb2YgCQCkAwEFEUNoZWNrQXNzZXRCYWxhbmNlAiEgVG9rZW5zLiBBZGQgTGlxdWlkaXR5IGludG8gUG9vbC4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEBRtOZXdTdW11cG9mWFROVG9Bc3NldFN3YXBGZWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBCQEJY291bnRkYXlzAAIMX0RheV9Wb2x1bWVfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAUGTmV3VFBWCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICE1RvdGFsX29mX1BhaXJfVHhuc18FDEVudGVyQXNzZXRJRAUGTmV3VFBUCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQFFk5ld1N1bXVwb2ZBc3NldEJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAUUTmV3U3VtdXBvZlhUTkJhbGFuY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkA2QQBBQxFbnRlckFzc2V0SUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwURQ29sbGVjdEZlZUFkZHJlc3MFEFN3YXBGZWV0b3JlY2VpdmUJANkEAQUMRW50ZXJBc3NldElEBQNuaWwBaQEMQWRkTGlxdWlkaXR5AQxFbnRlckFzc2V0SUQEDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQEcG10MQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABARwbXQyCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEEGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAJ0IAgUEdGhpcwkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBA5SZWlzc3VlYXNzZXRJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICAgNMUF8FDEVudGVyQXNzZXRJRAIsTFAgVG9rZW4gaXMgTWlzc2luZyBvciBNYXkgYmUgbm90IEdlbmVyYXRlZC4ED0NoZWNrWFROQmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBBFDaGVja0Fzc2V0QmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQUKWFROQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBAxkZWNpbWFsc2luZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFDEVudGVyQXNzZXRJRAkArAICCQCsAgICBkFzc2V0IAUMRW50ZXJBc3NldElEAg4gZG9lc24ndCBleGlzdAQIZGVjaW1hbHMIBQxkZWNpbWFsc2luZm8IZGVjaW1hbHMEBGFyZzEFD0NoZWNrWFROQmFsYW5jZQQEYXJnMgURQ2hlY2tBc3NldEJhbGFuY2UEBWFyZ3MzCQBsBgkAaAIJAGkCCQBoAgUEYXJnMQDAhD0FBGFyZzIJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQdDRUlMSU5HAAAAAQAAAAAFB0NFSUxJTkcEEmJvdGhhc3NldHNkZWNpbWFscwkAZAIABgUIZGVjaW1hbHMEDXNoYXJlZGVjaW1hbHMJAGkCBRJib3RoYXNzZXRzZGVjaW1hbHMAAgQWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAkAawMFBWFyZ3MzCAUEcG10MQZhbW91bnQJAGwGAAoAAAUSYm90aGFzc2V0c2RlY2ltYWxzAAAAAAUHQ0VJTElORwQScXVhbnRpdHlvZkxQVG9rZW4xCQBsBgkAaAIJAGsDCAUEcG10MQZhbW91bnQAAQkAbAYACgAABQhkZWNpbWFscwAAAAAFB0NFSUxJTkcJAGsDCAUEcG10MgZhbW91bnQAAQkAbAYACgAAAAYAAAAABQdDRUlMSU5HAAAABQABBQ1zaGFyZWRlY2ltYWxzBQRET1dOBBBYVE5Ib2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQTTmV3WFROSG9sZGluZ0luUGFpcgkAZAIFEFhUTkhvbGRpbmdJblBhaXIIBQRwbXQyBmFtb3VudAQSQXNzZXRIb2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVTmV3QXNzZXRIb2xkaW5nSW5QYWlyCQBkAgUSQXNzZXRIb2xkaW5nSW5QYWlyCAUEcG10MQZhbW91bnQEDUxQVG9rZW5Jc3N1ZWQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEE5ld0xQVG9rZW5Jc3N1ZWQJAGQCBQ1MUFRva2VuSXNzdWVkBRJxdWFudGl0eW9mTFBUb2tlbjEDCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIFDEVudGVyQXNzZXRJRAkA2AQBBQpYVE5Bc3NldElECQACAQKQAUlucHV0IGNhbiBOZXZlciBiZSBhIFhUTiBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0IGFzIHdlbGwgYXMgaW4gcGF5bWVudFsxXSAmIEF0dGFjaCBYVE4gYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzJdLgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECnQFUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkIGFzIHBheW1lbnQgaW4gNTAlLTUwJS4gS2luZGx5IEF0dGFjaCBwYXltZW50MSA9IFRva2VuIHlvdSB3YW50IHRvIGFkZCBmb3IgTGlxdWlkaXR5ICYgcGF5bWVudDIgPSBFcXVpdmFsZW50IEFtb3VudCBvZiBYVE4gVG9rZW4uAwkAAAIIBQRwbXQxB2Fzc2V0SWQFClhUTkFzc2V0SUQJAAIBAnZZb3UgQXR0YWNoZWQgWFROIGFzc2V0IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggb25seSB3aGl0ZWxpc3RlZCBUb2tlbiBpbiBwYXltZW50WzFdIGFsb25nIHdpdGggWFROIGluIHBheW1lbnRbMl0uAwkBAiE9AggFBHBtdDEHYXNzZXRJZAkA2QQBBQxFbnRlckFzc2V0SUQJAAIBAmtJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQgZm9yIExpcXVpZGl0eSBpbiBwYXltZW50WzFdLCBwbGVhc2UgYXR0YWNoIFN0cmluZyBBc3NldCBvciBXaGl0ZWxpc3RlZCBUb2tlbiBvbmx5LgMJAQIhPQIIBQRwbXQxB2Fzc2V0SWQJANkEAQUMRW50ZXJBc3NldElECQACAQJrSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkIGZvciBMaXF1aWRpdHkgaW4gcGF5bWVudFsxXSwgcGxlYXNlIGF0dGFjaCBTdHJpbmcgQXNzZXQgb3IgV2hpdGVsaXN0ZWQgVG9rZW4gb25seS4DCQECIT0CCAUEcG10Mgdhc3NldElkBQpYVE5Bc3NldElECQACAQJpV3JvbmcgQXNzZXQgQXR0YWNoZWQgaW4gcGF5bWVudHNbMl0sIFBsZWFzZSBhdHRhY2ggcGF5bWVudFsxXSA9IExpcXVpZGl0eSBUb2tlbiAmIHBheW1lbnRbMl0gPSBYVE4gVG9rZW4uAwkAZgIAwJaxAggFBHBtdDIGYW1vdW50CQACAQJTcGxlYXNlIGF0dGFjaCBhdGxlYXN0IDUgWFROIGluIHBheW1lbnRbMl0gJiBFcXVpdmFsZW50IHdvcnRoIG9mIFRva2VuIGluIHBheW1lbnRbMV0DCQECIT0CCAUEcG10MgZhbW91bnQFFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAl5BdHRhY2hlZCBwYXltZW50WzJdIHF0eSBpcyBub3QgbWF0Y2hpbmcgYXMgcGVyIGF0dGFjaGVkIHBheW1lbnRbMV0ucGF5bWVudFsyXSBtdXN0IGJlIGFzIGludCBbCQCkAwEFFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQCBV0gb3IgCQCkAwEJAGsDBRZxdWFudGl0eW9mRW50ZXJBc3NldElEAAEAwIQ9AgEuCQCyAgIJAKQDAQUWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAAGAgUgWFROLgMJAGYCAAEFEnF1YW50aXR5b2ZMUFRva2VuMQkAAgEJAKwCAgkArAICAiBMUCBUb2tlbiBPdXRjb21lIGlzIGdvaW5nIGJlbG93IAkApAMBBQ1zaGFyZWRlY2ltYWxzAjogRGVjaW1hbHMuIFBsZWFzZSBBdHRhY2ggbWluLiAxIExQIHRva2VuIG9yIDUgWFROIEF0bGVhc3QuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQFE05ld1hUTkhvbGRpbmdJblBhaXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUVTmV3QXNzZXRIb2xkaW5nSW5QYWlyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICCVRvdGFsX0xQXwUMRW50ZXJBc3NldElEBRBOZXdMUFRva2VuSXNzdWVkCQDMCAIJAQdSZWlzc3VlAwUOUmVpc3N1ZWFzc2V0SWQFEnF1YW50aXR5b2ZMUFRva2VuMQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRJxdWFudGl0eW9mTFBUb2tlbjEFDlJlaXNzdWVhc3NldElkBQNuaWwBaQEPUmVtb3ZlTGlxdWlkaXR5AQxFbnRlckFzc2V0SUQEDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQI6Tm8gcGF5bWVudCBhdHRhY2hlZCwgUGxlYXNlIEF0dGFjaCBMUCBUb2tlbiBhcyBwYXltZW50WzFdLgQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQEElJlaXNzdWVhYmxlYXNzZXRJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICAgNMUF8FDEVudGVyQXNzZXRJRAIlTFAgVG9rZW4gaXMgTWlzc2luZyBvciBub3QgR2VuZXJhdGVkLgQMZGVjaW1hbHNpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QECGRlY2ltYWxzCAUMZGVjaW1hbHNpbmZvCGRlY2ltYWxzBBJib3RoYXNzZXRzZGVjaW1hbHMJAGQCAAYFCGRlY2ltYWxzBA1zaGFyZWRlY2ltYWxzCQBpAgUSYm90aGFzc2V0c2RlY2ltYWxzAAIEEkNoZWNrVG90YWxMUEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAQQVXNlckxQUGVyY2VudGFnZQkAbAYJAGsDCAUDcG10BmFtb3VudAkAbAYACgAAAAgAAAAABQdDRUlMSU5HBRJDaGVja1RvdGFsTFBBbW91bnQABgABAAAABgUHQ0VJTElORwQPQ2hlY2tYVE5CYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQEDlVzZXJMUFdvcnRoWFROCQBrAwUPQ2hlY2tYVE5CYWxhbmNlBRBVc2VyTFBQZXJjZW50YWdlCQBsBgAKAAAACAAAAAAFB0NFSUxJTkcEEFVzZXJMUFdvcnRoQXNzZXQJAGsDBRFDaGVja0Fzc2V0QmFsYW5jZQUQVXNlckxQUGVyY2VudGFnZQkAbAYACgAAAAgAAAAABQdDRUlMSU5HBBBYVE5Ib2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQTTmV3WFROSG9sZGluZ0luUGFpcgkAZQIFEFhUTkhvbGRpbmdJblBhaXIFDlVzZXJMUFdvcnRoWFROBBJBc3NldEhvbGRpbmdJblBhaXIEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQUKWFROQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVOZXdBc3NldEhvbGRpbmdJblBhaXIJAGUCBRJBc3NldEhvbGRpbmdJblBhaXIFEFVzZXJMUFdvcnRoQXNzZXQEDUxQVG9rZW5Jc3N1ZWQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEE5ld0xQVG9rZW5Jc3N1ZWQJAGUCBQ1MUFRva2VuSXNzdWVkCAUDcG10BmFtb3VudAMJAQIhPQIFGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFDEVudGVyQXNzZXRJRAkAAgECI1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3QuAwkAAAIJANkEAQUMRW50ZXJBc3NldElEBQpYVE5Bc3NldElECQACAQJqRG9uJ3QgY2hvb3NlIFhUTiBBc3NldElEIGFzIElucHV0LCBPbmx5IFdoaXRlbGlzdGVkIEFzc2V0IGFzIElucHV0IFN0cmluZyAmIEF0dGFjaCBMUCBUb2tlbnMgYXMgcGF5bWVudFsxXQMJAQIhPQIIBQNwbXQHYXNzZXRJZAUSUmVpc3N1ZWFibGVhc3NldElkCQACAQJHV3JvbmcgQXNzZXQgaXMgYXR0YWNoZWQgaW4gcGF5bWVudFsxXSBvciBMUCBUb2tlbiBOb3QgRm91bmQgb3IgTWlzc2luZy4DCQBmAgABBRBVc2VyTFBQZXJjZW50YWdlCQACAQIuWW91ciBMUCBUb2tlbiBhbW91bnQgJSBpcyB2ZXJ5IGxvdyB0byBjb252ZXJ0LgMJAGYCAAEFDlVzZXJMUFdvcnRoWFROCQACAQJRWW91ciBMUCBUb2tlbiBjb252ZXJzaW9uIGFtb3VudCBpcyB2ZXJ5IGxvdyB0byBjb252ZXJ0IG9yIGxlc3MgdGhhbiAwLjAwMDAwMSBYVE4uAwkAZgIAAQUQVXNlckxQV29ydGhBc3NldAkAAgECXFlvdXIgTFAgVG9rZW4gY29udmVyc2lvbiBhbW91bnQgaXMgdmVyeSBsb3cgdG8gY29udmVydCBvciBsZXNzIHRoYW4gZnJhY3Rpb24gdmFsdWUgb2YgVG9rZW4uCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXaXRoZHJhd19MUF9QZXJjZW50YWdlBRBVc2VyTFBQZXJjZW50YWdlCQDMCAIJAQRCdXJuAgUSUmVpc3N1ZWFibGVhc3NldElkCAUDcG10BmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUQTmV3TFBUb2tlbklzc3VlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBRNOZXdYVE5Ib2xkaW5nSW5QYWlyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQFFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDlVzZXJMUFdvcnRoWFROBQpYVE5Bc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUQVXNlckxQV29ydGhBc3NldAkA2QQBBQxFbnRlckFzc2V0SUQFA25pbAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlY6C12", "height": 2763426, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BV2X9VMoKP45Cpbpe6GEM4vv3phP4ww5vBa1yDcYSoqQ Next: 3z8sdR9ciaTmCUsfmhEMJMjGpGctNEmPGtRittZ7UN7D Diff:
OldNewDifferences
8080 let D = fraction(B, C, (C + A.amount))
8181 let E = (B - D)
8282 let F = 3
83- let G = ((E * F) / 1000)
84- let H = ((E - G) - G)
85- let I = {
86- let J = getInteger(this, ((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)))
87- if ($isInstanceOf(J, "Int"))
83+ let G = d()
84+ let H = ((E * F) / 1000)
85+ let I = ((E - H) - H)
86+ let J = {
87+ let K = getInteger(this, ((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)))
88+ if ($isInstanceOf(K, "Int"))
8889 then {
89- let K = J
90- K
90+ let L = K
91+ L
9192 }
9293 else 0
9394 }
94- let L = ((I + G) + G)
95- let M = {
96- let J = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
97- if ($isInstanceOf(J, "Int"))
95+ let M = ((J + H) + H)
96+ let N = {
97+ let K = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
98+ if ($isInstanceOf(K, "Int"))
9899 then {
99- let K = J
100- K
100+ let L = K
101+ L
101102 }
102103 else 0
103104 }
104- let N = (C + A.amount)
105- let O = {
106- let J = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
107- if ($isInstanceOf(J, "Int"))
105+ let O = (C + A.amount)
106+ let P = {
107+ let K = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
108+ if ($isInstanceOf(K, "Int"))
108109 then {
109- let K = J
110- K
110+ let L = K
111+ L
111112 }
112113 else 0
113114 }
114- let P = ((B - E) + G)
115- let Q = {
116- let J = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
117- if ($isInstanceOf(J, "Int"))
115+ let Q = ((B - E) + H)
116+ let R = {
117+ let K = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
118+ if ($isInstanceOf(K, "Int"))
118119 then {
119- let K = J
120- K
120+ let L = K
121+ L
121122 }
122123 else 0
123124 }
124- let R = (Q + 1)
125- let S = {
126- let J = getIntegerValue(this, ((((toString(d()) + "_Day_Volume_") + toBase58String(b)) + "_") + h))
127- if ($isInstanceOf(J, "Int"))
125+ let S = (R + 1)
126+ let T = {
127+ let K = getIntegerValue(this, ((((toString(G) + "_Day_Volume_") + toBase58String(b)) + "_") + h))
128+ if ($isInstanceOf(K, "Int"))
128129 then {
129- let K = J
130- K
130+ let L = K
131+ L
131132 }
132133 else 0
133134 }
134- let T = (S + A.amount)
135+ let U = (T + A.amount)
135136 if ((h == toBase58String(b)))
136137 then throw("Input can Never be a XTN AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
137138 else if ((z != h))
148149 then throw((("Your Attached Asset Amount is very low. Attach More " + h) + " Tokens to Claim the minimum Amount of 0.1 dollar atleast."))
149150 else if ((E > B))
150151 then throw((("Pool Only has a Liquidity of " + toString((B / pow(10, 0, 6, 0, 0, CEILING)))) + " XTN. Add Liquidity into Pool."))
151- else [IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)), L), IntegerEntry(((((toString(d()) + "_Day_Volume_") + toBase58String(b)) + "_") + h), T), IntegerEntry(("Total_of_Pair_Txns_" + h), R), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), N), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), P), ScriptTransfer(g.caller, H, b), ScriptTransfer(c, G, b)]
152+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)), M), IntegerEntry(((((toString(G) + "_Day_Volume_") + toBase58String(b)) + "_") + h), U), IntegerEntry(("Total_of_Pair_Txns_" + h), S), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), O), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), Q), ScriptTransfer(g.caller, I, b), ScriptTransfer(c, H, b)]
152153 }
153154
154155
161162 else throw((("Only " + toBase58String(b)) + " XTN Token is required as an Attached payment[1]."))
162163 let B = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
163164 let C = getIntegerValue(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
164- let U = fraction(B, C, (B + A.amount))
165- let E = (C - U)
165+ let V = fraction(B, C, (B + A.amount))
166+ let E = (C - V)
166167 let z = getString(this, ("Pair_UV_" + h))
167168 let F = 3
168- let G = ((E * F) / 1000)
169- let H = ((E - G) - G)
170- let V = {
171- let J = getInteger(this, ("Total_Swap_Fee_Collected_" + h))
172- if ($isInstanceOf(J, "Int"))
169+ let H = ((E * F) / 1000)
170+ let I = ((E - H) - H)
171+ let W = {
172+ let K = getInteger(this, ("Total_Swap_Fee_Collected_" + h))
173+ if ($isInstanceOf(K, "Int"))
173174 then {
174- let K = J
175- K
175+ let L = K
176+ L
176177 }
177178 else 0
178179 }
179- let W = ((V + G) + G)
180- let M = {
181- let J = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
182- if ($isInstanceOf(J, "Int"))
180+ let X = ((W + H) + H)
181+ let N = {
182+ let K = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
183+ if ($isInstanceOf(K, "Int"))
183184 then {
184- let K = J
185- K
185+ let L = K
186+ L
186187 }
187188 else 0
188189 }
189- let N = ((C - E) + G)
190- let O = {
191- let J = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
192- if ($isInstanceOf(J, "Int"))
190+ let O = ((C - E) + H)
191+ let P = {
192+ let K = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
193+ if ($isInstanceOf(K, "Int"))
193194 then {
194- let K = J
195- K
195+ let L = K
196+ L
196197 }
197198 else 0
198199 }
199- let P = (B + A.amount)
200- let Q = {
201- let J = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
202- if ($isInstanceOf(J, "Int"))
200+ let Q = (B + A.amount)
201+ let R = {
202+ let K = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
203+ if ($isInstanceOf(K, "Int"))
203204 then {
204- let K = J
205- K
205+ let L = K
206+ L
206207 }
207208 else 0
208209 }
209- let R = (Q + 1)
210- let S = {
211- let J = getIntegerValue(this, ((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)))
212- if ($isInstanceOf(J, "Int"))
210+ let S = (R + 1)
211+ let T = {
212+ let K = getIntegerValue(this, ((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)))
213+ if ($isInstanceOf(K, "Int"))
213214 then {
214- let K = J
215- K
215+ let L = K
216+ L
216217 }
217218 else 0
218219 }
219- let T = (S + A.amount)
220+ let U = (T + A.amount)
220221 if ((z != h))
221222 then throw("Pair is not available in Whitelisted Asset.")
222223 else if ((h == toBase58String(b)))
231232 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
232233 else if ((E > C))
233234 then throw((("Pool Only has a Liquidity of " + toString(C)) + " Tokens. Add Liquidity into Pool."))
234- else [IntegerEntry(("Total_Swap_Fee_Collected_" + h), W), IntegerEntry(((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)), T), IntegerEntry(("Total_of_Pair_Txns_" + h), R), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), N), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), P), ScriptTransfer(g.caller, H, fromBase58String(h)), ScriptTransfer(c, G, fromBase58String(h))]
235+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + h), X), IntegerEntry(((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)), U), IntegerEntry(("Total_of_Pair_Txns_" + h), S), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), O), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), Q), ScriptTransfer(g.caller, I, fromBase58String(h)), ScriptTransfer(c, H, fromBase58String(h))]
235236 }
236237
237238
242243 let i = value(g.payments[0])
243244 let j = value(g.payments[1])
244245 let z = getString(this, ("Pair_UV_" + h))
245- let X = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or May be not Generated."))
246+ let Y = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or May be not Generated."))
246247 let B = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
247248 let C = getIntegerValue(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
248- let Y = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
249- let q = Y.decimals
250- let Z = B
251- let aa = C
252- let ab = pow((((Z * 1000000) / aa) * pow(10, 0, q, 0, 0, CEILING)), 0, 1, 0, 0, CEILING)
253- let ac = (6 + q)
254- let ad = (ac / 2)
255- let ae = fraction(ab, i.amount, pow(10, 0, ac, 0, 0, CEILING))
256- let af = pow((fraction(i.amount, 1, pow(10, 0, q, 0, 0, CEILING)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, CEILING))), 0, 5, 1, ad, DOWN)
257- let ag = {
258- let J = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
259- if ($isInstanceOf(J, "Int"))
249+ let Z = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
250+ let q = Z.decimals
251+ let aa = B
252+ let ab = C
253+ let ac = pow((((aa * 1000000) / ab) * pow(10, 0, q, 0, 0, CEILING)), 0, 1, 0, 0, CEILING)
254+ let ad = (6 + q)
255+ let ae = (ad / 2)
256+ let af = fraction(ac, i.amount, pow(10, 0, ad, 0, 0, CEILING))
257+ let ag = pow((fraction(i.amount, 1, pow(10, 0, q, 0, 0, CEILING)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, CEILING))), 0, 5, 1, ae, DOWN)
258+ let ah = {
259+ let K = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
260+ if ($isInstanceOf(K, "Int"))
260261 then {
261- let K = J
262- K
262+ let L = K
263+ L
263264 }
264265 else 0
265266 }
266- let ah = (ag + j.amount)
267- let ai = {
268- let J = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
269- if ($isInstanceOf(J, "Int"))
267+ let ai = (ah + j.amount)
268+ let aj = {
269+ let K = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
270+ if ($isInstanceOf(K, "Int"))
270271 then {
271- let K = J
272- K
272+ let L = K
273+ L
273274 }
274275 else 0
275276 }
276- let aj = (ai + i.amount)
277- let ak = {
278- let J = getIntegerValue(this, ("Total_LP_" + h))
279- if ($isInstanceOf(J, "Int"))
277+ let ak = (aj + i.amount)
278+ let al = {
279+ let K = getIntegerValue(this, ("Total_LP_" + h))
280+ if ($isInstanceOf(K, "Int"))
280281 then {
281- let K = J
282- K
282+ let L = K
283+ L
283284 }
284285 else 0
285286 }
286- let al = (ak + af)
287+ let am = (al + ag)
287288 if ((z != h))
288289 then throw("Pair is not available in Whitelisted Asset.")
289290 else if ((h == toBase58String(b)))
300301 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = XTN Token.")
301302 else if ((5000000 > j.amount))
302303 then throw("please attach atleast 5 XTN in payment[2] & Equivalent worth of Token in payment[1]")
303- else if ((j.amount != ae))
304- then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(ae)) + "] or ") + toString(fraction(ae, 1, 1000000))) + ".") + takeRight(toString(ae), 6)) + " XTN."))
305- else if ((1 > af))
306- then throw((("LP Token Outcome is going below " + toString(ad)) + " Decimals. Please Attach min. 1 LP token or 5 XTN Atleast."))
307- else [IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), ah), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), aj), IntegerEntry(("Total_LP_" + h), al), Reissue(X, af, true), ScriptTransfer(g.caller, af, X)]
304+ else if ((j.amount != af))
305+ then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(af)) + "] or ") + toString(fraction(af, 1, 1000000))) + ".") + takeRight(toString(af), 6)) + " XTN."))
306+ else if ((1 > ag))
307+ then throw((("LP Token Outcome is going below " + toString(ae)) + " Decimals. Please Attach min. 1 LP token or 5 XTN Atleast."))
308+ else [IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), ai), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), ak), IntegerEntry(("Total_LP_" + h), am), Reissue(Y, ag, true), ScriptTransfer(g.caller, ag, Y)]
308309 }
309310
310311
316317 then g.payments[0]
317318 else throw("No payment attached, Please Attach LP Token as payment[1].")
318319 let z = getString(this, ("Pair_UV_" + h))
319- let am = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or not Generated."))
320- let Y = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
321- let q = Y.decimals
322- let ac = (6 + q)
323- let ad = (ac / 2)
324- let an = getIntegerValue(this, ("Total_LP_" + h))
325- let ao = pow(fraction(A.amount, pow(10, 0, 8, 0, 0, CEILING), an), 6, 1, 0, 6, CEILING)
320+ let an = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or not Generated."))
321+ let Z = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
322+ let q = Z.decimals
323+ let ad = (6 + q)
324+ let ae = (ad / 2)
325+ let ao = getIntegerValue(this, ("Total_LP_" + h))
326+ let ap = pow(fraction(A.amount, pow(10, 0, 8, 0, 0, CEILING), ao), 6, 1, 0, 6, CEILING)
326327 let B = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
327328 let C = getIntegerValue(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
328- let ap = fraction(B, ao, pow(10, 0, 8, 0, 0, CEILING))
329- let aq = fraction(C, ao, pow(10, 0, 8, 0, 0, CEILING))
330- let ag = {
331- let J = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
332- if ($isInstanceOf(J, "Int"))
329+ let aq = fraction(B, ap, pow(10, 0, 8, 0, 0, CEILING))
330+ let ar = fraction(C, ap, pow(10, 0, 8, 0, 0, CEILING))
331+ let ah = {
332+ let K = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
333+ if ($isInstanceOf(K, "Int"))
333334 then {
334- let K = J
335- K
335+ let L = K
336+ L
336337 }
337338 else 0
338339 }
339- let ah = (ag - ap)
340- let ai = {
341- let J = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
342- if ($isInstanceOf(J, "Int"))
340+ let ai = (ah - aq)
341+ let aj = {
342+ let K = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
343+ if ($isInstanceOf(K, "Int"))
343344 then {
344- let K = J
345- K
345+ let L = K
346+ L
346347 }
347348 else 0
348349 }
349- let aj = (ai - aq)
350- let ak = {
351- let J = getIntegerValue(this, ("Total_LP_" + h))
352- if ($isInstanceOf(J, "Int"))
350+ let ak = (aj - ar)
351+ let al = {
352+ let K = getIntegerValue(this, ("Total_LP_" + h))
353+ if ($isInstanceOf(K, "Int"))
353354 then {
354- let K = J
355- K
355+ let L = K
356+ L
356357 }
357358 else 0
358359 }
359- let al = (ak - A.amount)
360+ let am = (al - A.amount)
360361 if ((z != h))
361362 then throw("Pair is not available in Whitelist.")
362363 else if ((fromBase58String(h) == b))
363364 then throw("Don't choose XTN AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
364- else if ((A.assetId != am))
365+ else if ((A.assetId != an))
365366 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
366- else if ((1 > ao))
367+ else if ((1 > ap))
367368 then throw("Your LP Token amount % is very low to convert.")
368- else if ((1 > ap))
369+ else if ((1 > aq))
369370 then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 XTN.")
370- else if ((1 > aq))
371+ else if ((1 > ar))
371372 then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.")
372- else [IntegerEntry("Withdraw_LP_Percentage", ao), Burn(am, A.amount), IntegerEntry(("Total_LP_" + h), al), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), ah), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), aj), ScriptTransfer(g.caller, ap, b), ScriptTransfer(g.caller, aq, fromBase58String(h))]
373+ else [IntegerEntry("Withdraw_LP_Percentage", ap), Burn(an, A.amount), IntegerEntry(("Total_LP_" + h), am), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), ai), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), ak), ScriptTransfer(g.caller, aq, b), ScriptTransfer(g.caller, ar, fromBase58String(h))]
373374 }
374375
375376
376-@Verifier(ar)
377-func as () = sigVerify(ar.bodyBytes, ar.proofs[0], ar.senderPublicKey)
377+@Verifier(as)
378+func at () = sigVerify(as.bodyBytes, as.proofs[0], as.senderPublicKey)
378379
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1694928600000
55
66 let b = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
77
88 let c = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
99
1010 func d () = {
1111 let e = (lastBlock.timestamp - a)
1212 let f = fraction(1, e, 86400000)
1313 f
1414 }
1515
1616
1717 @Callable(g)
1818 func RegisterPair (h) = {
1919 let i = value(g.payments[0])
2020 let j = value(g.payments[1])
2121 let k = toBase58String(g.caller.bytes)
2222 let l = !(isDefined(j.assetId))
2323 let m = getString(this, ("Pair_UV_" + h))
2424 let n = fromBase58String(h)
2525 let o = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
2626 let p = o.name
2727 let q = o.decimals
2828 let r = fraction((q + 6), 1, 2)
2929 let s = (1 * pow(10, 0, r, 0, 0, CEILING))
3030 let t = fraction(i.amount, j.amount, s)
3131 let u = sqrt(t, r, r, CEILING)
3232 let v = Issue((("LP-" + take(p, 8)) + "-XTN"), (((("LP-" + p) + "-XTN") + " is a Liquidity Provider Token Issued Against ") + h), u, r, true)
3333 let w = calculateAssetId(v)
3434 if ((m == h))
3535 then throw("Pair Already Exist in List.")
3636 else if ((size(g.payments) != 2))
3737 then throw("Two attached assets expected as payment. Kindly Attach payment1 = WAVES Token & payment2 = Token you want to List.")
3838 else if ((i.assetId != b))
3939 then throw("Incorrect asset attached as payment[1], please attach XTN only.")
4040 else if ((100000 > i.amount))
4141 then throw((((("You attached only " + toString(fraction(i.amount, 1, 100000000))) + ".") + toString(fraction(i.amount, 1, 10000000))) + " WAVES for Listing in payment[1], please attach 10 WAVES."))
4242 else if ((j.assetId != n))
4343 then throw("Input String & Attached AssetID in payment2 is not matching.")
4444 else if ((l == true))
4545 then throw("You Attached WAVES Asset ID for Listing, please attach Tokens You want to list in payment[2].")
4646 else [StringEntry(("Pair_UV_" + h), h), IntegerEntry(("Listing_Fee_" + h), i.amount), ScriptTransfer(g.caller, u, b), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), i.amount), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), j.amount), IntegerEntry(("Total_of_Pair_Txns_" + h), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + h), 0), IntegerEntry(((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)), 0), IntegerEntry(((((toString(d()) + "_Day_Volume_") + toBase58String(b)) + "_") + h), 0), v, StringEntry(("LP_" + h), toBase58String(w)), IntegerEntry(("Total_LP_" + h), u)]
4747 }
4848
4949
5050
5151 @Callable(g)
5252 func IssueLPToken (h) = {
5353 let x = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
5454 let y = toBase58String(g.caller.bytes)
5555 let z = valueOrErrorMessage(getString(this, ("Pair_UV_" + h)), "Asset not Found in Whitelisted Token")
5656 let o = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
5757 let p = o.name
5858 let q = o.decimals
5959 let s = (1 * pow(10, 0, fraction((q + 6), 1, 2), 0, 0, CEILING))
6060 let v = Issue((("LP-" + take(p, 8)) + "-XTN"), (((("LP-" + p) + "-XTN") + " is a Liquidity Provider Token Issued Against ") + h), s, fraction((q + 6), 1, 2), true)
6161 let w = calculateAssetId(v)
6262 if ((x != y))
6363 then throw((("Your are not allowded to Issue LP Token. Only " + x) + " can issue the LP Token."))
6464 else if ((z != h))
6565 then throw("Pair is not available in List.")
6666 else [v, StringEntry(("LP_" + h), toBase58String(w)), IntegerEntry(("Total_LP_" + h), s)]
6767 }
6868
6969
7070
7171 @Callable(g)
7272 func SwapAssetToXTNPairEntry (h) = {
7373 let y = toBase58String(g.caller.bytes)
7474 let A = if ((size(g.payments) == 1))
7575 then g.payments[0]
7676 else throw("Whitelisted Token is required as Attached payment[1].")
7777 let z = getString(this, ("Pair_UV_" + h))
7878 let B = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
7979 let C = getIntegerValue(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
8080 let D = fraction(B, C, (C + A.amount))
8181 let E = (B - D)
8282 let F = 3
83- let G = ((E * F) / 1000)
84- let H = ((E - G) - G)
85- let I = {
86- let J = getInteger(this, ((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)))
87- if ($isInstanceOf(J, "Int"))
83+ let G = d()
84+ let H = ((E * F) / 1000)
85+ let I = ((E - H) - H)
86+ let J = {
87+ let K = getInteger(this, ((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)))
88+ if ($isInstanceOf(K, "Int"))
8889 then {
89- let K = J
90- K
90+ let L = K
91+ L
9192 }
9293 else 0
9394 }
94- let L = ((I + G) + G)
95- let M = {
96- let J = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
97- if ($isInstanceOf(J, "Int"))
95+ let M = ((J + H) + H)
96+ let N = {
97+ let K = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
98+ if ($isInstanceOf(K, "Int"))
9899 then {
99- let K = J
100- K
100+ let L = K
101+ L
101102 }
102103 else 0
103104 }
104- let N = (C + A.amount)
105- let O = {
106- let J = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
107- if ($isInstanceOf(J, "Int"))
105+ let O = (C + A.amount)
106+ let P = {
107+ let K = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
108+ if ($isInstanceOf(K, "Int"))
108109 then {
109- let K = J
110- K
110+ let L = K
111+ L
111112 }
112113 else 0
113114 }
114- let P = ((B - E) + G)
115- let Q = {
116- let J = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
117- if ($isInstanceOf(J, "Int"))
115+ let Q = ((B - E) + H)
116+ let R = {
117+ let K = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
118+ if ($isInstanceOf(K, "Int"))
118119 then {
119- let K = J
120- K
120+ let L = K
121+ L
121122 }
122123 else 0
123124 }
124- let R = (Q + 1)
125- let S = {
126- let J = getIntegerValue(this, ((((toString(d()) + "_Day_Volume_") + toBase58String(b)) + "_") + h))
127- if ($isInstanceOf(J, "Int"))
125+ let S = (R + 1)
126+ let T = {
127+ let K = getIntegerValue(this, ((((toString(G) + "_Day_Volume_") + toBase58String(b)) + "_") + h))
128+ if ($isInstanceOf(K, "Int"))
128129 then {
129- let K = J
130- K
130+ let L = K
131+ L
131132 }
132133 else 0
133134 }
134- let T = (S + A.amount)
135+ let U = (T + A.amount)
135136 if ((h == toBase58String(b)))
136137 then throw("Input can Never be a XTN AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
137138 else if ((z != h))
138139 then throw("Pair is not available in Whitelisted Asset.")
139140 else if ((A.assetId == b))
140141 then throw("You can't Attach XTN as an Attached Payment. Only Whitelisted Tokens are accepted.")
141142 else if ((A.assetId != fromBase58String(h)))
142143 then throw(("Incorrect asset attached, please attach or send " + h))
143144 else if ((B == 0))
144145 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
145146 else if ((C == 0))
146147 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
147148 else if ((100000 > E))
148149 then throw((("Your Attached Asset Amount is very low. Attach More " + h) + " Tokens to Claim the minimum Amount of 0.1 dollar atleast."))
149150 else if ((E > B))
150151 then throw((("Pool Only has a Liquidity of " + toString((B / pow(10, 0, 6, 0, 0, CEILING)))) + " XTN. Add Liquidity into Pool."))
151- else [IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)), L), IntegerEntry(((((toString(d()) + "_Day_Volume_") + toBase58String(b)) + "_") + h), T), IntegerEntry(("Total_of_Pair_Txns_" + h), R), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), N), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), P), ScriptTransfer(g.caller, H, b), ScriptTransfer(c, G, b)]
152+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(b)), M), IntegerEntry(((((toString(G) + "_Day_Volume_") + toBase58String(b)) + "_") + h), U), IntegerEntry(("Total_of_Pair_Txns_" + h), S), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), O), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), Q), ScriptTransfer(g.caller, I, b), ScriptTransfer(c, H, b)]
152153 }
153154
154155
155156
156157 @Callable(g)
157158 func SwapXTNToAssetPairEntry (h) = {
158159 let y = toBase58String(g.caller.bytes)
159160 let A = if ((size(g.payments) == 1))
160161 then g.payments[0]
161162 else throw((("Only " + toBase58String(b)) + " XTN Token is required as an Attached payment[1]."))
162163 let B = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
163164 let C = getIntegerValue(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
164- let U = fraction(B, C, (B + A.amount))
165- let E = (C - U)
165+ let V = fraction(B, C, (B + A.amount))
166+ let E = (C - V)
166167 let z = getString(this, ("Pair_UV_" + h))
167168 let F = 3
168- let G = ((E * F) / 1000)
169- let H = ((E - G) - G)
170- let V = {
171- let J = getInteger(this, ("Total_Swap_Fee_Collected_" + h))
172- if ($isInstanceOf(J, "Int"))
169+ let H = ((E * F) / 1000)
170+ let I = ((E - H) - H)
171+ let W = {
172+ let K = getInteger(this, ("Total_Swap_Fee_Collected_" + h))
173+ if ($isInstanceOf(K, "Int"))
173174 then {
174- let K = J
175- K
175+ let L = K
176+ L
176177 }
177178 else 0
178179 }
179- let W = ((V + G) + G)
180- let M = {
181- let J = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
182- if ($isInstanceOf(J, "Int"))
180+ let X = ((W + H) + H)
181+ let N = {
182+ let K = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
183+ if ($isInstanceOf(K, "Int"))
183184 then {
184- let K = J
185- K
185+ let L = K
186+ L
186187 }
187188 else 0
188189 }
189- let N = ((C - E) + G)
190- let O = {
191- let J = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
192- if ($isInstanceOf(J, "Int"))
190+ let O = ((C - E) + H)
191+ let P = {
192+ let K = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
193+ if ($isInstanceOf(K, "Int"))
193194 then {
194- let K = J
195- K
195+ let L = K
196+ L
196197 }
197198 else 0
198199 }
199- let P = (B + A.amount)
200- let Q = {
201- let J = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
202- if ($isInstanceOf(J, "Int"))
200+ let Q = (B + A.amount)
201+ let R = {
202+ let K = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
203+ if ($isInstanceOf(K, "Int"))
203204 then {
204- let K = J
205- K
205+ let L = K
206+ L
206207 }
207208 else 0
208209 }
209- let R = (Q + 1)
210- let S = {
211- let J = getIntegerValue(this, ((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)))
212- if ($isInstanceOf(J, "Int"))
210+ let S = (R + 1)
211+ let T = {
212+ let K = getIntegerValue(this, ((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)))
213+ if ($isInstanceOf(K, "Int"))
213214 then {
214- let K = J
215- K
215+ let L = K
216+ L
216217 }
217218 else 0
218219 }
219- let T = (S + A.amount)
220+ let U = (T + A.amount)
220221 if ((z != h))
221222 then throw("Pair is not available in Whitelisted Asset.")
222223 else if ((h == toBase58String(b)))
223224 then throw("Input can Never be a XTN AssetID. Enter Whitelisted AssetID in input & Attach XTN as an attachment Token in payment[1].")
224225 else if ((A.assetId != b))
225226 then throw("You can Attach XTN as an Attached Payment[1] to Swap XTN To Required Token. Any other asset else than XTN will be rejected.")
226227 else if ((100000 > A.amount))
227228 then throw("Your Attached XTN Amount is very low. Attach Atleast 0.1 XTN to Claim the minimum Tokens.")
228229 else if ((B == 0))
229230 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
230231 else if ((C == 0))
231232 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
232233 else if ((E > C))
233234 then throw((("Pool Only has a Liquidity of " + toString(C)) + " Tokens. Add Liquidity into Pool."))
234- else [IntegerEntry(("Total_Swap_Fee_Collected_" + h), W), IntegerEntry(((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)), T), IntegerEntry(("Total_of_Pair_Txns_" + h), R), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), N), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), P), ScriptTransfer(g.caller, H, fromBase58String(h)), ScriptTransfer(c, G, fromBase58String(h))]
235+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + h), X), IntegerEntry(((((toString(d()) + "_Day_Volume_") + h) + "_") + toBase58String(b)), U), IntegerEntry(("Total_of_Pair_Txns_" + h), S), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), O), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), Q), ScriptTransfer(g.caller, I, fromBase58String(h)), ScriptTransfer(c, H, fromBase58String(h))]
235236 }
236237
237238
238239
239240 @Callable(g)
240241 func AddLiquidity (h) = {
241242 let y = toBase58String(g.caller.bytes)
242243 let i = value(g.payments[0])
243244 let j = value(g.payments[1])
244245 let z = getString(this, ("Pair_UV_" + h))
245- let X = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or May be not Generated."))
246+ let Y = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or May be not Generated."))
246247 let B = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
247248 let C = getIntegerValue(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
248- let Y = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
249- let q = Y.decimals
250- let Z = B
251- let aa = C
252- let ab = pow((((Z * 1000000) / aa) * pow(10, 0, q, 0, 0, CEILING)), 0, 1, 0, 0, CEILING)
253- let ac = (6 + q)
254- let ad = (ac / 2)
255- let ae = fraction(ab, i.amount, pow(10, 0, ac, 0, 0, CEILING))
256- let af = pow((fraction(i.amount, 1, pow(10, 0, q, 0, 0, CEILING)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, CEILING))), 0, 5, 1, ad, DOWN)
257- let ag = {
258- let J = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
259- if ($isInstanceOf(J, "Int"))
249+ let Z = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
250+ let q = Z.decimals
251+ let aa = B
252+ let ab = C
253+ let ac = pow((((aa * 1000000) / ab) * pow(10, 0, q, 0, 0, CEILING)), 0, 1, 0, 0, CEILING)
254+ let ad = (6 + q)
255+ let ae = (ad / 2)
256+ let af = fraction(ac, i.amount, pow(10, 0, ad, 0, 0, CEILING))
257+ let ag = pow((fraction(i.amount, 1, pow(10, 0, q, 0, 0, CEILING)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, CEILING))), 0, 5, 1, ae, DOWN)
258+ let ah = {
259+ let K = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
260+ if ($isInstanceOf(K, "Int"))
260261 then {
261- let K = J
262- K
262+ let L = K
263+ L
263264 }
264265 else 0
265266 }
266- let ah = (ag + j.amount)
267- let ai = {
268- let J = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
269- if ($isInstanceOf(J, "Int"))
267+ let ai = (ah + j.amount)
268+ let aj = {
269+ let K = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
270+ if ($isInstanceOf(K, "Int"))
270271 then {
271- let K = J
272- K
272+ let L = K
273+ L
273274 }
274275 else 0
275276 }
276- let aj = (ai + i.amount)
277- let ak = {
278- let J = getIntegerValue(this, ("Total_LP_" + h))
279- if ($isInstanceOf(J, "Int"))
277+ let ak = (aj + i.amount)
278+ let al = {
279+ let K = getIntegerValue(this, ("Total_LP_" + h))
280+ if ($isInstanceOf(K, "Int"))
280281 then {
281- let K = J
282- K
282+ let L = K
283+ L
283284 }
284285 else 0
285286 }
286- let al = (ak + af)
287+ let am = (al + ag)
287288 if ((z != h))
288289 then throw("Pair is not available in Whitelisted Asset.")
289290 else if ((h == toBase58String(b)))
290291 then throw("Input can Never be a XTN AssetID. Enter Whitelisted AssetID in input as well as in payment[1] & Attach XTN as an attachment Token in payment[2].")
291292 else if ((size(g.payments) != 2))
292293 then throw("Two attached assets expected as payment in 50%-50%. Kindly Attach payment1 = Token you want to add for Liquidity & payment2 = Equivalent Amount of XTN Token.")
293294 else if ((i.assetId == b))
294295 then throw("You Attached XTN asset in payment[1], please attach only whitelisted Token in payment[1] along with XTN in payment[2].")
295296 else if ((i.assetId != fromBase58String(h)))
296297 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
297298 else if ((i.assetId != fromBase58String(h)))
298299 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
299300 else if ((j.assetId != b))
300301 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = XTN Token.")
301302 else if ((5000000 > j.amount))
302303 then throw("please attach atleast 5 XTN in payment[2] & Equivalent worth of Token in payment[1]")
303- else if ((j.amount != ae))
304- then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(ae)) + "] or ") + toString(fraction(ae, 1, 1000000))) + ".") + takeRight(toString(ae), 6)) + " XTN."))
305- else if ((1 > af))
306- then throw((("LP Token Outcome is going below " + toString(ad)) + " Decimals. Please Attach min. 1 LP token or 5 XTN Atleast."))
307- else [IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), ah), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), aj), IntegerEntry(("Total_LP_" + h), al), Reissue(X, af, true), ScriptTransfer(g.caller, af, X)]
304+ else if ((j.amount != af))
305+ then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(af)) + "] or ") + toString(fraction(af, 1, 1000000))) + ".") + takeRight(toString(af), 6)) + " XTN."))
306+ else if ((1 > ag))
307+ then throw((("LP Token Outcome is going below " + toString(ae)) + " Decimals. Please Attach min. 1 LP token or 5 XTN Atleast."))
308+ else [IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), ai), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), ak), IntegerEntry(("Total_LP_" + h), am), Reissue(Y, ag, true), ScriptTransfer(g.caller, ag, Y)]
308309 }
309310
310311
311312
312313 @Callable(g)
313314 func RemoveLiquidity (h) = {
314315 let y = toBase58String(g.caller.bytes)
315316 let A = if ((size(g.payments) == 1))
316317 then g.payments[0]
317318 else throw("No payment attached, Please Attach LP Token as payment[1].")
318319 let z = getString(this, ("Pair_UV_" + h))
319- let am = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or not Generated."))
320- let Y = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
321- let q = Y.decimals
322- let ac = (6 + q)
323- let ad = (ac / 2)
324- let an = getIntegerValue(this, ("Total_LP_" + h))
325- let ao = pow(fraction(A.amount, pow(10, 0, 8, 0, 0, CEILING), an), 6, 1, 0, 6, CEILING)
320+ let an = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or not Generated."))
321+ let Z = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
322+ let q = Z.decimals
323+ let ad = (6 + q)
324+ let ae = (ad / 2)
325+ let ao = getIntegerValue(this, ("Total_LP_" + h))
326+ let ap = pow(fraction(A.amount, pow(10, 0, 8, 0, 0, CEILING), ao), 6, 1, 0, 6, CEILING)
326327 let B = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
327328 let C = getIntegerValue(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
328- let ap = fraction(B, ao, pow(10, 0, 8, 0, 0, CEILING))
329- let aq = fraction(C, ao, pow(10, 0, 8, 0, 0, CEILING))
330- let ag = {
331- let J = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
332- if ($isInstanceOf(J, "Int"))
329+ let aq = fraction(B, ap, pow(10, 0, 8, 0, 0, CEILING))
330+ let ar = fraction(C, ap, pow(10, 0, 8, 0, 0, CEILING))
331+ let ah = {
332+ let K = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(b)))
333+ if ($isInstanceOf(K, "Int"))
333334 then {
334- let K = J
335- K
335+ let L = K
336+ L
336337 }
337338 else 0
338339 }
339- let ah = (ag - ap)
340- let ai = {
341- let J = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
342- if ($isInstanceOf(J, "Int"))
340+ let ai = (ah - aq)
341+ let aj = {
342+ let K = getInteger(this, ((("Balance_of_" + toBase58String(b)) + "_") + h))
343+ if ($isInstanceOf(K, "Int"))
343344 then {
344- let K = J
345- K
345+ let L = K
346+ L
346347 }
347348 else 0
348349 }
349- let aj = (ai - aq)
350- let ak = {
351- let J = getIntegerValue(this, ("Total_LP_" + h))
352- if ($isInstanceOf(J, "Int"))
350+ let ak = (aj - ar)
351+ let al = {
352+ let K = getIntegerValue(this, ("Total_LP_" + h))
353+ if ($isInstanceOf(K, "Int"))
353354 then {
354- let K = J
355- K
355+ let L = K
356+ L
356357 }
357358 else 0
358359 }
359- let al = (ak - A.amount)
360+ let am = (al - A.amount)
360361 if ((z != h))
361362 then throw("Pair is not available in Whitelist.")
362363 else if ((fromBase58String(h) == b))
363364 then throw("Don't choose XTN AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
364- else if ((A.assetId != am))
365+ else if ((A.assetId != an))
365366 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
366- else if ((1 > ao))
367+ else if ((1 > ap))
367368 then throw("Your LP Token amount % is very low to convert.")
368- else if ((1 > ap))
369+ else if ((1 > aq))
369370 then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 XTN.")
370- else if ((1 > aq))
371+ else if ((1 > ar))
371372 then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.")
372- else [IntegerEntry("Withdraw_LP_Percentage", ao), Burn(am, A.amount), IntegerEntry(("Total_LP_" + h), al), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), ah), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), aj), ScriptTransfer(g.caller, ap, b), ScriptTransfer(g.caller, aq, fromBase58String(h))]
373+ else [IntegerEntry("Withdraw_LP_Percentage", ap), Burn(an, A.amount), IntegerEntry(("Total_LP_" + h), am), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(b)), ai), IntegerEntry(((("Balance_of_" + toBase58String(b)) + "_") + h), ak), ScriptTransfer(g.caller, aq, b), ScriptTransfer(g.caller, ar, fromBase58String(h))]
373374 }
374375
375376
376-@Verifier(ar)
377-func as () = sigVerify(ar.bodyBytes, ar.proofs[0], ar.senderPublicKey)
377+@Verifier(as)
378+func at () = sigVerify(as.bodyBytes, as.proofs[0], as.senderPublicKey)
378379

github/deemru/w8io/169f3d6 
120.34 ms