tx · 9YzeBqXEw9wMZ8SzXZxsKSEXkgQwoU4GUZAXkMVLbvT7

3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p:  -0.01700000 Waves

2023.12.02 08:57 [2868628] smart account 3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p > SELF 0.00000000 Waves

{ "type": 13, "id": "9YzeBqXEw9wMZ8SzXZxsKSEXkgQwoU4GUZAXkMVLbvT7", "fee": 1700000, "feeAssetId": null, "timestamp": 1701496635068, "version": 2, "chainId": 84, "sender": "3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p", "senderPublicKey": "Hh3eFP2XFetZSfTxQiM1Ps96f68zi8Zh5ghhCZdjgdFs", "proofs": [ "4L8t1a2NtwjBLA3WvyS4aG6d4oXZX6cfXJsaRM2skeTeCPt87BiXPoaP3FUrHHiM3UbthVRbmusaWGL48d46kiwf" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgIRQAHVkVSU0lPTgIFMi4wLjABCWdldFN0ckJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1bml0VGVzdAcACW9yYWNsZUZlZQkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQIPY29uZl9vcmFjbGVfZmVlAAtmZWVSZWNlaXZlcgkBCWdldFN0ckJ5SwECEWNvbmZfZmVlX3JlY2VpdmVyAAxhcnR3b3Jrc0RhcHAJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECEmNvbmZfYXJ0d29ya3NfZGFwcAAIdXNlckRhcHADBQh1bml0VGVzdAkBBXZhbHVlAQkApggBAiMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQIPY29uZl91c2Vyc19kYXBwAA9wdXp6bGVfYXJ0X3Bvb2wJAQlnZXRTdHJCeUsBAhRjb25mX3B1enpsZV9hcnRfcG9vbAARdXNkdFBQQXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhtjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRFRfUFAADmFydEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIXY29uZl9hY2NlcHRlZF9hc3NldF9BUlQAEXVzZGNQUEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIbY29uZl9hY2NlcHRlZF9hc3NldF9VU0RDX1BQAA9lYXN0QXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X0VBU1QAEXB1enpsZUFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIaY29uZl9hY2NlcHRlZF9hc3NldF9QVVpaTEUAEGV0aFBQQXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X0VUSF9QUAAQd2F2ZXNBc3NldElkX3N0cgIFV0FWRVMADXVzZHRQUEFzc2V0SWQJANkEAQURdXNkdFBQQXNzZXRJZF9zdHIACmFydEFzc2V0SWQJANkEAQUOYXJ0QXNzZXRJZF9zdHIADXVzZGNQUEFzc2V0SWQJANkEAQURdXNkY1BQQXNzZXRJZF9zdHIAC2Vhc3RBc3NldElkCQDZBAEFD2Vhc3RBc3NldElkX3N0cgANcHV6emxlQXNzZXRJZAkA2QQBBRFwdXp6bGVBc3NldElkX3N0cgAMZXRoUFBBc3NldElkCQDZBAEFEGV0aFBQQXNzZXRJZF9zdHIADHdhdmVzQXNzZXRJZAEAABNhbGxfYWNjZXB0ZWRfYXNzZXRzCQDMCAIFEXVzZHRQUEFzc2V0SWRfc3RyCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIFEXVzZGNQUEFzc2V0SWRfc3RyCQDMCAIFD2Vhc3RBc3NldElkX3N0cgkAzAgCBRFwdXp6bGVBc3NldElkX3N0cgkAzAgCBRB3YXZlc0Fzc2V0SWRfc3RyCQDMCAIFEGV0aFBQQXNzZXRJZF9zdHIFA25pbAAFY2hyaXMJAQlnZXRTdHJCeUsBAgxjb25mX2FkbWluXzEADmNvbW1pc3Npb25fZmVlAAMADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQACmFydElsbGVnYWwCB0lMTEVHQUwADGFydFN1c3BlbmRlZAIJU1VTUEVOREVEAA5kYXBwUnVubmluZ0tleQIUY29uZl9kYXBwX2lzX3J1bm5pbmcAEW1haW50ZW5hbmNlTVNHS2V5AhRjb25mX21haW50ZW5hbmNlX21zZwALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUOZGFwcFJ1bm5pbmdLZXkGAA5tYWludGVuYW5jZU1TRwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRFtYWludGVuYW5jZU1TR0tleQIAAAludW1TYWxlc0sCCW51bV9zYWxlcwENZ2V0VXNlclN0ckJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwBQNrZXkCBUVycm9yARNnZXRBcnR3b3JrUm95YWx0aWVzAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMYXJ0d29ya3NEYXBwBQNrZXkA6AcBDGdldEFydFN0ckJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFDGFydHdvcmtzRGFwcAUDa2V5AgABCWdldEludEJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ1rZXlVc2VyU3RhdHVzAQRhZGRyCQCsAgICDHVzZXJfc3RhdHVzXwUEYWRkcgETa2V5QXJ0d29ya1JveWFsdGllcwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5U2lnbklEAgphcnRpc3RBZGRyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfc2lnbmlkXwUFYXJ0SWQCAV8FCmFydGlzdEFkZHIBB2tleUZsYWcCCmFydGlzdEFkZHIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUFYXJ0SWQCAV8FCmFydGlzdEFkZHIBCmtleU5GVERhdGEBAmlkCQCsAgICBG5mdF8FAmlkAQpnZXRTYWxlS2V5BAZjYWxsZXIFbmZ0SWQFYXJ0SWQLY3JlYXRvckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINc2FsZTJuZF9pbmZvXwUGY2FsbGVyAgFfBQVuZnRJZAIBXwUFYXJ0SWQCAV8FC2NyZWF0b3JBZGRyAQlnZXRCaWRLZXkECm9mZmVyT3duZXIFbmZ0SWQJc2FsZU93bmVyB29mZmVySWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJb2ZmZXIybmRfBQpvZmZlck93bmVyAgFfBQVuZnRJZAIBXwUJc2FsZU93bmVyAgFfBQdvZmZlcklkARNnZXRJbnRCeUtGcm9tT3JhY2xlAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQlvcmFjbGVGZWUFA2tleQIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkBE2dldEludEJ5S0Zyb21PcmFjbGUBCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQphcnRBc3NldElkARJrZXlBcnRpc3RBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgINYXJ0aXN0X2FnZW50XwUKYXJ0aXN0QWRkcgEWa2V5U2Vjb25kYXJ5U2hhcmVBZ2VudAEKYXJ0aXN0QWRkcgkArAICAhdhcnRpc3RfYWdlbnRfc2Vjb25kYXJ5XwUKYXJ0aXN0QWRkcgEYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyAQphcnRpc3RBZGRyCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQphcnRpc3RBZGRyARxrZXlTZWNvbmRhcnlTaGFyZVB1YmxpY0FnZW50AQphcnRpc3RBZGRyCQCsAgICHmFydGlzdF9wdWJsaWNfYWdlbnRfc2Vjb25kYXJ5XwUKYXJ0aXN0QWRkcgEMaWRDYWxsZXJEYXRlAQFpAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHCQCVCgMJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAEJaXNQYXltZW50AQFpAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnQgYXR0YWNoZWQEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQJAJQKAgUHcGF5bWVudAUGYW1vdW50AQxhc3NldElzVmFsaWQBDGFzc2V0RGV0YWlscwMDAwkAAAIIBQxhc3NldERldGFpbHMIcXVhbnRpdHkAAQkAAAIIBQxhc3NldERldGFpbHMIZGVjaW1hbHMAAAcJAAACCAUMYXNzZXREZXRhaWxzCnJlaXNzdWFibGUHBwkAAAIIBQxhc3NldERldGFpbHMGaXNzdWVyBQxhcnR3b3Jrc0RhcHAHAQxpc1NpZ25BcnRORlQBAmlkBAxhc3NldERldGFpbHMJAQV2YWx1ZQEJAOwHAQUCaWQJAQxhc3NldElzVmFsaWQBBQxhc3NldERldGFpbHMBEGFjY2VwdGVkQXNzZXRJZHMBB2Fzc2V0SWQDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRNhbGxfYWNjZXB0ZWRfYXNzZXRzBQdhc3NldElkCQACAQJAT25seSAkQVJULCBVU0RULVBQLCBVU0RDLVBQLCBFQVNULCBQVVpaTEUsIEVUSCBvciBXQVZFUyBhY2NlcHRlZAYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQVuZnRpZAQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRpZAMJAAACCQCxAgEFCXNhbGVPd25lcgAACQACAQINTkZUIG5vdCBmb3VuZAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRpZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAhBORlQgbm90IGZvciBzYWxlBQlzYWxlT3duZXIBCmdldEJpZERhdGEBA2tleQQHYmlkRGF0YQkBCWdldFN0ckJ5SwEJAKwCAgUDa2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg9PZmZlciBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAgkAlQoDBQpiaWREYXRhQXJyBQdhc3NldElkBQdiaWREYXRhAQpnZXRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJAPAHAgUEdGhpcwUBYggJAO8HAQUEdGhpcwlhdmFpbGFibGUBCmFydElzVmFsaWQBCWFydFN0YXR1cwMJAQIhPQIFCWFydFN0YXR1cwUKYXJ0SWxsZWdhbAkBAiE9AgUJYXJ0U3RhdHVzBQxhcnRTdXNwZW5kZWQHAQ5jaGVja0FydFN0YXR1cwIEYWRkcgJpZAQJYXJ0U3RhdHVzCQEMZ2V0QXJ0U3RyQnlLAQkBB2tleUZsYWcCBQRhZGRyBQJpZAMJAQphcnRJc1ZhbGlkAQUJYXJ0U3RhdHVzBgkAAgEJAKwCAgIcT3JpZ2luYWwgQXJ0d29yayBmbGFnZ2VkIGFzIAUJYXJ0U3RhdHVzARFjaGVja0FydGlzdFN0YXR1cwEEYWRkcgQMYXJ0aXN0U3RhdHVzCQENZ2V0VXNlclN0ckJ5SwEJAQ1rZXlVc2VyU3RhdHVzAQUEYWRkcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDXVzZXJTdXNwZW5kZWQJAMwIAgULdXNlclJlbW92ZWQFA25pbAUMYXJ0aXN0U3RhdHVzCQACAQkArAICAhBPcmlnaW5hbCBBcnRpc3QgBQxhcnRpc3RTdGF0dXMGAQxjaGVja05GVEluZm8BB2Fzc2V0SWQEB25mdERhdGEJALUJAgkBDGdldEFydFN0ckJ5SwEJAQprZXlORlREYXRhAQUHYXNzZXRJZAIBXwQJYXJ0U2lnbklECQEMZ2V0QXJ0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIJYXJ0X25hbWVfCQCRAwIFB25mdERhdGEABQIBXwkAkQMCBQduZnREYXRhAAYDAwkBASEBCQEOY2hlY2tBcnRTdGF0dXMCCQCRAwIFB25mdERhdGEABgkAkQMCBQduZnREYXRhAAUJAQEhAQkBEWNoZWNrQXJ0aXN0U3RhdHVzAQkAkQMCBQduZnREYXRhAAYHCQCWCgQHCQCRAwIFB25mdERhdGEABQkAkQMCBQduZnREYXRhAAYFCWFydFNpZ25JRAkAlgoEBgkAkQMCBQduZnREYXRhAAUJAJEDAgUHbmZ0RGF0YQAGBQlhcnRTaWduSUQBDWNoZWNrQVJURXhpc3QCBWFydElkC2NyZWF0b3JBZGRyBAlhcnRTaWduSUQJAQxnZXRBcnRTdHJCeUsBCQEJa2V5U2lnbklEAgULY3JlYXRvckFkZHIFBWFydElkAwkAAAIJALECAQUJYXJ0U2lnbklEAAAJAAIBAh1BcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydAMDCQEBIQEJAQ5jaGVja0FydFN0YXR1cwIFC2NyZWF0b3JBZGRyBQVhcnRJZAkBASEBCQERY2hlY2tBcnRpc3RTdGF0dXMBBQtjcmVhdG9yQWRkcgcHBgEMc2V0VHJhbnNmZXJzBwZhbW91bnQHYXNzZXRJZAVuZnRpZAtjcmVhdG9yQWRkcglzYWxlT3duZXIGY2FsbGVyBWFydElkBApjcmVhdG9yQ3V0CQETZ2V0QXJ0d29ya1JveWFsdGllcwEJARNrZXlBcnR3b3JrUm95YWx0aWVzAgULY3JlYXRvckFkZHIFBWFydElkBAVhZ2VudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBEmtleUFydGlzdEFnZW50QWRkcgEFC2NyZWF0b3JBZGRyBQtmZWVSZWNlaXZlcgQKYWdlbnRTaGFyZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQh1c2VyRGFwcAkBFmtleVNlY29uZGFyeVNoYXJlQWdlbnQBBQtjcmVhdG9yQWRkcgAABAtwdWJsaWNBZ2VudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBGGtleUFydGlzdFB1YmxpY0FnZW50QWRkcgEFC2NyZWF0b3JBZGRyBQtmZWVSZWNlaXZlcgQQcHVibGljQWdlbnRTaGFyZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQh1c2VyRGFwcAkBHGtleVNlY29uZGFyeVNoYXJlUHVibGljQWdlbnQBBQtjcmVhdG9yQWRkcgAABA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQ5jb21taXNzaW9uX2ZlZQBkBBBhbW91bnRGb3JDcmVhdG9yCQBrAwUGYW1vdW50BQpjcmVhdG9yQ3V0AJBOBA5hbW91bnRGb3JPd25lcgkAZQIFBmFtb3VudAkAZAIFDWFtb3VudEZvclNpZ24FEGFtb3VudEZvckNyZWF0b3IEDmFtb3VudEZvckFnZW50AwMJAQIhPQIFBWFnZW50BQtmZWVSZWNlaXZlcgkAZgIFCmFnZW50U2hhcmUAAAcJAGsDBQZhbW91bnQFCmFnZW50U2hhcmUAkE4AAAQUYW1vdW50Rm9yUHVibGljQWdlbnQDAwkBAiE9AgULcHVibGljQWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUQcHVibGljQWdlbnRTaGFyZQAABwkAawMFBmFtb3VudAUQcHVibGljQWdlbnRTaGFyZQCQTgAABCJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwAwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50BQ1hbW91bnRGb3JTaWduBBFhbW91bnRfYXJ0X2JlZm9yZQkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEWFtb3VudF9hcnRfYmVmb3JlBRFhbW91bnRfYXJ0X2JlZm9yZQQPc3dhcF9mZWVfdG9fYXJ0AwkBAiE9AgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkA/AcECQEHQWRkcmVzcwEJANkEAQUPcHV6emxlX2FydF9wb29sAgRzd2FwCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBSJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwBQNuaWwFBHVuaXQDCQAAAgUPc3dhcF9mZWVfdG9fYXJ0BQ9zd2FwX2ZlZV90b19hcnQEEGFtb3VudF9hcnRfYWZ0ZXIJAQpnZXRCYWxhbmNlAQUKYXJ0QXNzZXRJZAMJAAACBRBhbW91bnRfYXJ0X2FmdGVyBRBhbW91bnRfYXJ0X2FmdGVyBAtjb21taXNzaW9ucwMJAQIhPQIFDmFtb3VudEZvckFnZW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyAwkAAAIFB2Fzc2V0SWQFCmFydEFzc2V0SWQJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAkAZQIFEGFtb3VudF9hcnRfYWZ0ZXIFEWFtb3VudF9hcnRfYmVmb3JlBQphcnRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQVhZ2VudAUOYW1vdW50Rm9yQWdlbnQFB2Fzc2V0SWQFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIDCQAAAgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAUNYW1vdW50Rm9yU2lnbgkAZQIFEGFtb3VudF9hcnRfYWZ0ZXIFEWFtb3VudF9hcnRfYmVmb3JlBQphcnRBc3NldElkBQNuaWwECmNyZWF0b3JGZWUDCQECIT0CBRRhbW91bnRGb3JQdWJsaWNBZ2VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtwdWJsaWNBZ2VudAUUYW1vdW50Rm9yUHVibGljQWdlbnQFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2NyZWF0b3JBZGRyCQBlAgUQYW1vdW50Rm9yQ3JlYXRvcgUUYW1vdW50Rm9yUHVibGljQWdlbnQFB2Fzc2V0SWQFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULY3JlYXRvckFkZHIFEGFtb3VudEZvckNyZWF0b3IFB2Fzc2V0SWQFA25pbAQIb3duZXJGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQlzYWxlT3duZXIFDmFtb3VudEZvck93bmVyBQdhc3NldElkBAxjb2xsZWN0b3JORlQJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAQkA2QQBBQVuZnRpZAkAlgoEBQtjb21taXNzaW9ucwUKY3JlYXRvckZlZQUIb3duZXJGZWUFDGNvbGxlY3Rvck5GVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPdmFsaWRhdGVNaW5TZWxsAQVwcmljZQMJAGYCAAAFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBgEPcHJvdmlkZUJhc2VEYXRhAgFpBW5mdElkBA0kdDAxMTkzMzExOTczCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxMTkzMzExOTczAl8xBAZjYWxsZXIIBQ0kdDAxMTkzMzExOTczAl8yBARkYXRlCAUNJHQwMTE5MzMxMTk3MwJfMwQNJHQwMTE5NzYxMjA0NQkBDGNoZWNrTkZUSW5mbwEFBW5mdElkBAppc1ZhbGlkTkZUCAUNJHQwMTE5NzYxMjA0NQJfMQQFYXJ0SWQIBQ0kdDAxMTk3NjEyMDQ1Al8yBAtjcmVhdG9yQWRkcggFDSR0MDExOTc2MTIwNDUCXzMECWFydFNpZ25JRAgFDSR0MDExOTc2MTIwNDUCXzQJAJkKBwUCaWQFBmNhbGxlcgUEZGF0ZQUKaXNWYWxpZE5GVAUFYXJ0SWQFC2NyZWF0b3JBZGRyBQlhcnRTaWduSUQBDnVwZGF0ZU51bVNhbGVzAAQIbnVtU2FsZXMJAQlnZXRJbnRCeUsBBQludW1TYWxlc0sJAQxJbnRlZ2VyRW50cnkCBQludW1TYWxlc0sJAGQCBQhudW1TYWxlcwABCQZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEIY29udGFpbnMCBQNrZXkCBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMGaW52b2tlAQphcHBSdW5uaW5nAgZpc0xpdmUHbWVzc2FnZQQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyBAJpZAkA2AQBCAUGaW52b2tlDXRyYW5zYWN0aW9uSWQDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyCQDMCAIJAQxCb29sZWFuRW50cnkCBQ5kYXBwUnVubmluZ0tleQUGaXNMaXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFEW1haW50ZW5hbmNlTVNHS2V5BQdtZXNzYWdlBQNuaWwJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBB3NlbGxORlQCBXByaWNlBWFzc2V0BA0kdDAxMzExMDEzMTQ2CQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEzMTEwMTMxNDYCXzEEBmFtb3VudAgFDSR0MDEzMTEwMTMxNDYCXzIDCQECIT0CBQZhbW91bnQAAQkAAgECD05vIE5GVCBhdHRhY2hlZAQFbmZ0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAQxpc1NpZ25BcnRORlQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBwkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkCQACAQIbT25seSBTSUdOIEFydCBORlQgYWNjZXB0ZWQuBA0kdDAxMzM4MDEzNDczCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTMzODAxMzQ3MwJfMQQGY2FsbGVyCAUNJHQwMTMzODAxMzQ3MwJfMgQEZGF0ZQgFDSR0MDEzMzgwMTM0NzMCXzMECmlzVmFsaWRORlQIBQ0kdDAxMzM4MDEzNDczAl80BAVhcnRJZAgFDSR0MDEzMzgwMTM0NzMCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTMzODAxMzQ3MwJfNgQJYXJ0U2lnbklECAUNJHQwMTMzODAxMzQ3MwJfNwMJAAACCQCxAgEFCWFydFNpZ25JRAAACQACAQIdQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUFYXNzZXQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUFcHJpY2UJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEKZ2V0U2FsZUtleQQFBmNhbGxlcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUEZGF0ZQIBXwkApAMBBQVwcmljZQIBXwUFYXNzZXQCAV8FBW5mdElkAgFfBQVhcnRJZAIBXwULY3JlYXRvckFkZHICAV8FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAIET1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkBQZjYWxsZXIFA25pbAFpAQ91cGRhdGVTYWxlUHJpY2UDBW5mdElkBXByaWNlBWFzc2V0BA0kdDAxNDM3NTE0NDY4CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTQzNzUxNDQ2OAJfMQQGY2FsbGVyCAUNJHQwMTQzNzUxNDQ2OAJfMgQEZGF0ZQgFDSR0MDE0Mzc1MTQ0NjgCXzMECmlzVmFsaWRORlQIBQ0kdDAxNDM3NTE0NDY4Al80BAVhcnRJZAgFDSR0MDE0Mzc1MTQ0NjgCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTQzNzUxNDQ2OAJfNgQJYXJ0U2lnbklECAUNJHQwMTQzNzUxNDQ2OAJfNwMJAAACCQCxAgEFCWFydFNpZ25JRAAACQACAQIwQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQsIGNhbmNlbCB5b3VyIHNhbGUuAwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkAwkBAiE9AgUJc2FsZU93bmVyBQZjYWxsZXIJAAIBAhZZb3UgZG9uJ3Qgb3duIHRoaXMgTkZUBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECD1NhbGUgbm90IGFjdGl2ZQMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQVhc3NldAkAAgECQE9ubHkgJEFSVCwgVVNEVC1QUCwgVVNEQy1QUCwgRUFTVCwgUFVaWkxFLCBFVEggb3IgV0FWRVMgYWNjZXB0ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQVwcmljZQkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQZjYWxsZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQC1CQIJAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOAgFfCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHc2FsZUtleQIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUIc2FsZUluZm8AAAIBXwkApAMBBQVwcmljZQIBXwUFYXNzZXQCAV8JAJEDAgUIc2FsZUluZm8AAwIBXwkAkQMCBQhzYWxlSW5mbwAEAgFfCQCRAwIFCHNhbGVJbmZvAAUCAV8JAJEDAgUIc2FsZUluZm8ABgUDbmlsAWkBCmNhbmNlbFNhbGUBBW5mdElkBA0kdDAxNTYzNDE1ODc1CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTU2MzQxNTg3NQJfMQQGY2FsbGVyCAUNJHQwMTU2MzQxNTg3NQJfMgQEZGF0ZQgFDSR0MDE1NjM0MTU4NzUCXzMECmlzVmFsaWRORlQIBQ0kdDAxNTYzNDE1ODc1Al80BAVhcnRJZAgFDSR0MDE1NjM0MTU4NzUCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTU2MzQxNTg3NQJfNgQJYXJ0U2lnbklECAUNJHQwMTU2MzQxNTg3NQJfNwQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAMJAQIhPQIFCXNhbGVPd25lcgUGY2FsbGVyCQACAQIWWW91IGRvbid0IG93biB0aGlzIE5GVAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAg9TYWxlIG5vdCBhY3RpdmUEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BAUGY2FsbGVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIKX0NBTkNFTExFRAkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgABCQDZBAEFBW5mdElkBQNuaWwBaQEGYnV5TkZUAQVuZnRJZAQNJHQwMTY3MDYxNjc5OQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDE2NzA2MTY3OTkCXzEEBmNhbGxlcggFDSR0MDE2NzA2MTY3OTkCXzIEBGRhdGUIBQ0kdDAxNjcwNjE2Nzk5Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTY3MDYxNjc5OQJfNAQFYXJ0SWQIBQ0kdDAxNjcwNjE2Nzk5Al81BAtjcmVhdG9yQWRkcggFDSR0MDE2NzA2MTY3OTkCXzYECWFydFNpZ25JRAgFDSR0MDE2NzA2MTY3OTkCXzcDCQAAAgkAsQIBBQlhcnRTaWduSUQAAAkAAgECMEFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0LCBjYW5jZWwgeW91ciBzYWxlLgMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BAUJc2FsZU93bmVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4DCQAAAgkAsQIBBQhzYWxlSW5mbwAACQACAQIPU2FsZSBOb3QgZm91bmQhBA1zYWxlSW5mb0FycmF5CQC1CQIFCHNhbGVJbmZvAgFfAwkAAAIJALYJAQkAkQMCBQ1zYWxlSW5mb0FycmF5AAEAAAkAAgECCk9mZmVyIG9ubHkEDSR0MDE3Mjk2MTczMzIJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTcyOTYxNzMzMgJfMQQGYW1vdW50CAUNJHQwMTcyOTYxNzMzMgJfMgQPcGF5bWVudEFzc2V0U3RyAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAIAAwMJAQIhPQIJAJEDAgUNc2FsZUluZm9BcnJheQABCQCkAwEFBmFtb3VudAYJAQIhPQIJAJEDAgUNc2FsZUluZm9BcnJheQACBQ9wYXltZW50QXNzZXRTdHIJAAIBAhpQYXltZW50IGluZm9zIGRvbid0IG1hdGNoLgQNJHQwMTc4NDUxNzk4NAkBDHNldFRyYW5zZmVycwcFBmFtb3VudAgFB3BheW1lbnQHYXNzZXRJZAUFbmZ0SWQFC2NyZWF0b3JBZGRyBQlzYWxlT3duZXIFBmNhbGxlcgUFYXJ0SWQEC2NvbW1pc3Npb25zCAUNJHQwMTc4NDUxNzk4NAJfMQQKY3JlYXRvckZlZQgFDSR0MDE3ODQ1MTc5ODQCXzIECG93bmVyRmVlCAUNJHQwMTc4NDUxNzk4NAJfMwQMY29sbGVjdG9yTkZUCAUNJHQwMTc4NDUxNzk4NAJfNAkAzggCCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUIc2FsZUluZm8CCF9DTE9TRURfCQCkAwEFBGRhdGUCAV8FAmlkAgFfBQZjYWxsZXIJAMwIAgkBDnVwZGF0ZU51bVNhbGVzAAkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQFA25pbAUKY3JlYXRvckZlZQULY29tbWlzc2lvbnMBaQEIc2V0T2ZmZXIBBW5mdElkBA0kdDAxODM5NTE4NDkyCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTgzOTUxODQ5MgJfMQQKb2ZmZXJPd25lcggFDSR0MDE4Mzk1MTg0OTICXzIEBGRhdGUIBQ0kdDAxODM5NTE4NDkyAl8zBAppc1ZhbGlkTkZUCAUNJHQwMTgzOTUxODQ5MgJfNAQFYXJ0SWQIBQ0kdDAxODM5NTE4NDkyAl81BAtjcmVhdG9yQWRkcggFDSR0MDE4Mzk1MTg0OTICXzYECWFydFNpZ25JRAgFDSR0MDE4Mzk1MTg0OTICXzcDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQEDSR0MDE4NTUzMTg1ODkJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTg1NTMxODU4OQJfMQQGYW1vdW50CAUNJHQwMTg1NTMxODU4OQJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAAACBQZhbW91bnQAAAkAAgECFk9mZmVyIG9mIDAgbm90IGFsbG93ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQZhbW91bnQJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UECXNhbGVPd25lcgkBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFAmlkAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUEZGF0ZQIBXwkApAMBBQZhbW91bnQCAV8FB2Fzc2V0SWQCAV8FBW5mdElkAgFfBQVhcnRJZAIBXwULY3JlYXRvckFkZHICAV8FCm9mZmVyT3duZXICAV8FAmlkBQNuaWwBaQELYWNjZXB0T2ZmZXIDBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcgQNJHQwMTkzODIxOTQ3NQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDE5MzgyMTk0NzUCXzEEBmNhbGxlcggFDSR0MDE5MzgyMTk0NzUCXzIEBGRhdGUIBQ0kdDAxOTM4MjE5NDc1Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTkzODIxOTQ3NQJfNAQFYXJ0SWQIBQ0kdDAxOTM4MjE5NDc1Al81BAtjcmVhdG9yQWRkcggFDSR0MDE5MzgyMTk0NzUCXzYECWFydFNpZ25JRAgFDSR0MDE5MzgyMTk0NzUCXzcDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQECXNhbGVPd25lcgkBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFBW5mdElkAwkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIJAAIBAiBPbmx5IHNhbGUgb3duZXIgY2FuIGFjY2VwdCBvZmZlcgQGYmlkS2V5CQEJZ2V0QmlkS2V5BAUKb2ZmZXJPd25lcgUFbmZ0SWQFCXNhbGVPd25lcgUHb2ZmZXJJZAQNJHQwMTk3MjkxOTc4NAkBCmdldEJpZERhdGEBBQZiaWRLZXkECmJpZERhdGFBcnIIBQ0kdDAxOTcyOTE5Nzg0Al8xBAdhc3NldElkCAUNJHQwMTk3MjkxOTc4NAJfMgQHYmlkRGF0YQgFDSR0MDE5NzI5MTk3ODQCXzMEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BAUJc2FsZU93bmVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4DCQAAAgkAsQIBBQhzYWxlSW5mbwAACQACAQIPU2FsZSBOb3QgZm91bmQhBAZhbW91bnQJAQV2YWx1ZQEJALYJAQkAkQMCBQpiaWREYXRhQXJyAAEEDSR0MDIwMDIwMjAxNTgJAQxzZXRUcmFuc2ZlcnMHBQZhbW91bnQFB2Fzc2V0SWQFBW5mdElkBQtjcmVhdG9yQWRkcgUJc2FsZU93bmVyCQCRAwIFCmJpZERhdGFBcnIABgUFYXJ0SWQEC2NvbW1pc3Npb25zCAUNJHQwMjAwMjAyMDE1OAJfMQQKY3JlYXRvckZlZQgFDSR0MDIwMDIwMjAxNTgCXzIECG93bmVyRmVlCAUNJHQwMjAwMjAyMDE1OAJfMwQMY29sbGVjdG9yTkZUCAUNJHQwMjAwMjAyMDE1OAJfNAQKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQdhc3NldElkCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQCBVdBVkVTCQDOCAIJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIOX0NMT1NFRC1PRkZFUl8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FCm9mZmVyT3duZXICAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkU3RyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUBQNuaWwFCmNyZWF0b3JGZWUFC2NvbW1pc3Npb25zAWkBC2NhbmNlbE9mZmVyBAVuZnRJZAdvZmZlcklkCm9mZmVyT3duZXIJc2FsZU93bmVyBA0kdDAyMDk1ODIxMDMyCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyMDk1ODIxMDMyAl8xBAZjYWxsZXIIBQ0kdDAyMDk1ODIxMDMyAl8yBARkYXRlCAUNJHQwMjA5NTgyMTAzMgJfMwMDCQECIT0CBQZjYWxsZXIFCm9mZmVyT3duZXIJAQIhPQIFBmNhbGxlcgUJc2FsZU93bmVyBwkAAgECHVlvdSBjYW5ub3QgY2FuY2VsIHRoaXMgb2ZmZXIuBAZiaWRLZXkJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQdvZmZlcklkBA0kdDAyMTIwNDIxMjU5CQEKZ2V0QmlkRGF0YQEFBmJpZEtleQQKYmlkRGF0YUFycggFDSR0MDIxMjA0MjEyNTkCXzEEB2Fzc2V0SWQIBQ0kdDAyMTIwNDIxMjU5Al8yBAdiaWREYXRhCAUNJHQwMjEyMDQyMTI1OQJfMwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBmJpZEtleQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQZiaWRLZXkCCl9DQU5DRUxMRUQJAKwCAgkArAICCQCsAgIJAKwCAgUHYmlkRGF0YQILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQUHYXNzZXRJZAUDbmlsAH4Cslc=", "height": 2868628, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9bxRgqbELnnbmS5r9QgNxikCPBdzV8mwJDKqP55sPT83 Next: none Diff:
OldNewDifferences
1010
1111 let e = value(addressFromString(b("conf_oracle_fee")))
1212
13-let f = value(addressFromString(b("conf_signweb_dapp")))
13+let f = b("conf_fee_receiver")
1414
15-let g = b("conf_fee_receiver")
15+let g = value(addressFromString(b("conf_artworks_dapp")))
1616
17-let h = value(addressFromString(b("conf_artworks_dapp")))
18-
19-let i = if (d)
17+let h = if (d)
2018 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
2119 else value(addressFromString(b("conf_users_dapp")))
2220
23-let j = value(addressFromString(b("conf_whitelist_dapp")))
21+let i = b("conf_puzzle_art_pool")
2422
25-let k = b("conf_puzzle_art_pool")
23+let j = b("conf_accepted_asset_USDT_PP")
2624
27-let l = b("conf_accepted_asset_USDT_PP")
25+let k = b("conf_accepted_asset_ART")
2826
29-let m = b("conf_accepted_asset_ART")
27+let l = b("conf_accepted_asset_USDC_PP")
3028
31-let n = b("conf_accepted_asset_USDC_PP")
29+let m = b("conf_accepted_asset_EAST")
3230
33-let o = b("conf_accepted_asset_EAST")
31+let n = b("conf_accepted_asset_PUZZLE")
3432
35-let p = b("conf_accepted_asset_PUZZLE")
33+let o = b("conf_accepted_asset_ETH_PP")
3634
37-let q = b("conf_accepted_asset_ETH_PP")
35+let p = "WAVES"
3836
39-let r = "WAVES"
37+let q = fromBase58String(j)
38+
39+let r = fromBase58String(k)
4040
4141 let s = fromBase58String(l)
4242
4646
4747 let v = fromBase58String(o)
4848
49-let w = fromBase58String(p)
49+let w = base58''
5050
51-let x = fromBase58String(q)
51+let x = [j, k, l, m, n, p, o]
5252
53-let y = base58''
53+let y = b("conf_admin_1")
5454
55-let z = [l, m, n, o, p, r, q]
55+let z = 3
5656
57-let A = b("conf_admin_1")
57+let A = "SUSPENDED"
5858
59-let B = 3
59+let B = "REMOVED"
6060
61-let C = "SUSPENDED"
61+let C = "ILLEGAL"
6262
63-let D = "REMOVED"
63+let D = "SUSPENDED"
6464
65-let E = "ILLEGAL"
65+let E = "conf_dapp_is_running"
6666
67-let F = "SUSPENDED"
67+let F = "conf_maintenance_msg"
6868
69-let G = "conf_dapp_is_running"
69+let G = valueOrElse(getBoolean(this, E), true)
7070
71-let H = "conf_maintenance_msg"
71+let H = valueOrElse(getString(this, F), "")
7272
73-let I = valueOrElse(getBoolean(this, G), true)
73+let I = "num_sales"
7474
75-let J = valueOrElse(getString(this, H), "")
76-
77-let K = "num_sales"
78-
79-func L (c) = valueOrElse(getString(i, c), "Error")
75+func J (c) = valueOrElse(getString(h, c), "Error")
8076
8177
82-func M (c) = valueOrElse(getInteger(h, c), 1000)
78+func K (c) = valueOrElse(getInteger(g, c), 1000)
8379
8480
85-func N (c) = valueOrElse(getString(h, c), "")
81+func L (c) = valueOrElse(getString(g, c), "")
8682
8783
88-func O (c) = valueOrElse(getInteger(this, c), 0)
84+func M (c) = valueOrElse(getInteger(this, c), 0)
8985
9086
91-func P (Q) = ("user_status_" + Q)
87+func N (O) = ("user_status_" + O)
9288
9389
94-func R (S,T) = ((("art_royalties_" + T) + "_") + S)
90+func P (Q,R) = ((("art_royalties_" + R) + "_") + Q)
9591
9692
97-func U (V,T) = ((("art_signid_" + T) + "_") + V)
93+func S (T,R) = ((("art_signid_" + R) + "_") + T)
9894
9995
100-func W (V,T) = ((("art_flag_" + T) + "_") + V)
96+func U (T,R) = ((("art_flag_" + R) + "_") + T)
10197
10298
103-func X (Y) = ("nft_" + Y)
99+func V (W) = ("nft_" + W)
104100
105101
106-func Z (S,aa,T,ab) = ((((((("sale2nd_info_" + S) + "_") + aa) + "_") + T) + "_") + ab)
102+func X (Q,Y,R,Z) = ((((((("sale2nd_info_" + Q) + "_") + Y) + "_") + R) + "_") + Z)
107103
108104
109-func ac (ad,aa,ae,af) = ((((((("offer2nd_" + ad) + "_") + aa) + "_") + ae) + "_") + af)
105+func aa (ab,Y,ac,ad) = ((((((("offer2nd_" + ab) + "_") + Y) + "_") + ac) + "_") + ad)
110106
111107
112-func ag (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
108+func ae (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
113109
114110
115-let ah = ag(("certification_fee_" + toBase58String(t)))
111+let af = ae(("certification_fee_" + toBase58String(r)))
116112
117-func ai (V) = ("artist_agent_" + V)
113+func ag (T) = ("artist_agent_" + T)
118114
119115
120-func aj (V) = ("artist_agent_secondary_" + V)
116+func ah (T) = ("artist_agent_secondary_" + T)
121117
122118
123-func ak (V) = ("artist_public_agent_" + V)
119+func ai (T) = ("artist_public_agent_" + T)
124120
125121
126-func al (V) = ("artist_public_agent_secondary_" + V)
122+func aj (T) = ("artist_public_agent_secondary_" + T)
127123
128124
129-func am (an) = if (!(I))
130- then throw(J)
131- else $Tuple3(toBase58String(an.transactionId), toBase58String(an.caller.bytes), lastBlock.timestamp)
125+func ak (al) = if (!(G))
126+ then throw(H)
127+ else $Tuple3(toBase58String(al.transactionId), toBase58String(al.caller.bytes), lastBlock.timestamp)
132128
133129
134-func ao (an) = if ((size(an.payments) == 0))
130+func am (al) = if ((size(al.payments) == 0))
135131 then throw("No payment attached")
136132 else {
137- let ap = value(an.payments[0])
138- let aq = value(ap.amount)
139- $Tuple2(ap, aq)
133+ let an = value(al.payments[0])
134+ let ao = value(an.amount)
135+ $Tuple2(an, ao)
140136 }
141137
142138
143-func ar (as) = if (if (if ((as.quantity == 1))
144- then (as.decimals == 0)
139+func ap (aq) = if (if (if ((aq.quantity == 1))
140+ then (aq.decimals == 0)
145141 else false)
146- then (as.reissuable == false)
142+ then (aq.reissuable == false)
147143 else false)
148- then (as.issuer == h)
144+ then (aq.issuer == g)
149145 else false
150146
151147
152-func at (Y) = {
153- let as = value(assetInfo(Y))
154- ar(as)
148+func ar (W) = {
149+ let aq = value(assetInfo(W))
150+ ap(aq)
155151 }
156152
157153
158-func au (av) = if (!(containsElement(z, av)))
154+func as (at) = if (!(containsElement(x, at)))
159155 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
160156 else true
161157
162158
163-func aw (av) = if ((av == "WAVES"))
159+func au (at) = if ((at == "WAVES"))
164160 then unit
165- else fromBase58String(av)
161+ else fromBase58String(at)
166162
167163
168-func ax (ay) = {
169- let ae = b(("current_owner_on_dapp_" + ay))
170- if ((size(ae) == 0))
164+func av (aw) = {
165+ let ac = b(("current_owner_on_dapp_" + aw))
166+ if ((size(ac) == 0))
171167 then throw("NFT not found")
172168 else {
173- let az = b(((("sale2nd_status_" + ae) + "_") + ay))
174- if ((az != "OPEN"))
169+ let ax = b(((("sale2nd_status_" + ac) + "_") + aw))
170+ if ((ax != "OPEN"))
175171 then throw("NFT not for sale")
176- else ae
172+ else ac
177173 }
178174 }
179175
180176
181-func aA (c) = {
182- let aB = b((c + "_OPEN"))
183- if ((aB == ""))
177+func ay (c) = {
178+ let az = b((c + "_OPEN"))
179+ if ((az == ""))
184180 then throw("Offer not found")
185181 else {
186- let aC = split(aB, "_")
187- let av = aw(aC[2])
188- $Tuple3(aC, av, aB)
182+ let aA = split(az, "_")
183+ let at = au(aA[2])
184+ $Tuple3(aA, at, az)
189185 }
190186 }
191187
192188
193-func aD (av) = {
194- let aE = av
195- if ($isInstanceOf(aE, "ByteVector"))
189+func aB (at) = {
190+ let aC = at
191+ if ($isInstanceOf(aC, "ByteVector"))
196192 then {
197- let aF = aE
198- assetBalance(this, aF)
193+ let aD = aC
194+ assetBalance(this, aD)
199195 }
200196 else wavesBalance(this).available
201197 }
202198
203199
204-func aG (aH) = if ((aH != E))
205- then (aH != F)
200+func aE (aF) = if ((aF != C))
201+ then (aF != D)
206202 else false
207203
208204
209-func aI (Q,Y) = {
210- let aH = N(W(Q, Y))
211- if (aG(aH))
205+func aG (O,W) = {
206+ let aF = L(U(O, W))
207+ if (aE(aF))
212208 then true
213- else throw(("Original Artwork flagged as " + aH))
209+ else throw(("Original Artwork flagged as " + aF))
214210 }
215211
216212
217-func aJ (Q) = {
218- let aK = L(P(Q))
219- if (containsElement([C, D], aK))
220- then throw(("Original Artist " + aK))
213+func aH (O) = {
214+ let aI = J(N(O))
215+ if (containsElement([A, B], aI))
216+ then throw(("Original Artist " + aI))
221217 else true
222218 }
223219
224220
225-func aL (av) = {
226- let aM = split(N(X(av)), "_")
227- let aN = N(((("art_name_" + aM[5]) + "_") + aM[6]))
228- if (if (!(aI(aM[6], aM[5])))
229- then !(aJ(aM[6]))
221+func aJ (at) = {
222+ let aK = split(L(V(at)), "_")
223+ let aL = L(((("art_name_" + aK[5]) + "_") + aK[6]))
224+ if (if (!(aG(aK[6], aK[5])))
225+ then !(aH(aK[6]))
230226 else false)
231- then $Tuple4(false, aM[5], aM[6], aN)
232- else $Tuple4(true, aM[5], aM[6], aN)
227+ then $Tuple4(false, aK[5], aK[6], aL)
228+ else $Tuple4(true, aK[5], aK[6], aL)
233229 }
234230
235231
236-func aO (T,ab) = {
237- let aN = N(U(ab, T))
238- if ((size(aN) == 0))
232+func aM (R,Z) = {
233+ let aL = L(S(Z, R))
234+ if ((size(aL) == 0))
239235 then throw("Artwork not found on SIGN Art")
240- else if (if (!(aI(ab, T)))
241- then !(aJ(ab))
236+ else if (if (!(aG(Z, R)))
237+ then !(aH(Z))
242238 else false)
243239 then false
244240 else true
245241 }
246242
247243
248-func aP (aq,av,ay,ab,ae,S,T) = {
249- let aQ = M(R(ab, T))
250- let aR = valueOrElse(getString(i, ai(ab)), g)
251- let aS = valueOrElse(getInteger(i, aj(ab)), 0)
252- let aT = valueOrElse(getString(i, ak(ab)), g)
253- let aU = valueOrElse(getInteger(i, al(ab)), 0)
254- let aV = fraction(aq, B, 100)
255- let aW = fraction(aq, aQ, 10000)
256- let aX = (aq - (aV + aW))
257- let aY = if (if ((aR != g))
244+func aN (ao,at,aw,Z,ac,Q,R) = {
245+ let aO = K(P(Z, R))
246+ let aP = valueOrElse(getString(h, ag(Z)), f)
247+ let aQ = valueOrElse(getInteger(h, ah(Z)), 0)
248+ let aR = valueOrElse(getString(h, ai(Z)), f)
249+ let aS = valueOrElse(getInteger(h, aj(Z)), 0)
250+ let aT = fraction(ao, z, 100)
251+ let aU = fraction(ao, aO, 10000)
252+ let aV = (ao - (aT + aU))
253+ let aW = if (if ((aP != f))
254+ then (aQ > 0)
255+ else false)
256+ then fraction(ao, aQ, 10000)
257+ else 0
258+ let aX = if (if ((aR != f))
258259 then (aS > 0)
259260 else false)
260- then fraction(aq, aS, 10000)
261+ then fraction(ao, aS, 10000)
261262 else 0
262- let aZ = if (if ((aT != g))
263- then (aU > 0)
264- else false)
265- then fraction(aq, aU, 10000)
266- else 0
267- let ba = if ((aY != 0))
268- then (aV - aY)
269- else aV
270- let bb = aD(t)
271- if ((bb == bb))
263+ let aY = if ((aW != 0))
264+ then (aT - aW)
265+ else aT
266+ let aZ = aB(r)
267+ if ((aZ == aZ))
272268 then {
273- let bc = if ((av != t))
274- then invoke(Address(fromBase58String(k)), "swap", [m, 1], [AttachedPayment(av, ba)])
269+ let ba = if ((at != r))
270+ then invoke(Address(fromBase58String(i)), "swap", [k, 1], [AttachedPayment(at, aY)])
275271 else unit
276- if ((bc == bc))
272+ if ((ba == ba))
277273 then {
278- let bd = aD(t)
279- if ((bd == bd))
274+ let bb = aB(r)
275+ if ((bb == bb))
280276 then {
281- let be = if ((aY != 0))
282- then [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
283- then (aV - aY)
284- else (bd - bb), t), ScriptTransfer(Address(fromBase58String(aR)), aY, av)]
285- else [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
286- then aV
287- else (bd - bb), t)]
288- let bf = if ((aZ != 0))
289- then [ScriptTransfer(Address(fromBase58String(aT)), aZ, av), ScriptTransfer(Address(fromBase58String(ab)), (aW - aZ), av)]
290- else [ScriptTransfer(Address(fromBase58String(ab)), aW, av)]
291- let bg = ScriptTransfer(Address(fromBase58String(ae)), aX, av)
292- let bh = ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(ay))
293- $Tuple4(be, bf, bg, bh)
277+ let bc = if ((aW != 0))
278+ then [ScriptTransfer(Address(fromBase58String(f)), if ((at == r))
279+ then (aT - aW)
280+ else (bb - aZ), r), ScriptTransfer(Address(fromBase58String(aP)), aW, at)]
281+ else [ScriptTransfer(Address(fromBase58String(f)), if ((at == r))
282+ then aT
283+ else (bb - aZ), r)]
284+ let bd = if ((aX != 0))
285+ then [ScriptTransfer(Address(fromBase58String(aR)), aX, at), ScriptTransfer(Address(fromBase58String(Z)), (aU - aX), at)]
286+ else [ScriptTransfer(Address(fromBase58String(Z)), aU, at)]
287+ let be = ScriptTransfer(Address(fromBase58String(ac)), aV, at)
288+ let bf = ScriptTransfer(Address(fromBase58String(Q)), 1, fromBase58String(aw))
289+ $Tuple4(bc, bd, be, bf)
294290 }
295291 else throw("Strict value is not equal to itself.")
296292 }
300296 }
301297
302298
303-func bi (bj) = if ((0 >= bj))
299+func bg (bh) = if ((0 > bh))
304300 then throw("Wrong minimum sell price")
305301 else true
306302
307303
308-func bk (an,aa) = {
309- let bl = am(an)
310- let Y = bl._1
311- let S = bl._2
312- let bm = bl._3
313- let bn = aL(aa)
314- let bo = bn._1
315- let T = bn._2
316- let ab = bn._3
317- let aN = bn._4
318- $Tuple7(Y, S, bm, bo, T, ab, aN)
304+func bi (al,Y) = {
305+ let bj = ak(al)
306+ let W = bj._1
307+ let Q = bj._2
308+ let bk = bj._3
309+ let bl = aJ(Y)
310+ let bm = bl._1
311+ let R = bl._2
312+ let Z = bl._3
313+ let aL = bl._4
314+ $Tuple7(W, Q, bk, bm, R, Z, aL)
319315 }
320316
321317
322-func bp () = {
323- let bq = O(K)
324- IntegerEntry(K, (bq + 1))
318+func bn () = {
319+ let bo = M(I)
320+ IntegerEntry(I, (bo + 1))
325321 }
326322
327323
328-@Callable(br)
329-func setConf (c,bs) = {
330- let S = toString(br.caller)
331- if (containsElement([A, toString(this)], S))
324+@Callable(bp)
325+func setConf (c,bq) = {
326+ let Q = toString(bp.caller)
327+ if (containsElement([y, toString(this)], Q))
332328 then if (contains(c, "conf_"))
333- then [StringEntry(c, bs)]
329+ then [StringEntry(c, bq)]
334330 else throw("Entries starting with conf_ only")
335331 else throw("You are not allowed to change this")
336332 }
337333
338334
339335
340-@Callable(br)
341-func appRunning (bt,bu) = {
342- let S = toString(br.caller)
343- let Y = toBase58String(br.transactionId)
344- if (containsElement([A, toString(this)], S))
345- then [BooleanEntry(G, bt), StringEntry(H, bu)]
336+@Callable(bp)
337+func appRunning (br,bs) = {
338+ let Q = toString(bp.caller)
339+ let W = toBase58String(bp.transactionId)
340+ if (containsElement([y, toString(this)], Q))
341+ then [BooleanEntry(E, br), StringEntry(F, bs)]
346342 else throw("You are not allowed to change this")
347343 }
348344
349345
350346
351-@Callable(an)
352-func sellNFT (bj,bv) = {
353- let bw = ao(an)
354- let ap = bw._1
355- let aq = bw._2
356- if ((aq != 1))
347+@Callable(al)
348+func sellNFT (bh,bt) = {
349+ let bu = am(al)
350+ let an = bu._1
351+ let ao = bu._2
352+ if ((ao != 1))
357353 then throw("No NFT attached")
358354 else {
359- let aa = if (if (isDefined(ap.assetId))
360- then at(value(ap.assetId))
355+ let Y = if (if (isDefined(an.assetId))
356+ then ar(value(an.assetId))
361357 else false)
362- then toBase58String(value(ap.assetId))
358+ then toBase58String(value(an.assetId))
363359 else throw("Only SIGN Art NFT accepted.")
364- let bx = bk(an, aa)
365- let Y = bx._1
366- let S = bx._2
367- let bm = bx._3
368- let bo = bx._4
369- let T = bx._5
370- let ab = bx._6
371- let aN = bx._7
372- if ((size(aN) == 0))
360+ let bv = bi(al, Y)
361+ let W = bv._1
362+ let Q = bv._2
363+ let bk = bv._3
364+ let bm = bv._4
365+ let R = bv._5
366+ let Z = bv._6
367+ let aL = bv._7
368+ if ((size(aL) == 0))
373369 then throw("Artwork not found on SIGN Art")
374- else if (!(bo))
370+ else if (!(bm))
375371 then throw("Not a valid nft")
376- else if (!(au(bv)))
377- then throw("Only SIGN, USDN, USDT or WAVES accepted")
378- else if (!(bi(bj)))
372+ else if (!(as(bt)))
373+ then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
374+ else if (!(bg(bh)))
379375 then throw("Wrong minimum sell price")
380- else [StringEntry((Z(S, aa, T, ab) + "_OPEN"), ((((((((((((toString(bm) + "_") + toString(bj)) + "_") + bv) + "_") + aa) + "_") + T) + "_") + ab) + "_") + Y)), StringEntry(((("sale2nd_status_" + S) + "_") + aa), "OPEN"), StringEntry(("current_owner_on_dapp_" + aa), S)]
376+ else [StringEntry((X(Q, Y, R, Z) + "_OPEN"), ((((((((((((toString(bk) + "_") + toString(bh)) + "_") + bt) + "_") + Y) + "_") + R) + "_") + Z) + "_") + W)), StringEntry(((("sale2nd_status_" + Q) + "_") + Y), "OPEN"), StringEntry(("current_owner_on_dapp_" + Y), Q)]
381377 }
382378 }
383379
384380
385381
386-@Callable(an)
387-func updateSalePrice (aa,bj,bv) = {
388- let by = bk(an, aa)
389- let Y = by._1
390- let S = by._2
391- let bm = by._3
392- let bo = by._4
393- let T = by._5
394- let ab = by._6
395- let aN = by._7
396- if ((size(aN) == 0))
382+@Callable(al)
383+func updateSalePrice (Y,bh,bt) = {
384+ let bw = bi(al, Y)
385+ let W = bw._1
386+ let Q = bw._2
387+ let bk = bw._3
388+ let bm = bw._4
389+ let R = bw._5
390+ let Z = bw._6
391+ let aL = bw._7
392+ if ((size(aL) == 0))
397393 then throw("Artwork not found on SIGN Art, cancel your sale.")
398- else if (!(bo))
394+ else if (!(bm))
399395 then throw("Not a valid nft")
400396 else {
401- let ae = b(("current_owner_on_dapp_" + aa))
402- if ((ae != S))
397+ let ac = b(("current_owner_on_dapp_" + Y))
398+ if ((ac != Q))
403399 then throw("You don't own this NFT")
404400 else {
405- let az = b(((("sale2nd_status_" + S) + "_") + aa))
406- if ((az != "OPEN"))
401+ let ax = b(((("sale2nd_status_" + Q) + "_") + Y))
402+ if ((ax != "OPEN"))
407403 then throw("Sale not active")
408- else if (!(au(bv)))
409- then throw("Only SIGN, USDN, USDT or WAVES accepted")
410- else if (!(bi(bj)))
404+ else if (!(as(bt)))
405+ then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
406+ else if (!(bg(bh)))
411407 then throw("Wrong minimum sell price")
412408 else {
413- let bz = Z(S, aa, T, ab)
414- let bA = split(b((bz + "_OPEN")), "_")
415-[StringEntry((bz + "_OPEN"), ((((((((((((bA[0] + "_") + toString(bj)) + "_") + bv) + "_") + bA[3]) + "_") + bA[4]) + "_") + bA[5]) + "_") + bA[6]))]
409+ let bx = X(Q, Y, R, Z)
410+ let by = split(b((bx + "_OPEN")), "_")
411+[StringEntry((bx + "_OPEN"), ((((((((((((by[0] + "_") + toString(bh)) + "_") + bt) + "_") + by[3]) + "_") + by[4]) + "_") + by[5]) + "_") + by[6]))]
416412 }
417413 }
418414 }
420416
421417
422418
423-@Callable(an)
424-func cancelSale (aa) = {
425- let bB = bk(an, aa)
426- let Y = bB._1
427- let S = bB._2
428- let bm = bB._3
429- let bo = bB._4
430- let T = bB._5
431- let ab = bB._6
432- let aN = bB._7
433- let ae = b(("current_owner_on_dapp_" + aa))
434- if ((ae != S))
419+@Callable(al)
420+func cancelSale (Y) = {
421+ let bz = bi(al, Y)
422+ let W = bz._1
423+ let Q = bz._2
424+ let bk = bz._3
425+ let bm = bz._4
426+ let R = bz._5
427+ let Z = bz._6
428+ let aL = bz._7
429+ let ac = b(("current_owner_on_dapp_" + Y))
430+ if ((ac != Q))
435431 then throw("You don't own this NFT")
436432 else {
437- let az = b(((("sale2nd_status_" + S) + "_") + aa))
438- if ((az != "OPEN"))
433+ let ax = b(((("sale2nd_status_" + Q) + "_") + Y))
434+ if ((ax != "OPEN"))
439435 then throw("Sale not active")
440436 else {
441- let bz = Z(S, aa, T, ab)
442- let bA = b((bz + "_OPEN"))
443-[DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CANCELLED"), ((((bA + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(aa))]
437+ let bx = X(Q, Y, R, Z)
438+ let by = b((bx + "_OPEN"))
439+[DeleteEntry((bx + "_OPEN")), DeleteEntry(((("sale2nd_status_" + Q) + "_") + Y)), DeleteEntry(("current_owner_on_dapp_" + Y)), StringEntry((((bx + "_") + W) + "_CANCELLED"), ((((by + "_CANCELLED_") + toString(bk)) + "_") + W)), ScriptTransfer(Address(fromBase58String(Q)), 1, fromBase58String(Y))]
444440 }
445441 }
446442 }
447443
448444
449445
450-@Callable(an)
451-func buyNFT (aa) = {
452- let bC = bk(an, aa)
453- let Y = bC._1
454- let S = bC._2
455- let bm = bC._3
456- let bo = bC._4
457- let T = bC._5
458- let ab = bC._6
459- let aN = bC._7
460- if ((size(aN) == 0))
446+@Callable(al)
447+func buyNFT (Y) = {
448+ let bA = bi(al, Y)
449+ let W = bA._1
450+ let Q = bA._2
451+ let bk = bA._3
452+ let bm = bA._4
453+ let R = bA._5
454+ let Z = bA._6
455+ let aL = bA._7
456+ if ((size(aL) == 0))
461457 then throw("Artwork not found on SIGN Art, cancel your sale.")
462- else if (!(bo))
458+ else if (!(bm))
463459 then throw("Not a valid nft")
464460 else {
465- let ae = ax(aa)
466- let bz = Z(ae, aa, T, ab)
467- let bA = b((bz + "_OPEN"))
468- if ((size(bA) == 0))
461+ let ac = av(Y)
462+ let bx = X(ac, Y, R, Z)
463+ let by = b((bx + "_OPEN"))
464+ if ((size(by) == 0))
469465 then throw("Sale Not found!")
470466 else {
471- let bD = split(bA, "_")
472- if ((parseInt(bD[1]) == 0))
467+ let bB = split(by, "_")
468+ if ((parseInt(bB[1]) == 0))
473469 then throw("Offer only")
474470 else {
475- let bE = ao(an)
476- let ap = bE._1
477- let aq = bE._2
478- let bF = if (isDefined(ap.assetId))
479- then toBase58String(value(ap.assetId))
471+ let bC = am(al)
472+ let an = bC._1
473+ let ao = bC._2
474+ let bD = if (isDefined(an.assetId))
475+ then toBase58String(value(an.assetId))
480476 else ""
481- if (if ((bD[1] != toString(aq)))
477+ if (if ((bB[1] != toString(ao)))
482478 then true
483- else (bD[2] != bF))
479+ else (bB[2] != bD))
484480 then throw("Payment infos don't match.")
485481 else {
486- let bG = aP(aq, ap.assetId, aa, ab, ae, S, T)
487- let be = bG._1
488- let bf = bG._2
489- let bg = bG._3
490- let bh = bG._4
491- (([DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((bA + "_CLOSED_") + toString(bm)) + "_") + Y) + "_") + S)), bp(), bg, bh] ++ bf) ++ be)
482+ let bE = aN(ao, an.assetId, Y, Z, ac, Q, R)
483+ let bc = bE._1
484+ let bd = bE._2
485+ let be = bE._3
486+ let bf = bE._4
487+ (([DeleteEntry((bx + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ac) + "_") + Y)), DeleteEntry(("current_owner_on_dapp_" + Y)), StringEntry((((bx + "_") + W) + "_CLOSED"), ((((((by + "_CLOSED_") + toString(bk)) + "_") + W) + "_") + Q)), bn(), be, bf] ++ bd) ++ bc)
492488 }
493489 }
494490 }
497493
498494
499495
500-@Callable(an)
501-func setOffer (aa) = {
502- let bH = bk(an, aa)
503- let Y = bH._1
504- let ad = bH._2
505- let bm = bH._3
506- let bo = bH._4
507- let T = bH._5
508- let ab = bH._6
509- let aN = bH._7
510- if (!(bo))
496+@Callable(al)
497+func setOffer (Y) = {
498+ let bF = bi(al, Y)
499+ let W = bF._1
500+ let ab = bF._2
501+ let bk = bF._3
502+ let bm = bF._4
503+ let R = bF._5
504+ let Z = bF._6
505+ let aL = bF._7
506+ if (!(bm))
511507 then throw("Not a valid nft")
512508 else {
513- let bI = ao(an)
514- let ap = bI._1
515- let aq = bI._2
516- let av = if (!(isDefined(ap.assetId)))
509+ let bG = am(al)
510+ let an = bG._1
511+ let ao = bG._2
512+ let at = if (!(isDefined(an.assetId)))
517513 then "WAVES"
518- else toBase58String(value(ap.assetId))
519- if (!(au(av)))
514+ else toBase58String(value(an.assetId))
515+ if (!(as(at)))
520516 then throw("asset not accepted")
521- else if ((aq == 0))
517+ else if ((ao == 0))
522518 then throw("Offer of 0 not allowed")
523- else if (!(bi(aq)))
519+ else if (!(bg(ao)))
524520 then throw("Wrong minimum sell price")
525521 else {
526- let ae = ax(aa)
527-[StringEntry((ac(ad, aa, ae, Y) + "_OPEN"), ((((((((((((((toString(bm) + "_") + toString(aq)) + "_") + av) + "_") + aa) + "_") + T) + "_") + ab) + "_") + ad) + "_") + Y))]
522+ let ac = av(Y)
523+[StringEntry((aa(ab, Y, ac, W) + "_OPEN"), ((((((((((((((toString(bk) + "_") + toString(ao)) + "_") + at) + "_") + Y) + "_") + R) + "_") + Z) + "_") + ab) + "_") + W))]
528524 }
529525 }
530526 }
531527
532528
533529
534-@Callable(an)
535-func acceptOffer (aa,af,ad) = {
536- let bJ = bk(an, aa)
537- let Y = bJ._1
538- let S = bJ._2
539- let bm = bJ._3
540- let bo = bJ._4
541- let T = bJ._5
542- let ab = bJ._6
543- let aN = bJ._7
544- if (!(bo))
530+@Callable(al)
531+func acceptOffer (Y,ad,ab) = {
532+ let bH = bi(al, Y)
533+ let W = bH._1
534+ let Q = bH._2
535+ let bk = bH._3
536+ let bm = bH._4
537+ let R = bH._5
538+ let Z = bH._6
539+ let aL = bH._7
540+ if (!(bm))
545541 then throw("Not a valid nft")
546542 else {
547- let ae = ax(aa)
548- if ((S != ae))
543+ let ac = av(Y)
544+ if ((Q != ac))
549545 then throw("Only sale owner can accept offer")
550546 else {
551- let bK = ac(ad, aa, ae, af)
552- let bL = aA(bK)
553- let aC = bL._1
554- let av = bL._2
555- let aB = bL._3
556- let bz = Z(ae, aa, T, ab)
557- let bA = b((bz + "_OPEN"))
558- if ((size(bA) == 0))
547+ let bI = aa(ab, Y, ac, ad)
548+ let bJ = ay(bI)
549+ let aA = bJ._1
550+ let at = bJ._2
551+ let az = bJ._3
552+ let bx = X(ac, Y, R, Z)
553+ let by = b((bx + "_OPEN"))
554+ if ((size(by) == 0))
559555 then throw("Sale Not found!")
560556 else {
561- let aq = value(parseInt(aC[1]))
562- let bM = aP(aq, av, aa, ab, ae, aC[6], T)
563- let be = bM._1
564- let bf = bM._2
565- let bg = bM._3
566- let bh = bM._4
567- let bN = if (isDefined(av))
568- then toBase58String(value(av))
557+ let ao = value(parseInt(aA[1]))
558+ let bK = aN(ao, at, Y, Z, ac, aA[6], R)
559+ let bc = bK._1
560+ let bd = bK._2
561+ let be = bK._3
562+ let bf = bK._4
563+ let bL = if (isDefined(at))
564+ then toBase58String(value(at))
569565 else "WAVES"
570- (([DeleteEntry((bz + "_OPEN")), DeleteEntry((bK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((bK + "_CLOSED"), ((((aB + "_CLOSED_") + toString(bm)) + "_") + Y)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((((((bA + "_CLOSED-OFFER_") + toString(bm)) + "_") + Y) + "_") + ad) + "_") + toString(aq)) + "_") + bN)), bp(), bg, bh] ++ bf) ++ be)
566+ (([DeleteEntry((bx + "_OPEN")), DeleteEntry((bI + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ac) + "_") + Y)), DeleteEntry(("current_owner_on_dapp_" + Y)), StringEntry((bI + "_CLOSED"), ((((az + "_CLOSED_") + toString(bk)) + "_") + W)), StringEntry((((bx + "_") + W) + "_CLOSED"), ((((((((((by + "_CLOSED-OFFER_") + toString(bk)) + "_") + W) + "_") + ab) + "_") + toString(ao)) + "_") + bL)), bn(), be, bf] ++ bd) ++ bc)
571567 }
572568 }
573569 }
575571
576572
577573
578-@Callable(an)
579-func cancelOffer (aa,af,ad,ae) = {
580- let bO = am(an)
581- let Y = bO._1
582- let S = bO._2
583- let bm = bO._3
584- if (if ((S != ad))
585- then (S != ae)
574+@Callable(al)
575+func cancelOffer (Y,ad,ab,ac) = {
576+ let bM = ak(al)
577+ let W = bM._1
578+ let Q = bM._2
579+ let bk = bM._3
580+ if (if ((Q != ab))
581+ then (Q != ac)
586582 else false)
587583 then throw("You cannot cancel this offer.")
588584 else {
589- let bK = ac(ad, aa, ae, af)
590- let bP = aA(bK)
591- let aC = bP._1
592- let av = bP._2
593- let aB = bP._3
594-[DeleteEntry((bK + "_OPEN")), StringEntry((bK + "_CANCELLED"), ((((aB + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), parseIntValue(aC[1]), av)]
585+ let bI = aa(ab, Y, ac, ad)
586+ let bN = ay(bI)
587+ let aA = bN._1
588+ let at = bN._2
589+ let az = bN._3
590+[DeleteEntry((bI + "_OPEN")), StringEntry((bI + "_CANCELLED"), ((((az + "_CANCELLED_") + toString(bk)) + "_") + W)), ScriptTransfer(Address(fromBase58String(Q)), parseIntValue(aA[1]), at)]
595591 }
596592 }
597593
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.0.0"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 let d = false
1010
1111 let e = value(addressFromString(b("conf_oracle_fee")))
1212
13-let f = value(addressFromString(b("conf_signweb_dapp")))
13+let f = b("conf_fee_receiver")
1414
15-let g = b("conf_fee_receiver")
15+let g = value(addressFromString(b("conf_artworks_dapp")))
1616
17-let h = value(addressFromString(b("conf_artworks_dapp")))
18-
19-let i = if (d)
17+let h = if (d)
2018 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
2119 else value(addressFromString(b("conf_users_dapp")))
2220
23-let j = value(addressFromString(b("conf_whitelist_dapp")))
21+let i = b("conf_puzzle_art_pool")
2422
25-let k = b("conf_puzzle_art_pool")
23+let j = b("conf_accepted_asset_USDT_PP")
2624
27-let l = b("conf_accepted_asset_USDT_PP")
25+let k = b("conf_accepted_asset_ART")
2826
29-let m = b("conf_accepted_asset_ART")
27+let l = b("conf_accepted_asset_USDC_PP")
3028
31-let n = b("conf_accepted_asset_USDC_PP")
29+let m = b("conf_accepted_asset_EAST")
3230
33-let o = b("conf_accepted_asset_EAST")
31+let n = b("conf_accepted_asset_PUZZLE")
3432
35-let p = b("conf_accepted_asset_PUZZLE")
33+let o = b("conf_accepted_asset_ETH_PP")
3634
37-let q = b("conf_accepted_asset_ETH_PP")
35+let p = "WAVES"
3836
39-let r = "WAVES"
37+let q = fromBase58String(j)
38+
39+let r = fromBase58String(k)
4040
4141 let s = fromBase58String(l)
4242
4343 let t = fromBase58String(m)
4444
4545 let u = fromBase58String(n)
4646
4747 let v = fromBase58String(o)
4848
49-let w = fromBase58String(p)
49+let w = base58''
5050
51-let x = fromBase58String(q)
51+let x = [j, k, l, m, n, p, o]
5252
53-let y = base58''
53+let y = b("conf_admin_1")
5454
55-let z = [l, m, n, o, p, r, q]
55+let z = 3
5656
57-let A = b("conf_admin_1")
57+let A = "SUSPENDED"
5858
59-let B = 3
59+let B = "REMOVED"
6060
61-let C = "SUSPENDED"
61+let C = "ILLEGAL"
6262
63-let D = "REMOVED"
63+let D = "SUSPENDED"
6464
65-let E = "ILLEGAL"
65+let E = "conf_dapp_is_running"
6666
67-let F = "SUSPENDED"
67+let F = "conf_maintenance_msg"
6868
69-let G = "conf_dapp_is_running"
69+let G = valueOrElse(getBoolean(this, E), true)
7070
71-let H = "conf_maintenance_msg"
71+let H = valueOrElse(getString(this, F), "")
7272
73-let I = valueOrElse(getBoolean(this, G), true)
73+let I = "num_sales"
7474
75-let J = valueOrElse(getString(this, H), "")
76-
77-let K = "num_sales"
78-
79-func L (c) = valueOrElse(getString(i, c), "Error")
75+func J (c) = valueOrElse(getString(h, c), "Error")
8076
8177
82-func M (c) = valueOrElse(getInteger(h, c), 1000)
78+func K (c) = valueOrElse(getInteger(g, c), 1000)
8379
8480
85-func N (c) = valueOrElse(getString(h, c), "")
81+func L (c) = valueOrElse(getString(g, c), "")
8682
8783
88-func O (c) = valueOrElse(getInteger(this, c), 0)
84+func M (c) = valueOrElse(getInteger(this, c), 0)
8985
9086
91-func P (Q) = ("user_status_" + Q)
87+func N (O) = ("user_status_" + O)
9288
9389
94-func R (S,T) = ((("art_royalties_" + T) + "_") + S)
90+func P (Q,R) = ((("art_royalties_" + R) + "_") + Q)
9591
9692
97-func U (V,T) = ((("art_signid_" + T) + "_") + V)
93+func S (T,R) = ((("art_signid_" + R) + "_") + T)
9894
9995
100-func W (V,T) = ((("art_flag_" + T) + "_") + V)
96+func U (T,R) = ((("art_flag_" + R) + "_") + T)
10197
10298
103-func X (Y) = ("nft_" + Y)
99+func V (W) = ("nft_" + W)
104100
105101
106-func Z (S,aa,T,ab) = ((((((("sale2nd_info_" + S) + "_") + aa) + "_") + T) + "_") + ab)
102+func X (Q,Y,R,Z) = ((((((("sale2nd_info_" + Q) + "_") + Y) + "_") + R) + "_") + Z)
107103
108104
109-func ac (ad,aa,ae,af) = ((((((("offer2nd_" + ad) + "_") + aa) + "_") + ae) + "_") + af)
105+func aa (ab,Y,ac,ad) = ((((((("offer2nd_" + ab) + "_") + Y) + "_") + ac) + "_") + ad)
110106
111107
112-func ag (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
108+func ae (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
113109
114110
115-let ah = ag(("certification_fee_" + toBase58String(t)))
111+let af = ae(("certification_fee_" + toBase58String(r)))
116112
117-func ai (V) = ("artist_agent_" + V)
113+func ag (T) = ("artist_agent_" + T)
118114
119115
120-func aj (V) = ("artist_agent_secondary_" + V)
116+func ah (T) = ("artist_agent_secondary_" + T)
121117
122118
123-func ak (V) = ("artist_public_agent_" + V)
119+func ai (T) = ("artist_public_agent_" + T)
124120
125121
126-func al (V) = ("artist_public_agent_secondary_" + V)
122+func aj (T) = ("artist_public_agent_secondary_" + T)
127123
128124
129-func am (an) = if (!(I))
130- then throw(J)
131- else $Tuple3(toBase58String(an.transactionId), toBase58String(an.caller.bytes), lastBlock.timestamp)
125+func ak (al) = if (!(G))
126+ then throw(H)
127+ else $Tuple3(toBase58String(al.transactionId), toBase58String(al.caller.bytes), lastBlock.timestamp)
132128
133129
134-func ao (an) = if ((size(an.payments) == 0))
130+func am (al) = if ((size(al.payments) == 0))
135131 then throw("No payment attached")
136132 else {
137- let ap = value(an.payments[0])
138- let aq = value(ap.amount)
139- $Tuple2(ap, aq)
133+ let an = value(al.payments[0])
134+ let ao = value(an.amount)
135+ $Tuple2(an, ao)
140136 }
141137
142138
143-func ar (as) = if (if (if ((as.quantity == 1))
144- then (as.decimals == 0)
139+func ap (aq) = if (if (if ((aq.quantity == 1))
140+ then (aq.decimals == 0)
145141 else false)
146- then (as.reissuable == false)
142+ then (aq.reissuable == false)
147143 else false)
148- then (as.issuer == h)
144+ then (aq.issuer == g)
149145 else false
150146
151147
152-func at (Y) = {
153- let as = value(assetInfo(Y))
154- ar(as)
148+func ar (W) = {
149+ let aq = value(assetInfo(W))
150+ ap(aq)
155151 }
156152
157153
158-func au (av) = if (!(containsElement(z, av)))
154+func as (at) = if (!(containsElement(x, at)))
159155 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
160156 else true
161157
162158
163-func aw (av) = if ((av == "WAVES"))
159+func au (at) = if ((at == "WAVES"))
164160 then unit
165- else fromBase58String(av)
161+ else fromBase58String(at)
166162
167163
168-func ax (ay) = {
169- let ae = b(("current_owner_on_dapp_" + ay))
170- if ((size(ae) == 0))
164+func av (aw) = {
165+ let ac = b(("current_owner_on_dapp_" + aw))
166+ if ((size(ac) == 0))
171167 then throw("NFT not found")
172168 else {
173- let az = b(((("sale2nd_status_" + ae) + "_") + ay))
174- if ((az != "OPEN"))
169+ let ax = b(((("sale2nd_status_" + ac) + "_") + aw))
170+ if ((ax != "OPEN"))
175171 then throw("NFT not for sale")
176- else ae
172+ else ac
177173 }
178174 }
179175
180176
181-func aA (c) = {
182- let aB = b((c + "_OPEN"))
183- if ((aB == ""))
177+func ay (c) = {
178+ let az = b((c + "_OPEN"))
179+ if ((az == ""))
184180 then throw("Offer not found")
185181 else {
186- let aC = split(aB, "_")
187- let av = aw(aC[2])
188- $Tuple3(aC, av, aB)
182+ let aA = split(az, "_")
183+ let at = au(aA[2])
184+ $Tuple3(aA, at, az)
189185 }
190186 }
191187
192188
193-func aD (av) = {
194- let aE = av
195- if ($isInstanceOf(aE, "ByteVector"))
189+func aB (at) = {
190+ let aC = at
191+ if ($isInstanceOf(aC, "ByteVector"))
196192 then {
197- let aF = aE
198- assetBalance(this, aF)
193+ let aD = aC
194+ assetBalance(this, aD)
199195 }
200196 else wavesBalance(this).available
201197 }
202198
203199
204-func aG (aH) = if ((aH != E))
205- then (aH != F)
200+func aE (aF) = if ((aF != C))
201+ then (aF != D)
206202 else false
207203
208204
209-func aI (Q,Y) = {
210- let aH = N(W(Q, Y))
211- if (aG(aH))
205+func aG (O,W) = {
206+ let aF = L(U(O, W))
207+ if (aE(aF))
212208 then true
213- else throw(("Original Artwork flagged as " + aH))
209+ else throw(("Original Artwork flagged as " + aF))
214210 }
215211
216212
217-func aJ (Q) = {
218- let aK = L(P(Q))
219- if (containsElement([C, D], aK))
220- then throw(("Original Artist " + aK))
213+func aH (O) = {
214+ let aI = J(N(O))
215+ if (containsElement([A, B], aI))
216+ then throw(("Original Artist " + aI))
221217 else true
222218 }
223219
224220
225-func aL (av) = {
226- let aM = split(N(X(av)), "_")
227- let aN = N(((("art_name_" + aM[5]) + "_") + aM[6]))
228- if (if (!(aI(aM[6], aM[5])))
229- then !(aJ(aM[6]))
221+func aJ (at) = {
222+ let aK = split(L(V(at)), "_")
223+ let aL = L(((("art_name_" + aK[5]) + "_") + aK[6]))
224+ if (if (!(aG(aK[6], aK[5])))
225+ then !(aH(aK[6]))
230226 else false)
231- then $Tuple4(false, aM[5], aM[6], aN)
232- else $Tuple4(true, aM[5], aM[6], aN)
227+ then $Tuple4(false, aK[5], aK[6], aL)
228+ else $Tuple4(true, aK[5], aK[6], aL)
233229 }
234230
235231
236-func aO (T,ab) = {
237- let aN = N(U(ab, T))
238- if ((size(aN) == 0))
232+func aM (R,Z) = {
233+ let aL = L(S(Z, R))
234+ if ((size(aL) == 0))
239235 then throw("Artwork not found on SIGN Art")
240- else if (if (!(aI(ab, T)))
241- then !(aJ(ab))
236+ else if (if (!(aG(Z, R)))
237+ then !(aH(Z))
242238 else false)
243239 then false
244240 else true
245241 }
246242
247243
248-func aP (aq,av,ay,ab,ae,S,T) = {
249- let aQ = M(R(ab, T))
250- let aR = valueOrElse(getString(i, ai(ab)), g)
251- let aS = valueOrElse(getInteger(i, aj(ab)), 0)
252- let aT = valueOrElse(getString(i, ak(ab)), g)
253- let aU = valueOrElse(getInteger(i, al(ab)), 0)
254- let aV = fraction(aq, B, 100)
255- let aW = fraction(aq, aQ, 10000)
256- let aX = (aq - (aV + aW))
257- let aY = if (if ((aR != g))
244+func aN (ao,at,aw,Z,ac,Q,R) = {
245+ let aO = K(P(Z, R))
246+ let aP = valueOrElse(getString(h, ag(Z)), f)
247+ let aQ = valueOrElse(getInteger(h, ah(Z)), 0)
248+ let aR = valueOrElse(getString(h, ai(Z)), f)
249+ let aS = valueOrElse(getInteger(h, aj(Z)), 0)
250+ let aT = fraction(ao, z, 100)
251+ let aU = fraction(ao, aO, 10000)
252+ let aV = (ao - (aT + aU))
253+ let aW = if (if ((aP != f))
254+ then (aQ > 0)
255+ else false)
256+ then fraction(ao, aQ, 10000)
257+ else 0
258+ let aX = if (if ((aR != f))
258259 then (aS > 0)
259260 else false)
260- then fraction(aq, aS, 10000)
261+ then fraction(ao, aS, 10000)
261262 else 0
262- let aZ = if (if ((aT != g))
263- then (aU > 0)
264- else false)
265- then fraction(aq, aU, 10000)
266- else 0
267- let ba = if ((aY != 0))
268- then (aV - aY)
269- else aV
270- let bb = aD(t)
271- if ((bb == bb))
263+ let aY = if ((aW != 0))
264+ then (aT - aW)
265+ else aT
266+ let aZ = aB(r)
267+ if ((aZ == aZ))
272268 then {
273- let bc = if ((av != t))
274- then invoke(Address(fromBase58String(k)), "swap", [m, 1], [AttachedPayment(av, ba)])
269+ let ba = if ((at != r))
270+ then invoke(Address(fromBase58String(i)), "swap", [k, 1], [AttachedPayment(at, aY)])
275271 else unit
276- if ((bc == bc))
272+ if ((ba == ba))
277273 then {
278- let bd = aD(t)
279- if ((bd == bd))
274+ let bb = aB(r)
275+ if ((bb == bb))
280276 then {
281- let be = if ((aY != 0))
282- then [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
283- then (aV - aY)
284- else (bd - bb), t), ScriptTransfer(Address(fromBase58String(aR)), aY, av)]
285- else [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
286- then aV
287- else (bd - bb), t)]
288- let bf = if ((aZ != 0))
289- then [ScriptTransfer(Address(fromBase58String(aT)), aZ, av), ScriptTransfer(Address(fromBase58String(ab)), (aW - aZ), av)]
290- else [ScriptTransfer(Address(fromBase58String(ab)), aW, av)]
291- let bg = ScriptTransfer(Address(fromBase58String(ae)), aX, av)
292- let bh = ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(ay))
293- $Tuple4(be, bf, bg, bh)
277+ let bc = if ((aW != 0))
278+ then [ScriptTransfer(Address(fromBase58String(f)), if ((at == r))
279+ then (aT - aW)
280+ else (bb - aZ), r), ScriptTransfer(Address(fromBase58String(aP)), aW, at)]
281+ else [ScriptTransfer(Address(fromBase58String(f)), if ((at == r))
282+ then aT
283+ else (bb - aZ), r)]
284+ let bd = if ((aX != 0))
285+ then [ScriptTransfer(Address(fromBase58String(aR)), aX, at), ScriptTransfer(Address(fromBase58String(Z)), (aU - aX), at)]
286+ else [ScriptTransfer(Address(fromBase58String(Z)), aU, at)]
287+ let be = ScriptTransfer(Address(fromBase58String(ac)), aV, at)
288+ let bf = ScriptTransfer(Address(fromBase58String(Q)), 1, fromBase58String(aw))
289+ $Tuple4(bc, bd, be, bf)
294290 }
295291 else throw("Strict value is not equal to itself.")
296292 }
297293 else throw("Strict value is not equal to itself.")
298294 }
299295 else throw("Strict value is not equal to itself.")
300296 }
301297
302298
303-func bi (bj) = if ((0 >= bj))
299+func bg (bh) = if ((0 > bh))
304300 then throw("Wrong minimum sell price")
305301 else true
306302
307303
308-func bk (an,aa) = {
309- let bl = am(an)
310- let Y = bl._1
311- let S = bl._2
312- let bm = bl._3
313- let bn = aL(aa)
314- let bo = bn._1
315- let T = bn._2
316- let ab = bn._3
317- let aN = bn._4
318- $Tuple7(Y, S, bm, bo, T, ab, aN)
304+func bi (al,Y) = {
305+ let bj = ak(al)
306+ let W = bj._1
307+ let Q = bj._2
308+ let bk = bj._3
309+ let bl = aJ(Y)
310+ let bm = bl._1
311+ let R = bl._2
312+ let Z = bl._3
313+ let aL = bl._4
314+ $Tuple7(W, Q, bk, bm, R, Z, aL)
319315 }
320316
321317
322-func bp () = {
323- let bq = O(K)
324- IntegerEntry(K, (bq + 1))
318+func bn () = {
319+ let bo = M(I)
320+ IntegerEntry(I, (bo + 1))
325321 }
326322
327323
328-@Callable(br)
329-func setConf (c,bs) = {
330- let S = toString(br.caller)
331- if (containsElement([A, toString(this)], S))
324+@Callable(bp)
325+func setConf (c,bq) = {
326+ let Q = toString(bp.caller)
327+ if (containsElement([y, toString(this)], Q))
332328 then if (contains(c, "conf_"))
333- then [StringEntry(c, bs)]
329+ then [StringEntry(c, bq)]
334330 else throw("Entries starting with conf_ only")
335331 else throw("You are not allowed to change this")
336332 }
337333
338334
339335
340-@Callable(br)
341-func appRunning (bt,bu) = {
342- let S = toString(br.caller)
343- let Y = toBase58String(br.transactionId)
344- if (containsElement([A, toString(this)], S))
345- then [BooleanEntry(G, bt), StringEntry(H, bu)]
336+@Callable(bp)
337+func appRunning (br,bs) = {
338+ let Q = toString(bp.caller)
339+ let W = toBase58String(bp.transactionId)
340+ if (containsElement([y, toString(this)], Q))
341+ then [BooleanEntry(E, br), StringEntry(F, bs)]
346342 else throw("You are not allowed to change this")
347343 }
348344
349345
350346
351-@Callable(an)
352-func sellNFT (bj,bv) = {
353- let bw = ao(an)
354- let ap = bw._1
355- let aq = bw._2
356- if ((aq != 1))
347+@Callable(al)
348+func sellNFT (bh,bt) = {
349+ let bu = am(al)
350+ let an = bu._1
351+ let ao = bu._2
352+ if ((ao != 1))
357353 then throw("No NFT attached")
358354 else {
359- let aa = if (if (isDefined(ap.assetId))
360- then at(value(ap.assetId))
355+ let Y = if (if (isDefined(an.assetId))
356+ then ar(value(an.assetId))
361357 else false)
362- then toBase58String(value(ap.assetId))
358+ then toBase58String(value(an.assetId))
363359 else throw("Only SIGN Art NFT accepted.")
364- let bx = bk(an, aa)
365- let Y = bx._1
366- let S = bx._2
367- let bm = bx._3
368- let bo = bx._4
369- let T = bx._5
370- let ab = bx._6
371- let aN = bx._7
372- if ((size(aN) == 0))
360+ let bv = bi(al, Y)
361+ let W = bv._1
362+ let Q = bv._2
363+ let bk = bv._3
364+ let bm = bv._4
365+ let R = bv._5
366+ let Z = bv._6
367+ let aL = bv._7
368+ if ((size(aL) == 0))
373369 then throw("Artwork not found on SIGN Art")
374- else if (!(bo))
370+ else if (!(bm))
375371 then throw("Not a valid nft")
376- else if (!(au(bv)))
377- then throw("Only SIGN, USDN, USDT or WAVES accepted")
378- else if (!(bi(bj)))
372+ else if (!(as(bt)))
373+ then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
374+ else if (!(bg(bh)))
379375 then throw("Wrong minimum sell price")
380- else [StringEntry((Z(S, aa, T, ab) + "_OPEN"), ((((((((((((toString(bm) + "_") + toString(bj)) + "_") + bv) + "_") + aa) + "_") + T) + "_") + ab) + "_") + Y)), StringEntry(((("sale2nd_status_" + S) + "_") + aa), "OPEN"), StringEntry(("current_owner_on_dapp_" + aa), S)]
376+ else [StringEntry((X(Q, Y, R, Z) + "_OPEN"), ((((((((((((toString(bk) + "_") + toString(bh)) + "_") + bt) + "_") + Y) + "_") + R) + "_") + Z) + "_") + W)), StringEntry(((("sale2nd_status_" + Q) + "_") + Y), "OPEN"), StringEntry(("current_owner_on_dapp_" + Y), Q)]
381377 }
382378 }
383379
384380
385381
386-@Callable(an)
387-func updateSalePrice (aa,bj,bv) = {
388- let by = bk(an, aa)
389- let Y = by._1
390- let S = by._2
391- let bm = by._3
392- let bo = by._4
393- let T = by._5
394- let ab = by._6
395- let aN = by._7
396- if ((size(aN) == 0))
382+@Callable(al)
383+func updateSalePrice (Y,bh,bt) = {
384+ let bw = bi(al, Y)
385+ let W = bw._1
386+ let Q = bw._2
387+ let bk = bw._3
388+ let bm = bw._4
389+ let R = bw._5
390+ let Z = bw._6
391+ let aL = bw._7
392+ if ((size(aL) == 0))
397393 then throw("Artwork not found on SIGN Art, cancel your sale.")
398- else if (!(bo))
394+ else if (!(bm))
399395 then throw("Not a valid nft")
400396 else {
401- let ae = b(("current_owner_on_dapp_" + aa))
402- if ((ae != S))
397+ let ac = b(("current_owner_on_dapp_" + Y))
398+ if ((ac != Q))
403399 then throw("You don't own this NFT")
404400 else {
405- let az = b(((("sale2nd_status_" + S) + "_") + aa))
406- if ((az != "OPEN"))
401+ let ax = b(((("sale2nd_status_" + Q) + "_") + Y))
402+ if ((ax != "OPEN"))
407403 then throw("Sale not active")
408- else if (!(au(bv)))
409- then throw("Only SIGN, USDN, USDT or WAVES accepted")
410- else if (!(bi(bj)))
404+ else if (!(as(bt)))
405+ then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
406+ else if (!(bg(bh)))
411407 then throw("Wrong minimum sell price")
412408 else {
413- let bz = Z(S, aa, T, ab)
414- let bA = split(b((bz + "_OPEN")), "_")
415-[StringEntry((bz + "_OPEN"), ((((((((((((bA[0] + "_") + toString(bj)) + "_") + bv) + "_") + bA[3]) + "_") + bA[4]) + "_") + bA[5]) + "_") + bA[6]))]
409+ let bx = X(Q, Y, R, Z)
410+ let by = split(b((bx + "_OPEN")), "_")
411+[StringEntry((bx + "_OPEN"), ((((((((((((by[0] + "_") + toString(bh)) + "_") + bt) + "_") + by[3]) + "_") + by[4]) + "_") + by[5]) + "_") + by[6]))]
416412 }
417413 }
418414 }
419415 }
420416
421417
422418
423-@Callable(an)
424-func cancelSale (aa) = {
425- let bB = bk(an, aa)
426- let Y = bB._1
427- let S = bB._2
428- let bm = bB._3
429- let bo = bB._4
430- let T = bB._5
431- let ab = bB._6
432- let aN = bB._7
433- let ae = b(("current_owner_on_dapp_" + aa))
434- if ((ae != S))
419+@Callable(al)
420+func cancelSale (Y) = {
421+ let bz = bi(al, Y)
422+ let W = bz._1
423+ let Q = bz._2
424+ let bk = bz._3
425+ let bm = bz._4
426+ let R = bz._5
427+ let Z = bz._6
428+ let aL = bz._7
429+ let ac = b(("current_owner_on_dapp_" + Y))
430+ if ((ac != Q))
435431 then throw("You don't own this NFT")
436432 else {
437- let az = b(((("sale2nd_status_" + S) + "_") + aa))
438- if ((az != "OPEN"))
433+ let ax = b(((("sale2nd_status_" + Q) + "_") + Y))
434+ if ((ax != "OPEN"))
439435 then throw("Sale not active")
440436 else {
441- let bz = Z(S, aa, T, ab)
442- let bA = b((bz + "_OPEN"))
443-[DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CANCELLED"), ((((bA + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(aa))]
437+ let bx = X(Q, Y, R, Z)
438+ let by = b((bx + "_OPEN"))
439+[DeleteEntry((bx + "_OPEN")), DeleteEntry(((("sale2nd_status_" + Q) + "_") + Y)), DeleteEntry(("current_owner_on_dapp_" + Y)), StringEntry((((bx + "_") + W) + "_CANCELLED"), ((((by + "_CANCELLED_") + toString(bk)) + "_") + W)), ScriptTransfer(Address(fromBase58String(Q)), 1, fromBase58String(Y))]
444440 }
445441 }
446442 }
447443
448444
449445
450-@Callable(an)
451-func buyNFT (aa) = {
452- let bC = bk(an, aa)
453- let Y = bC._1
454- let S = bC._2
455- let bm = bC._3
456- let bo = bC._4
457- let T = bC._5
458- let ab = bC._6
459- let aN = bC._7
460- if ((size(aN) == 0))
446+@Callable(al)
447+func buyNFT (Y) = {
448+ let bA = bi(al, Y)
449+ let W = bA._1
450+ let Q = bA._2
451+ let bk = bA._3
452+ let bm = bA._4
453+ let R = bA._5
454+ let Z = bA._6
455+ let aL = bA._7
456+ if ((size(aL) == 0))
461457 then throw("Artwork not found on SIGN Art, cancel your sale.")
462- else if (!(bo))
458+ else if (!(bm))
463459 then throw("Not a valid nft")
464460 else {
465- let ae = ax(aa)
466- let bz = Z(ae, aa, T, ab)
467- let bA = b((bz + "_OPEN"))
468- if ((size(bA) == 0))
461+ let ac = av(Y)
462+ let bx = X(ac, Y, R, Z)
463+ let by = b((bx + "_OPEN"))
464+ if ((size(by) == 0))
469465 then throw("Sale Not found!")
470466 else {
471- let bD = split(bA, "_")
472- if ((parseInt(bD[1]) == 0))
467+ let bB = split(by, "_")
468+ if ((parseInt(bB[1]) == 0))
473469 then throw("Offer only")
474470 else {
475- let bE = ao(an)
476- let ap = bE._1
477- let aq = bE._2
478- let bF = if (isDefined(ap.assetId))
479- then toBase58String(value(ap.assetId))
471+ let bC = am(al)
472+ let an = bC._1
473+ let ao = bC._2
474+ let bD = if (isDefined(an.assetId))
475+ then toBase58String(value(an.assetId))
480476 else ""
481- if (if ((bD[1] != toString(aq)))
477+ if (if ((bB[1] != toString(ao)))
482478 then true
483- else (bD[2] != bF))
479+ else (bB[2] != bD))
484480 then throw("Payment infos don't match.")
485481 else {
486- let bG = aP(aq, ap.assetId, aa, ab, ae, S, T)
487- let be = bG._1
488- let bf = bG._2
489- let bg = bG._3
490- let bh = bG._4
491- (([DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((bA + "_CLOSED_") + toString(bm)) + "_") + Y) + "_") + S)), bp(), bg, bh] ++ bf) ++ be)
482+ let bE = aN(ao, an.assetId, Y, Z, ac, Q, R)
483+ let bc = bE._1
484+ let bd = bE._2
485+ let be = bE._3
486+ let bf = bE._4
487+ (([DeleteEntry((bx + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ac) + "_") + Y)), DeleteEntry(("current_owner_on_dapp_" + Y)), StringEntry((((bx + "_") + W) + "_CLOSED"), ((((((by + "_CLOSED_") + toString(bk)) + "_") + W) + "_") + Q)), bn(), be, bf] ++ bd) ++ bc)
492488 }
493489 }
494490 }
495491 }
496492 }
497493
498494
499495
500-@Callable(an)
501-func setOffer (aa) = {
502- let bH = bk(an, aa)
503- let Y = bH._1
504- let ad = bH._2
505- let bm = bH._3
506- let bo = bH._4
507- let T = bH._5
508- let ab = bH._6
509- let aN = bH._7
510- if (!(bo))
496+@Callable(al)
497+func setOffer (Y) = {
498+ let bF = bi(al, Y)
499+ let W = bF._1
500+ let ab = bF._2
501+ let bk = bF._3
502+ let bm = bF._4
503+ let R = bF._5
504+ let Z = bF._6
505+ let aL = bF._7
506+ if (!(bm))
511507 then throw("Not a valid nft")
512508 else {
513- let bI = ao(an)
514- let ap = bI._1
515- let aq = bI._2
516- let av = if (!(isDefined(ap.assetId)))
509+ let bG = am(al)
510+ let an = bG._1
511+ let ao = bG._2
512+ let at = if (!(isDefined(an.assetId)))
517513 then "WAVES"
518- else toBase58String(value(ap.assetId))
519- if (!(au(av)))
514+ else toBase58String(value(an.assetId))
515+ if (!(as(at)))
520516 then throw("asset not accepted")
521- else if ((aq == 0))
517+ else if ((ao == 0))
522518 then throw("Offer of 0 not allowed")
523- else if (!(bi(aq)))
519+ else if (!(bg(ao)))
524520 then throw("Wrong minimum sell price")
525521 else {
526- let ae = ax(aa)
527-[StringEntry((ac(ad, aa, ae, Y) + "_OPEN"), ((((((((((((((toString(bm) + "_") + toString(aq)) + "_") + av) + "_") + aa) + "_") + T) + "_") + ab) + "_") + ad) + "_") + Y))]
522+ let ac = av(Y)
523+[StringEntry((aa(ab, Y, ac, W) + "_OPEN"), ((((((((((((((toString(bk) + "_") + toString(ao)) + "_") + at) + "_") + Y) + "_") + R) + "_") + Z) + "_") + ab) + "_") + W))]
528524 }
529525 }
530526 }
531527
532528
533529
534-@Callable(an)
535-func acceptOffer (aa,af,ad) = {
536- let bJ = bk(an, aa)
537- let Y = bJ._1
538- let S = bJ._2
539- let bm = bJ._3
540- let bo = bJ._4
541- let T = bJ._5
542- let ab = bJ._6
543- let aN = bJ._7
544- if (!(bo))
530+@Callable(al)
531+func acceptOffer (Y,ad,ab) = {
532+ let bH = bi(al, Y)
533+ let W = bH._1
534+ let Q = bH._2
535+ let bk = bH._3
536+ let bm = bH._4
537+ let R = bH._5
538+ let Z = bH._6
539+ let aL = bH._7
540+ if (!(bm))
545541 then throw("Not a valid nft")
546542 else {
547- let ae = ax(aa)
548- if ((S != ae))
543+ let ac = av(Y)
544+ if ((Q != ac))
549545 then throw("Only sale owner can accept offer")
550546 else {
551- let bK = ac(ad, aa, ae, af)
552- let bL = aA(bK)
553- let aC = bL._1
554- let av = bL._2
555- let aB = bL._3
556- let bz = Z(ae, aa, T, ab)
557- let bA = b((bz + "_OPEN"))
558- if ((size(bA) == 0))
547+ let bI = aa(ab, Y, ac, ad)
548+ let bJ = ay(bI)
549+ let aA = bJ._1
550+ let at = bJ._2
551+ let az = bJ._3
552+ let bx = X(ac, Y, R, Z)
553+ let by = b((bx + "_OPEN"))
554+ if ((size(by) == 0))
559555 then throw("Sale Not found!")
560556 else {
561- let aq = value(parseInt(aC[1]))
562- let bM = aP(aq, av, aa, ab, ae, aC[6], T)
563- let be = bM._1
564- let bf = bM._2
565- let bg = bM._3
566- let bh = bM._4
567- let bN = if (isDefined(av))
568- then toBase58String(value(av))
557+ let ao = value(parseInt(aA[1]))
558+ let bK = aN(ao, at, Y, Z, ac, aA[6], R)
559+ let bc = bK._1
560+ let bd = bK._2
561+ let be = bK._3
562+ let bf = bK._4
563+ let bL = if (isDefined(at))
564+ then toBase58String(value(at))
569565 else "WAVES"
570- (([DeleteEntry((bz + "_OPEN")), DeleteEntry((bK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((bK + "_CLOSED"), ((((aB + "_CLOSED_") + toString(bm)) + "_") + Y)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((((((bA + "_CLOSED-OFFER_") + toString(bm)) + "_") + Y) + "_") + ad) + "_") + toString(aq)) + "_") + bN)), bp(), bg, bh] ++ bf) ++ be)
566+ (([DeleteEntry((bx + "_OPEN")), DeleteEntry((bI + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ac) + "_") + Y)), DeleteEntry(("current_owner_on_dapp_" + Y)), StringEntry((bI + "_CLOSED"), ((((az + "_CLOSED_") + toString(bk)) + "_") + W)), StringEntry((((bx + "_") + W) + "_CLOSED"), ((((((((((by + "_CLOSED-OFFER_") + toString(bk)) + "_") + W) + "_") + ab) + "_") + toString(ao)) + "_") + bL)), bn(), be, bf] ++ bd) ++ bc)
571567 }
572568 }
573569 }
574570 }
575571
576572
577573
578-@Callable(an)
579-func cancelOffer (aa,af,ad,ae) = {
580- let bO = am(an)
581- let Y = bO._1
582- let S = bO._2
583- let bm = bO._3
584- if (if ((S != ad))
585- then (S != ae)
574+@Callable(al)
575+func cancelOffer (Y,ad,ab,ac) = {
576+ let bM = ak(al)
577+ let W = bM._1
578+ let Q = bM._2
579+ let bk = bM._3
580+ if (if ((Q != ab))
581+ then (Q != ac)
586582 else false)
587583 then throw("You cannot cancel this offer.")
588584 else {
589- let bK = ac(ad, aa, ae, af)
590- let bP = aA(bK)
591- let aC = bP._1
592- let av = bP._2
593- let aB = bP._3
594-[DeleteEntry((bK + "_OPEN")), StringEntry((bK + "_CANCELLED"), ((((aB + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), parseIntValue(aC[1]), av)]
585+ let bI = aa(ab, Y, ac, ad)
586+ let bN = ay(bI)
587+ let aA = bN._1
588+ let at = bN._2
589+ let az = bN._3
590+[DeleteEntry((bI + "_OPEN")), StringEntry((bI + "_CANCELLED"), ((((az + "_CANCELLED_") + toString(bk)) + "_") + W)), ScriptTransfer(Address(fromBase58String(Q)), parseIntValue(aA[1]), at)]
595591 }
596592 }
597593
598594

github/deemru/w8io/3ef1775 
376.00 ms