jcc-solidity-utils
Version:
jcc solidity utils
330 lines • 190 kB
JSON
{
"contractName": "JCCChainList",
"abi": [
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newAdmin",
"type": "address"
}
],
"name": "transferAdministrator",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "chainId",
"type": "uint256"
}
],
"name": "Add",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "chainId",
"type": "uint256"
}
],
"name": "Remove",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousAdmin",
"type": "address"
},
{
"indexed": true,
"name": "newAdmin",
"type": "address"
}
],
"name": "AdministratorTransferred",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "_id",
"type": "uint256"
},
{
"name": "_symbol",
"type": "string"
}
],
"name": "insert",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_id",
"type": "uint256"
}
],
"name": "remove",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_idx",
"type": "uint256"
}
],
"name": "get",
"outputs": [
{
"components": [
{
"name": "idx",
"type": "uint256"
},
{
"name": "id",
"type": "uint256"
},
{
"name": "symbol",
"type": "string"
}
],
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_id",
"type": "uint256"
}
],
"name": "getById",
"outputs": [
{
"components": [
{
"name": "idx",
"type": "uint256"
},
{
"name": "id",
"type": "uint256"
},
{
"name": "symbol",
"type": "string"
}
],
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_symbol",
"type": "string"
}
],
"name": "getBySymbol",
"outputs": [
{
"components": [
{
"name": "idx",
"type": "uint256"
},
{
"name": "id",
"type": "uint256"
},
{
"name": "symbol",
"type": "string"
}
],
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "from",
"type": "uint256"
},
{
"name": "_count",
"type": "uint256"
}
],
"name": "getList",
"outputs": [
{
"components": [
{
"name": "idx",
"type": "uint256"
},
{
"name": "id",
"type": "uint256"
},
{
"name": "symbol",
"type": "string"
}
],
"name": "",
"type": "tuple[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "count",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"count\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"remove\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_idx\",\"type\":\"uint256\"}],\"name\":\"get\",\"outputs\":[{\"components\":[{\"name\":\"idx\",\"type\":\"uint256\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"uint256\"},{\"name\":\"_count\",\"type\":\"uint256\"}],\"name\":\"getList\",\"outputs\":[{\"components\":[{\"name\":\"idx\",\"type\":\"uint256\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdministrator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_id\",\"type\":\"uint256\"},{\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"getBySymbol\",\"outputs\":[{\"components\":[{\"name\":\"idx\",\"type\":\"uint256\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"getById\",\"outputs\":[{\"components\":[{\"name\":\"idx\",\"type\":\"uint256\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"Add\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"Remove\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdministratorTransferred\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"renounceOwnership()\":{\"details\":\"\\u653e\\u5f03\\u5408\\u7ea6\\u7684\\u6240\\u6709\\u6743\\uff0c\\u6ce8\\u610f\\uff0c\\u5408\\u7ea6\\u6ca1\\u6709\\u4efb\\u4f55\\u4eba\\u53ef\\u4ee5\\u62e5\\u6709\\u4e86\\uff0c\\u90a3\\u4e48\\u5f88\\u591a\\u62e5\\u6709\\u8005\\u5e94\\u8be5\\u6709\\u7684\\u80fd\\u529b\\uff0c\\u90fd\\u4e0d\\u80fd\\u8bbf\\u95ee\\u4e86\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/utils/JCCChainList.sol\":\"JCCChainList\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/ChainList.sol\":{\"keccak256\":\"0x89f2e8957412795e5e4296a8f83b787736a043280dcf1d032170838a849e461c\",\"urls\":[\"bzzr://2787c91383da9eabe221e7058451a9e7ed6c75b44e656b0a235888701ed836e6\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x239546071316c89d3bbc9e61b2ccae270a4493bbd2f7c240052f533807d50ab7\",\"urls\":[\"bzzr://267bf48e0a30f7b671aa3c98a6b27ffe7bc64efd6533f49e54188b520baa94c5\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/owner/Administrative.sol\":{\"keccak256\":\"0xca1f191b7611b7fec06b5c299eaf62dcca56dbbf9f6e3d3eaa7114466df35440\",\"urls\":[\"bzzr://74c8c8a8d3e19a60d6bfe9c7dc3b4c4b037876d5fc4b842ddce6c894e3f0f575\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/utils/JCCChainList.sol\":{\"keccak256\":\"0x5f97efa3e0dfc7592494748bc362b0484636e287b65fbad32993829ce87e411b\",\"urls\":[\"bzzr://67dd917c77c98ea2664a8436f866070b00e8353392f1310306cfb53d16eb56db\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b506000805433600160a060020a0319918216811780845560018054909316909117909155604051600160a060020a0390911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600154604051600160a060020a03909116906000907f399b55200f7f639a63d76efe3dcfa9156ce367058d6b673041b84a628885f5a7908290a3611831806100b26000396000f3006080604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306661abd81146100be5780634cc82215146100e9578063715018a6146101165780638da5cb5b1461012d5780639507d39a1461014f578063a9816b081461017c578063c648a3a2146101a9578063d6026510146101c9578063dd93eafc146101e9578063f2fde38b14610209578063f4f4d23714610229578063f851a44014610249575b600080fd5b3480156100ca57600080fd5b506100d361025e565b6040516100e09190611739565b60405180910390f35b3480156100f557600080fd5b50610109610104366004611218565b610270565b6040516100e0919061167a565b34801561012257600080fd5b5061012b610323565b005b34801561013957600080fd5b506101426103a7565b6040516100e0919061165b565b34801561015b57600080fd5b5061016f61016a366004611218565b6103b6565b6040516100e09190611728565b34801561018857600080fd5b5061019c610197366004611288565b6103d5565b6040516100e09190611669565b3480156101b557600080fd5b5061012b6101c43660046111bd565b6103f0565b3480156101d557600080fd5b506101096101e4366004611236565b6104c8565b3480156101f557600080fd5b5061016f6102043660046111e3565b610574565b34801561021557600080fd5b5061012b6102243660046111bd565b61058d565b34801561023557600080fd5b5061016f610244366004611218565b61064d565b34801561025557600080fd5b50610142610666565b600061026a6002610675565b90505b90565b60008054600160a060020a03163314806102945750600154600160a060020a031633145b15156102be5760405160e560020a62461bcd0281526004016102b590611688565b60405180910390fd5b6102cf60028363ffffffff61067c16565b15156102f05760405160e560020a62461bcd0281526004016102b590611718565b60405182907f476e4aa4bb19dbdea8700b4db99d81ad2fefcf51924ba5d493b7be6393f8220190600090a2506001919050565b600054600160a060020a031633146103505760405160e560020a62461bcd0281526004016102b5906116a8565b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b6103be610f7a565b6103cf60028363ffffffff61082b16565b92915050565b60606103e96002848463ffffffff61094116565b9392505050565b600054600160a060020a03163314806104135750600154600160a060020a031633145b15156104345760405160e560020a62461bcd0281526004016102b590611688565b600160a060020a038116151561045f5760405160e560020a62461bcd0281526004016102b590611698565b600154604051600160a060020a038084169216907f399b55200f7f639a63d76efe3dcfa9156ce367058d6b673041b84a628885f5a790600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054600160a060020a03163314806104ec5750600154600160a060020a031633145b151561050d5760405160e560020a62461bcd0281526004016102b590611688565b61051f6002848463ffffffff610ae016565b15156105405760405160e560020a62461bcd0281526004016102b5906116e8565b60405183907f90f1f758f0e2b40929b1fd48df7ebe10afc272a362e1f0d63a90b8b4715d799f90600090a250600192915050565b61057c610f7a565b6103cf60028363ffffffff610bab16565b600054600160a060020a031633146105ba5760405160e560020a62461bcd0281526004016102b5906116a8565b600160a060020a03811615156105e55760405160e560020a62461bcd0281526004016102b5906116b8565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610655610f7a565b6103cf60028363ffffffff610cee16565b600154600160a060020a031690565b6002015490565b600080600061068b8585610d41565b151561069a5760009250610823565b600084815260208690526040902054600286018054919350906106c490600163ffffffff610e5d16565b815481106106ce57fe5b906000526020600020906003020190508085600201838154811015156106f057fe5b9060005260206000209060030201600082015481600001556001820154816001015560028201816002019080546001816001161561010002031660029004610739929190610f9c565b50505060018181015460009081526020878152604080832086905560028086018054835181881615610100026000190190911692909204601f810185900485028301850190935282825287958b0194936107e993908301828280156107df5780601f106107b4576101008083540402835291602001916107df565b820191906000526020600020905b8154815290600101906020018083116107c257829003601f168201915b5050505050610e6f565b8152602081019190915260400160002055600285015461081090600163ffffffff610e5d16565b61081d6002870182611021565b50600192505b505092915050565b610833610f7a565b600283015482106108595760405160e560020a62461bcd0281526004016102b590611708565b6002830180548390811061086957fe5b9060005260206000209060030201606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109305780601f1061090557610100808354040283529160200191610930565b820191906000526020600020905b81548152906001019060200180831161091357829003601f168201915b505050505081525050905092915050565b6060600081818085116109695760405160e560020a62461bcd0281526004016102b5906116d8565b846040519080825280602002602001820160405280156109a357816020015b610990610f7a565b8152602001906001900390816109885790505b5091508590505b6002870154811015610ad657848314156109c357610ad6565b600287018054829081106109d357fe5b9060005260206000209060030201606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a9a5780601f10610a6f57610100808354040283529160200191610a9a565b820191906000526020600020905b815481529060010190602001808311610a7d57829003601f168201915b5050505050815250508284815181101515610ab157fe5b60209081029091010152610acc83600163ffffffff610f3916565b92506001016109aa565b5095945050505050565b6000610aea610f7a565b610af48585610d41565b15610b025760009150610ba3565b506040805160608101825260028087018054808452602080850189815295850188815260018084018086556000958652948390208751600390950201938455965196830196909655945180519495929486949293610b64938501920190611052565b5050825160008781526020899052604081209190915583519250600188019150610b8d86610e6f565b8152602081019190915260400160002055600191505b509392505050565b610bb3610f7a565b600083600201846001016000610bc886610e6f565b815260208101919091526040016000205481548110610be357fe5b90600052602060002090600302019050610c01848260010154610d41565b1515610c225760405160e560020a62461bcd0281526004016102b5906116c8565b80606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cdc5780601f10610cb157610100808354040283529160200191610cdc565b820191906000526020600020905b815481529060010190602001808311610cbf57829003601f168201915b50505050508152505091505092915050565b610cf6610f7a565b610d008383610d41565b1515610d215760405160e560020a62461bcd0281526004016102b5906116c8565b600082815260208490526040902054600284018054909190811061086957fe5b60028201546000901515610d57575060006103cf565b6000828152602084905260409020546002840180548492908110610d7757fe5b9060005260206000209060030201600101541480156103e95750600082815260208490526040812054600285018054610e5592908110610db357fe5b600091825260209182902060026003909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b5050505050610f48565b119392505050565b600082821115610e6957fe5b50900390565b6000816040516020018082805190602001908083835b60208310610ea45780518252601f199092019160209182019101610e85565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610f075780518252601f199092019160209182019101610ee8565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000828201838110156103e957fe5b805160009082906104001015610f735760405160e560020a62461bcd0281526004016102b5906116f8565b5192915050565b6060604051908101604052806000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610fd55780548555611011565b8280016001018555821561101157600052602060002091601f016020900482015b82811115611011578254825591600101919060010190610ff6565b5061101d9291506110c0565b5090565b81548183558181111561104d5760030281600302836000526020600020918201910161104d91906110da565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061109357805160ff1916838001178555611011565b82800160010185558215611011579182015b828111156110115782518255916020019190600101906110a5565b61026d91905b8082111561101d57600081556001016110c6565b61026d91905b8082111561101d57600080825560018201819055611101600283018261110a565b506003016110e0565b50805460018160011615610100020316600290046000825580601f10611130575061114e565b601f01602090049060005260206000209081019061114e91906110c0565b50565b60006103e982356117a0565b6000601f8201831361116e57600080fd5b813561118161117c8261176e565b611747565b9150808252602083016020830185838301111561119d57600080fd5b6111a88382846117b1565b50505092915050565b60006103e9823561026d565b6000602082840312156111cf57600080fd5b60006111db8484611151565b949350505050565b6000602082840312156111f557600080fd5b813567ffffffffffffffff81111561120c57600080fd5b6111db8482850161115d565b60006020828403121561122a57600080fd5b60006111db84846111b1565b6000806040838503121561124957600080fd5b600061125585856111b1565b925050602083013567ffffffffffffffff81111561127257600080fd5b61127e8582860161115d565b9150509250929050565b6000806040838503121561129b57600080fd5b60006112a785856111b1565b925050602061127e858286016111b1565b6112c1816117a0565b82525050565b60006112d28261179c565b808452602084019350836020820285016112eb85611796565b60005b8481101561132257838303885261130683835161160a565b925061131182611796565b6020989098019791506001016112ee565b50909695505050505050565b6112c1816117ac565b60006113428261179c565b8084526113568160208601602086016117bd565b61135f816117ed565b9093016020019392505050565b602b81527f6f6e6c79206f776e6572206f722061646d696e6973747261746f722063616e2060208201527f6d6f646966792074686973000000000000000000000000000000000000000000604082015260600190565b602e81527f43616e206e6f74207472616e736665722061646d696e6973747261746f72207460208201527f6f207a65726f2061646472657373000000000000000000000000000000000000604082015260600190565b601a81527f6f6e6c79206f776e65722063616e206d6f646966792074686973000000000000602082015260400190565b602681527f43616e206e6f74207472616e73666572206f776e657220746f207a65726f206160208201527f6464726573730000000000000000000000000000000000000000000000000000604082015260600190565b601581527f636861696e2064617461206d7573742065786973740000000000000000000000602082015260400190565b60208082527f72657475726e206e756d626572206d75737420626967676572207468616e20309082015260400190565b601181527f61646420636861696e2073756363657373000000000000000000000000000000602082015260400190565b602381527f746f6f206c6172676520737472696e67206d616b65206f766572666c6f77207260208201527f69736b0000000000000000000000000000000000000000000000000000000000604082015260600190565b602381527f696e646578206d75737420736d616c6c207468616e2063757272656e7420636f60208201527f756e740000000000000000000000000000000000000000000000000000000000604082015260600190565b601481527f72656d6f766520636861696e2073756363657373000000000000000000000000602082015260400190565b8051600090606084019061161e8582611652565b5060208301516116316020860182611652565b50604083015184820360408601526116498282611337565b95945050505050565b6112c18161026d565b602081016103cf82846112b8565b602080825281016103e981846112c7565b602081016103cf828461132e565b602080825281016103cf8161136c565b602080825281016103cf816113c2565b602080825281016103cf81611418565b602080825281016103cf81611448565b602080825281016103cf8161149e565b602080825281016103cf816114ce565b602080825281016103cf816114fe565b602080825281016103cf8161152e565b602080825281016103cf81611584565b602080825281016103cf816115da565b602080825281016103e9818461160a565b602081016103cf8284611652565b60405181810167ffffffffffffffff8111828210171561176657600080fd5b604052919050565b600067ffffffffffffffff82111561178557600080fd5b506020601f91909101601f19160190565b60200190565b5190565b600160a060020a031690565b151590565b82818337506000910152565b60005b838110156117d85781810151838201526020016117c0565b838111156117e7576000848401525b50505050565b601f01601f1916905600a265627a7a723058202bf6409ada9c79bfe8d6c317694c7e19b41d785de693cc8e6c14da53b22ca94e6c6578706572696d656e74616cf50037",
"deployedBytecode": "0x6080604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306661abd81146100be5780634cc82215146100e9578063715018a6146101165780638da5cb5b1461012d5780639507d39a1461014f578063a9816b081461017c578063c648a3a2146101a9578063d6026510146101c9578063dd93eafc146101e9578063f2fde38b14610209578063f4f4d23714610229578063f851a44014610249575b600080fd5b3480156100ca57600080fd5b506100d361025e565b6040516100e09190611739565b60405180910390f35b3480156100f557600080fd5b50610109610104366004611218565b610270565b6040516100e0919061167a565b34801561012257600080fd5b5061012b610323565b005b34801561013957600080fd5b506101426103a7565b6040516100e0919061165b565b34801561015b57600080fd5b5061016f61016a366004611218565b6103b6565b6040516100e09190611728565b34801561018857600080fd5b5061019c610197366004611288565b6103d5565b6040516100e09190611669565b3480156101b557600080fd5b5061012b6101c43660046111bd565b6103f0565b3480156101d557600080fd5b506101096101e4366004611236565b6104c8565b3480156101f557600080fd5b5061016f6102043660046111e3565b610574565b34801561021557600080fd5b5061012b6102243660046111bd565b61058d565b34801561023557600080fd5b5061016f610244366004611218565b61064d565b34801561025557600080fd5b50610142610666565b600061026a6002610675565b90505b90565b60008054600160a060020a03163314806102945750600154600160a060020a031633145b15156102be5760405160e560020a62461bcd0281526004016102b590611688565b60405180910390fd5b6102cf60028363ffffffff61067c16565b15156102f05760405160e560020a62461bcd0281526004016102b590611718565b60405182907f476e4aa4bb19dbdea8700b4db99d81ad2fefcf51924ba5d493b7be6393f8220190600090a2506001919050565b600054600160a060020a031633146103505760405160e560020a62461bcd0281526004016102b5906116a8565b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b6103be610f7a565b6103cf60028363ffffffff61082b16565b92915050565b60606103e96002848463ffffffff61094116565b9392505050565b600054600160a060020a03163314806104135750600154600160a060020a031633145b15156104345760405160e560020a62461bcd0281526004016102b590611688565b600160a060020a038116151561045f5760405160e560020a62461bcd0281526004016102b590611698565b600154604051600160a060020a038084169216907f399b55200f7f639a63d76efe3dcfa9156ce367058d6b673041b84a628885f5a790600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054600160a060020a03163314806104ec5750600154600160a060020a031633145b151561050d5760405160e560020a62461bcd0281526004016102b590611688565b61051f6002848463ffffffff610ae016565b15156105405760405160e560020a62461bcd0281526004016102b5906116e8565b60405183907f90f1f758f0e2b40929b1fd48df7ebe10afc272a362e1f0d63a90b8b4715d799f90600090a250600192915050565b61057c610f7a565b6103cf60028363ffffffff610bab16565b600054600160a060020a031633146105ba5760405160e560020a62461bcd0281526004016102b5906116a8565b600160a060020a03811615156105e55760405160e560020a62461bcd0281526004016102b5906116b8565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610655610f7a565b6103cf60028363ffffffff610cee16565b600154600160a060020a031690565b6002015490565b600080600061068b8585610d41565b151561069a5760009250610823565b600084815260208690526040902054600286018054919350906106c490600163ffffffff610e5d16565b815481106106ce57fe5b906000526020600020906003020190508085600201838154811015156106f057fe5b9060005260206000209060030201600082015481600001556001820154816001015560028201816002019080546001816001161561010002031660029004610739929190610f9c565b50505060018181015460009081526020878152604080832086905560028086018054835181881615610100026000190190911692909204601f810185900485028301850190935282825287958b0194936107e993908301828280156107df5780601f106107b4576101008083540402835291602001916107df565b820191906000526020600020905b8154815290600101906020018083116107c257829003601f168201915b5050505050610e6f565b8152602081019190915260400160002055600285015461081090600163ffffffff610e5d16565b61081d6002870182611021565b50600192505b505092915050565b610833610f7a565b600283015482106108595760405160e560020a62461bcd0281526004016102b590611708565b6002830180548390811061086957fe5b9060005260206000209060030201606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109305780601f1061090557610100808354040283529160200191610930565b820191906000526020600020905b81548152906001019060200180831161091357829003601f168201915b505050505081525050905092915050565b6060600081818085116109695760405160e560020a62461bcd0281526004016102b5906116d8565b846040519080825280602002602001820160405280156109a357816020015b610990610f7a565b8152602001906001900390816109885790505b5091508590505b6002870154811015610ad657848314156109c357610ad6565b600287018054829081106109d357fe5b9060005260206000209060030201606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a9a5780601f10610a6f57610100808354040283529160200191610a9a565b820191906000526020600020905b815481529060010190602001808311610a7d57829003601f168201915b5050505050815250508284815181101515610ab157fe5b60209081029091010152610acc83600163ffffffff610f3916565b92506001016109aa565b5095945050505050565b6000610aea610f7a565b610af48585610d41565b15610b025760009150610ba3565b506040805160608101825260028087018054808452602080850189815295850188815260018084018086556000958652948390208751600390950201938455965196830196909655945180519495929486949293610b64938501920190611052565b5050825160008781526020899052604081209190915583519250600188019150610b8d86610e6f565b8152602081019190915260400160002055600191505b509392505050565b610bb3610f7a565b600083600201846001016000610bc886610e6f565b815260208101919091526040016000205481548110610be357fe5b90600052602060002090600302019050610c01848260010154610d41565b1515610c225760405160e560020a62461bcd0281526004016102b5906116c8565b80606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cdc5780601f10610cb157610100808354040283529160200191610cdc565b820191906000526020600020905b815481529060010190602001808311610cbf57829003601f168201915b50505050508152505091505092915050565b610cf6610f7a565b610d008383610d41565b1515610d215760405160e560020a62461bcd0281526004016102b5906116c8565b600082815260208490526040902054600284018054909190811061086957fe5b60028201546000901515610d57575060006103cf565b6000828152602084905260409020546002840180548492908110610d7757fe5b9060005260206000209060030201600101541480156103e95750600082815260208490526040812054600285018054610e5592908110610db357fe5b600091825260209182902060026003909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b5050505050610f48565b119392505050565b600082821115610e6957fe5b50900390565b6000816040516020018082805190602001908083835b60208310610ea45780518252601f199092019160209182019101610e85565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610f075780518252601f199092019160209182019101610ee8565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000828201838110156103e957fe5b805160009082906104001015610f735760405160e560020a62461bcd0281526004016102b5906116f8565b5192915050565b6060604051908101604052806000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610fd55780548555611011565b8280016001018555821561101157600052602060002091601f016020900482015b82811115611011578254825591600101919060010190610ff6565b5061101d9291506110c0565b5090565b81548183558181111561104d5760030281600302836000526020600020918201910161104d91906110da565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061109357805160ff1916838001178555611011565b82800160010185558215611011579182015b828111156110115782518255916020019190600101906110a5565b61026d91905b8082111561101d57600081556001016110c6565b61026d91905b8082111561101d57600080825560018201819055611101600283018261110a565b506003016110e0565b50805460018160011615610100020316600290046000825580601f10611130575061114e565b601f01602090049060005260206000209081019061114e91906110c0565b50565b60006103e982356117a0565b6000601f8201831361116e57600080fd5b813561118161117c8261176e565b611747565b9150808252602083016020830185838301111561119d57600080fd5b6111a88382846117b1565b50505092915050565b60006103e9823561026d565b6000602082840312156111cf57600080fd5b60006111db8484611151565b949350505050565b6000602082840312156111f557600080fd5b813567ffffffffffffffff81111561120c57600080fd5b6111db8482850161115d565b60006020828403121561122a57600080fd5b60006111db84846111b1565b6000806040838503121561124957600080fd5b600061125585856111b1565b925050602083013567ffffffffffffffff81111561127257600080fd5b61127e8582860161115d565b9150509250929050565b6000806040838503121561129b57600080fd5b60006112a785856111b1565b925050602061127e858286016111b1565b6112c1816117a0565b82525050565b60006112d28261179c565b808452602084019350836020820285016112eb85611796565b60005b8481101561132257838303885261130683835161160a565b925061131182611796565b6020989098019791506001016112ee565b50909695505050505050565b6112c1816117ac565b60006113428261179c565b8084526113568160208601602086016117bd565b61135f816117ed565b9093016020019392505050565b602b81527f6f6e6c79206f776e6572206f722061646d696e6973747261746f722063616e2060208201527f6d6f646966792074686973000000000000000000000000000000000000000000604082015260600190565b602e81527f43616e206e6f74207472616e736665722061646d696e6973747261746f72207460208201527f6f207a65726f2061646472657373000000000000000000000000000000000000604082015260600190565b601a81527f6f6e6c79206f776e65722063616e206d6f646966792074686973000000000000602082015260400190565b602681527f43616e206e6f74207472616e73666572206f776e657220746f207a65726f206160208201527f6464726573730000000000000000000000000000000000000000000000000000604082015260600190565b601581527f636861696e2064617461206d7573742065786973740000000000000000000000602082015260400190565b60208082527f72657475726e206e756d626572206d75737420626967676572207468616e20309082015260400190565b601181527f61646420636861696e2073756363657373000000000000000000000000000000602082015260400190565b602381527f746f6f206c6172676520737472696e67206d616b65206f766572666c6f77207260208201527f69736b0000000000000000000000000000000000000000000000000000000000604082015260600190565b602381527f696e646578206d75737420736d616c6c207468616e2063757272656e7420636f60208201527f756e740000000000000000000000000000000000000000000000000000000000604082015260600190565b601481527f72656d6f766520636861696e2073756363657373000000000000000000000000602082015260400190565b8051600090606084019061161e8582611652565b5060208301516116316020860182611652565b50604083015184820360408601526116498282611337565b95945050505050565b6112c18161026d565b602081016103cf82846112b8565b602080825281016103e981846112c7565b602081016103cf828461132e565b602080825281016103cf8161136c565b602080825281016103cf816113c2565b602080825281016103cf81611418565b602080825281016103cf81611448565b602080825281016103cf8161149e565b602080825281016103cf816114ce565b602080825281016103cf816114fe565b602080825281016103cf8161152e565b602080825281016103cf81611584565b602080825281016103cf816115da565b602080825281016103e9818461160a565b602081016103cf8284611652565b60405181810167ffffffffffffffff8111828210171561176657600080fd5b604052919050565b600067ffffffffffffffff82111561178557600080fd5b506020601f91909101601f19160190565b60200190565b5190565b600160a060020a031690565b151590565b82818337506000910152565b60005b838110156117d85781810151838201526020016117c0565b838111156117e7576000848401525b50505050565b601f01601f1916905600a265627a7a723058202bf6409ada9c79bfe8d6c317694c7e19b41d785de693cc8e6c14da53b22ca94e6c6578706572696d656e74616cf50037",
"sourceMap": "174:1199:32:-;;;371:40;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1142:6:30;:19;;1151:10;-1:-1:-1;;;;;;1142:19:30;;;;;;;;-1:-1:-1;1167:19:30;;;;;;;;;;;1197:40;;-1:-1:-1;;;;;1230:6:30;;;;1142;1197:40;;1142:6;;1197:40;1285:6;;1248:44;;-1:-1:-1;;;;;1285:6:30;;;;;;1248:44;;1285:6;;1248:44;174:1199:32;;;;;;",
"deployedSourceMap": "174:1199:32:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1292:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1292:79:32;;;;;;;;;;;;;;;;;;;;619:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;619:167:32;;;;;;;;;;;;;;;;;1844:127:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1844:127:30;;;;;;2458:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2458:71:30;;;;;;;;;;;;790:101:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;790:101:32;;;;;;;;;;;;;;;;;1132:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1132:156:32;;;;;;;;;;;;;;;;;2197:257:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2197:257:30;;;;;;;;;415:200:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;415:200:32;;;;;;;;;1006:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1006:122:32;;;;;;;;;1975:218:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1975:218:30;;;;;;;;;895:107:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;895:107:32;;;;;;;;;2533:71:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2533:71:30;;;;1292:79:32;1330:7;1352:14;:6;:12;:14::i;:::-;1345:21;;1292:79;;:::o;619:167::-;679:4;1581:6:30;;-1:-1:-1;;;;;1581:6:30;1567:10;:20;;1566:48;;-1:-1:-1;1607:6:30;;-1:-1:-1;;;;;1607:6:30;1593:10;:20;1566:48;1551:122;;;;;;-1:-1:-1;;;;;1551:122:30;;;;;;;;;;;;;;;;;699:18:32;:6;713:3;699:18;:13;:18;:::i;:::-;691:51;;;;;;-1:-1:-1;;;;;691:51:32;;;;;;;;;753:11;;760:3;;753:11;;;;;-1:-1:-1;777:4:32;619:167;;;:::o;1844:127:30:-;1350:6;;-1:-1:-1;;;;;1350:6:30;1336:10;:20;1328:59;;;;-1:-1:-1;;;;;1328:59:30;;;;;;;;;1938:1;1922:6;;1901:40;;-1:-1:-1;;;;;1922:6:30;;;;1901:40;;1938:1;;1901:40;1964:1;1947:19;;-1:-1:-1;;1947:19:30;;;1844:127::o;2458:71::-;2496:7;2518:6;-1:-1:-1;;;;;2518:6:30;2458:71;:::o;790:101:32:-;838:17;;:::i;:::-;870:16;:6;881:4;870:16;:10;:16;:::i;:::-;863:23;790:101;-1:-1:-1;;790:101:32:o;1132:156::-;1212:19;1255:28;:6;1270:4;1276:6;1255:28;:14;:28;:::i;:::-;1248:35;1132:156;-1:-1:-1;;;1132:156:32:o;2197:257:30:-;1581:6;;-1:-1:-1;;;;;1581:6:30;1567:10;:20;;1566:48;;-1:-1:-1;1607:6:30;;-1:-1:-1;;;;;1607:6:30;1593:10;:20;1566:48;1551:122;;;;;;-1:-1:-1;;;;;1551:122:30;;;;;;;;;-1:-1:-1;;;;;2289:22:30;;;;2274:99;;;;-1:-1:-1;;;;;2274:99:30;;;;;;;;;2409:6;;2384:42;;-1:-1:-1;;;;;2384:42:30;;;;2409:6;;2384:42;;2409:6;;2384:42;2432:6;:17;;-1:-1:-1;;2432:17:30;-1:-1:-1;;;;;2432:17:30;;;;;;;;;;2197:257::o;415:200:32:-;503:4;1581:6:30;;-1:-1:-1;;;;;1581:6:30;1567:10;:20;;1566:48;;-1:-1:-1;1607:6:30;;-1:-1:-1;;;;;1607:6:30;1593:10;:20;1566:48;1551:122;;;;;;-1:-1:-1;;;;;1551:122:30;;;;;;;;;525:27:32;:6;539:3;544:7;525:27;:13;:27;:::i;:::-;517:57;;;;;;-1:-1:-1;;;;;517:57:32;;;;;;;;;585:8;;589:3;;585:8;;;;;-1:-1:-1;606:4:32;415:200;;;;:::o;1006:122::-;1064:17;;:::i;:::-;1096:27;:6;1115:7;1096:27;:18;:27;:::i;1975:218:30:-;1350:6;;-1:-1:-1;;;;;1350:6:30;1336:10;:20;1328:59;;;;-1:-1:-1;;;;;1328:59:30;;;;;;;;;-1:-1:-1;;;;;2051:22:30;;;;2043:73;;;;-1:-1:-1;;;;;2043:73:30;;;;;;;;;2148:6;;;2127:38;;-1:-1:-1;;;;;2127:38:30;;;;2148:6;;;2127:38;;;2171:6;:17;;-1:-1:-1;;2171:17:30;-1:-1:-1;;;;;2171:17:30;;;;;;;;;;1975:218::o;895:107:32:-;946:17;;:::i;:::-;978:19;:6;993:3;978:19;:14;:19;:::i;2533:71:30:-;2593:6;;-1:-1:-1;;;;;2593:6:30;2533:71;:::o;1942:104:14:-;2025:9;;:16;;1942:104::o;1495:443::-;1565:4;1633:15;1672:25;1582:16;1588:4;1594:3;1582:5;:16::i;:::-;1581:17;1577:50;;;1615:5;1608:12;;;;1577:50;1651:10;:15;;;;;;;;;;;1700:9;;;1710:16;;1651:15;;-1:-1:-1;1700:9:14;1710:23;;1731:1;1710:23;:20;:23;:::i;:::-;1700:34;;;;;;;;;;;;;;;;;;1672:62;;1761:9;1740:4;:9;;1750:7;1740:18;;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;1787:12:14;;;;;1776:10;:24;;;;;;;;;;;:34;;;1839:16;;;;1831:25;;;;;;;;;;-1:-1:-1;;1831:25:14;;;;;;;;;;;;;;;;;;;;;;;;;;1776:34;;1816:14;;;1776:10;1831:25;;;;;1839:16;1831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:25::i;:::-;1816:41;;;;;;;;;;;;;:51;1892:9;;;:16;:23;;1913:1;1892:23;:20;:23;:::i;:::-;1873:42;:9;;;:42;;:::i;:::-;;1929:4;1922:11;;1495:443;;;;;;;:::o;2050:219::-;2136:17;;:::i;:::-;2179:9;;;:16;2171:24;;2163:72;;;;-1:-1:-1;;;;;2163:72:14;;;;;;;;;2248:9;;;:16;;2258:5;;2248:16;;;;;;;;;;;;;;;;2241:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2050:219;;;;:::o;2939:485::-;3048:19;3082:12;3048:19;3082:12;3112:10;;;3104:55;;;;-1:-1:-1;;;;;3104:55:14;;;;;;;;;3222:6;3198:31;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3165:64;;3253:4;3241:16;;3236:167;3263:9;;;:16;3259:20;;3236:167;;;3306:6;3298:4;:14;3294:44;;;3324:5;;3294:44;3358:9;;;:12;;3368:1;;3358:12;;;;;;;;;;;;;;;;3346:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:3;3350:4;3346:9;;;;;;;;;;;;;;;;;;:24;3385:11;:4;3394:1;3385:11;:8;:11;:::i;:::-;3378:18;-1:-1:-1;3281:3:14;;3236:167;;;-1:-1:-1;3416:3:14;2939:485;-1:-1:-1;;;;;2939:485:14:o;1117:374::-;1219:4;1286:16;;:::i;:::-;1235;1241:4;1247:3;1235:5;:16::i;:::-;1231:49;;;1268:5;1261:12;;;;1231:49;-1:-1:-1;1311:58:14;;;;;;;;1325:9;;;;:16;;1311:58;;;;;;;;;;;;;;;;39:1:-1;23:18;;;45:23;;;-1:-1;1376:17:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:58;;23:18:-1;;1311:58:14;;1376:17;;;;;;;;;;:::i;:::-;-1:-1:-1;;1417:5:14;;;1399:15;;;;;;;;;;:23;;;;1463:5;;;-1:-1:-1;1428:14:14;;;;-1:-1:-1;1443:16:14;1451:7;1443;:16::i;:::-;1428:32;;;;;;;;;;;;;:40;1482:4;;-1:-1:-1;1117:374:14;;;;;;;:::o;2486:348::-;2581:17;;:::i;:::-;2608:27;2638:4;:9;;2648:4;:14;;:32;2663:16;2671:7;2663;:16::i;:::-;2648:32;;;;;;;;;;;;;;2638:43;;;;;;;;;;;;;;;;;;2608:73;;2772:17;2778:4;2784:1;:4;;;2772:5;:17::i;:::-;2764:51;;;;;;-1:-1:-1;;;;;2764:51:14;;;;;;;;;2828:1;2821:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2486:348;;;;;:::o;2273:209::-;2361:17;;:::i;:::-;2396:16;2402:4;2408:3;2396:5;:16::i;:::-;2388:50;;;;;;-1:-1:-1;;;;;2388:50:14;;;;;;;;;2461:10;:15;;;;;;;;;;;2451:9;;;:26;;:9;;2461:15;2451:26;;;;;466:256;570:9;;;:16;552:4;;570:21;566:39;;;-1:-1:-1;600:5:14;593:12;;566:39;629:10;:15;;;;;;;;;;;619:9;;;:26;;652:3;;629:15;619:26;;;;;;;;;;;;;;;;:29;;;:36;:97;;;;-1:-1:-1;715:1:14;688:15;;;;;;;;;;;678:9;;;:26;;665:47;;688:15;678:26;;;;;;;;;;;;;;;:33;:26;;;;;:33;;665:47;;;;;;-1:-1:-1;;665:47:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:33;;665:47;;;678:33;665:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:47::i;:::-;:51;;466:256;-1:-1:-1;;;466:256:14:o;1093:116:20:-;1153:7;1175:8;;;;1168:16;;;;-1:-1:-1;1197:7:20;;;1093:116::o;927:119:14:-;983:7;1032;1015:25;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1015:25:14;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1015:25:14;;;1005:36;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;1005:36:14;;;;;;;;;;;;-1:-1:-1;;;;;927:119:14:o;1319:134:20:-;1379:7;1406;;;1426;;;;1419:15;;;726:197:14;841:8;;784:7;;822:4;;853;-1:-1:-1;841:16:14;833:64;;;;-1:-1:-1;;;;;833:64:14;;;;;;;;;910:8;;726:197;-1:-1:-1;;726:197:14:o;174:1199:32:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;174:1199:32;;;-1:-1:-1;174:1199:32;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;131:442;;226:4;214:17;;210:27;-1:-1;200:2;;251:1;248;241:12;200:2;288:6;275:20;310:65;325:49;367:6;325:49;;;310:65;;;301:74;;395:6;388:5;381:21;431:4;423:6;419:17;464:4;457:5;453:16;499:3;490:6;485:3;481:16;478:25;475:2;;;516:1;513;506:12;475:2;526:41;560:6;555:3;550;526:41;;;193:380;;;;;;;;581:118;;648:46;686:6;673:20;648:46;;706:241;;810:2;798:9;789:7;785:23;781:32;778:2;;;826:1;823;816:12;778:2;861:1;878:53;923:7;903:9;878:53;;;868:63;772:175;-1:-1;;;;772:175;954:347;;1068:2;1056:9;1047:7;1043:23;1039:32;1036:2;;;1084:1;1081;1074:12;1036:2;1119:31;;1170:18;1159:30;;1156:2;;;1202:1;1199;1192:12;1156:2;1222:63;1277:7;1268:6;1257:9;1253:22;1222:63;;1308:241;;1412:2;1400:9;1391:7;1387:23;1383:32;1380:2;;;1428:1;1425;1418:12;1380:2;1463:1;1480:53;1525:7;1505:9;1480:53;;1556:472;;;1687:2;1675:9;1666:7;1662:23;1658:32;1655:2;;;1703:1;1700;1693:12;1655:2;1738:1;1755:53;1800:7;1780:9;1755:53;;;1745:63;;1717:97;1873:2;1862:9;1858:18;1845:32;1897:18;1889:6;1886:30;1883:2;;;1929:1;1926;1919:12;1883:2;1949:63;2004:7;1995:6;1984:9;1980:22;1949:63;;;1939:73;;1824:194;1649:379;;;;;;2035:366;;;2156:2;2144:9;2135:7;2131:23;2127:32;2124:2;;;2172:1;2169;2162:12;2124:2;2207:1;2224:53;2269:7;2249:9;2224:53;;;2214:63;;2186:97;2314:2;2332:53;2377:7;2368:6;2357:9;2353:22;2332:53;;2408:110;2481:31;2506:5;2481:31;;;2476:3;2469:44;2463:55;;;2590:878;;2767:75;2836:5;2767:75;;;2860:6;2855:3;2848:19;2884:4;2879:3;2875:14;2868:21;;2932:3;2974:4;2966:6;2962:17;2957:3;2953:27;3000:77;3071:5;3000:77;;;3098:1;3083:346;3108:6;3105:1;3102:13;3083:346;;;3170:9;3164:4;3160:20;3155:3;3148:33;3196:100;3291:4;3282:6;3276:13;3196:100;;;3188:108;;3313:81;3387:6;3313:81;;;3417:4;3408:14;;;;;3303:91;-1:-1;3130:1;3123:9;3083:346;;;-1:-1;3442:4;;2746:722;-1:-1;;;;;;2746:722;3476:101;3543:28;3565:5;3543:28;;3584:292;;3682:35;3711:5;3682:35;;;3734:6;3729:3;3722:19;3746:63;3802:6;3795:4;3790:3;3786:14;3779:4;3772:5;3768:16;3746:63;;;3841:29;3863:6;3841:29;;;3821:50;;;3834:4;3821:50;;3662:214;-1:-1;;;3662:214;3884:397;4039:2;4027:15;;4076:66;4071:2;4062:12;;4055:88;4177:66;4172:2;4163:12;;4156:88;4272:2;4263:12;;4020:261;4290:397;4445:2;4433:15;;4482:66;4477:2;4468:12;;4461:88;4583:66;4578:2;4569:12;;4562:88;4678:2;4669:12;;4426:261;4696:296;4851:2;4839:15;;4888:66;4883:2;4874:12;;4867:88;4983:2;4974:12;;4832:160;5001:397;5156:2;5144:15;;5193:66;5188:2;5179:12;;5172:88;5294:66;5289:2;5280:12;;5273:88;5389:2;5380:12;;5137:261;5407:296;5562:2;5550:15;;5599:66;5594:2;5585:12;;5578:88;5694:2;5685:12;;5543:160;5712:296;5867:2;5855:15;;;5904:66;5890:12;;;5883:88;5999:2;5990:12;;5848:160;6017:296;6172:2;6160:15;;6209:66;6204:2;6195:12;;6188:88;6304:2;6295:12;;6153:160;6322:397;6477:2;6465:15;;6514:66;6509:2;6500:12;;6493:88;6615:66;6610:2;6601:12;;6594:88;6710:2;6701:12;;6458:261;6728:397;6883:2;6871:15;;6920:66;6915:2;6906:12;;6899:88;7021:66;7016:2;7007:12;;7000:88;7116:2;7107:12;;6864:261;7134:296;7289:2;7277:15;;7326:66;7321:2;7312:12;;7305:88;7421:2;7412:12;;7270:160;7497:737;7706:22;;7497:737;;7638:4;7629:14;;;7740:61;7633:3;7706:22;7740:61;;;7658:155;7887:4;7880:5;7876:16;7870:23;7905:62;7961:4;7956:3;7952:14;7939:11;7905:62;;;7823:156;8057:4;8050:5;8046:16;8040:23;8108:3;8102:4;8098:14;8091:4;8086:3;8082:14;8075:38;8128:68;8191:4;8178:11;8128:68;;;8120:76;7611:623;-1:-1;;;;;7611:623;9040:110;9113:31;9138:5;9113:31;;9157:193;9265:2;9250:18;;9279:61;9254:9;9313:6;9279:61;;9357:425;9557:2;9571:47;;;9542:18;;9632:140;9542:18;9758:6;9632:140;;9789:181;9891:2;9876:18;;9905:55;9880:9;9933:6;9905:55;;9977:387;10158:2;10172:47;;;10143:18;;10233:121;10143:18;10233:121;;10371:387;10552:2;10566:47;;;10537:18;;10627:121;10537:18;10627:121;;10765:387;10946:2;10960:47;;;10931:18;;11021:121;10931:18;11021:121;;11159:387;11340:2;11354:47;;;11325:18;;11415:121;11325:18;11415:121;;11553:387;11734:2;11748:47;;;11719:18;;11809:121;11719:18;11809:121;;11947:387;12128:2;12142:47;;;12113:18;;12203:121;12113:18;12203:121;;12341:387;12522:2;12536:47;;;12507:18;;12597:121;12507:18;12597:121;;12735:387;12916:2;12930:47;;;12901:18;;12991:121;12901:18;12991:121;;13129:387;13310:2;13324:47;;;13295:18;;13385:121;13295:18;13385:121;;13523:387;13704:2;13718:47;;;13689:18;;13779:121;13689:18;13779:121;;13917:341;14075:2;14089:47;;;14060:18;;14150:98;14060:18;14234:6;14150:98;;14265:193;14373:2;14358:18;;14387:61;14362:9;14421:6;14387:61;;14465:256;14527:2;14521:9;14553:17;;;14628:18;14613:34;;14649:22;;;14610:62;14607:2;;;14685:1;14682;14675:12;14607:2;14701;14694:22;14505:216;;-1:-1;14505:216;14728:259;;14872:18;14864:6;14861:30;14858:2;;;14904:1;14901;14894:12;14858:2;-1:-1;14977:4;14948;14925:17;;;;-1:-1;;14921:33;14967:15;;14795:192;14996:142;15126:4;