diff --git a/build/contracts/AFS.json b/build/contracts/AFS.json index ad5c435..01b9573 100644 --- a/build/contracts/AFS.json +++ b/build/contracts/AFS.json @@ -676,14 +676,14 @@ "type": "function" } ], - "bytecode": "0x60806040526040805190810160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250600290805190602001906200005192919062000066565b503480156200005f57600080fd5b5062000115565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000a957805160ff1916838001178555620000da565b82800160010185558215620000da579182015b82811115620000d9578251825591602001919060010190620000bc565b5b509050620000e99190620000ed565b5090565b6200011291905b808211156200010e576000816000905550600101620000f4565b5090565b90565b61426a80620001256000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631e0a1b951461017a5780632a6363be146101f257806331ddd9ab146102215780633e5ceede146102d457806346f60dee146102eb57806347269720146103425780634ddf47d4146103755780634e1d009f146103de578063546887a3146104215780635ee6fa611461046657806360011473146104ab57806366570f17146104d65780638a67f4bf146105595780638e5aafe1146105b057806391b7f5ed146105c757806399d20bb1146105f4578063a0d585011461063d578063bb66f9f61461066c578063bc302cd01461071f578063ce40b03f14610854578063d56805e11461087f578063dd1bb1fc146108d6578063e766307914610966578063f0e5bd86146109bd578063f4e493d614610a55578063f51b697914610a9e578063f5bd3e3f14610ad9578063fa4bbcc614610b22578063fc1c34e414610be5575b600080fd5b34801561018657600080fd5b506101a96004803603810190808035600019169060200190929190505050610bfc565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b3480156101fe57600080fd5b50610207610c40565b604051808215151515815260200191505060405180910390f35b34801561022d57600080fd5b50610259600480360381019080803560ff16906020019092919080359060200190929190505050610c53565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029957808201518184015260208101905061027e565b50505050905090810190601f1680156102c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e057600080fd5b506102e9610d10565b005b3480156102f757600080fd5b506103006112c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034e57600080fd5b506103576112e6565b60405180826000191660001916815260200191505060405180910390f35b34801561038157600080fd5b506103dc600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506112ec565b005b3480156103ea57600080fd5b5061041f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e1565b005b34801561042d57600080fd5b5061045060048036038101908080356000191690602001909291905050506117d0565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b5061049560048036038101908080356000191690602001909291905050506117f8565b6040518082815260200191505060405180910390f35b3480156104b757600080fd5b506104c0611810565b6040518082815260200191505060405180910390f35b3480156104e257600080fd5b50610557600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050611816565b005b34801561056557600080fd5b5061059a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b33565b6040518082815260200191505060405180910390f35b3480156105bc57600080fd5b506105c5611c14565b005b3480156105d357600080fd5b506105f260048036038101908080359060200190929190505050611f06565b005b34801561060057600080fd5b50610623600480360381019080803560001916906020019092919050505061200f565b604051808215151515815260200191505060405180910390f35b34801561064957600080fd5b5061065261202f565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b506106a4600480360381019080803560ff16906020019092919080359060200190929190505050612145565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e45780820151818401526020810190506106c9565b50505050905090810190601f1680156107115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072b57600080fd5b506108526004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612241565b005b34801561086057600080fd5b506108696125b7565b6040518082815260200191505060405180910390f35b34801561088b57600080fd5b506108946125bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108e257600080fd5b506108eb6125e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561092b578082015181840152602081019050610910565b50505050905090810190601f1680156109585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561097257600080fd5b5061097b612681565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109c957600080fd5b50610a3b600480360381019080803560ff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506126a6565b604051808215151515815260200191505060405180910390f35b348015610a6157600080fd5b50610a9c6004803603810190808035600019169060200190929190803560001916906020019092919080359060200190929190505050612786565b005b348015610aaa57600080fd5b50610ad7600480360381019080803560001916906020019092919080359060200190929190505050612d93565b005b348015610ae557600080fd5b50610b0860048036038101908080356000191690602001909291905050506134de565b604051808215151515815260200191505060405180910390f35b348015610b2e57600080fd5b50610be3600480360381019080803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291905050506134fe565b005b348015610bf157600080fd5b50610bfa613dcf565b005b60096020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600660009054906101000a900460ff1681565b600c602052816000526040600020602052806000526040600020600091509150508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d085780601f10610cdd57610100808354040283529160200191610d08565b820191906000526020600020905b815481529060010190602001808311610ceb57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e665750600854600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4f0e1ae336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050506040513d6020811015610e5257600080fd5b810190808051906020019092919050505010155b80610f525750600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610f005780518252602082019150602081019050602083039250610edb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b156112595733604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610fe75780518252602082019150602081019050602083039250610fc2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506000600a60008360001916600019168152602001908152602001600020541115156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f2062616c616e636520746f2072656465656d2e000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600a60008560001916600019168152602001908152602001600020546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561118957600080fd5b505af115801561119d573d6000803e3d6000fd5b505050506040513d60208110156111b357600080fd5b810190808051906020019092919050505015611254573373ffffffffffffffffffffffffffffffffffffffff167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369600a60008460001916600019168152602001908152602001600020546040518082815260200191505060405180910390a26000600a60008360001916600019168152602001908152602001600020819055505b6112bd565b7f51267e37212898aeeb15abec9b3516d1f714b4e2dcf6fa1ab92d1adac0b7a8b333604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600080600080600060208601945084519350604086019450845192506060860194508451915060808601945084519050836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581600019169055506001600660006101000a81548160ff0219169083151502179055506000600781905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561149257600080fd5b505af11580156114a6573d6000803e3d6000fd5b505050506040513d60208110156114bc57600080fd5b8101908080519060200190929190505050600a0a606402600881905550505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153e57600080fd5b816001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156115d357805182526020820191506020810190506020830392506115ae565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611698576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156117685780518252602082019150602081019050602083039250611743565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600960008360001916600019168152602001908152602001600020600101549050919050565b600a6020528060005260406000206000915090505481565b60085481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff161515611962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f41465320697320756e6c69737465642e0000000000000000000000000000000081525060200191505060405180910390fd5b888890508b8b905011611978578888905061197d565b8a8a90505b9250600091505b82821015611afa5760018b8b90500382111515611a3c576119ec602860ff168302602860ff1689898080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061409d9092919063ffffffff16565b600c60008060ff16815260200190815260200160002060008d8d868181101515611a1257fe5b9050602002013581526020019081526020016000209080519060200190611a3a929190614199565b505b6001898990500382111515611aed57611a9c604060ff168302604060ff1687878080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061409d9092919063ffffffff16565b600c6000600160ff16815260200190815260200160002060008b8b868181101515611ac357fe5b9050602002013581526020019081526020016000209080519060200190611aeb929190614199565b505b8180600101925050611984565b7fac49d08a7236cfde58884d3b28866f01655ebe0c2b682c6c0bbc758fe175ac4e60405160405180910390a15050505050505050505050565b6000600a600083604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611bc95780518252602082019150602081019050602083039250611ba4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020549050919050565b60006001600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611caa5780518252602082019150602081019050602083039250611c85565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151515611d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4f776e657273686970207265717565737420616c72656164792061637469766581526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611e265780518252602082019150602081019050602083039250611e01565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506001806000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd5b906f2d3dfa8cf0ea788d4ad6e99ebd482d6134c3405e1a5faa5da891cda8560405160405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b816007819055507f6bfd5e75539a9d2626425a2e2922675256b219fe546d63dad56011759b9a2f666007546040518082815260200191505060405180910390a15050565b60016020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f8a4c2109f8e0afa7f5db822b373f91a521ebca62d47047365db81c3e65eae02860405160405180910390a1600191505090565b6060600660009054906101000a900460ff161515612175576020604051908101604052806000815250905061223b565b600c60008460ff1660ff16815260200190815260200160002060008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122335780601f1061220857610100808354040283529160200191612233565b820191906000526020600020905b81548152906001019060200180831161221657829003601f168201915b505050505090505b92915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff16151561238d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f41465320697320756e6c69737465642e0000000000000000000000000000000081525060200191505060405180910390fd5b855187511161239d5785516123a0565b86515b92506123b9600060208761409d9092919063ffffffff16565b600c60008060ff168152602001908152602001600020600080815260200190815260200160002090805190602001906123f3929190614199565b5061240b600060208661409d9092919063ffffffff16565b600c6000600160ff16815260200190815260200160002060008081526020019081526020016000209080519060200190612446929190614199565b50600191505b82821015612582576001875103821115156124e457612491878381518110151561247257fe5b90602001906020020151602860ff168761409d9092919063ffffffff16565b600c60008060ff168152602001908152602001600020600089858151811015156124b757fe5b90602001906020020151815260200190815260200160002090805190602001906124e2929190614199565b505b60018651038211151561257557612521868381518110151561250257fe5b90602001906020020151604060ff168661409d9092919063ffffffff16565b600c6000600160ff1681526020019081526020016000206000888581518110151561254857fe5b9060200190602002015181526020019081526020016000209080519060200190612573929190614199565b505b818060010192505061244c565b7fac49d08a7236cfde58884d3b28866f01655ebe0c2b682c6c0bbc758fe175ac4e60405160405180910390a150505050505050565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126795780601f1061264e57610100808354040283529160200191612679565b820191906000526020600020905b81548152906001019060200180831161265c57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061277d82600c60008760ff1660ff16815260200190815260200160002060008681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561276a5780601f1061273f5761010080835404028352916020019161276a565b820191906000526020600020905b81548152906001019060200180831161274d57829003601f168201915b505050505061412a90919063ffffffff16565b90509392505050565b600080600660009054906101000a900460ff161515612833576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f436f6e74656e74206973206e6f74206c697374656420666f722070757263686181526020017f73652e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561292457600080fd5b505af1158015612938573d6000803e3d6000fd5b505050506040513d602081101561294e57600080fd5b8101908080519060200190929190505050915033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156129f157805182526020820191506020810190506020830392506129cc565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050600b6000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015612a5a575082600754018210155b1515612ace576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f556e61626c6520746f2070757263686173652e0000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612bea57600080fd5b505af1158015612bfe573d6000803e3d6000fd5b505050506040513d6020811015612c1457600080fd5b810190808051906020019092919050505015612d8c576001600b6000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c2bb965866005546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050505084600019167fcddf9a7164ac111c2b0f5648b8600c8f3e4060c7cc663f8218c748d7357c7ea56007546040518082815260200191505060405180910390a2600060010260001916846000191614158015612d7b5750600083115b15612d8b57612d8a8484612d93565b5b5b5050505050565b6000600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515612e295780518252602082019150602081019050602083039250612e04565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6e74656e7420776173206e65766572207075726368617365642e0000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612fdf57600080fd5b505af1158015612ff3573d6000803e3d6000fd5b505050506040513d602081101561300957600080fd5b810190808051906020019092919050505090506000600102600019168360001916141580156130385750600082115b80156130445750818110155b801561312e5750600073ffffffffffffffffffffffffffffffffffffffff1660096000856000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061312d57503373ffffffffffffffffffffffffffffffffffffffff1660096000856000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b15156131a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4a6f62207375626d697373696f6e20696e76616c69642e00000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561329b57600080fd5b505af11580156132af573d6000803e3d6000fd5b505050506040513d60208110156132c557600080fd5b8101908080519060200190929190505050156134d95781600960008560001916600019168152602001908152602001600020600101600082825401925050819055503360096000856000191660001916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050506040513d602081101561344b57600080fd5b8101908080519060200190929190505050600960008560001916600019168152602001908152602001600020600101541115151561348557fe5b82600019163373ffffffffffffffffffffffffffffffffffffffff167ffe90998f27be7536b0ddee58cbabc035ceaf141636bf7ca4216f4aae6a50ca6f846040518082815260200191505060405180910390a35b505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000806000806000883373ffffffffffffffffffffffffffffffffffffffff1660096000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561359e5750600060096000836000191660001916815260200190815260200160002060010154115b1515613612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4a6f6220697320696e76616c69642e000000000000000000000000000000000081525060200191505060405180910390fd5b875189511415156136b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f556e657175616c206e756d626572206f66206661726d65727320616e6420726581526020017f77617264732e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600094505b87518560ff1610156136ee57878560ff168151811015156136d357fe5b906020019060200201518601955084806001019550506136b6565b600960008b60001916600019168152602001908152602001600020600101548611151515613784576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e74206275646765742e00000000000000000000000081525060200191505060405180910390fd5b600093505b88518460ff161015613c8057600854600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4f0e1ae8b8760ff168151811015156137e757fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561386f57600080fd5b505af1158015613883573d6000803e3d6000fd5b505050506040513d602081101561389957600080fd5b81019080805190602001909291905050501015806139985750600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156139465780518252602082019150602081019050602083039250613921565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b15613bf557878460ff168151811015156139ae57fe5b90602001906020020151600960008c6000191660001916815260200190815260200160002060010154101515156139e157fe5b888460ff168151811015156139f257fe5b90602001906020020151604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613a8b5780518252602082019150602081019050602083039250613a66565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250878460ff16815181101515613acb57fe5b90602001906020020151600a6000856000191660001916815260200190815260200160002060008282540192505081905550878460ff16815181101515613b0e57fe5b90602001906020020151600960008c60001916600019168152602001908152602001600020600101600082825403925050819055508960001916898560ff16815181101515613b5957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167fe0b17d0a6a4b5e07ef48a007b70f93ff1fc3862becc524e286a3ddc3ac7965f68a8760ff16815181101515613bab57fe5b90602001906020020151600960008f6000191660001916815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a3613c73565b7f51267e37212898aeeb15abec9b3516d1f714b4e2dcf6fa1ab92d1adac0b7a8b3898560ff16815181101515613c2757fe5b90602001906020020151604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b8380600101945050613789565b8615613dc357600960008b600019166000191681526020019081526020016000206001015491506000821115613dc25781600a600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613d455780518252602082019150602081019050602083039250613d20565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020600082825401925050819055506000600960008c6000191660001916815260200190815260200160002060010181905550613dc1610d10565b5b5b50505050505050505050565b6000336001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e665780518252602082019150602081019050602083039250613e41565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515613f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613fbb5780518252602082019150602081019050602083039250613f96565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1dc90b1ce875ea53ce4f7fb2036478f4ddfef57ec243f3fb5a9d81faf7dac5f460405160405180910390a35050565b6060808284018551101515156140b257600080fd5b8215600081146140cd5760405191506020820160405261411e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561410b57805183526020830192506020810190506140ee565b50868552601f19601f8301166040525050505b50809150509392505050565b6000806001905083518351811460018114614148576000925061418d565b600160208701838101602088015b60028483851001141561418857805183511415156141775760009650600093505b602083019250602081019050614156565b505050505b50508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106141da57805160ff1916838001178555614208565b82800160010185558215614208579182015b828111156142075782518255916020019190600101906141ec565b5b5090506142159190614219565b5090565b61423b91905b8082111561423757600081600090555060010161421f565b5090565b905600a165627a7a7230582038e5c204b8d6481a1bcf23bbdd983ce1bd9546f60a0c5fa94911e2c293cc27290029", - "deployedBytecode": "0x608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631e0a1b951461017a5780632a6363be146101f257806331ddd9ab146102215780633e5ceede146102d457806346f60dee146102eb57806347269720146103425780634ddf47d4146103755780634e1d009f146103de578063546887a3146104215780635ee6fa611461046657806360011473146104ab57806366570f17146104d65780638a67f4bf146105595780638e5aafe1146105b057806391b7f5ed146105c757806399d20bb1146105f4578063a0d585011461063d578063bb66f9f61461066c578063bc302cd01461071f578063ce40b03f14610854578063d56805e11461087f578063dd1bb1fc146108d6578063e766307914610966578063f0e5bd86146109bd578063f4e493d614610a55578063f51b697914610a9e578063f5bd3e3f14610ad9578063fa4bbcc614610b22578063fc1c34e414610be5575b600080fd5b34801561018657600080fd5b506101a96004803603810190808035600019169060200190929190505050610bfc565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b3480156101fe57600080fd5b50610207610c40565b604051808215151515815260200191505060405180910390f35b34801561022d57600080fd5b50610259600480360381019080803560ff16906020019092919080359060200190929190505050610c53565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029957808201518184015260208101905061027e565b50505050905090810190601f1680156102c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e057600080fd5b506102e9610d10565b005b3480156102f757600080fd5b506103006112c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034e57600080fd5b506103576112e6565b60405180826000191660001916815260200191505060405180910390f35b34801561038157600080fd5b506103dc600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506112ec565b005b3480156103ea57600080fd5b5061041f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e1565b005b34801561042d57600080fd5b5061045060048036038101908080356000191690602001909291905050506117d0565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b5061049560048036038101908080356000191690602001909291905050506117f8565b6040518082815260200191505060405180910390f35b3480156104b757600080fd5b506104c0611810565b6040518082815260200191505060405180910390f35b3480156104e257600080fd5b50610557600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050611816565b005b34801561056557600080fd5b5061059a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b33565b6040518082815260200191505060405180910390f35b3480156105bc57600080fd5b506105c5611c14565b005b3480156105d357600080fd5b506105f260048036038101908080359060200190929190505050611f06565b005b34801561060057600080fd5b50610623600480360381019080803560001916906020019092919050505061200f565b604051808215151515815260200191505060405180910390f35b34801561064957600080fd5b5061065261202f565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b506106a4600480360381019080803560ff16906020019092919080359060200190929190505050612145565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e45780820151818401526020810190506106c9565b50505050905090810190601f1680156107115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072b57600080fd5b506108526004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612241565b005b34801561086057600080fd5b506108696125b7565b6040518082815260200191505060405180910390f35b34801561088b57600080fd5b506108946125bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108e257600080fd5b506108eb6125e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561092b578082015181840152602081019050610910565b50505050905090810190601f1680156109585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561097257600080fd5b5061097b612681565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109c957600080fd5b50610a3b600480360381019080803560ff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506126a6565b604051808215151515815260200191505060405180910390f35b348015610a6157600080fd5b50610a9c6004803603810190808035600019169060200190929190803560001916906020019092919080359060200190929190505050612786565b005b348015610aaa57600080fd5b50610ad7600480360381019080803560001916906020019092919080359060200190929190505050612d93565b005b348015610ae557600080fd5b50610b0860048036038101908080356000191690602001909291905050506134de565b604051808215151515815260200191505060405180910390f35b348015610b2e57600080fd5b50610be3600480360381019080803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291905050506134fe565b005b348015610bf157600080fd5b50610bfa613dcf565b005b60096020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600660009054906101000a900460ff1681565b600c602052816000526040600020602052806000526040600020600091509150508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d085780601f10610cdd57610100808354040283529160200191610d08565b820191906000526020600020905b815481529060010190602001808311610ceb57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e665750600854600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4f0e1ae336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050506040513d6020811015610e5257600080fd5b810190808051906020019092919050505010155b80610f525750600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610f005780518252602082019150602081019050602083039250610edb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b156112595733604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610fe75780518252602082019150602081019050602083039250610fc2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506000600a60008360001916600019168152602001908152602001600020541115156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f2062616c616e636520746f2072656465656d2e000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600a60008560001916600019168152602001908152602001600020546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561118957600080fd5b505af115801561119d573d6000803e3d6000fd5b505050506040513d60208110156111b357600080fd5b810190808051906020019092919050505015611254573373ffffffffffffffffffffffffffffffffffffffff167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369600a60008460001916600019168152602001908152602001600020546040518082815260200191505060405180910390a26000600a60008360001916600019168152602001908152602001600020819055505b6112bd565b7f51267e37212898aeeb15abec9b3516d1f714b4e2dcf6fa1ab92d1adac0b7a8b333604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600080600080600060208601945084519350604086019450845192506060860194508451915060808601945084519050836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581600019169055506001600660006101000a81548160ff0219169083151502179055506000600781905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561149257600080fd5b505af11580156114a6573d6000803e3d6000fd5b505050506040513d60208110156114bc57600080fd5b8101908080519060200190929190505050600a0a606402600881905550505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153e57600080fd5b816001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156115d357805182526020820191506020810190506020830392506115ae565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611698576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156117685780518252602082019150602081019050602083039250611743565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600960008360001916600019168152602001908152602001600020600101549050919050565b600a6020528060005260406000206000915090505481565b60085481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff161515611962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f41465320697320756e6c69737465642e0000000000000000000000000000000081525060200191505060405180910390fd5b888890508b8b905011611978578888905061197d565b8a8a90505b9250600091505b82821015611afa5760018b8b90500382111515611a3c576119ec602860ff168302602860ff1689898080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061409d9092919063ffffffff16565b600c60008060ff16815260200190815260200160002060008d8d868181101515611a1257fe5b9050602002013581526020019081526020016000209080519060200190611a3a929190614199565b505b6001898990500382111515611aed57611a9c604060ff168302604060ff1687878080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061409d9092919063ffffffff16565b600c6000600160ff16815260200190815260200160002060008b8b868181101515611ac357fe5b9050602002013581526020019081526020016000209080519060200190611aeb929190614199565b505b8180600101925050611984565b7fac49d08a7236cfde58884d3b28866f01655ebe0c2b682c6c0bbc758fe175ac4e60405160405180910390a15050505050505050505050565b6000600a600083604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611bc95780518252602082019150602081019050602083039250611ba4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020549050919050565b60006001600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611caa5780518252602082019150602081019050602083039250611c85565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151515611d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4f776e657273686970207265717565737420616c72656164792061637469766581526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611e265780518252602082019150602081019050602083039250611e01565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506001806000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd5b906f2d3dfa8cf0ea788d4ad6e99ebd482d6134c3405e1a5faa5da891cda8560405160405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b816007819055507f6bfd5e75539a9d2626425a2e2922675256b219fe546d63dad56011759b9a2f666007546040518082815260200191505060405180910390a15050565b60016020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f8a4c2109f8e0afa7f5db822b373f91a521ebca62d47047365db81c3e65eae02860405160405180910390a1600191505090565b6060600660009054906101000a900460ff161515612175576020604051908101604052806000815250905061223b565b600c60008460ff1660ff16815260200190815260200160002060008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122335780601f1061220857610100808354040283529160200191612233565b820191906000526020600020905b81548152906001019060200180831161221657829003601f168201915b505050505090505b92915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff16151561238d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f41465320697320756e6c69737465642e0000000000000000000000000000000081525060200191505060405180910390fd5b855187511161239d5785516123a0565b86515b92506123b9600060208761409d9092919063ffffffff16565b600c60008060ff168152602001908152602001600020600080815260200190815260200160002090805190602001906123f3929190614199565b5061240b600060208661409d9092919063ffffffff16565b600c6000600160ff16815260200190815260200160002060008081526020019081526020016000209080519060200190612446929190614199565b50600191505b82821015612582576001875103821115156124e457612491878381518110151561247257fe5b90602001906020020151602860ff168761409d9092919063ffffffff16565b600c60008060ff168152602001908152602001600020600089858151811015156124b757fe5b90602001906020020151815260200190815260200160002090805190602001906124e2929190614199565b505b60018651038211151561257557612521868381518110151561250257fe5b90602001906020020151604060ff168661409d9092919063ffffffff16565b600c6000600160ff1681526020019081526020016000206000888581518110151561254857fe5b9060200190602002015181526020019081526020016000209080519060200190612573929190614199565b505b818060010192505061244c565b7fac49d08a7236cfde58884d3b28866f01655ebe0c2b682c6c0bbc758fe175ac4e60405160405180910390a150505050505050565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126795780601f1061264e57610100808354040283529160200191612679565b820191906000526020600020905b81548152906001019060200180831161265c57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061277d82600c60008760ff1660ff16815260200190815260200160002060008681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561276a5780601f1061273f5761010080835404028352916020019161276a565b820191906000526020600020905b81548152906001019060200180831161274d57829003601f168201915b505050505061412a90919063ffffffff16565b90509392505050565b600080600660009054906101000a900460ff161515612833576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f436f6e74656e74206973206e6f74206c697374656420666f722070757263686181526020017f73652e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561292457600080fd5b505af1158015612938573d6000803e3d6000fd5b505050506040513d602081101561294e57600080fd5b8101908080519060200190929190505050915033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156129f157805182526020820191506020810190506020830392506129cc565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050600b6000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015612a5a575082600754018210155b1515612ace576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f556e61626c6520746f2070757263686173652e0000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612bea57600080fd5b505af1158015612bfe573d6000803e3d6000fd5b505050506040513d6020811015612c1457600080fd5b810190808051906020019092919050505015612d8c576001600b6000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c2bb965866005546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050505084600019167fcddf9a7164ac111c2b0f5648b8600c8f3e4060c7cc663f8218c748d7357c7ea56007546040518082815260200191505060405180910390a2600060010260001916846000191614158015612d7b5750600083115b15612d8b57612d8a8484612d93565b5b5b5050505050565b6000600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515612e295780518252602082019150602081019050602083039250612e04565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6e74656e7420776173206e65766572207075726368617365642e0000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612fdf57600080fd5b505af1158015612ff3573d6000803e3d6000fd5b505050506040513d602081101561300957600080fd5b810190808051906020019092919050505090506000600102600019168360001916141580156130385750600082115b80156130445750818110155b801561312e5750600073ffffffffffffffffffffffffffffffffffffffff1660096000856000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061312d57503373ffffffffffffffffffffffffffffffffffffffff1660096000856000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b15156131a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4a6f62207375626d697373696f6e20696e76616c69642e00000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561329b57600080fd5b505af11580156132af573d6000803e3d6000fd5b505050506040513d60208110156132c557600080fd5b8101908080519060200190929190505050156134d95781600960008560001916600019168152602001908152602001600020600101600082825401925050819055503360096000856000191660001916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050506040513d602081101561344b57600080fd5b8101908080519060200190929190505050600960008560001916600019168152602001908152602001600020600101541115151561348557fe5b82600019163373ffffffffffffffffffffffffffffffffffffffff167ffe90998f27be7536b0ddee58cbabc035ceaf141636bf7ca4216f4aae6a50ca6f846040518082815260200191505060405180910390a35b505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000806000806000883373ffffffffffffffffffffffffffffffffffffffff1660096000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561359e5750600060096000836000191660001916815260200190815260200160002060010154115b1515613612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4a6f6220697320696e76616c69642e000000000000000000000000000000000081525060200191505060405180910390fd5b875189511415156136b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f556e657175616c206e756d626572206f66206661726d65727320616e6420726581526020017f77617264732e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600094505b87518560ff1610156136ee57878560ff168151811015156136d357fe5b906020019060200201518601955084806001019550506136b6565b600960008b60001916600019168152602001908152602001600020600101548611151515613784576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e74206275646765742e00000000000000000000000081525060200191505060405180910390fd5b600093505b88518460ff161015613c8057600854600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4f0e1ae8b8760ff168151811015156137e757fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561386f57600080fd5b505af1158015613883573d6000803e3d6000fd5b505050506040513d602081101561389957600080fd5b81019080805190602001909291905050501015806139985750600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156139465780518252602082019150602081019050602083039250613921565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b15613bf557878460ff168151811015156139ae57fe5b90602001906020020151600960008c6000191660001916815260200190815260200160002060010154101515156139e157fe5b888460ff168151811015156139f257fe5b90602001906020020151604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613a8b5780518252602082019150602081019050602083039250613a66565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250878460ff16815181101515613acb57fe5b90602001906020020151600a6000856000191660001916815260200190815260200160002060008282540192505081905550878460ff16815181101515613b0e57fe5b90602001906020020151600960008c60001916600019168152602001908152602001600020600101600082825403925050819055508960001916898560ff16815181101515613b5957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167fe0b17d0a6a4b5e07ef48a007b70f93ff1fc3862becc524e286a3ddc3ac7965f68a8760ff16815181101515613bab57fe5b90602001906020020151600960008f6000191660001916815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a3613c73565b7f51267e37212898aeeb15abec9b3516d1f714b4e2dcf6fa1ab92d1adac0b7a8b3898560ff16815181101515613c2757fe5b90602001906020020151604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b8380600101945050613789565b8615613dc357600960008b600019166000191681526020019081526020016000206001015491506000821115613dc25781600a600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613d455780518252602082019150602081019050602083039250613d20565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020600082825401925050819055506000600960008c6000191660001916815260200190815260200160002060010181905550613dc1610d10565b5b5b50505050505050505050565b6000336001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e665780518252602082019150602081019050602083039250613e41565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515613f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613fbb5780518252602082019150602081019050602083039250613f96565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1dc90b1ce875ea53ce4f7fb2036478f4ddfef57ec243f3fb5a9d81faf7dac5f460405160405180910390a35050565b6060808284018551101515156140b257600080fd5b8215600081146140cd5760405191506020820160405261411e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561410b57805183526020830192506020810190506140ee565b50868552601f19601f8301166040525050505b50809150509392505050565b6000806001905083518351811460018114614148576000925061418d565b600160208701838101602088015b60028483851001141561418857805183511415156141775760009650600093505b602083019250602081019050614156565b505050505b50508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106141da57805160ff1916838001178555614208565b82800160010185558215614208579182015b828111156142075782518255916020019190600101906141ec565b5b5090506142159190614219565b5090565b61423b91905b8082111561423757600081600090555060010161421f565b5090565b905600a165627a7a7230582038e5c204b8d6481a1bcf23bbdd983ce1bd9546f60a0c5fa94911e2c293cc27290029", + "bytecode": "0x60806040526040805190810160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250600290805190602001906200005192919062000066565b503480156200005f57600080fd5b5062000115565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000a957805160ff1916838001178555620000da565b82800160010185558215620000da579182015b82811115620000d9578251825591602001919060010190620000bc565b5b509050620000e99190620000ed565b5090565b6200011291905b808211156200010e576000816000905550600101620000f4565b5090565b90565b61426a80620001256000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631e0a1b951461017a5780632a6363be146101f257806331ddd9ab146102215780633e5ceede146102d457806346f60dee146102eb57806347269720146103425780634ddf47d4146103755780634e1d009f146103de578063546887a3146104215780635ee6fa611461046657806360011473146104ab57806366570f17146104d65780638a67f4bf146105595780638e5aafe1146105b057806391b7f5ed146105c757806399d20bb1146105f4578063a0d585011461063d578063bb66f9f61461066c578063bc302cd01461071f578063ce40b03f14610854578063d56805e11461087f578063dd1bb1fc146108d6578063e766307914610966578063f0e5bd86146109bd578063f4e493d614610a55578063f51b697914610a9e578063f5bd3e3f14610ad9578063fa4bbcc614610b22578063fc1c34e414610be5575b600080fd5b34801561018657600080fd5b506101a96004803603810190808035600019169060200190929190505050610bfc565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b3480156101fe57600080fd5b50610207610c40565b604051808215151515815260200191505060405180910390f35b34801561022d57600080fd5b50610259600480360381019080803560ff16906020019092919080359060200190929190505050610c53565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029957808201518184015260208101905061027e565b50505050905090810190601f1680156102c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e057600080fd5b506102e9610d10565b005b3480156102f757600080fd5b506103006112c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034e57600080fd5b506103576112e6565b60405180826000191660001916815260200191505060405180910390f35b34801561038157600080fd5b506103dc600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506112ec565b005b3480156103ea57600080fd5b5061041f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e1565b005b34801561042d57600080fd5b5061045060048036038101908080356000191690602001909291905050506117d0565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b5061049560048036038101908080356000191690602001909291905050506117f8565b6040518082815260200191505060405180910390f35b3480156104b757600080fd5b506104c0611810565b6040518082815260200191505060405180910390f35b3480156104e257600080fd5b50610557600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050611816565b005b34801561056557600080fd5b5061059a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b33565b6040518082815260200191505060405180910390f35b3480156105bc57600080fd5b506105c5611c14565b005b3480156105d357600080fd5b506105f260048036038101908080359060200190929190505050611f06565b005b34801561060057600080fd5b50610623600480360381019080803560001916906020019092919050505061200f565b604051808215151515815260200191505060405180910390f35b34801561064957600080fd5b5061065261202f565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b506106a4600480360381019080803560ff16906020019092919080359060200190929190505050612145565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e45780820151818401526020810190506106c9565b50505050905090810190601f1680156107115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072b57600080fd5b506108526004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612241565b005b34801561086057600080fd5b506108696125b7565b6040518082815260200191505060405180910390f35b34801561088b57600080fd5b506108946125bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108e257600080fd5b506108eb6125e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561092b578082015181840152602081019050610910565b50505050905090810190601f1680156109585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561097257600080fd5b5061097b612681565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109c957600080fd5b50610a3b600480360381019080803560ff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506126a6565b604051808215151515815260200191505060405180910390f35b348015610a6157600080fd5b50610a9c6004803603810190808035600019169060200190929190803560001916906020019092919080359060200190929190505050612786565b005b348015610aaa57600080fd5b50610ad7600480360381019080803560001916906020019092919080359060200190929190505050612d93565b005b348015610ae557600080fd5b50610b0860048036038101908080356000191690602001909291905050506134de565b604051808215151515815260200191505060405180910390f35b348015610b2e57600080fd5b50610be3600480360381019080803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291905050506134fe565b005b348015610bf157600080fd5b50610bfa613dcf565b005b60096020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600660009054906101000a900460ff1681565b600c602052816000526040600020602052806000526040600020600091509150508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d085780601f10610cdd57610100808354040283529160200191610d08565b820191906000526020600020905b815481529060010190602001808311610ceb57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e665750600854600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4f0e1ae336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050506040513d6020811015610e5257600080fd5b810190808051906020019092919050505010155b80610f525750600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610f005780518252602082019150602081019050602083039250610edb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b156112595733604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610fe75780518252602082019150602081019050602083039250610fc2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506000600a60008360001916600019168152602001908152602001600020541115156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f2062616c616e636520746f2072656465656d2e000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600a60008560001916600019168152602001908152602001600020546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561118957600080fd5b505af115801561119d573d6000803e3d6000fd5b505050506040513d60208110156111b357600080fd5b810190808051906020019092919050505015611254573373ffffffffffffffffffffffffffffffffffffffff167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369600a60008460001916600019168152602001908152602001600020546040518082815260200191505060405180910390a26000600a60008360001916600019168152602001908152602001600020819055505b6112bd565b7f51267e37212898aeeb15abec9b3516d1f714b4e2dcf6fa1ab92d1adac0b7a8b333604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600080600080600060208601945084519350604086019450845192506060860194508451915060808601945084519050836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581600019169055506001600660006101000a81548160ff0219169083151502179055506000600781905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561149257600080fd5b505af11580156114a6573d6000803e3d6000fd5b505050506040513d60208110156114bc57600080fd5b8101908080519060200190929190505050600a0a606402600881905550505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153e57600080fd5b816001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156115d357805182526020820191506020810190506020830392506115ae565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611698576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156117685780518252602082019150602081019050602083039250611743565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600960008360001916600019168152602001908152602001600020600101549050919050565b600a6020528060005260406000206000915090505481565b60085481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff161515611962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f41465320697320756e6c69737465642e0000000000000000000000000000000081525060200191505060405180910390fd5b888890508b8b905011611978578888905061197d565b8a8a90505b9250600091505b82821015611afa5760018b8b90500382111515611a3c576119ec602860ff168302602860ff1689898080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061409d9092919063ffffffff16565b600c60008060ff16815260200190815260200160002060008d8d868181101515611a1257fe5b9050602002013581526020019081526020016000209080519060200190611a3a929190614199565b505b6001898990500382111515611aed57611a9c604060ff168302604060ff1687878080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061409d9092919063ffffffff16565b600c6000600160ff16815260200190815260200160002060008b8b868181101515611ac357fe5b9050602002013581526020019081526020016000209080519060200190611aeb929190614199565b505b8180600101925050611984565b7fac49d08a7236cfde58884d3b28866f01655ebe0c2b682c6c0bbc758fe175ac4e60405160405180910390a15050505050505050505050565b6000600a600083604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611bc95780518252602082019150602081019050602083039250611ba4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020549050919050565b60006001600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611caa5780518252602082019150602081019050602083039250611c85565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151515611d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4f776e657273686970207265717565737420616c72656164792061637469766581526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611e265780518252602082019150602081019050602083039250611e01565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506001806000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd5b906f2d3dfa8cf0ea788d4ad6e99ebd482d6134c3405e1a5faa5da891cda8560405160405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b816007819055507f6bfd5e75539a9d2626425a2e2922675256b219fe546d63dad56011759b9a2f666007546040518082815260200191505060405180910390a15050565b60016020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f8a4c2109f8e0afa7f5db822b373f91a521ebca62d47047365db81c3e65eae02860405160405180910390a1600191505090565b6060600660009054906101000a900460ff161515612175576020604051908101604052806000815250905061223b565b600c60008460ff1660ff16815260200190815260200160002060008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122335780601f1061220857610100808354040283529160200191612233565b820191906000526020600020905b81548152906001019060200180831161221657829003601f168201915b505050505090505b92915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff16151561238d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f41465320697320756e6c69737465642e0000000000000000000000000000000081525060200191505060405180910390fd5b855187511161239d5785516123a0565b86515b92506123b9600060208761409d9092919063ffffffff16565b600c60008060ff168152602001908152602001600020600080815260200190815260200160002090805190602001906123f3929190614199565b5061240b600060208661409d9092919063ffffffff16565b600c6000600160ff16815260200190815260200160002060008081526020019081526020016000209080519060200190612446929190614199565b50600191505b82821015612582576001875103821115156124e457612491878381518110151561247257fe5b90602001906020020151602860ff168761409d9092919063ffffffff16565b600c60008060ff168152602001908152602001600020600089858151811015156124b757fe5b90602001906020020151815260200190815260200160002090805190602001906124e2929190614199565b505b60018651038211151561257557612521868381518110151561250257fe5b90602001906020020151604060ff168661409d9092919063ffffffff16565b600c6000600160ff1681526020019081526020016000206000888581518110151561254857fe5b9060200190602002015181526020019081526020016000209080519060200190612573929190614199565b505b818060010192505061244c565b7fac49d08a7236cfde58884d3b28866f01655ebe0c2b682c6c0bbc758fe175ac4e60405160405180910390a150505050505050565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126795780601f1061264e57610100808354040283529160200191612679565b820191906000526020600020905b81548152906001019060200180831161265c57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061277d82600c60008760ff1660ff16815260200190815260200160002060008681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561276a5780601f1061273f5761010080835404028352916020019161276a565b820191906000526020600020905b81548152906001019060200180831161274d57829003601f168201915b505050505061412a90919063ffffffff16565b90509392505050565b600080600660009054906101000a900460ff161515612833576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f436f6e74656e74206973206e6f74206c697374656420666f722070757263686181526020017f73652e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561292457600080fd5b505af1158015612938573d6000803e3d6000fd5b505050506040513d602081101561294e57600080fd5b8101908080519060200190929190505050915033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156129f157805182526020820191506020810190506020830392506129cc565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050600b6000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015612a5a575082600754018210155b1515612ace576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f556e61626c6520746f2070757263686173652e0000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612bea57600080fd5b505af1158015612bfe573d6000803e3d6000fd5b505050506040513d6020811015612c1457600080fd5b810190808051906020019092919050505015612d8c576001600b6000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c2bb965866005546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050505084600019167fcddf9a7164ac111c2b0f5648b8600c8f3e4060c7cc663f8218c748d7357c7ea56007546040518082815260200191505060405180910390a2600060010260001916846000191614158015612d7b5750600083115b15612d8b57612d8a8484612d93565b5b5b5050505050565b6000600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515612e295780518252602082019150602081019050602083039250612e04565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6e74656e7420776173206e65766572207075726368617365642e0000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612fdf57600080fd5b505af1158015612ff3573d6000803e3d6000fd5b505050506040513d602081101561300957600080fd5b810190808051906020019092919050505090506000600102600019168360001916141580156130385750600082115b80156130445750818110155b801561312e5750600073ffffffffffffffffffffffffffffffffffffffff1660096000856000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061312d57503373ffffffffffffffffffffffffffffffffffffffff1660096000856000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b15156131a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4a6f62207375626d697373696f6e20696e76616c69642e00000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561329b57600080fd5b505af11580156132af573d6000803e3d6000fd5b505050506040513d60208110156132c557600080fd5b8101908080519060200190929190505050156134d95781600960008560001916600019168152602001908152602001600020600101600082825401925050819055503360096000856000191660001916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050506040513d602081101561344b57600080fd5b8101908080519060200190929190505050600960008560001916600019168152602001908152602001600020600101541115151561348557fe5b82600019163373ffffffffffffffffffffffffffffffffffffffff167ffe90998f27be7536b0ddee58cbabc035ceaf141636bf7ca4216f4aae6a50ca6f846040518082815260200191505060405180910390a35b505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000806000806000883373ffffffffffffffffffffffffffffffffffffffff1660096000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561359e5750600060096000836000191660001916815260200190815260200160002060010154115b1515613612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4a6f6220697320696e76616c69642e000000000000000000000000000000000081525060200191505060405180910390fd5b875189511415156136b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f556e657175616c206e756d626572206f66206661726d65727320616e6420726581526020017f77617264732e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600094505b87518560ff1610156136ee57878560ff168151811015156136d357fe5b906020019060200201518601955084806001019550506136b6565b600960008b60001916600019168152602001908152602001600020600101548611151515613784576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e74206275646765742e00000000000000000000000081525060200191505060405180910390fd5b600093505b88518460ff161015613c8057600854600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4f0e1ae8b8760ff168151811015156137e757fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561386f57600080fd5b505af1158015613883573d6000803e3d6000fd5b505050506040513d602081101561389957600080fd5b81019080805190602001909291905050501015806139985750600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156139465780518252602082019150602081019050602083039250613921565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b15613bf557878460ff168151811015156139ae57fe5b90602001906020020151600960008c6000191660001916815260200190815260200160002060010154101515156139e157fe5b888460ff168151811015156139f257fe5b90602001906020020151604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613a8b5780518252602082019150602081019050602083039250613a66565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250878460ff16815181101515613acb57fe5b90602001906020020151600a6000856000191660001916815260200190815260200160002060008282540192505081905550878460ff16815181101515613b0e57fe5b90602001906020020151600960008c60001916600019168152602001908152602001600020600101600082825403925050819055508960001916898560ff16815181101515613b5957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167fe0b17d0a6a4b5e07ef48a007b70f93ff1fc3862becc524e286a3ddc3ac7965f68a8760ff16815181101515613bab57fe5b90602001906020020151600960008f6000191660001916815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a3613c73565b7f51267e37212898aeeb15abec9b3516d1f714b4e2dcf6fa1ab92d1adac0b7a8b3898560ff16815181101515613c2757fe5b90602001906020020151604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b8380600101945050613789565b8615613dc357600960008b600019166000191681526020019081526020016000206001015491506000821115613dc25781600a600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613d455780518252602082019150602081019050602083039250613d20565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020600082825401925050819055506000600960008c6000191660001916815260200190815260200160002060010181905550613dc1610d10565b5b5b50505050505050505050565b6000336001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e665780518252602082019150602081019050602083039250613e41565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515613f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613fbb5780518252602082019150602081019050602083039250613f96565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1dc90b1ce875ea53ce4f7fb2036478f4ddfef57ec243f3fb5a9d81faf7dac5f460405160405180910390a35050565b6060808284018551101515156140b257600080fd5b8215600081146140cd5760405191506020820160405261411e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561410b57805183526020830192506020810190506140ee565b50868552601f19601f8301166040525050505b50809150509392505050565b6000806001905083518351811460018114614148576000925061418d565b600160208701838101602088015b60028483851001141561418857805183511415156141775760009650600093505b602083019250602081019050614156565b505050505b50508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106141da57805160ff1916838001178555614208565b82800160010185558215614208579182015b828111156142075782518255916020019190600101906141ec565b5b5090506142159190614219565b5090565b61423b91905b8082111561423757600081600090555060010161421f565b5090565b905600a165627a7a72305820f6da571f0df6c448ca6c1802681c83a5031cacf817c34de10085890879be3c5e0029", + "deployedBytecode": "0x608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631e0a1b951461017a5780632a6363be146101f257806331ddd9ab146102215780633e5ceede146102d457806346f60dee146102eb57806347269720146103425780634ddf47d4146103755780634e1d009f146103de578063546887a3146104215780635ee6fa611461046657806360011473146104ab57806366570f17146104d65780638a67f4bf146105595780638e5aafe1146105b057806391b7f5ed146105c757806399d20bb1146105f4578063a0d585011461063d578063bb66f9f61461066c578063bc302cd01461071f578063ce40b03f14610854578063d56805e11461087f578063dd1bb1fc146108d6578063e766307914610966578063f0e5bd86146109bd578063f4e493d614610a55578063f51b697914610a9e578063f5bd3e3f14610ad9578063fa4bbcc614610b22578063fc1c34e414610be5575b600080fd5b34801561018657600080fd5b506101a96004803603810190808035600019169060200190929190505050610bfc565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b3480156101fe57600080fd5b50610207610c40565b604051808215151515815260200191505060405180910390f35b34801561022d57600080fd5b50610259600480360381019080803560ff16906020019092919080359060200190929190505050610c53565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029957808201518184015260208101905061027e565b50505050905090810190601f1680156102c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e057600080fd5b506102e9610d10565b005b3480156102f757600080fd5b506103006112c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034e57600080fd5b506103576112e6565b60405180826000191660001916815260200191505060405180910390f35b34801561038157600080fd5b506103dc600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506112ec565b005b3480156103ea57600080fd5b5061041f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e1565b005b34801561042d57600080fd5b5061045060048036038101908080356000191690602001909291905050506117d0565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b5061049560048036038101908080356000191690602001909291905050506117f8565b6040518082815260200191505060405180910390f35b3480156104b757600080fd5b506104c0611810565b6040518082815260200191505060405180910390f35b3480156104e257600080fd5b50610557600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050611816565b005b34801561056557600080fd5b5061059a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b33565b6040518082815260200191505060405180910390f35b3480156105bc57600080fd5b506105c5611c14565b005b3480156105d357600080fd5b506105f260048036038101908080359060200190929190505050611f06565b005b34801561060057600080fd5b50610623600480360381019080803560001916906020019092919050505061200f565b604051808215151515815260200191505060405180910390f35b34801561064957600080fd5b5061065261202f565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b506106a4600480360381019080803560ff16906020019092919080359060200190929190505050612145565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e45780820151818401526020810190506106c9565b50505050905090810190601f1680156107115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072b57600080fd5b506108526004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612241565b005b34801561086057600080fd5b506108696125b7565b6040518082815260200191505060405180910390f35b34801561088b57600080fd5b506108946125bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108e257600080fd5b506108eb6125e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561092b578082015181840152602081019050610910565b50505050905090810190601f1680156109585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561097257600080fd5b5061097b612681565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109c957600080fd5b50610a3b600480360381019080803560ff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506126a6565b604051808215151515815260200191505060405180910390f35b348015610a6157600080fd5b50610a9c6004803603810190808035600019169060200190929190803560001916906020019092919080359060200190929190505050612786565b005b348015610aaa57600080fd5b50610ad7600480360381019080803560001916906020019092919080359060200190929190505050612d93565b005b348015610ae557600080fd5b50610b0860048036038101908080356000191690602001909291905050506134de565b604051808215151515815260200191505060405180910390f35b348015610b2e57600080fd5b50610be3600480360381019080803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291905050506134fe565b005b348015610bf157600080fd5b50610bfa613dcf565b005b60096020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600660009054906101000a900460ff1681565b600c602052816000526040600020602052806000526040600020600091509150508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d085780601f10610cdd57610100808354040283529160200191610d08565b820191906000526020600020905b815481529060010190602001808311610ceb57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e665750600854600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4f0e1ae336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050506040513d6020811015610e5257600080fd5b810190808051906020019092919050505010155b80610f525750600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610f005780518252602082019150602081019050602083039250610edb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b156112595733604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610fe75780518252602082019150602081019050602083039250610fc2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506000600a60008360001916600019168152602001908152602001600020541115156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f2062616c616e636520746f2072656465656d2e000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600a60008560001916600019168152602001908152602001600020546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561118957600080fd5b505af115801561119d573d6000803e3d6000fd5b505050506040513d60208110156111b357600080fd5b810190808051906020019092919050505015611254573373ffffffffffffffffffffffffffffffffffffffff167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369600a60008460001916600019168152602001908152602001600020546040518082815260200191505060405180910390a26000600a60008360001916600019168152602001908152602001600020819055505b6112bd565b7f51267e37212898aeeb15abec9b3516d1f714b4e2dcf6fa1ab92d1adac0b7a8b333604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600080600080600060208601945084519350604086019450845192506060860194508451915060808601945084519050836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581600019169055506001600660006101000a81548160ff0219169083151502179055506000600781905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561149257600080fd5b505af11580156114a6573d6000803e3d6000fd5b505050506040513d60208110156114bc57600080fd5b8101908080519060200190929190505050600a0a606402600881905550505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153e57600080fd5b816001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156115d357805182526020820191506020810190506020830392506115ae565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611698576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156117685780518252602082019150602081019050602083039250611743565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600960008360001916600019168152602001908152602001600020600101549050919050565b600a6020528060005260406000206000915090505481565b60085481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff161515611962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f41465320697320756e6c69737465642e0000000000000000000000000000000081525060200191505060405180910390fd5b888890508b8b905011611978578888905061197d565b8a8a90505b9250600091505b82821015611afa5760018b8b90500382111515611a3c576119ec602860ff168302602860ff1689898080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061409d9092919063ffffffff16565b600c60008060ff16815260200190815260200160002060008d8d868181101515611a1257fe5b9050602002013581526020019081526020016000209080519060200190611a3a929190614199565b505b6001898990500382111515611aed57611a9c604060ff168302604060ff1687878080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061409d9092919063ffffffff16565b600c6000600160ff16815260200190815260200160002060008b8b868181101515611ac357fe5b9050602002013581526020019081526020016000209080519060200190611aeb929190614199565b505b8180600101925050611984565b7fac49d08a7236cfde58884d3b28866f01655ebe0c2b682c6c0bbc758fe175ac4e60405160405180910390a15050505050505050505050565b6000600a600083604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611bc95780518252602082019150602081019050602083039250611ba4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020549050919050565b60006001600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611caa5780518252602082019150602081019050602083039250611c85565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151515611d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4f776e657273686970207265717565737420616c72656164792061637469766581526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611e265780518252602082019150602081019050602083039250611e01565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506001806000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd5b906f2d3dfa8cf0ea788d4ad6e99ebd482d6134c3405e1a5faa5da891cda8560405160405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b816007819055507f6bfd5e75539a9d2626425a2e2922675256b219fe546d63dad56011759b9a2f666007546040518082815260200191505060405180910390a15050565b60016020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f8a4c2109f8e0afa7f5db822b373f91a521ebca62d47047365db81c3e65eae02860405160405180910390a1600191505090565b6060600660009054906101000a900460ff161515612175576020604051908101604052806000815250905061223b565b600c60008460ff1660ff16815260200190815260200160002060008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122335780601f1061220857610100808354040283529160200191612233565b820191906000526020600020905b81548152906001019060200180831161221657829003601f168201915b505050505090505b92915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff16151561238d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f41465320697320756e6c69737465642e0000000000000000000000000000000081525060200191505060405180910390fd5b855187511161239d5785516123a0565b86515b92506123b9600060208761409d9092919063ffffffff16565b600c60008060ff168152602001908152602001600020600080815260200190815260200160002090805190602001906123f3929190614199565b5061240b600060208661409d9092919063ffffffff16565b600c6000600160ff16815260200190815260200160002060008081526020019081526020016000209080519060200190612446929190614199565b50600191505b82821015612582576001875103821115156124e457612491878381518110151561247257fe5b90602001906020020151602860ff168761409d9092919063ffffffff16565b600c60008060ff168152602001908152602001600020600089858151811015156124b757fe5b90602001906020020151815260200190815260200160002090805190602001906124e2929190614199565b505b60018651038211151561257557612521868381518110151561250257fe5b90602001906020020151604060ff168661409d9092919063ffffffff16565b600c6000600160ff1681526020019081526020016000206000888581518110151561254857fe5b9060200190602002015181526020019081526020016000209080519060200190612573929190614199565b505b818060010192505061244c565b7fac49d08a7236cfde58884d3b28866f01655ebe0c2b682c6c0bbc758fe175ac4e60405160405180910390a150505050505050565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126795780601f1061264e57610100808354040283529160200191612679565b820191906000526020600020905b81548152906001019060200180831161265c57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061277d82600c60008760ff1660ff16815260200190815260200160002060008681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561276a5780601f1061273f5761010080835404028352916020019161276a565b820191906000526020600020905b81548152906001019060200180831161274d57829003601f168201915b505050505061412a90919063ffffffff16565b90509392505050565b600080600660009054906101000a900460ff161515612833576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f436f6e74656e74206973206e6f74206c697374656420666f722070757263686181526020017f73652e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561292457600080fd5b505af1158015612938573d6000803e3d6000fd5b505050506040513d602081101561294e57600080fd5b8101908080519060200190929190505050915033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156129f157805182526020820191506020810190506020830392506129cc565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050600b6000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015612a5a575082600754018210155b1515612ace576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f556e61626c6520746f2070757263686173652e0000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612bea57600080fd5b505af1158015612bfe573d6000803e3d6000fd5b505050506040513d6020811015612c1457600080fd5b810190808051906020019092919050505015612d8c576001600b6000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c2bb965866005546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050505084600019167fcddf9a7164ac111c2b0f5648b8600c8f3e4060c7cc663f8218c748d7357c7ea56007546040518082815260200191505060405180910390a2600060010260001916846000191614158015612d7b5750600083115b15612d8b57612d8a8484612d93565b5b5b5050505050565b6000600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515612e295780518252602082019150602081019050602083039250612e04565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6e74656e7420776173206e65766572207075726368617365642e0000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612fdf57600080fd5b505af1158015612ff3573d6000803e3d6000fd5b505050506040513d602081101561300957600080fd5b810190808051906020019092919050505090506000600102600019168360001916141580156130385750600082115b80156130445750818110155b801561312e5750600073ffffffffffffffffffffffffffffffffffffffff1660096000856000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061312d57503373ffffffffffffffffffffffffffffffffffffffff1660096000856000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b15156131a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4a6f62207375626d697373696f6e20696e76616c69642e00000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561329b57600080fd5b505af11580156132af573d6000803e3d6000fd5b505050506040513d60208110156132c557600080fd5b8101908080519060200190929190505050156134d95781600960008560001916600019168152602001908152602001600020600101600082825401925050819055503360096000856000191660001916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050506040513d602081101561344b57600080fd5b8101908080519060200190929190505050600960008560001916600019168152602001908152602001600020600101541115151561348557fe5b82600019163373ffffffffffffffffffffffffffffffffffffffff167ffe90998f27be7536b0ddee58cbabc035ceaf141636bf7ca4216f4aae6a50ca6f846040518082815260200191505060405180910390a35b505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000806000806000883373ffffffffffffffffffffffffffffffffffffffff1660096000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561359e5750600060096000836000191660001916815260200190815260200160002060010154115b1515613612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4a6f6220697320696e76616c69642e000000000000000000000000000000000081525060200191505060405180910390fd5b875189511415156136b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f556e657175616c206e756d626572206f66206661726d65727320616e6420726581526020017f77617264732e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600094505b87518560ff1610156136ee57878560ff168151811015156136d357fe5b906020019060200201518601955084806001019550506136b6565b600960008b60001916600019168152602001908152602001600020600101548611151515613784576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e74206275646765742e00000000000000000000000081525060200191505060405180910390fd5b600093505b88518460ff161015613c8057600854600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4f0e1ae8b8760ff168151811015156137e757fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561386f57600080fd5b505af1158015613883573d6000803e3d6000fd5b505050506040513d602081101561389957600080fd5b81019080805190602001909291905050501015806139985750600b600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156139465780518252602082019150602081019050602083039250613921565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b15613bf557878460ff168151811015156139ae57fe5b90602001906020020151600960008c6000191660001916815260200190815260200160002060010154101515156139e157fe5b888460ff168151811015156139f257fe5b90602001906020020151604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613a8b5780518252602082019150602081019050602083039250613a66565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250878460ff16815181101515613acb57fe5b90602001906020020151600a6000856000191660001916815260200190815260200160002060008282540192505081905550878460ff16815181101515613b0e57fe5b90602001906020020151600960008c60001916600019168152602001908152602001600020600101600082825403925050819055508960001916898560ff16815181101515613b5957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167fe0b17d0a6a4b5e07ef48a007b70f93ff1fc3862becc524e286a3ddc3ac7965f68a8760ff16815181101515613bab57fe5b90602001906020020151600960008f6000191660001916815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a3613c73565b7f51267e37212898aeeb15abec9b3516d1f714b4e2dcf6fa1ab92d1adac0b7a8b3898560ff16815181101515613c2757fe5b90602001906020020151604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b8380600101945050613789565b8615613dc357600960008b600019166000191681526020019081526020016000206001015491506000821115613dc25781600a600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613d455780518252602082019150602081019050602083039250613d20565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020600082825401925050819055506000600960008c6000191660001916815260200190815260200160002060010181905550613dc1610d10565b5b5b50505050505050505050565b6000336001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e665780518252602082019150602081019050602083039250613e41565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515613f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613fbb5780518252602082019150602081019050602083039250613f96565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1dc90b1ce875ea53ce4f7fb2036478f4ddfef57ec243f3fb5a9d81faf7dac5f460405160405180910390a35050565b6060808284018551101515156140b257600080fd5b8215600081146140cd5760405191506020820160405261411e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561410b57805183526020830192506020810190506140ee565b50868552601f19601f8301166040525050505b50809150509392505050565b6000806001905083518351811460018114614148576000925061418d565b600160208701838101602088015b60028483851001141561418857805183511415156141775760009650600093505b602083019250602081019050614156565b505050505b50508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106141da57805160ff1916838001178555614208565b82800160010185558215614208579182015b828111156142075782518255916020019190600101906141ec565b5b5090506142159190614219565b5090565b61423b91905b8082111561423757600081600090555060010161421f565b5090565b905600a165627a7a72305820f6da571f0df6c448ca6c1802681c83a5031cacf817c34de10085890879be3c5e0029", "sourceMap": "129:8147:0:-;;;187:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;129:8147;8:9:-1;5:2;;;30:1;27;20:12;5:2;129:8147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "129:8147:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;391:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;391:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;297:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;630:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;630:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;630:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4391:560;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4391:560:0;;;;;;248:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;248:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;273;;8:9:-1;5:2;;;30:1;27;20:12;5:2;273:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1750:694;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1750:694:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:232:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:232:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;5097:103:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5097:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;470:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;351:35:0;;;;;;;;;;;;;;;;;;;;;;;6284:706;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6284:706:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4955:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4955:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:212:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:212:4;;;;;;2448:111:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2448:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;337:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;337:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8147:127:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8147:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7803:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7803:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7803:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6994:805;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6994:805:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;324:22:0;;;;;;;;;;;;;;;;;;;;;;;222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;222:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;187:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;187:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;187:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48:21:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48:21:4;;;;;;;;;;;;;;;;;;;;;;;;;;;7987:156:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7987:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5606:674;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5606:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:620;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2563:620:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;541:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3187:1200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3187:1200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1036:225:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1036:225:4;;;;;;391:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;297:23::-;;;;;;;;;;;;;:::o;630:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4391:560::-;4580:21;4447:6;;;;;;;;;;;4433:20;;:10;:20;;;:81;;;;4495:19;;4457:6;;;;;;;;;;;:22;;;4480:10;4457:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4457:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4457:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4457:34:0;;;;;;;;;;;;;;;;:57;;4433:81;:137;;;;4518:11;:52;4557:10;4540:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4540:28:0;;;4530:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;4530:39:0;;;;;;;;;;;;;;;;4518:52;;;;;;;;;;;;;;;;;;;;;;;;;;;4433:137;4429:518;;;4631:10;4614:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4614:28:0;;;4604:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;4604:39:0;;;;;;;;;;;;;;;;4580:63;;4685:1;4659:8;:23;4668:13;4659:23;;;;;;;;;;;;;;;;;;:27;4651:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4724:6;;;;;;;;;;;:15;;;4740:10;4752:8;:23;4761:13;4752:23;;;;;;;;;;;;;;;;;;4724:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4724:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4724:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4724:52:0;;;;;;;;;;;;;;;;4720:164;;;4802:10;4793:45;;;4814:8;:23;4823:13;4814:23;;;;;;;;;;;;;;;;;;4793:45;;;;;;;;;;;;;;;;;;4874:1;4848:8;:23;4857:13;4848:23;;;;;;;;;;;;;;;;;:27;;;;4720:164;4429:518;;;4909:31;4929:10;4909:31;;;;;;;;;;;;;;;;;;;;;;4429:518;4391:560;:::o;248:20::-;;;;;;;;;;;;;:::o;273:::-;;;;:::o;1750:694::-;1790:14;1810:17;1833;1856:15;1877:11;1995:2;1988:5;1984:14;1974:24;;2024:6;2018:13;2005:26;;2059:2;2052:5;2048:14;2038:24;;2088:6;2082:13;2069:26;;2123:2;2116:5;2112:14;2102:24;;2150:6;2144:13;2133:24;;2185:3;2178:5;2174:15;2164:25;;2209:6;2203:13;2196:20;;2239:9;2227:6;;:21;;;;;;;;;;;;;;;;;;2275:9;2254:6;;:31;;;;;;;;;;;;;;;;;;2311:7;2291:4;;:28;;;;;;;;;;;;;;;;;;2337:3;2325:4;:15;;;;;;;2358:4;2346:7;;:16;;;;;;;;;;;;;;;;;;2380:1;2368:6;:13;;;;2422:6;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2422:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2422:17:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2422:17:0;;;;;;;;;;;;;;;;2416:2;:23;2410:3;:29;2387:19;:52;;;;1750:694;;;;;;:::o;1265:232:4:-;1389:21;477:6;;;;;;;;;;;463:20;;:10;:20;;;455:29;;;;;;;;1348:9;709:11;:51;748:9;731:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;731:27:4;;;721:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;721:38:4;;;;;;;;;;;;;;;;709:51;;;;;;;;;;;;;;;;;;;;;;;;;;;701:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1374:9;1365:6;;:18;;;;;;;;;;;;;;;;;;1440:10;1423:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1423:28:4;;;1413:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1413:39:4;;;;;;;;;;;;;;;;1389:63;;1487:5;1458:11;:26;1470:13;1458:26;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;490:1;1265:232;;:::o;5097:103:0:-;5153:7;5175:5;:13;5181:6;5175:13;;;;;;;;;;;;;;;;;:20;;;5168:27;;5097:103;;;:::o;470:43::-;;;;;;;;;;;;;;;;;:::o;351:35::-;;;;:::o;6284:706::-;6465:23;6594:6;6399;;;;;;;;;;;1352:8;1338:22;;:10;:22;;;1323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6426:7;;;;;;;;;;;6418:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6511:10;;:17;;6491:10;;:17;;:37;:91;;6565:10;;:17;;6491:91;;;6538:10;;:17;;6491:91;6465:117;;6603:1;6594:10;;6589:377;6610:15;6606:1;:19;6589:377;;;6692:1;6672:10;;:17;;:21;6667:1;:26;;6663:130;;;6735:49;1237:2;6751:17;;:1;:17;1237:2;6735:49;;:9;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;:::i;:::-;6705:9;:12;6715:1;6705:12;;;;;;;;;;;;;:27;6718:10;;6729:1;6718:13;;;;;;;;;;;;;;;6705:27;;;;;;;;;;;:79;;;;;;;;;;;;:::i;:::-;;6663:130;6859:1;6839:10;;:17;;:21;6834:1;:26;;6830:130;;;6902:49;1274:2;6918:17;;:1;:17;1274:2;6902:49;;:9;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;:::i;:::-;6872:9;:12;6882:1;6872:12;;;;;;;;;;;;;:27;6885:10;;6896:1;6885:13;;;;;;;;;;;;;;;6872:27;;;;;;;;;;;:79;;;;;;;;;;;;:::i;:::-;;6830:130;6627:3;;;;;;;6589:377;;;6977:8;;;;;;;;;;6284:706;;;;;;;;;;;:::o;4955:138::-;5020:7;5042:8;:46;5078:7;5061:25;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5061:25:0;;;5051:36;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;5051:36:0;;;;;;;;;;;;;;;;5042:46;;;;;;;;;;;;;;;;;;5035:53;;4955:138;;;:::o;820:212:4:-;877:21;542:11;:52;581:10;564:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;564:28:4;;;554:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;554:39:4;;;;;;;;;;;;;;;;542:52;;;;;;;;;;;;;;;;;;;;;;;;;;;541:53;533:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;928:10;911:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;911:28:4;;;901:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;901:39:4;;;;;;;;;;;;;;;;877:63;;975:4;946:11;:26;958:13;946:26;;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1016:10;990:37;;1008:6;;;;;;;;;;;990:37;;;;;;;;;;;;820:212;:::o;2448:111:0:-;2498:6;;;;;;;;;;;1352:8;1338:22;;:10;:22;;;1323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2521:6;2512;:15;;;;2538:16;2547:6;;2538:16;;;;;;;;;;;;;;;;;;2448:111;;:::o;337:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;8147:127:0:-;8196:12;8179:6;;;;;;;;;;;1352:8;1338:22;;:10;:22;;;1323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8226:5;8216:7;;:15;;;;;;;;;;;;;;;;;;8242:10;;;;;;;;;;8265:4;8258:11;;8147:127;;:::o;7803:180::-;7868:12;7893:7;;;;;;;;;;;7892:8;7888:53;;;7910:9;;;;;;;;;;;;;;;;;7888:53;7953:9;:16;7963:5;7953:16;;;;;;;;;;;;;;;:25;7970:7;7953:25;;;;;;;;;;;7946:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7803:180;;;;;:::o;6994:805::-;7164:23;7405:6;7106;;;;;;;;;;;1352:8;1338:22;;:10;:22;;;1323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7129:7;;;;;;;;;;;7121:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7210:10;:17;7190:10;:17;:37;:91;;7264:10;:17;7190:91;;;7237:10;:17;7190:91;7164:117;;7325:22;7341:1;7344:2;7325:9;:15;;:22;;;;;:::i;:::-;7307:9;:12;7317:1;7307:12;;;;;;;;;;;;;:15;7320:1;7307:15;;;;;;;;;;;:40;;;;;;;;;;;;:::i;:::-;;7371:22;7387:1;7390:2;7371:9;:15;;:22;;;;;:::i;:::-;7353:9;:12;7363:1;7353:12;;;;;;;;;;;;;:15;7366:1;7353:15;;;;;;;;;;;:40;;;;;;;;;;;;:::i;:::-;;7414:1;7405:10;;7400:375;7421:15;7417:1;:19;7400:375;;;7503:1;7483:10;:17;:21;7478:1;:26;;7474:126;;;7546:45;7562:10;7573:1;7562:13;;;;;;;;;;;;;;;;;;1237:2;7546:45;;:9;:15;;:45;;;;;:::i;:::-;7516:9;:12;7526:1;7516:12;;;;;;;;;;;;;:27;7529:10;7540:1;7529:13;;;;;;;;;;;;;;;;;;7516:27;;;;;;;;;;;:75;;;;;;;;;;;;:::i;:::-;;7474:126;7672:1;7652:10;:17;:21;7647:1;:26;;7643:126;;;7715:45;7731:10;7742:1;7731:13;;;;;;;;;;;;;;;;;;1274:2;7715:45;;:9;:15;;:45;;;;;:::i;:::-;7685:9;:12;7695:1;7685:12;;;;;;;;;;;;;:27;7698:10;7709:1;7698:13;;;;;;;;;;;;;;;;;;7685:27;;;;;;;;;;;:75;;;;;;;;;;;;:::i;:::-;;7643:126;7438:3;;;;;;;7400:375;;;7786:8;;;;;;;;;;6994:805;;;;;;;:::o;324:22::-;;;;:::o;222:::-;;;;;;;;;;;;;:::o;187:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;48:21:4:-;;;;;;;;;;;;;:::o;7987:156:0:-;8072:11;8098:40;8130:7;8098:9;:16;8108:5;8098:16;;;;;;;;;;;;;;;:25;8115:7;8098:25;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;8091:47;;7987:156;;;;;:::o;5606:674::-;5753:17;5822:21;5700:7;;;;;;;;;;;5692:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:6;;;;;;;;;;;:16;;;5790:10;5810:4;5773:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5773:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5773:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5773:43:0;;;;;;;;;;;;;;;;5753:63;;5873:10;5856:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5856:28:0;;;5846:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;5846:39:0;;;;;;;;;;;;;;;;5822:63;;5901:11;:26;5913:13;5901:26;;;;;;;;;;;;;;;;;;;;;;;;;;;5900:27;:60;;;;;5953:7;5944:6;;:16;5931:9;:29;;5900:60;5891:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5995:6;;;;;;;;;;;:19;;;6015:10;6027:6;;;;;;;;;;;6035;;5995:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5995:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5995:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5995:47:0;;;;;;;;;;;;;;;;5991:285;;;6081:4;6052:11;:26;6064:13;6052:26;;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;6093:4;;;;;;;;;;;:19;;;6113:10;6125:4;;6093:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6093:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6093:37:0;;;;6153:10;6143:29;;;;6165:6;;6143:29;;;;;;;;;;;;;;;;;;6203:1;6195:10;;6185:20;;;:6;:20;;;;;:35;;;;;6219:1;6209:7;:11;6185:35;6181:89;;;6232:29;6245:6;6253:7;6232:12;:29::i;:::-;6181:89;5991:285;5606:674;;;;;:::o;2563:620::-;2648:17;1465:11;:52;1504:10;1487:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1487:28:0;;;1477:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1477:39:0;;;;;;;;;;;;;;;;1465:52;;;;;;;;;;;;;;;;;;;;;;;;;;;1450:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:6;;;;;;;;;;;:16;;;2685:10;2705:4;2668:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2668:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2668:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2668:43:0;;;;;;;;;;;;;;;;2648:63;;2743:1;2735:10;;2725:20;;;:6;:20;;;;;:35;;;;;2759:1;2749:7;:11;2725:35;:59;;;;;2777:7;2764:9;:20;;2725:59;:143;;;;;2827:1;2795:34;;:5;:13;2801:6;2795:13;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;:72;;;;2857:10;2833:34;;:5;:13;2839:6;2833:13;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;2795:72;2725:143;2717:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:6;;;;;;;;;;;:19;;;2927:10;2947:4;2954:7;2907:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2907:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2907:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2907:55:0;;;;;;;;;;;;;;;;2903:276;;;2996:7;2972:5;:13;2978:6;2972:13;;;;;;;;;;;;;;;;;:20;;;:31;;;;;;;;;;;3034:10;3011:5;:13;3017:6;3011:13;;;;;;;;;;;;;;;;;:20;;;:33;;;;;;;;;;;;;;;;;;3083:6;;;;;;;;;;;:16;;;3108:4;3083:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3083:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3083:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3083:31:0;;;;;;;;;;;;;;;;3059:5;:13;3065:6;3059:13;;;;;;;;;;;;;;;;;:20;;;:55;;3052:63;;;;;;3156:6;3128:44;;;3144:10;3128:44;;;3164:7;3128:44;;;;;;;;;;;;;;;;;;2903:276;2563:620;;;:::o;541:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;3187:1200::-;3410:20;3441:7;3607;3837:14;4170:17;3305:6;1665:10;1641:34;;:5;:13;1647:6;1641:13;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;:62;;;;;1702:1;1679:5;:13;1685:6;1679:13;;;;;;;;;;;;;;;;;:20;;;:24;1641:62;1626:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3346:8;:15;3327:8;:15;:34;3319:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3451:1;3441:11;;3436:86;3458:8;:15;3454:1;:19;;;3436:86;;;3504:8;3513:1;3504:11;;;;;;;;;;;;;;;;;;;;3488:27;;;;3475:3;;;;;;;3436:86;;;3551:5;:13;3557:6;3551:13;;;;;;;;;;;;;;;;;:20;;;3535:12;:36;;3527:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3617:1;3607:11;;3602:542;3624:8;:15;3620:1;:19;;;3602:542;;;3697:19;;3658:6;;;;;;;;;;;:22;;;3681:8;3690:1;3681:11;;;;;;;;;;;;;;;;;;;;3658:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3658:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3658:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3658:35:0;;;;;;;;;;;;;;;;:58;;:114;;;;3720:11;:52;3759:10;3742:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3742:28:0;;;3732:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;3732:39:0;;;;;;;;;;;;;;;;3720:52;;;;;;;;;;;;;;;;;;;;;;;;;;;3658:114;3654:484;;;3815:8;3824:1;3815:11;;;;;;;;;;;;;;;;;;;;3791:5;:13;3797:6;3791:13;;;;;;;;;;;;;;;;;:20;;;:35;;3784:43;;;;;;3881:8;3890:1;3881:11;;;;;;;;;;;;;;;;;;;;3864:29;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3864:29:0;;;3854:40;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;3854:40:0;;;;;;;;;;;;;;;;3837:57;;3924:8;3933:1;3924:11;;;;;;;;;;;;;;;;;;;;3904:8;:16;3913:6;3904:16;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;3969:8;3978:1;3969:11;;;;;;;;;;;;;;;;;;;;3945:5;:13;3951:6;3945:13;;;;;;;;;;;;;;;;;:20;;;:35;;;;;;;;;;;4025:6;3995:72;;;4012:8;4021:1;4012:11;;;;;;;;;;;;;;;;;;;;3995:72;;;4033:8;4042:1;4033:11;;;;;;;;;;;;;;;;;;;;4046:5;:13;4052:6;4046:13;;;;;;;;;;;;;;;;;:20;;;3995:72;;;;;;;;;;;;;;;;;;;;;;;;3654:484;;;4097:32;4117:8;4126:1;4117:11;;;;;;;;;;;;;;;;;;;;4097:32;;;;;;;;;;;;;;;;;;;;;;3654:484;3641:3;;;;;;;3602:542;;;4153:7;4149:234;;;4190:5;:13;4196:6;4190:13;;;;;;;;;;;;;;;;;:20;;;4170:40;;4234:1;4222:9;:13;4218:159;;;4300:9;4247:8;:49;4283:10;4266:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4266:28:0;;;4256:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;4256:39:0;;;;;;;;;;;;;;;;4247:49;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;4342:1;4319:5;:13;4325:6;4319:13;;;;;;;;;;;;;;;;;:20;;:24;;;;4353:15;:13;:15::i;:::-;4218:159;4149:234;3187:1200;;;;;;;;;;:::o;1036:225:4:-;1108:21;1090:10;709:11;:51;748:9;731:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;731:27:4;;;721:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;721:38:4;;;;;;;;;;;;;;;;709:51;;;;;;;;;;;;;;;;;;;;;;;;;;;701:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1159:10;1142:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1142:28:4;;;1132:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1132:39:4;;;;;;;;;;;;;;;;1108:63;;1206:5;1177:11;:26;1189:13;1177:26;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1245:10;1222:34;;1237:6;;;;;;;;;;;1222:34;;;;;;;;;;;;1036:225;;:::o;9369:2465:8:-;9449:5;9521:22;9501:7;9492:6;:16;9474:6;:13;:35;;9466:44;;;;;;;;9591:7;9584:15;9617:1;9612:1967;;;;11720:4;11714:11;11701:24;;11771:4;11760:9;11756:20;11750:4;11743:34;9577:2214;;9612:1967;9794:4;9788:11;9775:24;;10453:2;10444:7;10440:16;10835:9;10828:17;10822:4;10818:28;10806:9;10795;10791:25;10787:60;10883:7;10879:2;10875:16;11135:6;11121:9;11114:17;11108:4;11104:28;11092:9;11084:6;11080:22;11076:57;11072:70;10909:425;11168:3;11164:2;11161:11;10909:425;;;11312:2;11306:9;11302:2;11295:21;11209:4;11205:2;11201:13;11195:19;;11249:4;11245:2;11241:13;11235:19;;10909:425;;;10913:247;11370:7;11359:9;11352:26;11560:2;11556:7;11551:2;11547;11543:11;11539:25;11533:4;11526:39;9619:1960;;;9577:2214;;11818:9;11811:16;;9369:2465;;;;;;:::o;12744:1413::-;12831:4;12847:12;12862:4;12847:19;;12920:9;12914:16;13031:10;13025:17;13017:6;13014:29;13061:1;13056:965;;;;14101:1;14090:12;;13007:1109;;13056:965;13302:1;13346:4;13335:9;13331:20;13387:6;13383:2;13379:15;13464:4;13452:10;13448:21;13412:595;13620:1;13615:2;13609:3;13605:2;13602:11;13598:20;13595:27;13412:595;;;13853:2;13847:9;13842:2;13836:9;13833:24;13826:32;13823:2;;;13934:1;13923:12;;13966:1;13960:7;;13823:2;13659:4;13655:2;13651:13;13645:19;;13699:4;13695:2;13691:13;13685:19;;13412:595;;;13416:178;13063:958;;;13007:1109;;12886:1240;14143:7;14136:14;;12744:1413;;;;;:::o;129:8147:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "deployedSourceMap": "129:8147:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;391:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;391:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;297:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;630:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;630:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;630:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4391:560;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4391:560:0;;;;;;248:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;248:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;273;;8:9:-1;5:2;;;30:1;27;20:12;5:2;273:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1750:694;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1750:694:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:232:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:232:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;5097:103:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5097:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;470:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;351:35:0;;;;;;;;;;;;;;;;;;;;;;;6284:706;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6284:706:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4955:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4955:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:212:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:212:5;;;;;;2448:111:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2448:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;337:43:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;337:43:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8147:127:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8147:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7803:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7803:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7803:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6994:805;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6994:805:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;324:22:0;;;;;;;;;;;;;;;;;;;;;;;222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;222:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;187:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;187:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;187:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48:21:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48:21:5;;;;;;;;;;;;;;;;;;;;;;;;;;;7987:156:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7987:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5606:674;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5606:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:620;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2563:620:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;541:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3187:1200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3187:1200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1036:225:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1036:225:5;;;;;;391:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;297:23::-;;;;;;;;;;;;;:::o;630:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4391:560::-;4580:21;4447:6;;;;;;;;;;;4433:20;;:10;:20;;;:81;;;;4495:19;;4457:6;;;;;;;;;;;:22;;;4480:10;4457:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4457:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4457:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4457:34:0;;;;;;;;;;;;;;;;:57;;4433:81;:137;;;;4518:11;:52;4557:10;4540:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4540:28:0;;;4530:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;4530:39:0;;;;;;;;;;;;;;;;4518:52;;;;;;;;;;;;;;;;;;;;;;;;;;;4433:137;4429:518;;;4631:10;4614:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4614:28:0;;;4604:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;4604:39:0;;;;;;;;;;;;;;;;4580:63;;4685:1;4659:8;:23;4668:13;4659:23;;;;;;;;;;;;;;;;;;:27;4651:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4724:6;;;;;;;;;;;:15;;;4740:10;4752:8;:23;4761:13;4752:23;;;;;;;;;;;;;;;;;;4724:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4724:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4724:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4724:52:0;;;;;;;;;;;;;;;;4720:164;;;4802:10;4793:45;;;4814:8;:23;4823:13;4814:23;;;;;;;;;;;;;;;;;;4793:45;;;;;;;;;;;;;;;;;;4874:1;4848:8;:23;4857:13;4848:23;;;;;;;;;;;;;;;;;:27;;;;4720:164;4429:518;;;4909:31;4929:10;4909:31;;;;;;;;;;;;;;;;;;;;;;4429:518;4391:560;:::o;248:20::-;;;;;;;;;;;;;:::o;273:::-;;;;:::o;1750:694::-;1790:14;1810:17;1833;1856:15;1877:11;1995:2;1988:5;1984:14;1974:24;;2024:6;2018:13;2005:26;;2059:2;2052:5;2048:14;2038:24;;2088:6;2082:13;2069:26;;2123:2;2116:5;2112:14;2102:24;;2150:6;2144:13;2133:24;;2185:3;2178:5;2174:15;2164:25;;2209:6;2203:13;2196:20;;2239:9;2227:6;;:21;;;;;;;;;;;;;;;;;;2275:9;2254:6;;:31;;;;;;;;;;;;;;;;;;2311:7;2291:4;;:28;;;;;;;;;;;;;;;;;;2337:3;2325:4;:15;;;;;;;2358:4;2346:7;;:16;;;;;;;;;;;;;;;;;;2380:1;2368:6;:13;;;;2422:6;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2422:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2422:17:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2422:17:0;;;;;;;;;;;;;;;;2416:2;:23;2410:3;:29;2387:19;:52;;;;1750:694;;;;;;:::o;1265:232:5:-;1389:21;477:6;;;;;;;;;;;463:20;;:10;:20;;;455:29;;;;;;;;1348:9;709:11;:51;748:9;731:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;731:27:5;;;721:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;721:38:5;;;;;;;;;;;;;;;;709:51;;;;;;;;;;;;;;;;;;;;;;;;;;;701:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1374:9;1365:6;;:18;;;;;;;;;;;;;;;;;;1440:10;1423:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1423:28:5;;;1413:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1413:39:5;;;;;;;;;;;;;;;;1389:63;;1487:5;1458:11;:26;1470:13;1458:26;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;490:1;1265:232;;:::o;5097:103:0:-;5153:7;5175:5;:13;5181:6;5175:13;;;;;;;;;;;;;;;;;:20;;;5168:27;;5097:103;;;:::o;470:43::-;;;;;;;;;;;;;;;;;:::o;351:35::-;;;;:::o;6284:706::-;6465:23;6594:6;6399;;;;;;;;;;;1352:8;1338:22;;:10;:22;;;1323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6426:7;;;;;;;;;;;6418:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6511:10;;:17;;6491:10;;:17;;:37;:91;;6565:10;;:17;;6491:91;;;6538:10;;:17;;6491:91;6465:117;;6603:1;6594:10;;6589:377;6610:15;6606:1;:19;6589:377;;;6692:1;6672:10;;:17;;:21;6667:1;:26;;6663:130;;;6735:49;1237:2;6751:17;;:1;:17;1237:2;6735:49;;:9;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;:::i;:::-;6705:9;:12;6715:1;6705:12;;;;;;;;;;;;;:27;6718:10;;6729:1;6718:13;;;;;;;;;;;;;;;6705:27;;;;;;;;;;;:79;;;;;;;;;;;;:::i;:::-;;6663:130;6859:1;6839:10;;:17;;:21;6834:1;:26;;6830:130;;;6902:49;1274:2;6918:17;;:1;:17;1274:2;6902:49;;:9;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;:::i;:::-;6872:9;:12;6882:1;6872:12;;;;;;;;;;;;;:27;6885:10;;6896:1;6885:13;;;;;;;;;;;;;;;6872:27;;;;;;;;;;;:79;;;;;;;;;;;;:::i;:::-;;6830:130;6627:3;;;;;;;6589:377;;;6977:8;;;;;;;;;;6284:706;;;;;;;;;;;:::o;4955:138::-;5020:7;5042:8;:46;5078:7;5061:25;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5061:25:0;;;5051:36;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;5051:36:0;;;;;;;;;;;;;;;;5042:46;;;;;;;;;;;;;;;;;;5035:53;;4955:138;;;:::o;820:212:5:-;877:21;542:11;:52;581:10;564:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;564:28:5;;;554:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;554:39:5;;;;;;;;;;;;;;;;542:52;;;;;;;;;;;;;;;;;;;;;;;;;;;541:53;533:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;928:10;911:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;911:28:5;;;901:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;901:39:5;;;;;;;;;;;;;;;;877:63;;975:4;946:11;:26;958:13;946:26;;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1016:10;990:37;;1008:6;;;;;;;;;;;990:37;;;;;;;;;;;;820:212;:::o;2448:111:0:-;2498:6;;;;;;;;;;;1352:8;1338:22;;:10;:22;;;1323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2521:6;2512;:15;;;;2538:16;2547:6;;2538:16;;;;;;;;;;;;;;;;;;2448:111;;:::o;337:43:5:-;;;;;;;;;;;;;;;;;;;;;;:::o;8147:127:0:-;8196:12;8179:6;;;;;;;;;;;1352:8;1338:22;;:10;:22;;;1323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8226:5;8216:7;;:15;;;;;;;;;;;;;;;;;;8242:10;;;;;;;;;;8265:4;8258:11;;8147:127;;:::o;7803:180::-;7868:12;7893:7;;;;;;;;;;;7892:8;7888:53;;;7910:9;;;;;;;;;;;;;;;;;7888:53;7953:9;:16;7963:5;7953:16;;;;;;;;;;;;;;;:25;7970:7;7953:25;;;;;;;;;;;7946:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7803:180;;;;;:::o;6994:805::-;7164:23;7405:6;7106;;;;;;;;;;;1352:8;1338:22;;:10;:22;;;1323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7129:7;;;;;;;;;;;7121:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7210:10;:17;7190:10;:17;:37;:91;;7264:10;:17;7190:91;;;7237:10;:17;7190:91;7164:117;;7325:22;7341:1;7344:2;7325:9;:15;;:22;;;;;:::i;:::-;7307:9;:12;7317:1;7307:12;;;;;;;;;;;;;:15;7320:1;7307:15;;;;;;;;;;;:40;;;;;;;;;;;;:::i;:::-;;7371:22;7387:1;7390:2;7371:9;:15;;:22;;;;;:::i;:::-;7353:9;:12;7363:1;7353:12;;;;;;;;;;;;;:15;7366:1;7353:15;;;;;;;;;;;:40;;;;;;;;;;;;:::i;:::-;;7414:1;7405:10;;7400:375;7421:15;7417:1;:19;7400:375;;;7503:1;7483:10;:17;:21;7478:1;:26;;7474:126;;;7546:45;7562:10;7573:1;7562:13;;;;;;;;;;;;;;;;;;1237:2;7546:45;;:9;:15;;:45;;;;;:::i;:::-;7516:9;:12;7526:1;7516:12;;;;;;;;;;;;;:27;7529:10;7540:1;7529:13;;;;;;;;;;;;;;;;;;7516:27;;;;;;;;;;;:75;;;;;;;;;;;;:::i;:::-;;7474:126;7672:1;7652:10;:17;:21;7647:1;:26;;7643:126;;;7715:45;7731:10;7742:1;7731:13;;;;;;;;;;;;;;;;;;1274:2;7715:45;;:9;:15;;:45;;;;;:::i;:::-;7685:9;:12;7695:1;7685:12;;;;;;;;;;;;;:27;7698:10;7709:1;7698:13;;;;;;;;;;;;;;;;;;7685:27;;;;;;;;;;;:75;;;;;;;;;;;;:::i;:::-;;7643:126;7438:3;;;;;;;7400:375;;;7786:8;;;;;;;;;;6994:805;;;;;;;:::o;324:22::-;;;;:::o;222:::-;;;;;;;;;;;;;:::o;187:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;48:21:5:-;;;;;;;;;;;;;:::o;7987:156:0:-;8072:11;8098:40;8130:7;8098:9;:16;8108:5;8098:16;;;;;;;;;;;;;;;:25;8115:7;8098:25;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;8091:47;;7987:156;;;;;:::o;5606:674::-;5753:17;5822:21;5700:7;;;;;;;;;;;5692:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:6;;;;;;;;;;;:16;;;5790:10;5810:4;5773:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5773:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5773:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5773:43:0;;;;;;;;;;;;;;;;5753:63;;5873:10;5856:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5856:28:0;;;5846:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;5846:39:0;;;;;;;;;;;;;;;;5822:63;;5901:11;:26;5913:13;5901:26;;;;;;;;;;;;;;;;;;;;;;;;;;;5900:27;:60;;;;;5953:7;5944:6;;:16;5931:9;:29;;5900:60;5891:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5995:6;;;;;;;;;;;:19;;;6015:10;6027:6;;;;;;;;;;;6035;;5995:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5995:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5995:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5995:47:0;;;;;;;;;;;;;;;;5991:285;;;6081:4;6052:11;:26;6064:13;6052:26;;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;6093:4;;;;;;;;;;;:19;;;6113:10;6125:4;;6093:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6093:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6093:37:0;;;;6153:10;6143:29;;;;6165:6;;6143:29;;;;;;;;;;;;;;;;;;6203:1;6195:10;;6185:20;;;:6;:20;;;;;:35;;;;;6219:1;6209:7;:11;6185:35;6181:89;;;6232:29;6245:6;6253:7;6232:12;:29::i;:::-;6181:89;5991:285;5606:674;;;;;:::o;2563:620::-;2648:17;1465:11;:52;1504:10;1487:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1487:28:0;;;1477:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1477:39:0;;;;;;;;;;;;;;;;1465:52;;;;;;;;;;;;;;;;;;;;;;;;;;;1450:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:6;;;;;;;;;;;:16;;;2685:10;2705:4;2668:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2668:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2668:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2668:43:0;;;;;;;;;;;;;;;;2648:63;;2743:1;2735:10;;2725:20;;;:6;:20;;;;;:35;;;;;2759:1;2749:7;:11;2725:35;:59;;;;;2777:7;2764:9;:20;;2725:59;:143;;;;;2827:1;2795:34;;:5;:13;2801:6;2795:13;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;:72;;;;2857:10;2833:34;;:5;:13;2839:6;2833:13;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;2795:72;2725:143;2717:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:6;;;;;;;;;;;:19;;;2927:10;2947:4;2954:7;2907:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2907:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2907:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2907:55:0;;;;;;;;;;;;;;;;2903:276;;;2996:7;2972:5;:13;2978:6;2972:13;;;;;;;;;;;;;;;;;:20;;;:31;;;;;;;;;;;3034:10;3011:5;:13;3017:6;3011:13;;;;;;;;;;;;;;;;;:20;;;:33;;;;;;;;;;;;;;;;;;3083:6;;;;;;;;;;;:16;;;3108:4;3083:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3083:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3083:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3083:31:0;;;;;;;;;;;;;;;;3059:5;:13;3065:6;3059:13;;;;;;;;;;;;;;;;;:20;;;:55;;3052:63;;;;;;3156:6;3128:44;;;3144:10;3128:44;;;3164:7;3128:44;;;;;;;;;;;;;;;;;;2903:276;2563:620;;;:::o;541:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;3187:1200::-;3410:20;3441:7;3607;3837:14;4170:17;3305:6;1665:10;1641:34;;:5;:13;1647:6;1641:13;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;:62;;;;;1702:1;1679:5;:13;1685:6;1679:13;;;;;;;;;;;;;;;;;:20;;;:24;1641:62;1626:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3346:8;:15;3327:8;:15;:34;3319:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3451:1;3441:11;;3436:86;3458:8;:15;3454:1;:19;;;3436:86;;;3504:8;3513:1;3504:11;;;;;;;;;;;;;;;;;;;;3488:27;;;;3475:3;;;;;;;3436:86;;;3551:5;:13;3557:6;3551:13;;;;;;;;;;;;;;;;;:20;;;3535:12;:36;;3527:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3617:1;3607:11;;3602:542;3624:8;:15;3620:1;:19;;;3602:542;;;3697:19;;3658:6;;;;;;;;;;;:22;;;3681:8;3690:1;3681:11;;;;;;;;;;;;;;;;;;;;3658:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3658:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3658:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3658:35:0;;;;;;;;;;;;;;;;:58;;:114;;;;3720:11;:52;3759:10;3742:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3742:28:0;;;3732:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;3732:39:0;;;;;;;;;;;;;;;;3720:52;;;;;;;;;;;;;;;;;;;;;;;;;;;3658:114;3654:484;;;3815:8;3824:1;3815:11;;;;;;;;;;;;;;;;;;;;3791:5;:13;3797:6;3791:13;;;;;;;;;;;;;;;;;:20;;;:35;;3784:43;;;;;;3881:8;3890:1;3881:11;;;;;;;;;;;;;;;;;;;;3864:29;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3864:29:0;;;3854:40;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;3854:40:0;;;;;;;;;;;;;;;;3837:57;;3924:8;3933:1;3924:11;;;;;;;;;;;;;;;;;;;;3904:8;:16;3913:6;3904:16;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;3969:8;3978:1;3969:11;;;;;;;;;;;;;;;;;;;;3945:5;:13;3951:6;3945:13;;;;;;;;;;;;;;;;;:20;;;:35;;;;;;;;;;;4025:6;3995:72;;;4012:8;4021:1;4012:11;;;;;;;;;;;;;;;;;;;;3995:72;;;4033:8;4042:1;4033:11;;;;;;;;;;;;;;;;;;;;4046:5;:13;4052:6;4046:13;;;;;;;;;;;;;;;;;:20;;;3995:72;;;;;;;;;;;;;;;;;;;;;;;;3654:484;;;4097:32;4117:8;4126:1;4117:11;;;;;;;;;;;;;;;;;;;;4097:32;;;;;;;;;;;;;;;;;;;;;;3654:484;3641:3;;;;;;;3602:542;;;4153:7;4149:234;;;4190:5;:13;4196:6;4190:13;;;;;;;;;;;;;;;;;:20;;;4170:40;;4234:1;4222:9;:13;4218:159;;;4300:9;4247:8;:49;4283:10;4266:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4266:28:0;;;4256:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;4256:39:0;;;;;;;;;;;;;;;;4247:49;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;4342:1;4319:5;:13;4325:6;4319:13;;;;;;;;;;;;;;;;;:20;;:24;;;;4353:15;:13;:15::i;:::-;4218:159;4149:234;3187:1200;;;;;;;;;;:::o;1036:225:5:-;1108:21;1090:10;709:11;:51;748:9;731:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;731:27:5;;;721:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;721:38:5;;;;;;;;;;;;;;;;709:51;;;;;;;;;;;;;;;;;;;;;;;;;;;701:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1159:10;1142:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1142:28:5;;;1132:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1132:39:5;;;;;;;;;;;;;;;;1108:63;;1206:5;1177:11;:26;1189:13;1177:26;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1245:10;1222:34;;1237:6;;;;;;;;;;;1222:34;;;;;;;;;;;;1036:225;;:::o;9369:2465:9:-;9449:5;9521:22;9501:7;9492:6;:16;9474:6;:13;:35;;9466:44;;;;;;;;9591:7;9584:15;9617:1;9612:1967;;;;11720:4;11714:11;11701:24;;11771:4;11760:9;11756:20;11750:4;11743:34;9577:2214;;9612:1967;9794:4;9788:11;9775:24;;10453:2;10444:7;10440:16;10835:9;10828:17;10822:4;10818:28;10806:9;10795;10791:25;10787:60;10883:7;10879:2;10875:16;11135:6;11121:9;11114:17;11108:4;11104:28;11092:9;11084:6;11080:22;11076:57;11072:70;10909:425;11168:3;11164:2;11161:11;10909:425;;;11312:2;11306:9;11302:2;11295:21;11209:4;11205:2;11201:13;11195:19;;11249:4;11245:2;11241:13;11235:19;;10909:425;;;10913:247;11370:7;11359:9;11352:26;11560:2;11556:7;11551:2;11547;11543:11;11539:25;11533:4;11526:39;9619:1960;;;9577:2214;;11818:9;11811:16;;9369:2465;;;;;;:::o;12744:1413::-;12831:4;12847:12;12862:4;12847:19;;12920:9;12914:16;13031:10;13025:17;13017:6;13014:29;13061:1;13056:965;;;;14101:1;14090:12;;13007:1109;;13056:965;13302:1;13346:4;13335:9;13331:20;13387:6;13383:2;13379:15;13464:4;13452:10;13448:21;13412:595;13620:1;13615:2;13609:3;13605:2;13602:11;13598:20;13595:27;13412:595;;;13853:2;13847:9;13842:2;13836:9;13833:24;13826:32;13823:2;;;13934:1;13923:12;;13966:1;13960:7;;13823:2;13659:4;13655:2;13651:13;13645:19;;13699:4;13695:2;13691:13;13685:19;;13412:595;;;13416:178;13063:958;;;13007:1109;;12886:1240;14143:7;14136:14;;12744:1413;;;;;:::o;129:8147:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "pragma solidity ^0.4.24;\n\nimport \"./Ownable.sol\";\nimport \"./Library.sol\";\nimport \"./AraToken.sol\";\nimport \"bytes/BytesLib.sol\";\n\ncontract AFS is Ownable {\n\n using BytesLib for bytes;\n\n string public version_ = \"1\";\n\n AraToken public token_;\n Library public lib_;\n\n bytes32 public did_;\n bool public listed_;\n uint256 public price_;\n\n uint256 public depositRequirement_;\n\n mapping(bytes32 => Job) public jobs_; // jobId => job { budget, sender }\n mapping(bytes32 => uint256) public rewards_; // farmer => rewards\n mapping(bytes32 => bool) public purchasers_; // keccak256 hashes of buyer addresses\n mapping(uint8 => mapping (uint256 => bytes)) public metadata_;\n\n struct Job {\n address sender;\n uint256 budget;\n }\n\n event Commit();\n event Unlisted();\n event PriceSet(uint256 _price);\n event BudgetSubmitted(address indexed _sender, bytes32 indexed _jobId, uint256 _budget);\n event RewardsAllocated(address indexed _farmer, bytes32 indexed _jobId, uint256 _allocated, uint256 _remaining);\n event InsufficientDeposit(address _farmer);\n event Purchased(bytes32 indexed _purchaser, uint256 _price);\n event Redeemed(address indexed _sender, uint256 _amount);\n\n uint8 constant mtBufferSize_ = 40;\n uint8 constant msBufferSize_ = 64;\n\n modifier onlyBy(address _account)\n {\n require(\n msg.sender == _account,\n \"Sender not authorized.\"\n );\n _;\n }\n\n modifier purchaseRequired()\n {\n require(\n purchasers_[keccak256(abi.encodePacked(msg.sender))],\n \"Content was never purchased.\"\n );\n _;\n }\n\n modifier budgetSubmitted(bytes32 _jobId)\n {\n require(\n jobs_[_jobId].sender == msg.sender && jobs_[_jobId].budget > 0,\n \"Job is invalid.\"\n );\n _;\n }\n\n function init(bytes _data) public {\n uint256 btsptr;\n address ownerAddr;\n address tokenAddr;\n address libAddr;\n bytes32 did;\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n btsptr := add(_data, 32)\n ownerAddr := mload(btsptr)\n btsptr := add(_data, 64)\n tokenAddr := mload(btsptr)\n btsptr := add(_data, 96)\n libAddr := mload(btsptr)\n btsptr := add(_data, 128)\n did := mload(btsptr)\n }\n owner_ = ownerAddr;\n token_ = AraToken(tokenAddr);\n lib_ = Library(libAddr);\n did_ = did;\n listed_ = true;\n price_ = 0;\n depositRequirement_ = 100 * 10 ** token_.decimals();\n }\n\n function setPrice(uint256 _price) external onlyBy(owner_) {\n price_ = _price;\n emit PriceSet(price_);\n }\n\n function submitBudget(bytes32 _jobId, uint256 _budget) public purchaseRequired {\n uint256 allowance = token_.allowance(msg.sender, address(this));\n require(_jobId != bytes32(0) && _budget > 0 && allowance >= _budget\n && (jobs_[_jobId].sender == address(0) || jobs_[_jobId].sender == msg.sender), \"Job submission invalid.\");\n\n if (token_.transferFrom(msg.sender, address(this), _budget)) {\n jobs_[_jobId].budget += _budget;\n jobs_[_jobId].sender = msg.sender;\n assert(jobs_[_jobId].budget <= token_.balanceOf(address(this)));\n emit BudgetSubmitted(msg.sender, _jobId, _budget);\n }\n }\n\n function allocateRewards(bytes32 _jobId, address[] _farmers, uint256[] _rewards, bool _return) public budgetSubmitted(_jobId) {\n require(_farmers.length == _rewards.length, \"Unequal number of farmers and rewards.\");\n uint256 totalRewards;\n for (uint8 i = 0; i < _rewards.length; i++) {\n totalRewards += _rewards[i];\n }\n require(totalRewards <= jobs_[_jobId].budget, \"Insufficient budget.\");\n for (uint8 j = 0; j < _farmers.length; j++) {\n if (token_.amountDeposited(_farmers[j]) >= depositRequirement_ || purchasers_[keccak256(abi.encodePacked(msg.sender))]) {\n assert(jobs_[_jobId].budget >= _rewards[j]);\n bytes32 farmer = keccak256(abi.encodePacked(_farmers[j]));\n rewards_[farmer] += _rewards[j];\n jobs_[_jobId].budget -= _rewards[j];\n emit RewardsAllocated(_farmers[j], _jobId, _rewards[j], jobs_[_jobId].budget);\n } else {\n emit InsufficientDeposit(_farmers[j]);\n }\n }\n if (_return) {\n uint256 remaining = jobs_[_jobId].budget;\n if (remaining > 0) {\n rewards_[keccak256(abi.encodePacked(msg.sender))] += remaining;\n jobs_[_jobId].budget = 0;\n redeemBalance();\n }\n }\n }\n\n function redeemBalance() public {\n if (msg.sender == owner_ || token_.amountDeposited(msg.sender) >= depositRequirement_ || purchasers_[keccak256(abi.encodePacked(msg.sender))]) {\n bytes32 hashedAddress = keccak256(abi.encodePacked(msg.sender));\n require(rewards_[hashedAddress] > 0, \"No balance to redeem.\");\n if (token_.transfer(msg.sender, rewards_[hashedAddress])) {\n emit Redeemed(msg.sender, rewards_[hashedAddress]);\n rewards_[hashedAddress] = 0;\n }\n } else {\n emit InsufficientDeposit(msg.sender);\n }\n }\n\n function getRewardsBalance(address _farmer) public view returns (uint256) {\n return rewards_[keccak256(abi.encodePacked(_farmer))];\n }\n\n function getBudget(bytes32 _jobId) public view returns (uint256) {\n return jobs_[_jobId].budget;\n }\n\n /**\n * @dev Purchases this AFS and adds it to _purchaser's library. \n * If _download is true, deposits any remaining allowance \n * as rewards for this purchase\n * @param _purchaser The hashed methodless did of the purchaser\n * @param _jobId The jobId of the download, or 0x00000000000000000000000000000000 if N/A\n * @param _budget The reward budget for jobId, or 0 if N/A\n */\n function purchase(bytes32 _purchaser, bytes32 _jobId, uint256 _budget) external {\n require(listed_, \"Content is not listed for purchase.\");\n uint256 allowance = token_.allowance(msg.sender, address(this));\n bytes32 hashedAddress = keccak256(abi.encodePacked(msg.sender));\n require (!purchasers_[hashedAddress] && allowance >= price_ + _budget, \"Unable to purchase.\");\n\n if (token_.transferFrom(msg.sender, owner_, price_)) {\n purchasers_[hashedAddress] = true;\n lib_.addLibraryItem(_purchaser, did_);\n emit Purchased(_purchaser, price_);\n\n if (_jobId != bytes32(0) && _budget > 0) {\n submitBudget(_jobId, _budget);\n }\n }\n }\n\n function append(uint256[] _mtOffsets, uint256[] _msOffsets, bytes _mtBuffer, \n bytes _msBuffer) external onlyBy(owner_) {\n \n require(listed_, \"AFS is unlisted.\");\n \n uint256 maxOffsetLength = _mtOffsets.length > _msOffsets.length \n ? _mtOffsets.length \n : _msOffsets.length;\n\n for (uint i = 0; i < maxOffsetLength; i++) {\n // metadata/tree\n if (i <= _mtOffsets.length - 1) {\n metadata_[0][_mtOffsets[i]] = _mtBuffer.slice(i * mtBufferSize_, mtBufferSize_);\n }\n\n // metadata/signatures\n if (i <= _msOffsets.length - 1) {\n metadata_[1][_msOffsets[i]] = _msBuffer.slice(i * msBufferSize_, msBufferSize_);\n }\n }\n\n emit Commit();\n }\n\n function write(uint256[] _mtOffsets, uint256[] _msOffsets, bytes _mtBuffer, \n bytes _msBuffer) public onlyBy(owner_) {\n\n require(listed_, \"AFS is unlisted.\");\n\n uint256 maxOffsetLength = _mtOffsets.length > _msOffsets.length \n ? _mtOffsets.length \n : _msOffsets.length;\n\n // add headers\n metadata_[0][0] = _mtBuffer.slice(0, 32);\n metadata_[1][0] = _msBuffer.slice(0, 32);\n\n for (uint i = 1; i < maxOffsetLength; i++) {\n // metadata/tree\n if (i <= _mtOffsets.length - 1) {\n metadata_[0][_mtOffsets[i]] = _mtBuffer.slice(_mtOffsets[i], mtBufferSize_);\n }\n \n // metadata/signatures\n if (i <= _msOffsets.length - 1) {\n metadata_[1][_msOffsets[i]] = _msBuffer.slice(_msOffsets[i], msBufferSize_);\n }\n }\n\n emit Commit();\n }\n\n function read(uint8 _file, uint256 _offset) public view returns (bytes buffer) {\n if (!listed_) {\n return \"\"; // empty bytes\n }\n return metadata_[_file][_offset];\n }\n\n function hasBuffer(uint8 _file, uint256 _offset, bytes _buffer) public view returns (bool exists) {\n return metadata_[_file][_offset].equal(_buffer);\n }\n\n function unlist() public onlyBy(owner_) returns (bool success) {\n listed_ = false;\n emit Unlisted();\n return true;\n }\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/AFS.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/AFS.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/AFS.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/AFS.sol", "exportedSymbols": { "AFS": [ 1001 @@ -704,18 +704,18 @@ "src": "0:24:0" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Ownable.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Ownable.sol", "file": "./Ownable.sol", "id": 2, "nodeType": "ImportDirective", "scope": 1002, - "sourceUnit": 1681, + "sourceUnit": 1738, "src": "26:23:0", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Library.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Library.sol", "file": "./Library.sol", "id": 3, "nodeType": "ImportDirective", @@ -726,7 +726,7 @@ "unitAlias": "" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/AraToken.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/AraToken.sol", "file": "./AraToken.sol", "id": 4, "nodeType": "ImportDirective", @@ -742,7 +742,7 @@ "id": 5, "nodeType": "ImportDirective", "scope": 1002, - "sourceUnit": 2688, + "sourceUnit": 2745, "src": "99:28:0", "symbolAliases": [], "unitAlias": "" @@ -756,10 +756,10 @@ "id": 6, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1680, + "referencedDeclaration": 1737, "src": "145:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$1680", + "typeIdentifier": "t_contract$_Ownable_$1737", "typeString": "contract Ownable" } }, @@ -769,7 +769,7 @@ } ], "contractDependencies": [ - 1680 + 1737 ], "contractKind": "contract", "documentation": null, @@ -777,7 +777,7 @@ "id": 1001, "linearizedBaseContracts": [ 1001, - 1680 + 1737 ], "name": "AFS", "nodeType": "ContractDefinition", @@ -789,10 +789,10 @@ "id": 8, "name": "BytesLib", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2687, + "referencedDeclaration": 2744, "src": "164:8:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_BytesLib_$2687", + "typeIdentifier": "t_contract$_BytesLib_$2744", "typeString": "library BytesLib" } }, @@ -1860,7 +1860,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "1338:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1936,10 +1936,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "1323:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2051,7 +2051,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "1504:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2086,7 +2086,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "1487:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -2133,7 +2133,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "1477:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -2199,10 +2199,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "1450:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2345,7 +2345,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "1665:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2507,10 +2507,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "1626:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2874,38 +2874,38 @@ } }, { - "btsptr": { - "declaration": 157, + "_data": { + "declaration": 153, "isOffset": false, "isSlot": false, - "src": "2209:6:0", + "src": "2178:5:0", "valueSize": 1 } }, { - "did": { - "declaration": 169, + "btsptr": { + "declaration": 157, "isOffset": false, "isSlot": false, - "src": "2196:3:0", + "src": "2164:6:0", "valueSize": 1 } }, { - "_data": { - "declaration": 153, + "btsptr": { + "declaration": 157, "isOffset": false, "isSlot": false, - "src": "2178:5:0", + "src": "2209:6:0", "valueSize": 1 } }, { - "btsptr": { - "declaration": 157, + "did": { + "declaration": 169, "isOffset": false, "isSlot": false, - "src": "2164:6:0", + "src": "2196:3:0", "valueSize": 1 } } @@ -2929,7 +2929,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "2227:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3604,7 +3604,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "2498:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3728,7 +3728,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "2685:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3758,7 +3758,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2827, + "referencedDeclaration": 2884, "src": "2705:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_AFS_$1001", @@ -3832,7 +3832,7 @@ "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 2113, + "referencedDeclaration": 2170, "src": "2668:16:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", @@ -4318,7 +4318,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "2857:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4405,10 +4405,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "2717:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4445,7 +4445,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "2927:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4475,7 +4475,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2827, + "referencedDeclaration": 2884, "src": "2947:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_AFS_$1001", @@ -4759,7 +4759,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "3034:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4875,7 +4875,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2827, + "referencedDeclaration": 2884, "src": "3108:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_AFS_$1001", @@ -4945,7 +4945,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 2097, + "referencedDeclaration": 2154, "src": "3083:16:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -4984,7 +4984,7 @@ "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2785, + "referencedDeclaration": 2842, "src": "3052:6:0", "typeDescriptions": { "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", @@ -5021,7 +5021,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "3144:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -5339,10 +5339,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "3319:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5762,10 +5762,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "3527:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5964,7 +5964,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "3759:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -5999,7 +5999,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "3742:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -6046,7 +6046,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "3732:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -6311,7 +6311,7 @@ "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2785, + "referencedDeclaration": 2842, "src": "3784:6:0", "typeDescriptions": { "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", @@ -6429,7 +6429,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "3864:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -6476,7 +6476,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "3854:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -7289,7 +7289,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4283:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7324,7 +7324,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "4266:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -7371,7 +7371,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "4256:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -7799,7 +7799,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4433:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7828,7 +7828,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "4447:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7865,7 +7865,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4480:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7994,7 +7994,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4557:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8029,7 +8029,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "4540:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -8076,7 +8076,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "4530:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -8131,7 +8131,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4929:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8246,7 +8246,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4631:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8281,7 +8281,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "4614:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -8328,7 +8328,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "4604:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -8467,10 +8467,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "4651:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -8507,7 +8507,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4740:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8642,7 +8642,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4802:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8913,7 +8913,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "5061:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -8960,7 +8960,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "5051:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -9288,10 +9288,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "5692:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -9360,7 +9360,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "5790:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9390,7 +9390,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2827, + "referencedDeclaration": 2884, "src": "5810:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_AFS_$1001", @@ -9464,7 +9464,7 @@ "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 2113, + "referencedDeclaration": 2170, "src": "5773:16:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", @@ -9535,7 +9535,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "5873:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9570,7 +9570,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "5856:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -9617,7 +9617,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "5846:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -9831,10 +9831,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "5891:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -9871,7 +9871,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "6015:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9898,7 +9898,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "6027:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10629,10 +10629,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "6418:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -11158,7 +11158,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "6735:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -11502,7 +11502,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "6902:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -11726,7 +11726,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "6399:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11955,10 +11955,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "7121:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -12326,7 +12326,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "7325:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -12515,7 +12515,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "7371:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -12857,7 +12857,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "7546:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -13196,7 +13196,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "7715:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -13420,7 +13420,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "7106:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13951,7 +13951,7 @@ "lValueRequested": false, "memberName": "equal", "nodeType": "MemberAccess", - "referencedDeclaration": 2669, + "referencedDeclaration": 2726, "src": "8098:31:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", @@ -14244,7 +14244,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "8179:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14326,7 +14326,7 @@ "src": "0:8277:0" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/AFS.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/AFS.sol", "exportedSymbols": { "AFS": [ 1001 @@ -14347,18 +14347,18 @@ "src": "0:24:0" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Ownable.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Ownable.sol", "file": "./Ownable.sol", "id": 2, "nodeType": "ImportDirective", "scope": 1002, - "sourceUnit": 1681, + "sourceUnit": 1738, "src": "26:23:0", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Library.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Library.sol", "file": "./Library.sol", "id": 3, "nodeType": "ImportDirective", @@ -14369,7 +14369,7 @@ "unitAlias": "" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/AraToken.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/AraToken.sol", "file": "./AraToken.sol", "id": 4, "nodeType": "ImportDirective", @@ -14385,7 +14385,7 @@ "id": 5, "nodeType": "ImportDirective", "scope": 1002, - "sourceUnit": 2688, + "sourceUnit": 2745, "src": "99:28:0", "symbolAliases": [], "unitAlias": "" @@ -14399,10 +14399,10 @@ "id": 6, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1680, + "referencedDeclaration": 1737, "src": "145:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$1680", + "typeIdentifier": "t_contract$_Ownable_$1737", "typeString": "contract Ownable" } }, @@ -14412,7 +14412,7 @@ } ], "contractDependencies": [ - 1680 + 1737 ], "contractKind": "contract", "documentation": null, @@ -14420,7 +14420,7 @@ "id": 1001, "linearizedBaseContracts": [ 1001, - 1680 + 1737 ], "name": "AFS", "nodeType": "ContractDefinition", @@ -14432,10 +14432,10 @@ "id": 8, "name": "BytesLib", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2687, + "referencedDeclaration": 2744, "src": "164:8:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_BytesLib_$2687", + "typeIdentifier": "t_contract$_BytesLib_$2744", "typeString": "library BytesLib" } }, @@ -15503,7 +15503,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "1338:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -15579,10 +15579,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "1323:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15694,7 +15694,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "1504:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -15729,7 +15729,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "1487:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -15776,7 +15776,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "1477:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -15842,10 +15842,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "1450:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15988,7 +15988,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "1665:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -16150,10 +16150,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "1626:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -16517,38 +16517,38 @@ } }, { - "btsptr": { - "declaration": 157, + "_data": { + "declaration": 153, "isOffset": false, "isSlot": false, - "src": "2209:6:0", + "src": "2178:5:0", "valueSize": 1 } }, { - "did": { - "declaration": 169, + "btsptr": { + "declaration": 157, "isOffset": false, "isSlot": false, - "src": "2196:3:0", + "src": "2164:6:0", "valueSize": 1 } }, { - "_data": { - "declaration": 153, + "btsptr": { + "declaration": 157, "isOffset": false, "isSlot": false, - "src": "2178:5:0", + "src": "2209:6:0", "valueSize": 1 } }, { - "btsptr": { - "declaration": 157, + "did": { + "declaration": 169, "isOffset": false, "isSlot": false, - "src": "2164:6:0", + "src": "2196:3:0", "valueSize": 1 } } @@ -16572,7 +16572,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "2227:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -17247,7 +17247,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "2498:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -17371,7 +17371,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "2685:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -17401,7 +17401,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2827, + "referencedDeclaration": 2884, "src": "2705:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_AFS_$1001", @@ -17475,7 +17475,7 @@ "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 2113, + "referencedDeclaration": 2170, "src": "2668:16:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", @@ -17961,7 +17961,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "2857:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18048,10 +18048,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "2717:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -18088,7 +18088,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "2927:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18118,7 +18118,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2827, + "referencedDeclaration": 2884, "src": "2947:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_AFS_$1001", @@ -18402,7 +18402,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "3034:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18518,7 +18518,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2827, + "referencedDeclaration": 2884, "src": "3108:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_AFS_$1001", @@ -18588,7 +18588,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 2097, + "referencedDeclaration": 2154, "src": "3083:16:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -18627,7 +18627,7 @@ "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2785, + "referencedDeclaration": 2842, "src": "3052:6:0", "typeDescriptions": { "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", @@ -18664,7 +18664,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "3144:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18982,10 +18982,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "3319:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -19405,10 +19405,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "3527:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -19607,7 +19607,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "3759:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -19642,7 +19642,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "3742:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -19689,7 +19689,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "3732:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -19954,7 +19954,7 @@ "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2785, + "referencedDeclaration": 2842, "src": "3784:6:0", "typeDescriptions": { "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", @@ -20072,7 +20072,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "3864:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -20119,7 +20119,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "3854:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -20932,7 +20932,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4283:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -20967,7 +20967,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "4266:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -21014,7 +21014,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "4256:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -21442,7 +21442,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4433:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -21471,7 +21471,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "4447:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -21508,7 +21508,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4480:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -21637,7 +21637,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4557:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -21672,7 +21672,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "4540:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -21719,7 +21719,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "4530:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -21774,7 +21774,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4929:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -21889,7 +21889,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4631:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -21924,7 +21924,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "4614:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -21971,7 +21971,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "4604:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -22110,10 +22110,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "4651:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -22150,7 +22150,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4740:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -22285,7 +22285,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "4802:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -22556,7 +22556,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "5061:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -22603,7 +22603,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "5051:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -22931,10 +22931,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "5692:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23003,7 +23003,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "5790:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -23033,7 +23033,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2827, + "referencedDeclaration": 2884, "src": "5810:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_AFS_$1001", @@ -23107,7 +23107,7 @@ "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 2113, + "referencedDeclaration": 2170, "src": "5773:16:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", @@ -23178,7 +23178,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "5873:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -23213,7 +23213,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2783, + "referencedDeclaration": 2840, "src": "5856:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -23260,7 +23260,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, + "referencedDeclaration": 2847, "src": "5846:9:0", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", @@ -23474,10 +23474,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "5891:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23514,7 +23514,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2796, + "referencedDeclaration": 2853, "src": "6015:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -23541,7 +23541,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "6027:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -24272,10 +24272,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "6418:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -24801,7 +24801,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "6735:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -25145,7 +25145,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "6902:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -25369,7 +25369,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "6399:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -25598,10 +25598,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2799, - 2800 + 2856, + 2857 ], - "referencedDeclaration": 2800, + "referencedDeclaration": 2857, "src": "7121:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -25969,7 +25969,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "7325:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -26158,7 +26158,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "7371:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -26500,7 +26500,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "7546:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -26839,7 +26839,7 @@ "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", - "referencedDeclaration": 2574, + "referencedDeclaration": 2631, "src": "7715:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", @@ -27063,7 +27063,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "7106:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -27594,7 +27594,7 @@ "lValueRequested": false, "memberName": "equal", "nodeType": "MemberAccess", - "referencedDeclaration": 2669, + "referencedDeclaration": 2726, "src": "8098:31:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", @@ -27887,7 +27887,7 @@ "name": "owner_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, + "referencedDeclaration": 1578, "src": "8179:6:0", "typeDescriptions": { "typeIdentifier": "t_address", @@ -27974,5 +27974,5 @@ }, "networks": {}, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-06T16:58:08.401Z" + "updatedAt": "2018-12-10T18:54:06.235Z" } \ No newline at end of file diff --git a/build/contracts/AraToken.json b/build/contracts/AraToken.json index 8989eab..18fb172 100644 --- a/build/contracts/AraToken.json +++ b/build/contracts/AraToken.json @@ -384,14 +384,14 @@ "type": "function" } ], - "bytecode": "0x60806040526040805190810160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525060039080519060200190620000519291906200022a565b503480156200005f57600080fd5b50620000983362000083633b9aca006200009e640100000000026401000000009004565b620000ae640100000000026401000000009004565b620002d9565b60006012600a0a82029050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1614151515620000d557600080fd5b620000fa816002546200020d64010000000002620016e9179091906401000000009004565b60028190555062000161816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200020d64010000000002620016e9179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600081830190508281101515156200022157fe5b80905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026d57805160ff19168380011785556200029e565b828001600101855582156200029e579182015b828111156200029d57825182559160200191906001019062000280565b5b509050620002ad9190620002b1565b5090565b620002d691905b80821115620002d2576000816000905550600101620002b8565b5090565b90565b61192d80620002e96000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101d557806323b872dd146102005780632e1a7d4d14610285578063313ce567146102ca57806354fd4d50146102f5578063661884631461038557806370a08231146103ea57806395d89b4114610441578063a9059cbb146104d1578063b6b55f2514610536578063d73dd6231461057b578063dd62ed3e146105e0578063f4f0e1ae14610657575b600080fd5b3480156100ec57600080fd5b506100f56106ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e7565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b506101ea610753565b6040518082815260200191505060405180910390f35b34801561020c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061075d565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b506102b0600480360381019080803590602001909291905050506107cb565b604051808215151515815260200191505060405180910390f35b3480156102d657600080fd5b506102df61094e565b6040518082815260200191505060405180910390f35b34801561030157600080fd5b5061030a610953565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561034a57808201518184015260208101905061032f565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039157600080fd5b506103d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109f1565b604051808215151515815260200191505060405180910390f35b3480156103f657600080fd5b5061042b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c83565b6040518082815260200191505060405180910390f35b34801561044d57600080fd5b50610456610ccb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561049657808201518184015260208101905061047b565b50505050905090810190601f1680156104c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104dd57600080fd5b5061051c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d04565b604051808215151515815260200191505060405180910390f35b34801561054257600080fd5b5061056160048036038101908080359060200190929190505050610d70565b604051808215151515815260200191505060405180910390f35b34801561058757600080fd5b506105c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ebc565b604051808215151515815260200191505060405180910390f35b3480156105ec57600080fd5b50610641600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f33565b6040518082815260200191505060405180910390f35b34801561066357600080fd5b50610698600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fba565b6040518082815260200191505060405180910390f35b6040805190810160405280600981526020017f41726120546f6b656e000000000000000000000000000000000000000000000081525081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261073333610c83565b031015151561074157600080fd5b61074b8383611003565b905092915050565b6000600254905090565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826107a986610c83565b03101515156107b757600080fd5b6107c28484846110f5565b90509392505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561081b57600080fd5b61086d82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56883600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a260019050919050565b601281565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515610b03576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b97565b610b1683826114b090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f415241000000000000000000000000000000000000000000000000000000000081525081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610d5033610c83565b0310151515610d5e57600080fd5b610d6883836114c9565b905092915050565b6000610d7b33610c83565b8211151515610d8957600080fd5b610ddb82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1583600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a260019050919050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f083385610f33565b8301610f1333610c83565b0310151515610f2157600080fd5b610f2b8383611705565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561114457600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156111cf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561120b57600080fd5b61125c826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112ef826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113c082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008282111515156114be57fe5b818303905092915050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561151857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561155457600080fd5b6115a5826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611638826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600081830190508281101515156116fc57fe5b80905092915050565b600061179682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019050929150505600a165627a7a7230582025c3ddea8ed9b02b1e1b051852b5d49e59e5b6c2f14b751107fbd1306b8b2b3c0029", - "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101d557806323b872dd146102005780632e1a7d4d14610285578063313ce567146102ca57806354fd4d50146102f5578063661884631461038557806370a08231146103ea57806395d89b4114610441578063a9059cbb146104d1578063b6b55f2514610536578063d73dd6231461057b578063dd62ed3e146105e0578063f4f0e1ae14610657575b600080fd5b3480156100ec57600080fd5b506100f56106ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e7565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b506101ea610753565b6040518082815260200191505060405180910390f35b34801561020c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061075d565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b506102b0600480360381019080803590602001909291905050506107cb565b604051808215151515815260200191505060405180910390f35b3480156102d657600080fd5b506102df61094e565b6040518082815260200191505060405180910390f35b34801561030157600080fd5b5061030a610953565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561034a57808201518184015260208101905061032f565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039157600080fd5b506103d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109f1565b604051808215151515815260200191505060405180910390f35b3480156103f657600080fd5b5061042b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c83565b6040518082815260200191505060405180910390f35b34801561044d57600080fd5b50610456610ccb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561049657808201518184015260208101905061047b565b50505050905090810190601f1680156104c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104dd57600080fd5b5061051c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d04565b604051808215151515815260200191505060405180910390f35b34801561054257600080fd5b5061056160048036038101908080359060200190929190505050610d70565b604051808215151515815260200191505060405180910390f35b34801561058757600080fd5b506105c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ebc565b604051808215151515815260200191505060405180910390f35b3480156105ec57600080fd5b50610641600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f33565b6040518082815260200191505060405180910390f35b34801561066357600080fd5b50610698600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fba565b6040518082815260200191505060405180910390f35b6040805190810160405280600981526020017f41726120546f6b656e000000000000000000000000000000000000000000000081525081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261073333610c83565b031015151561074157600080fd5b61074b8383611003565b905092915050565b6000600254905090565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826107a986610c83565b03101515156107b757600080fd5b6107c28484846110f5565b90509392505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561081b57600080fd5b61086d82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56883600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a260019050919050565b601281565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515610b03576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b97565b610b1683826114b090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f415241000000000000000000000000000000000000000000000000000000000081525081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610d5033610c83565b0310151515610d5e57600080fd5b610d6883836114c9565b905092915050565b6000610d7b33610c83565b8211151515610d8957600080fd5b610ddb82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1583600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a260019050919050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f083385610f33565b8301610f1333610c83565b0310151515610f2157600080fd5b610f2b8383611705565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561114457600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156111cf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561120b57600080fd5b61125c826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112ef826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113c082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008282111515156114be57fe5b818303905092915050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561151857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561155457600080fd5b6115a5826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611638826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600081830190508281101515156116fc57fe5b80905092915050565b600061179682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019050929150505600a165627a7a7230582025c3ddea8ed9b02b1e1b051852b5d49e59e5b6c2f14b751107fbd1306b8b2b3c0029", + "bytecode": "0x60806040526040805190810160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525060039080519060200190620000519291906200022a565b503480156200005f57600080fd5b50620000983362000083633b9aca006200009e640100000000026401000000009004565b620000ae640100000000026401000000009004565b620002d9565b60006012600a0a82029050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1614151515620000d557600080fd5b620000fa816002546200020d64010000000002620016e9179091906401000000009004565b60028190555062000161816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200020d64010000000002620016e9179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600081830190508281101515156200022157fe5b80905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026d57805160ff19168380011785556200029e565b828001600101855582156200029e579182015b828111156200029d57825182559160200191906001019062000280565b5b509050620002ad9190620002b1565b5090565b620002d691905b80821115620002d2576000816000905550600101620002b8565b5090565b90565b61192d80620002e96000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101d557806323b872dd146102005780632e1a7d4d14610285578063313ce567146102ca57806354fd4d50146102f5578063661884631461038557806370a08231146103ea57806395d89b4114610441578063a9059cbb146104d1578063b6b55f2514610536578063d73dd6231461057b578063dd62ed3e146105e0578063f4f0e1ae14610657575b600080fd5b3480156100ec57600080fd5b506100f56106ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e7565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b506101ea610753565b6040518082815260200191505060405180910390f35b34801561020c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061075d565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b506102b0600480360381019080803590602001909291905050506107cb565b604051808215151515815260200191505060405180910390f35b3480156102d657600080fd5b506102df61094e565b6040518082815260200191505060405180910390f35b34801561030157600080fd5b5061030a610953565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561034a57808201518184015260208101905061032f565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039157600080fd5b506103d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109f1565b604051808215151515815260200191505060405180910390f35b3480156103f657600080fd5b5061042b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c83565b6040518082815260200191505060405180910390f35b34801561044d57600080fd5b50610456610ccb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561049657808201518184015260208101905061047b565b50505050905090810190601f1680156104c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104dd57600080fd5b5061051c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d04565b604051808215151515815260200191505060405180910390f35b34801561054257600080fd5b5061056160048036038101908080359060200190929190505050610d70565b604051808215151515815260200191505060405180910390f35b34801561058757600080fd5b506105c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ebc565b604051808215151515815260200191505060405180910390f35b3480156105ec57600080fd5b50610641600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f33565b6040518082815260200191505060405180910390f35b34801561066357600080fd5b50610698600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fba565b6040518082815260200191505060405180910390f35b6040805190810160405280600981526020017f41726120546f6b656e000000000000000000000000000000000000000000000081525081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261073333610c83565b031015151561074157600080fd5b61074b8383611003565b905092915050565b6000600254905090565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826107a986610c83565b03101515156107b757600080fd5b6107c28484846110f5565b90509392505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561081b57600080fd5b61086d82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56883600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a260019050919050565b601281565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515610b03576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b97565b610b1683826114b090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f415241000000000000000000000000000000000000000000000000000000000081525081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610d5033610c83565b0310151515610d5e57600080fd5b610d6883836114c9565b905092915050565b6000610d7b33610c83565b8211151515610d8957600080fd5b610ddb82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1583600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a260019050919050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f083385610f33565b8301610f1333610c83565b0310151515610f2157600080fd5b610f2b8383611705565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561114457600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156111cf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561120b57600080fd5b61125c826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112ef826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113c082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008282111515156114be57fe5b818303905092915050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561151857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561155457600080fd5b6115a5826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611638826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600081830190508281101515156116fc57fe5b80905092915050565b600061179682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019050929150505600a165627a7a7230582087966655138753fa9185fea19dd854b0605a74ad7f1e59f7aeaae47ac64471ac0029", + "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101d557806323b872dd146102005780632e1a7d4d14610285578063313ce567146102ca57806354fd4d50146102f5578063661884631461038557806370a08231146103ea57806395d89b4114610441578063a9059cbb146104d1578063b6b55f2514610536578063d73dd6231461057b578063dd62ed3e146105e0578063f4f0e1ae14610657575b600080fd5b3480156100ec57600080fd5b506100f56106ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e7565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b506101ea610753565b6040518082815260200191505060405180910390f35b34801561020c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061075d565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b506102b0600480360381019080803590602001909291905050506107cb565b604051808215151515815260200191505060405180910390f35b3480156102d657600080fd5b506102df61094e565b6040518082815260200191505060405180910390f35b34801561030157600080fd5b5061030a610953565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561034a57808201518184015260208101905061032f565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039157600080fd5b506103d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109f1565b604051808215151515815260200191505060405180910390f35b3480156103f657600080fd5b5061042b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c83565b6040518082815260200191505060405180910390f35b34801561044d57600080fd5b50610456610ccb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561049657808201518184015260208101905061047b565b50505050905090810190601f1680156104c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104dd57600080fd5b5061051c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d04565b604051808215151515815260200191505060405180910390f35b34801561054257600080fd5b5061056160048036038101908080359060200190929190505050610d70565b604051808215151515815260200191505060405180910390f35b34801561058757600080fd5b506105c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ebc565b604051808215151515815260200191505060405180910390f35b3480156105ec57600080fd5b50610641600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f33565b6040518082815260200191505060405180910390f35b34801561066357600080fd5b50610698600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fba565b6040518082815260200191505060405180910390f35b6040805190810160405280600981526020017f41726120546f6b656e000000000000000000000000000000000000000000000081525081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261073333610c83565b031015151561074157600080fd5b61074b8383611003565b905092915050565b6000600254905090565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826107a986610c83565b03101515156107b757600080fd5b6107c28484846110f5565b90509392505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561081b57600080fd5b61086d82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56883600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a260019050919050565b601281565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515610b03576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b97565b610b1683826114b090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f415241000000000000000000000000000000000000000000000000000000000081525081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610d5033610c83565b0310151515610d5e57600080fd5b610d6883836114c9565b905092915050565b6000610d7b33610c83565b8211151515610d8957600080fd5b610ddb82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1583600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a260019050919050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f083385610f33565b8301610f1333610c83565b0310151515610f2157600080fd5b610f2b8383611705565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561114457600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156111cf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561120b57600080fd5b61125c826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112ef826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113c082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008282111515156114be57fe5b818303905092915050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561151857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561155457600080fd5b6115a5826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611638826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600081830190508281101515156116fc57fe5b80905092915050565b600061179682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019050929150505600a165627a7a7230582087966655138753fa9185fea19dd854b0605a74ad7f1e59f7aeaae47ac64471ac0029", "sourceMap": "57:2163:1:-;;;240:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;482:94;8:9:-1;5:2;;;30:1;27;20:12;5:2;482:94:1;509:45;515:10;527:26;542:10;527:14;;;:26;;;:::i;:::-;509:5;;;:45;;;:::i;:::-;57:2163;;580:113;643:7;234:2;674;:14;665:6;:23;658:30;;580:113;;;:::o;5666:248:8:-;5751:1;5739:8;:13;;;;5731:22;;;;;;;;5774:25;5791:7;5774:12;;:16;;;;;;:25;;;;;:::i;:::-;5759:12;:40;;;;5827:32;5851:7;5827:9;:19;5837:8;5827:19;;;;;;;;;;;;;;;;:23;;;;;;:32;;;;;:::i;:::-;5805:9;:19;5815:8;5805:19;;;;;;;;;;;;;;;:54;;;;5891:8;5870:39;;5887:1;5870:39;;;5901:7;5870:39;;;;;;;;;;;;;;;;;;5666:248;;:::o;1238:128:10:-;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;57:2163:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "57:2163:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;111:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;111:42:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;111:42:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1505:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1505:192:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;792:83:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;792:83:8;;;;;;;;;;;;;;;;;;;;;;;1701:230:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1701:230:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1061:252;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1061:252:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;199:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;199:37:1;;;;;;;;;;;;;;;;;;;;;;;240:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:30:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;240:30:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4900:436:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4900:436:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1077:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1077:100:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;157:38:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;157:38:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;157:38:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1317:184:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;807:250;;8:9:-1;5:2;;;30:1;27;20:12;5:2;807:250:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1935:283;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1935:283:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1496:154:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1496:154:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;697:106:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;697:106:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;111:42;;;;;;;;;;;;;;;;;;;;:::o;1505:192::-;1572:4;1626:9;:21;1636:10;1626:21;;;;;;;;;;;;;;;;1616:6;1592:21;1602:10;1592:9;:21::i;:::-;:30;:55;;1584:64;;;;;;;;1661:31;1675:8;1685:6;1661:13;:31::i;:::-;1654:38;;1505:192;;;;:::o;792:83:8:-;836:7;858:12;;851:19;;792:83;:::o;1701:230:1:-;1807:4;1858:9;:16;1868:5;1858:16;;;;;;;;;;;;;;;;1848:6;1829:16;1839:5;1829:9;:16::i;:::-;:25;:45;;1821:54;;;;;;;;1888:38;1907:5;1914:3;1919:6;1888:18;:38::i;:::-;1881:45;;1701:230;;;;;:::o;1061:252::-;1113:4;1143:9;:21;1153:10;1143:21;;;;;;;;;;;;;;;;1133:6;:31;;1125:40;;;;;;;;1196:33;1222:6;1196:9;:21;1206:10;1196:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;1172:9;:21;1182:10;1172:21;;;;;;;;;;;;;;;:57;;;;1249:10;1240:51;;;1261:6;1269:9;:21;1279:10;1269:21;;;;;;;;;;;;;;;;1240:51;;;;;;;;;;;;;;;;;;;;;;;;1304:4;1297:11;;1061:252;;;:::o;199:37::-;234:2;199:37;:::o;240:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4900:436:8:-;5006:4;5020:16;5039:8;:20;5048:10;5039:20;;;;;;;;;;;;;;;:30;5060:8;5039:30;;;;;;;;;;;;;;;;5020:49;;5099:8;5079:16;:28;;5075:167;;;5150:1;5117:8;:20;5126:10;5117:20;;;;;;;;;;;;;;;:30;5138:8;5117:30;;;;;;;;;;;;;;;:34;;;;5075:167;;;5205:30;5218:16;5205:8;:12;;:30;;;;:::i;:::-;5172:8;:20;5181:10;5172:20;;;;;;;;;;;;;;;:30;5193:8;5172:30;;;;;;;;;;;;;;;:63;;;;5075:167;5273:8;5252:62;;5261:10;5252:62;;;5283:8;:20;5292:10;5283:20;;;;;;;;;;;;;;;:30;5304:8;5283:30;;;;;;;;;;;;;;;;5252:62;;;;;;;;;;;;;;;;;;5327:4;5320:11;;4900:436;;;;;:::o;1077:100::-;1133:7;1155:9;:17;1165:6;1155:17;;;;;;;;;;;;;;;;1148:24;;1077:100;;;:::o;157:38:1:-;;;;;;;;;;;;;;;;;;;;:::o;1317:184::-;1380:4;1434:9;:21;1444:10;1434:21;;;;;;;;;;;;;;;;1424:6;1400:21;1410:10;1400:9;:21::i;:::-;:30;:55;;1392:64;;;;;;;;1469:27;1484:3;1489:6;1469:14;:27::i;:::-;1462:34;;1317:184;;;;:::o;807:250::-;858:4;888:21;898:10;888:9;:21::i;:::-;878:6;:31;;870:40;;;;;;;;941:33;967:6;941:9;:21;951:10;941:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;917:9;:21;927:10;917:21;;;;;;;;;;;;;;;:57;;;;993:10;985:50;;;1005:6;1013:9;:21;1023:10;1013:21;;;;;;;;;;;;;;;;985:50;;;;;;;;;;;;;;;;;;;;;;;;1048:4;1041:11;;807:250;;;:::o;1935:283::-;2036:4;2133:9;:21;2143:10;2133:21;;;;;;;;;;;;;;;;2097:31;2107:10;2119:8;2097:9;:31::i;:::-;2083:11;:45;2058:21;2068:10;2058:9;:21::i;:::-;:71;:96;;2050:105;;;;;;;;2168:45;2191:8;2201:11;2168:22;:45::i;:::-;2161:52;;1935:283;;;;:::o;1496:154:8:-;1595:7;1619:8;:16;1628:6;1619:16;;;;;;;;;;;;;;;:26;1636:8;1619:26;;;;;;;;;;;;;;;;1612:33;;1496:154;;;;:::o;697:106:1:-;759:7;781:9;:17;791:6;781:17;;;;;;;;;;;;;;;;774:24;;697:106;;;:::o;2748:189:8:-;2815:4;2860:6;2827:8;:20;2836:10;2827:20;;;;;;;;;;;;;;;:30;2848:8;2827:30;;;;;;;;;;;;;;;:39;;;;2898:8;2877:38;;2886:10;2877:38;;;2908:6;2877:38;;;;;;;;;;;;;;;;;;2928:4;2921:11;;2748:189;;;;:::o;3212:478::-;3318:4;3350:9;:16;3360:5;3350:16;;;;;;;;;;;;;;;;3340:6;:26;;3332:35;;;;;;;;3391:8;:15;3400:5;3391:15;;;;;;;;;;;;;;;:27;3407:10;3391:27;;;;;;;;;;;;;;;;3381:6;:37;;3373:46;;;;;;;;3448:1;3433:17;;:3;:17;;;;3425:26;;;;;;;;3477:28;3498:6;3477:9;:16;3487:5;3477:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;3458:9;:16;3468:5;3458:16;;;;;;;;;;;;;;;:47;;;;3528:26;3547:6;3528:9;:14;3538:3;3528:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;3511:9;:14;3521:3;3511:14;;;;;;;;;;;;;;;:43;;;;3590:39;3622:6;3590:8;:15;3599:5;3590:15;;;;;;;;;;;;;;;:27;3606:10;3590:27;;;;;;;;;;;;;;;;:31;;:39;;;;:::i;:::-;3560:8;:15;3569:5;3560:15;;;;;;;;;;;;;;;:27;3576:10;3560:27;;;;;;;;;;;;;;;:69;;;;3656:3;3640:28;;3649:5;3640:28;;;3661:6;3640:28;;;;;;;;;;;;;;;;;;3681:4;3674:11;;3212:478;;;;;:::o;1060:116:10:-;1120:7;1148:2;1142;:8;;1135:16;;;;;;1169:2;1164;:7;1157:14;;1060:116;;;;:::o;1804:326:8:-;1867:4;1897:9;:21;1907:10;1897:21;;;;;;;;;;;;;;;;1887:6;:31;;1879:40;;;;;;;;1948:1;1933:17;;:3;:17;;;;1925:26;;;;;;;;1982:33;2008:6;1982:9;:21;1992:10;1982:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;1958:9;:21;1968:10;1958:21;;;;;;;;;;;;;;;:57;;;;2038:26;2057:6;2038:9;:14;2048:3;2038:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;2021:9;:14;2031:3;2021:14;;;;;;;;;;;;;;;:43;;;;2096:3;2075:33;;2084:10;2075:33;;;2101:6;2075:33;;;;;;;;;;;;;;;;;;2121:4;2114:11;;1804:326;;;;:::o;1238:128:10:-;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;4143:299:8:-;4244:4;4299:47;4334:11;4299:8;:20;4308:10;4299:20;;;;;;;;;;;;;;;:30;4320:8;4299:30;;;;;;;;;;;;;;;;:34;;:47;;;;:::i;:::-;4258:8;:20;4267:10;4258:20;;;;;;;;;;;;;;;:30;4279:8;4258:30;;;;;;;;;;;;;;;:89;;;;4379:8;4358:62;;4367:10;4358:62;;;4389:8;:20;4398:10;4389:20;;;;;;;;;;;;;;;:30;4410:8;4389:30;;;;;;;;;;;;;;;;4358:62;;;;;;;;;;;;;;;;;;4433:4;4426:11;;4143:299;;;;:::o", "source": "pragma solidity ^0.4.24;\n\nimport \"./StandardToken.sol\";\n\ncontract AraToken is StandardToken {\n\n // metadata\n string public constant name = \"Ara Token\";\n string public constant symbol = \"ARA\";\n uint256 public constant decimals = 18;\n string public version = \"1.0\";\n\n\n mapping (address => uint256) private deposits_;\n\n event Deposit(address indexed from, uint256 value, uint256 total);\n event Withdraw(address indexed to, uint256 value, uint256 total);\n\n // constructor\n constructor() public {\n _mint(msg.sender, formatDecimals(1000000000)); // 1,000,000,000\n }\n\n function formatDecimals(uint256 _value) internal pure returns (uint256) {\n return _value * 10 ** decimals;\n }\n\n function amountDeposited(address _owner) public view returns (uint256) {\n return deposits_[_owner];\n }\n\n function deposit(uint256 _value) external returns (bool) {\n require(_value <= balanceOf(msg.sender));\n\n deposits_[msg.sender] = deposits_[msg.sender].add(_value);\n emit Deposit(msg.sender, _value, deposits_[msg.sender]);\n return true;\n }\n\n function withdraw(uint256 _value) external returns (bool) {\n require(_value <= deposits_[msg.sender]);\n\n deposits_[msg.sender] = deposits_[msg.sender].sub(_value);\n emit Withdraw(msg.sender, _value, deposits_[msg.sender]);\n return true;\n }\n\n function transfer(address _to, uint256 _value) public returns (bool) {\n require(balanceOf(msg.sender) - _value >= deposits_[msg.sender]);\n return super.transfer(_to, _value);\n }\n\n function approve(address _spender, uint256 _value) public returns (bool) {\n require(balanceOf(msg.sender) - _value >= deposits_[msg.sender]);\n return super.approve(_spender, _value);\n }\n\n function transferFrom(\n address _from,\n address _to,\n uint256 _value\n )\n public\n returns (bool)\n {\n require(balanceOf(_from) - _value >= deposits_[_from]);\n return super.transferFrom(_from, _to, _value);\n }\n\n function increaseApproval(\n address _spender,\n uint256 _addedValue\n )\n public\n returns (bool)\n {\n require(balanceOf(msg.sender) - (_addedValue + allowance(msg.sender, _spender)) >= deposits_[msg.sender]);\n return super.increaseApproval(_spender, _addedValue);\n }\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/AraToken.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/AraToken.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/AraToken.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/AraToken.sol", "exportedSymbols": { "AraToken": [ 1289 @@ -412,7 +412,7 @@ "src": "0:24:1" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/StandardToken.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/StandardToken.sol", "file": "./StandardToken.sol", "id": 1004, "nodeType": "ImportDirective", @@ -4329,7 +4329,7 @@ "src": "0:2221:1" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/AraToken.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/AraToken.sol", "exportedSymbols": { "AraToken": [ 1289 @@ -4350,7 +4350,7 @@ "src": "0:24:1" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/StandardToken.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/StandardToken.sol", "file": "./StandardToken.sol", "id": 1004, "nodeType": "ImportDirective", @@ -8498,8 +8498,38 @@ "links": {}, "address": "0x53d82a040cb2f96d91621964ae40079ef55e3233", "transactionHash": "0x9bcff0c23d2659e5df0609aee3e40b7082ed4dfdb0d55d205a66bd10db7aa601" + }, + "1544468034350": { + "events": {}, + "links": {}, + "address": "0x53d82a040cb2f96d91621964ae40079ef55e3233", + "transactionHash": "0x3dc6f17651e0e635ef1ace79c99d2f2f2d05345fc47f2fd46bcc4f104bd135d7" + }, + "1544468256515": { + "events": {}, + "links": {}, + "address": "0x3060364a97fb2a498ab69ca593cfa19b1385c44c", + "transactionHash": "0x31ad11712db81e7ca4160cf8f36ebe1a5bae1f16f7acd6c6981ee6b785273e8b" + }, + "1544468823500": { + "events": {}, + "links": {}, + "address": "0x53d82a040cb2f96d91621964ae40079ef55e3233", + "transactionHash": "0x3dc6f17651e0e635ef1ace79c99d2f2f2d05345fc47f2fd46bcc4f104bd135d7" + }, + "1544468892840": { + "events": {}, + "links": {}, + "address": "0x53d82a040cb2f96d91621964ae40079ef55e3233", + "transactionHash": "0x3dc6f17651e0e635ef1ace79c99d2f2f2d05345fc47f2fd46bcc4f104bd135d7" + }, + "1544469700807": { + "events": {}, + "links": {}, + "address": "0x53d82a040cb2f96d91621964ae40079ef55e3233", + "transactionHash": "0x3dc6f17651e0e635ef1ace79c99d2f2f2d05345fc47f2fd46bcc4f104bd135d7" } }, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-04T16:32:09.564Z" + "updatedAt": "2018-12-10T19:21:50.097Z" } \ No newline at end of file diff --git a/build/contracts/BytesLib.json b/build/contracts/BytesLib.json index 361bf14..1fdf020 100644 --- a/build/contracts/BytesLib.json +++ b/build/contracts/BytesLib.json @@ -5163,5 +5163,5 @@ }, "networks": {}, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-03T22:39:45.713Z" + "updatedAt": "2018-12-10T18:54:06.218Z" } \ No newline at end of file diff --git a/build/contracts/ERC20.json b/build/contracts/ERC20.json index 3e49757..04ee2b4 100644 --- a/build/contracts/ERC20.json +++ b/build/contracts/ERC20.json @@ -180,9 +180,9 @@ "sourceMap": "", "deployedSourceMap": "", "source": "pragma solidity ^0.4.24;\n\n/**\n * NOTE: This contract will be removed once openzeppelin-solidity releases this code as an official release.\n */\n\n/**\n * @title ERC20 interface\n * @dev see https://github.com/ethereum/EIPs/issues/20\n */\ncontract ERC20 {\n function totalSupply() public view returns (uint256);\n\n function balanceOf(address _who) public view returns (uint256);\n\n function allowance(address _owner, address _spender)\n public view returns (uint256);\n\n function transfer(address _to, uint256 _value) public returns (bool);\n\n function approve(address _spender, uint256 _value)\n public returns (bool);\n\n function transferFrom(address _from, address _to, uint256 _value)\n public returns (bool);\n\n event Transfer(\n address indexed from,\n address indexed to,\n uint256 value\n );\n\n event Approval(\n address indexed owner,\n address indexed spender,\n uint256 value\n );\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/ERC20.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/ERC20.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/ERC20.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/ERC20.sol", "exportedSymbols": { "ERC20": [ 1358 @@ -1016,7 +1016,7 @@ "src": "0:906:2" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/ERC20.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/ERC20.sol", "exportedSymbols": { "ERC20": [ 1358 @@ -1855,5 +1855,5 @@ }, "networks": {}, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-03T22:39:45.703Z" + "updatedAt": "2018-12-10T18:54:06.200Z" } \ No newline at end of file diff --git a/build/contracts/Library.json b/build/contracts/Library.json index 41a6c7b..c5a797f 100644 --- a/build/contracts/Library.json +++ b/build/contracts/Library.json @@ -99,14 +99,14 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405160208061069b83398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506105d7806100c46000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c2bb965146100675780631debd6ad146100a657806396cd472d14610101578063e76630791461014e575b600080fd5b34801561007357600080fd5b506100a4600480360381019080803560001916906020019092919080356000191690602001909291905050506101a5565b005b3480156100b257600080fd5b506100e36004803603810190808035600019169060200190929190803561ffff169060200190929190505050610463565b60405180826000191660001916815260200191505060405180910390f35b34801561010d57600080fd5b506101306004803603810190808035600019169060200190929190505050610550565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561015a57600080fd5b50610163610586565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600081600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392d00a4a826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561024157600080fd5b505af1158015610255573d6000803e3d6000fd5b505050506040513d602081101561026b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561031e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50726f7879206e6f7420617574686f72697a65642e000000000000000000000081525060200191505060405180910390fd5b60016000856000191660001916815260200190815260200160002060000160009054906101000a900461ffff16915060006001026000191660016000866000191660001916815260200190815260200160002060010160008461ffff1661ffff168152602001908152602001600020546000191614151561039b57fe5b8260016000866000191660001916815260200190815260200160002060010160008461ffff1661ffff1681526020019081526020016000208160001916905550600160008560001916600019168152602001908152602001600020600001600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff1602179055505082600019167ff63bf098562563b35cf251263155341e1df292b50064b5c4e5c6861c28a3044c60405160405180910390a250505050565b600060016000846000191660001916815260200190815260200160002060000160009054906101000a900461ffff1661ffff168261ffff16101515610510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e64657820646f6573206e6f742065786973742e000000000000000000000081525060200191505060405180910390fd5b60016000846000191660001916815260200190815260200160002060010160008361ffff1661ffff16815260200190815260200160002054905092915050565b600060016000836000191660001916815260200190815260200160002060000160009054906101000a900461ffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a723058200bc8b5fdee23d3a29384a80a222a631e4ac1bca330183781b365e40c09e7a50e0029", - "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c2bb965146100675780631debd6ad146100a657806396cd472d14610101578063e76630791461014e575b600080fd5b34801561007357600080fd5b506100a4600480360381019080803560001916906020019092919080356000191690602001909291905050506101a5565b005b3480156100b257600080fd5b506100e36004803603810190808035600019169060200190929190803561ffff169060200190929190505050610463565b60405180826000191660001916815260200191505060405180910390f35b34801561010d57600080fd5b506101306004803603810190808035600019169060200190929190505050610550565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561015a57600080fd5b50610163610586565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600081600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392d00a4a826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561024157600080fd5b505af1158015610255573d6000803e3d6000fd5b505050506040513d602081101561026b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561031e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50726f7879206e6f7420617574686f72697a65642e000000000000000000000081525060200191505060405180910390fd5b60016000856000191660001916815260200190815260200160002060000160009054906101000a900461ffff16915060006001026000191660016000866000191660001916815260200190815260200160002060010160008461ffff1661ffff168152602001908152602001600020546000191614151561039b57fe5b8260016000866000191660001916815260200190815260200160002060010160008461ffff1661ffff1681526020019081526020016000208160001916905550600160008560001916600019168152602001908152602001600020600001600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff1602179055505082600019167ff63bf098562563b35cf251263155341e1df292b50064b5c4e5c6861c28a3044c60405160405180910390a250505050565b600060016000846000191660001916815260200190815260200160002060000160009054906101000a900461ffff1661ffff168261ffff16101515610510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e64657820646f6573206e6f742065786973742e000000000000000000000081525060200191505060405180910390fd5b60016000846000191660001916815260200190815260200160002060010160008361ffff1661ffff16815260200190815260200160002054905092915050565b600060016000836000191660001916815260200190815260200160002060000160009054906101000a900461ffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a723058200bc8b5fdee23d3a29384a80a222a631e4ac1bca330183781b365e40c09e7a50e0029", + "bytecode": "0x608060405234801561001057600080fd5b5060405160208061069b83398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506105d7806100c46000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c2bb965146100675780631debd6ad146100a657806396cd472d14610101578063e76630791461014e575b600080fd5b34801561007357600080fd5b506100a4600480360381019080803560001916906020019092919080356000191690602001909291905050506101a5565b005b3480156100b257600080fd5b506100e36004803603810190808035600019169060200190929190803561ffff169060200190929190505050610463565b60405180826000191660001916815260200191505060405180910390f35b34801561010d57600080fd5b506101306004803603810190808035600019169060200190929190505050610550565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561015a57600080fd5b50610163610586565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600081600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392d00a4a826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561024157600080fd5b505af1158015610255573d6000803e3d6000fd5b505050506040513d602081101561026b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561031e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50726f7879206e6f7420617574686f72697a65642e000000000000000000000081525060200191505060405180910390fd5b60016000856000191660001916815260200190815260200160002060000160009054906101000a900461ffff16915060006001026000191660016000866000191660001916815260200190815260200160002060010160008461ffff1661ffff168152602001908152602001600020546000191614151561039b57fe5b8260016000866000191660001916815260200190815260200160002060010160008461ffff1661ffff1681526020019081526020016000208160001916905550600160008560001916600019168152602001908152602001600020600001600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff1602179055505082600019167ff63bf098562563b35cf251263155341e1df292b50064b5c4e5c6861c28a3044c60405160405180910390a250505050565b600060016000846000191660001916815260200190815260200160002060000160009054906101000a900461ffff1661ffff168261ffff16101515610510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e64657820646f6573206e6f742065786973742e000000000000000000000081525060200191505060405180910390fd5b60016000846000191660001916815260200190815260200160002060010160008361ffff1661ffff16815260200190815260200160002054905092915050565b600060016000836000191660001916815260200190815260200160002060000160009054906101000a900461ffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820f1b49ee991e94b88dda6016943efb53209aac863864349c397238c517d6a02c20029", + "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c2bb965146100675780631debd6ad146100a657806396cd472d14610101578063e76630791461014e575b600080fd5b34801561007357600080fd5b506100a4600480360381019080803560001916906020019092919080356000191690602001909291905050506101a5565b005b3480156100b257600080fd5b506100e36004803603810190808035600019169060200190929190803561ffff169060200190929190505050610463565b60405180826000191660001916815260200191505060405180910390f35b34801561010d57600080fd5b506101306004803603810190808035600019169060200190929190505050610550565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561015a57600080fd5b50610163610586565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600081600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392d00a4a826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561024157600080fd5b505af1158015610255573d6000803e3d6000fd5b505050506040513d602081101561026b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561031e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50726f7879206e6f7420617574686f72697a65642e000000000000000000000081525060200191505060405180910390fd5b60016000856000191660001916815260200190815260200160002060000160009054906101000a900461ffff16915060006001026000191660016000866000191660001916815260200190815260200160002060010160008461ffff1661ffff168152602001908152602001600020546000191614151561039b57fe5b8260016000866000191660001916815260200190815260200160002060010160008461ffff1661ffff1681526020019081526020016000208160001916905550600160008560001916600019168152602001908152602001600020600001600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff1602179055505082600019167ff63bf098562563b35cf251263155341e1df292b50064b5c4e5c6861c28a3044c60405160405180910390a250505050565b600060016000846000191660001916815260200190815260200160002060000160009054906101000a900461ffff1661ffff168261ffff16101515610510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e64657820646f6573206e6f742065786973742e000000000000000000000081525060200191505060405180910390fd5b60016000846000191660001916815260200190815260200160002060010160008361ffff1661ffff16815260200190815260200160002054905092915050565b600060016000836000191660001916815260200190815260200160002060000160009054906101000a900461ffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820f1b49ee991e94b88dda6016943efb53209aac863864349c397238c517d6a02c20029", "sourceMap": "52:1373:3:-;;;370:105;8:9:-1;5:2;;;30:1;27;20:12;5:2;370:105:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;423:10;414:6;;:19;;;;;;;;;;;;;;;;;;460:9;439;;:31;;;;;;;;;;;;;;;;;;370:105;52:1373;;;;;;", "deployedSourceMap": "52:1373:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:337;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:337:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:229;;8:9:-1;5:2;;;30:1;27;20:12;5:2;853:229:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;728:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;728:121:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;73:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;73:21:3;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:337;1184:14;1166:10;648:9;;;;;;;;;;;:25;;;674:10;648:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;648:37:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;648:37:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;648:37:3;;;;;;;;;;;;;;;;634:51;;:10;:51;;;625:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1201:10;:21;1212:9;1201:21;;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;1184:43;;1291:1;1283:10;;1241:52;;;:10;:21;1252:9;1241:21;;;;;;;;;;;;;;;;;:29;;:38;1271:7;1241:38;;;;;;;;;;;;;;;;:52;;;;1233:61;;;;;;1341:10;1300;:21;1311:9;1300:21;;;;;;;;;;;;;;;;;:29;;:38;1330:7;1300:38;;;;;;;;;;;;;;;:51;;;;;;;1357:10;:21;1368:9;1357:21;;;;;;;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1407:10;1396:22;;;;;;;;;;;;;1086:337;;;;:::o;853:229::-;932:17;975:10;:21;986:9;975:21;;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;966:35;;:6;:35;;;957:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1040:10;:21;1051:9;1040:21;;;;;;;;;;;;;;;;;:29;;:37;1070:6;1040:37;;;;;;;;;;;;;;;;1033:44;;853:229;;;;:::o;728:121::-;792:11;818:10;:21;829:9;818:21;;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;811:33;;728:121;;;:::o;73:21::-;;;;;;;;;;;;;:::o", "source": "pragma solidity ^0.4.24;\n\nimport \"./Registry.sol\";\n\ncontract Library {\n address public owner_;\n mapping (bytes32 => Lib) private libraries_; // hashed methodless owner did => library\n Registry registry_;\n\n struct Lib {\n uint16 size;\n mapping (uint16 => bytes32) content; // index => contentId (unhashed)\n }\n\n event AddedToLib(bytes32 indexed _contentId);\n\n constructor(address _registry) public {\n owner_ = msg.sender;\n registry_ = Registry(_registry);\n }\n\n modifier restricted() {\n require (msg.sender == owner_, \"Sender not authorized.\");\n _;\n }\n\n modifier fromProxy(bytes32 _contentId) {\n require (msg.sender == registry_.getProxyAddress(_contentId), \"Proxy not authorized.\");\n _;\n }\n\n function getLibrarySize(bytes32 _identity) public view returns (uint16 size) {\n return libraries_[_identity].size;\n }\n\n function getLibraryItem(bytes32 _identity, uint16 _index) public view returns (bytes32 contentId) {\n require (_index < libraries_[_identity].size, \"Index does not exist.\");\n return libraries_[_identity].content[_index];\n }\n\n function addLibraryItem(bytes32 _identity, bytes32 _contentId) public fromProxy(_contentId) {\n uint16 libSize = libraries_[_identity].size;\n assert (libraries_[_identity].content[libSize] == bytes32(0));\n libraries_[_identity].content[libSize] = _contentId;\n libraries_[_identity].size++;\n emit AddedToLib(_contentId);\n }\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Library.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Library.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Library.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Library.sol", "exportedSymbols": { "Library": [ 1517 @@ -127,7 +127,7 @@ "src": "0:24:3" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Registry.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Registry.sol", "file": "./Registry.sol", "id": 1361, "nodeType": "ImportDirective", @@ -2143,7 +2143,7 @@ "src": "0:1426:3" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Library.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Library.sol", "exportedSymbols": { "Library": [ 1517 @@ -2164,7 +2164,7 @@ "src": "0:24:3" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Registry.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Registry.sol", "file": "./Registry.sol", "id": 1361, "nodeType": "ImportDirective", @@ -4411,8 +4411,38 @@ "links": {}, "address": "0x6ed6d0e84d9bcd113775af6a36d8967ca24f3c08", "transactionHash": "0x7ed82ad99e18b6858e6138d1eb1ed89fccfd9c97f52e9ccdd791066db4322b53" + }, + "1544468034350": { + "events": {}, + "links": {}, + "address": "0x6ed6d0e84d9bcd113775af6a36d8967ca24f3c08", + "transactionHash": "0x3b418825a87c610b4fb3398861d5c2b0d859e3072bd6bea892677f0a2d5f639c" + }, + "1544468256515": { + "events": {}, + "links": {}, + "address": "0xa6af09a9c3caac172ab508ccef807dc179ec1904", + "transactionHash": "0x547648d0e08da34dddcf9d25b0044be8c641dee1e0258cd77c5374147bfc4faa" + }, + "1544468823500": { + "events": {}, + "links": {}, + "address": "0x6ed6d0e84d9bcd113775af6a36d8967ca24f3c08", + "transactionHash": "0x3b418825a87c610b4fb3398861d5c2b0d859e3072bd6bea892677f0a2d5f639c" + }, + "1544468892840": { + "events": {}, + "links": {}, + "address": "0x6ed6d0e84d9bcd113775af6a36d8967ca24f3c08", + "transactionHash": "0x3b418825a87c610b4fb3398861d5c2b0d859e3072bd6bea892677f0a2d5f639c" + }, + "1544469700807": { + "events": {}, + "links": {}, + "address": "0x6ed6d0e84d9bcd113775af6a36d8967ca24f3c08", + "transactionHash": "0x3b418825a87c610b4fb3398861d5c2b0d859e3072bd6bea892677f0a2d5f639c" } }, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-04T16:32:09.558Z" + "updatedAt": "2018-12-10T19:21:50.085Z" } \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index 98a2d81..6163e80 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -64,14 +64,14 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a723058209614472d628984b5f6534302c6c9a54e73763e4f08d4f74cbc02c5e6e2ebe89d0029", - "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a723058209614472d628984b5f6534302c6c9a54e73763e4f08d4f74cbc02c5e6e2ebe89d0029", + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a72305820b64fffbfa9364213508c33f14bef0fe74aaeaab74d782b3679441820017b06e30029", + "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a72305820b64fffbfa9364213508c33f14bef0fe74aaeaab74d782b3679441820017b06e30029", "sourceMap": "26:480:4:-;;;115:50;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:50:4;150:10;142:5;;:18;;;;;;;;;;;;;;;;;;26:480;;;;;;", "deployedSourceMap": "26:480:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:165:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;74:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;74:36:4;;;;;;;;;;;;;;;;;;;;;;;50:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50:20:4;;;;;;;;;;;;;;;;;;;;;;;;;;;232:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;232:103:4;;;;;;;;;;;;;;;;;;;;;;;;;;339:165;401:19;215:5;;;;;;;;;;;201:19;;:10;:19;;;197:26;;;434:11;401:45;;452:8;:21;;;474:24;;452:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;452:47:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;452:47:4;;;;197:26;339:165;;:::o;74:36::-;;;;:::o;50:20::-;;;;;;;;;;;;;:::o;232:103::-;215:5;;;;;;;;;;;201:19;;:10;:19;;;197:26;;;321:9;294:24;:36;;;;197:26;232:103;:::o", "source": "pragma solidity ^0.4.23;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Migrations.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Migrations.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Migrations.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ 1574 @@ -721,7 +721,7 @@ "src": "0:507:4" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Migrations.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ 1574 @@ -1602,8 +1602,38 @@ "links": {}, "address": "0xef22768b7ab54924f4a6aabaa98af7ca53d56198", "transactionHash": "0xbfd027677e843c0ff12fde5f5aadd6e4440d1ab2cdcd99cbc43f2432a90c11e1" + }, + "1544468034350": { + "events": {}, + "links": {}, + "address": "0x7b0470a44c4e7e73e418b2bd9c6bf5f7945ec27c", + "transactionHash": "0x26e90c55ca56c76f89ac55d3fd9527ec3fe520d2d891ba3d28fd2fe6931b26a6" + }, + "1544468256515": { + "events": {}, + "links": {}, + "address": "0xbe3c688e04fcef18fb6ce4038fad19b0725fc0ce", + "transactionHash": "0x833093236251b30ce4616064c23afb3fc5bf9712c77b61e8180e0298c24fa3e4" + }, + "1544468823500": { + "events": {}, + "links": {}, + "address": "0x556e8c54e4d2188b3f929aeca730b83008472e71", + "transactionHash": "0x86f7e906550e2b0e63af0f405282b1d09be40d4b253f90f29e593a4b47aeeade" + }, + "1544468892840": { + "events": {}, + "links": {}, + "address": "0x519b86c2e1d4be7bbee87f173a42a61c99a289d4", + "transactionHash": "0x9be9f9f5f55ce1d6e2b23f7e16b55f5be72e858c73b39507b4151bab0354aa56" + }, + "1544469700807": { + "events": {}, + "links": {}, + "address": "0x4a546651b8bc5d8d9704e5f11363518d47c755a2", + "transactionHash": "0x46ad745bf28e3de08f318d50275a489686d36a00463c9857fe15b6b1be4f1245" } }, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-04T16:32:40.752Z" + "updatedAt": "2018-12-10T19:22:18.621Z" } \ No newline at end of file diff --git a/build/contracts/Ownable.json b/build/contracts/Ownable.json index 7ddea11..81c83dc 100644 --- a/build/contracts/Ownable.json +++ b/build/contracts/Ownable.json @@ -118,14 +118,14 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610aa3806100206000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634e1d009f146100725780638e5aafe1146100b557806399d20bb1146100cc578063e766307914610115578063fc1c34e41461016c575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610183565b005b3480156100c157600080fd5b506100ca610472565b005b3480156100d857600080fd5b506100fb6004803603810190808035600019169060200190929190505050610764565b604051808215151515815260200191505060405180910390f35b34801561012157600080fd5b5061012a610784565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017857600080fd5b506101816107a9565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101e057600080fd5b816001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156102755780518252602082019150602081019050602083039250610250565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561033a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561040a57805182526020820191506020810190506020830392506103e5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006001600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561050857805182526020820191506020810190506020830392506104e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515156105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4f776e657273686970207265717565737420616c72656164792061637469766581526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610684578051825260208201915060208101905060208303925061065f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506001806000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd5b906f2d3dfa8cf0ea788d4ad6e99ebd482d6134c3405e1a5faa5da891cda8560405160405180910390a350565b60016020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000336001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610840578051825260208201915060208101905060208303925061081b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156109955780518252602082019150602081019050602083039250610970565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1dc90b1ce875ea53ce4f7fb2036478f4ddfef57ec243f3fb5a9d81faf7dac5f460405160405180910390a350505600a165627a7a72305820c59bdf98f297c29665ccfb830812debea705b914af31fa18187c2574db62c7830029", - "deployedBytecode": "0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634e1d009f146100725780638e5aafe1146100b557806399d20bb1146100cc578063e766307914610115578063fc1c34e41461016c575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610183565b005b3480156100c157600080fd5b506100ca610472565b005b3480156100d857600080fd5b506100fb6004803603810190808035600019169060200190929190505050610764565b604051808215151515815260200191505060405180910390f35b34801561012157600080fd5b5061012a610784565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017857600080fd5b506101816107a9565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101e057600080fd5b816001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156102755780518252602082019150602081019050602083039250610250565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561033a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561040a57805182526020820191506020810190506020830392506103e5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006001600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561050857805182526020820191506020810190506020830392506104e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515156105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4f776e657273686970207265717565737420616c72656164792061637469766581526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610684578051825260208201915060208101905060208303925061065f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506001806000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd5b906f2d3dfa8cf0ea788d4ad6e99ebd482d6134c3405e1a5faa5da891cda8560405160405180910390a350565b60016020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000336001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610840578051825260208201915060208101905060208303925061081b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156109955780518252602082019150602081019050602083039250610970565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1dc90b1ce875ea53ce4f7fb2036478f4ddfef57ec243f3fb5a9d81faf7dac5f460405160405180910390a350505600a165627a7a72305820c59bdf98f297c29665ccfb830812debea705b914af31fa18187c2574db62c7830029", + "bytecode": "0x608060405234801561001057600080fd5b50610aa3806100206000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634e1d009f146100725780638e5aafe1146100b557806399d20bb1146100cc578063e766307914610115578063fc1c34e41461016c575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610183565b005b3480156100c157600080fd5b506100ca610472565b005b3480156100d857600080fd5b506100fb6004803603810190808035600019169060200190929190505050610764565b604051808215151515815260200191505060405180910390f35b34801561012157600080fd5b5061012a610784565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017857600080fd5b506101816107a9565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101e057600080fd5b816001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156102755780518252602082019150602081019050602083039250610250565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561033a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561040a57805182526020820191506020810190506020830392506103e5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006001600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561050857805182526020820191506020810190506020830392506104e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515156105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4f776e657273686970207265717565737420616c72656164792061637469766581526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610684578051825260208201915060208101905060208303925061065f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506001806000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd5b906f2d3dfa8cf0ea788d4ad6e99ebd482d6134c3405e1a5faa5da891cda8560405160405180910390a350565b60016020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000336001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610840578051825260208201915060208101905060208303925061081b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156109955780518252602082019150602081019050602083039250610970565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1dc90b1ce875ea53ce4f7fb2036478f4ddfef57ec243f3fb5a9d81faf7dac5f460405160405180910390a350505600a165627a7a72305820864a02c1683fe78c7971cbbfeadc9192e8a633bc2e23041af7bb8f38e5058a650029", + "deployedBytecode": "0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634e1d009f146100725780638e5aafe1146100b557806399d20bb1146100cc578063e766307914610115578063fc1c34e41461016c575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610183565b005b3480156100c157600080fd5b506100ca610472565b005b3480156100d857600080fd5b506100fb6004803603810190808035600019169060200190929190505050610764565b604051808215151515815260200191505060405180910390f35b34801561012157600080fd5b5061012a610784565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017857600080fd5b506101816107a9565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101e057600080fd5b816001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156102755780518252602082019150602081019050602083039250610250565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561033a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561040a57805182526020820191506020810190506020830392506103e5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006001600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561050857805182526020820191506020810190506020830392506104e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515156105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4f776e657273686970207265717565737420616c72656164792061637469766581526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610684578051825260208201915060208101905060208303925061065f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506001806000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd5b906f2d3dfa8cf0ea788d4ad6e99ebd482d6134c3405e1a5faa5da891cda8560405160405180910390a350565b60016020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000336001600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610840578051825260208201915060208101905060208303925061081b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e6572207265717565737420686173206e6f74206265656e2073656e742e81525060200191505060405180910390fd5b33604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156109955780518252602082019150602081019050602083039250610970565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600060016000846000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1dc90b1ce875ea53ce4f7fb2036478f4ddfef57ec243f3fb5a9d81faf7dac5f460405160405180910390a350505600a165627a7a72305820864a02c1683fe78c7971cbbfeadc9192e8a633bc2e23041af7bb8f38e5058a650029", "sourceMap": "26:1474:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:1474:5;;;;;;;", "deployedSourceMap": "26:1474:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:232;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:232:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:212:5;;;;;;337:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;337:43:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48:21:5;;;;;;;;;;;;;;;;;;;;;;;;;;;1036:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1036:225:5;;;;;;1265:232;1389:21;477:6;;;;;;;;;;;463:20;;:10;:20;;;455:29;;;;;;;;1348:9;709:11;:51;748:9;731:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;731:27:5;;;721:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;721:38:5;;;;;;;;;;;;;;;;709:51;;;;;;;;;;;;;;;;;;;;;;;;;;;701:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1374:9;1365:6;;:18;;;;;;;;;;;;;;;;;;1440:10;1423:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1423:28:5;;;1413:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1413:39:5;;;;;;;;;;;;;;;;1389:63;;1487:5;1458:11;:26;1470:13;1458:26;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;490:1;1265:232;;:::o;820:212::-;877:21;542:11;:52;581:10;564:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;564:28:5;;;554:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;554:39:5;;;;;;;;;;;;;;;;542:52;;;;;;;;;;;;;;;;;;;;;;;;;;;541:53;533:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;928:10;911:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;911:28:5;;;901:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;901:39:5;;;;;;;;;;;;;;;;877:63;;975:4;946:11;:26;958:13;946:26;;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1016:10;990:37;;1008:6;;;;;;;;;;;990:37;;;;;;;;;;;;820:212;:::o;337:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;48:21::-;;;;;;;;;;;;;:::o;1036:225::-;1108:21;1090:10;709:11;:51;748:9;731:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;731:27:5;;;721:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;721:38:5;;;;;;;;;;;;;;;;709:51;;;;;;;;;;;;;;;;;;;;;;;;;;;701:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1159:10;1142:28;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1142:28:5;;;1132:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1132:39:5;;;;;;;;;;;;;;;;1108:63;;1206:5;1177:11;:26;1189:13;1177:26;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1245:10;1222:34;;1237:6;;;;;;;;;;;1222:34;;;;;;;;;;;;1036:225;;:::o", "source": "pragma solidity ^0.4.24;\n\ncontract Ownable {\n\n address public owner_;\n\n event TransferApproved(address indexed _previousOwner, address indexed _newOwner);\n event TransferRequested(address indexed _currentOwner, address indexed _requestedOwner);\n event RequestRevoked(address indexed _currentOwner, address indexed _requestOwner);\n\n mapping(bytes32 => bool) public requesters_; // keccak256 hashes of requester addresses\n\n modifier onlyOwner() {\n require(msg.sender == owner_);\n _;\n }\n\n modifier hasNotRequested() {\n require(!requesters_[keccak256(abi.encodePacked(msg.sender))],\n \"Ownership request already active.\");\n _;\n }\n\n modifier hasRequested(address _newOwner) {\n require(requesters_[keccak256(abi.encodePacked(_newOwner))], \n \"Owner request has not been sent.\");\n _;\n }\n\n function requestOwnership() public hasNotRequested {\n bytes32 hashedAddress = keccak256(abi.encodePacked(msg.sender));\n requesters_[hashedAddress] = true;\n emit TransferRequested(owner_, msg.sender);\n }\n\n function revokeOwnershipRequest() public hasRequested(msg.sender) {\n bytes32 hashedAddress = keccak256(abi.encodePacked(msg.sender));\n requesters_[hashedAddress] = false;\n emit RequestRevoked(owner_, msg.sender);\n }\n\n function approveOwnershipTransfer(address _newOwner) public onlyOwner hasRequested(_newOwner) {\n owner_ = _newOwner;\n bytes32 hashedAddress = keccak256(abi.encodePacked(msg.sender));\n requesters_[hashedAddress] = false;\n }\n\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Ownable.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Ownable.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Ownable.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Ownable.sol", "exportedSymbols": { "Ownable": [ 1737 @@ -2242,7 +2242,7 @@ "src": "0:1501:5" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Ownable.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Ownable.sol", "exportedSymbols": { "Ownable": [ 1737 @@ -4364,5 +4364,5 @@ }, "networks": {}, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-03T22:39:45.708Z" + "updatedAt": "2018-12-10T18:54:06.211Z" } \ No newline at end of file diff --git a/build/contracts/Proxy.json b/build/contracts/Proxy.json index 461acde..fc49da1 100644 --- a/build/contracts/Proxy.json +++ b/build/contracts/Proxy.json @@ -18,14 +18,14 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405160208061039583398101806040528101908080519060200190929190505050600060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b019050604051809103902090508181555050610314806100816000396000f300608060405260008060008060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b01905060405180910390209350835492508291508173ffffffffffffffffffffffffffffffffffffffff16636b6838968373ffffffffffffffffffffffffffffffffffffffff1663ba586e80306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561013e57600080fd5b81019080805164010000000081111561015657600080fd5b8281019050602081018481111561016c57600080fd5b815185600182028301116401000000008211171561018957600080fd5b50509291905050506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101fc5780820151818401526020810190506101e1565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561024857600080fd5b505af115801561025c573d6000803e3d6000fd5b505050506040513d602081101561027257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102c157600080fd5b60405136600082376000803683855af43d806000843e81600081146102e4578184f35b8184fd00a165627a7a723058207531eaf4cb9255e13fa74fb4bfbb0bd5b9a5ddf8a706ae852241d1d23ef1b2500029", - "deployedBytecode": "0x608060405260008060008060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b01905060405180910390209350835492508291508173ffffffffffffffffffffffffffffffffffffffff16636b6838968373ffffffffffffffffffffffffffffffffffffffff1663ba586e80306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561013e57600080fd5b81019080805164010000000081111561015657600080fd5b8281019050602081018481111561016c57600080fd5b815185600182028301116401000000008211171561018957600080fd5b50509291905050506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101fc5780820151818401526020810190506101e1565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561024857600080fd5b505af115801561025c573d6000803e3d6000fd5b505050506040513d602081101561027257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102c157600080fd5b60405136600082376000803683855af43d806000843e81600081146102e4578184f35b8184fd00a165627a7a723058207531eaf4cb9255e13fa74fb4bfbb0bd5b9a5ddf8a706ae852241d1d23ef1b2500029", + "bytecode": "0x608060405234801561001057600080fd5b5060405160208061039583398101806040528101908080519060200190929190505050600060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b019050604051809103902090508181555050610314806100816000396000f300608060405260008060008060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b01905060405180910390209350835492508291508173ffffffffffffffffffffffffffffffffffffffff16636b6838968373ffffffffffffffffffffffffffffffffffffffff1663ba586e80306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561013e57600080fd5b81019080805164010000000081111561015657600080fd5b8281019050602081018481111561016c57600080fd5b815185600182028301116401000000008211171561018957600080fd5b50509291905050506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101fc5780820151818401526020810190506101e1565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561024857600080fd5b505af115801561025c573d6000803e3d6000fd5b505050506040513d602081101561027257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102c157600080fd5b60405136600082376000803683855af43d806000843e81600081146102e4578184f35b8184fd00a165627a7a72305820419cc7e6a3057a4773903929b39306fa5759673edfb5ee6c8402c87c541004c70029", + "deployedBytecode": "0x608060405260008060008060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b01905060405180910390209350835492508291508173ffffffffffffffffffffffffffffffffffffffff16636b6838968373ffffffffffffffffffffffffffffffffffffffff1663ba586e80306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561013e57600080fd5b81019080805164010000000081111561015657600080fd5b8281019050602081018481111561016c57600080fd5b815185600182028301116401000000008211171561018957600080fd5b50509291905050506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101fc5780820151818401526020810190506101e1565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561024857600080fd5b505af115801561025c573d6000803e3d6000fd5b505050506040513d602081101561027257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102c157600080fd5b60405136600082376000803683855af43d806000843e81600081146102e4578184f35b8184fd00a165627a7a72305820419cc7e6a3057a4773903929b39306fa5759673edfb5ee6c8402c87c541004c70029", "sourceMap": "156:1112:6:-;;;327:137;8:9:-1;5:2;;;30:1;27;20:12;5:2;327:137:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:16;220:40;;;;;;;;;;;;;;;;;;;370:35;;445:8;435;428:26;420:40;;156:1112;;;;;;", "deployedSourceMap": "156:1112:6:-;;;674:16;715;792:12;831:13;220:40;;;;;;;;;;;;;;;;;;;674:35;;772:8;766:15;754:27;;816:8;792:33;;847:3;:21;;;869:3;:15;;;893:4;869:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;869:30:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;869:30:6;;;;;;39:16:-1;36:1;17:17;2:54;869:30:6;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;869:30:6;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;73:11;68:3;64:21;57:28;;126:4;121:3;117:14;163:9;145:16;142:31;139:2;;;186:1;183;176:12;139:2;224:3;218:10;338:9;333:1;319:12;315:20;297:16;293:43;290:58;268:11;254:12;251:29;239:118;236:2;;;370:1;367;360:12;236:2;0:382;;869:30:6;;;;;;847:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;847:53:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;847:53:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;847:53:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;847:53:6;;;;;;;;;;;;;;;;831:69;;936:1;919:19;;:5;:19;;;;911:28;;;;;;;;980:4;974:11;1013:12;1010:1;1005:3;992:34;1094:1;1091;1077:12;1072:3;1065:5;1060:3;1047:49;1115:14;1159:4;1156:1;1151:3;1136:28;1179:6;1197:1;1192:28;;;;1249:4;1244:3;1237:17;1192:28;1213:4;1208:3;1201:17", "source": "pragma solidity ^0.4.24;\n\nimport \"./Registry.sol\";\n\n/**\n * @title Proxy\n * @dev Gives the possibility to delegate any call to a foreign implementation.\n */\ncontract Proxy {\n\n bytes32 private constant registryPosition = keccak256(\"io.arablocks.proxy.registry\");\n\n /**\n * @dev the constructor sets the registry address\n */\n constructor(address registry) public {\n bytes32 position = registryPosition;\n assembly {\n sstore(position, registry)\n }\n }\n\n /**\n * @dev Fallback function allowing to perform a delegatecall to the given implementation.\n * This function will return whatever the implementation call returns\n */\n function () payable public {\n bytes32 position = registryPosition;\n address registry;\n assembly {\n registry := sload(position)\n }\n Registry reg = Registry(registry);\n address _impl = reg.getImplementation(reg.proxyImpls_(address(this)));\n \n require(_impl != address(0));\n\n assembly {\n let ptr := mload(0x40)\n calldatacopy(ptr, 0, calldatasize)\n let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)\n let size := returndatasize\n returndatacopy(ptr, 0, size)\n\n switch result\n case 0 { revert(ptr, size) }\n default { return(ptr, size) }\n }\n }\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Proxy.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Proxy.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Proxy.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ 1796 @@ -46,7 +46,7 @@ "src": "0:24:6" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Registry.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Registry.sol", "file": "./Registry.sol", "id": 1740, "nodeType": "ImportDirective", @@ -865,7 +865,7 @@ "src": "0:1269:6" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Proxy.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ 1796 @@ -886,7 +886,7 @@ "src": "0:24:6" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Registry.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Registry.sol", "file": "./Registry.sol", "id": 1740, "nodeType": "ImportDirective", @@ -1710,5 +1710,5 @@ }, "networks": {}, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-03T22:39:45.724Z" + "updatedAt": "2018-12-10T18:54:06.209Z" } \ No newline at end of file diff --git a/build/contracts/Registry.json b/build/contracts/Registry.json index 2dae160..bf3dfc3 100644 --- a/build/contracts/Registry.json +++ b/build/contracts/Registry.json @@ -267,14 +267,14 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611da3806100606000396000f3006080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063120fd5b8146100b4578063486f5a831461012557806348bf16bd1461019c5780635a473b69146102595780636b6838961461031657806392d00a4a146103bf5780639e77331c14610430578063aafb28b5146104c0578063ba586e801461056a578063c27e35a714610626578063e7663079146106af575b600080fd5b3480156100c057600080fd5b506100e36004803603810190808035600019169060200190929190505050610706565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013157600080fd5b5061019a6004803603810190808035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061074b565b005b3480156101a857600080fd5b506102576004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610a8f565b005b34801561026557600080fd5b506103146004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d37565b005b34801561032257600080fd5b5061037d600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061126f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103cb57600080fd5b506103ee6004803603810190808035600019169060200190929190505050611304565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561043c57600080fd5b50610445611349565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048557808201518184015260208101905061046a565b50505050905090810190601f1680156104b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104cc57600080fd5b506104ef60048036038101908080356000191690602001909291905050506113e7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561052f578082015181840152602081019050610514565b50505050905090810190601f16801561055c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057657600080fd5b506105ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105eb5780820151818401526020810190506105d0565b50505050905090810190601f1680156106185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063257600080fd5b506106ad600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611580565b005b3480156106bb57600080fd5b506106c4611908565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003836040518082805190602001908083835b60208310151561087a5780518252602082019150602081019050602083039250610855565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b816004600060016000876000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090805190602001906109e892919061192d565b5082600019167ff484e4534e19040e90fc73bc52bae5162e22375cd7d93e8b1a1b0c00bd9da90f836040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a50578082015181840152602081019050610a35565b50505050905090810190601f168015610a7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660016000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610b95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f50726f787920616c72656164792065786973747320666f72207468697320636f81526020017f6e74656e742e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b30610b9e6119ad565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015610bf0573d6000803e3d6000fd5b5090508060016000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360026000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cb2848484610d37565b83600019163373ffffffffffffffffffffffffffffffffffffffff167f9b33caff81bc823f7b9b55dad840ba4a5701d511efb96e05bfa50db060e0413d83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a350505050565b6000833373ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003856040518082805190602001908083835b602083101515610e685780518252602082019150602081019050602083039250610e43565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b60016000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915083600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190610fd992919061192d565b508173ffffffffffffffffffffffffffffffffffffffff16836040516024018080602001828103825283818151815260200191508051906020019080838360005b8381101561103557808201518184015260208101905061101a565b50505050905090810190601f1680156110625780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f4ddf47d4000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156111115780820151818401526020810190506110f6565b50505050905090810190601f16801561113e5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af191505015156111c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e6974206661696c65642e000000000000000000000000000000000000000081525060200191505060405180910390fd5b84600019167ff484e4534e19040e90fc73bc52bae5162e22375cd7d93e8b1a1b0c00bd9da90f856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578082015181840152602081019050611213565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050505050565b60006003826040518082805190602001908083835b6020831015156112a95780518252602082019150602081019050602083039250611284565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600060016000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113df5780601f106113b4576101008083540402835291602001916113df565b820191906000526020600020905b8154815290600101906020018083116113c257829003601f168201915b505050505081565b6060600460006113f684611304565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114c45780601f10611499576101008083540402835291602001916114c4565b820191906000526020600020905b8154815290600101906020018083116114a757829003601f168201915b50505050509050919050565b60046020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115785780601f1061154d57610100808354040283529160200191611578565b820191906000526020600020905b81548152906001019060200180831161155b57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611644576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003836040518082805190602001908083835b602083101515611694578051825260208201915060208101905060208303925061166f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20616c7265616479206578697374732e00000000000000000081525060200191505060405180910390fd5b806003836040518082805190602001908083835b6020831015156117ac5780518252602082019150602081019050602083039250611787565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816005908051906020019061183392919061192d565b507fd8fe3cc65207affabfb13b243ebe763cc4b295ded54e52ec92257e7ba1434da6828260405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156118c95780820151818401526020810190506118ae565b50505050905090810190601f1680156118f65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061196e57805160ff191683800117855561199c565b8280016001018555821561199c579182015b8281111561199b578251825591602001919060010190611980565b5b5090506119a991906119bd565b5090565b604051610395806119e383390190565b6119df91905b808211156119db5760008160009055506001016119c3565b5090565b905600608060405234801561001057600080fd5b5060405160208061039583398101806040528101908080519060200190929190505050600060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b019050604051809103902090508181555050610314806100816000396000f300608060405260008060008060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b01905060405180910390209350835492508291508173ffffffffffffffffffffffffffffffffffffffff16636b6838968373ffffffffffffffffffffffffffffffffffffffff1663ba586e80306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561013e57600080fd5b81019080805164010000000081111561015657600080fd5b8281019050602081018481111561016c57600080fd5b815185600182028301116401000000008211171561018957600080fd5b50509291905050506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101fc5780820151818401526020810190506101e1565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561024857600080fd5b505af115801561025c573d6000803e3d6000fd5b505050506040513d602081101561027257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102c157600080fd5b60405136600082376000803683855af43d806000843e81600081146102e4578184f35b8184fd00a165627a7a723058207531eaf4cb9255e13fa74fb4bfbb0bd5b9a5ddf8a706ae852241d1d23ef1b2500029a165627a7a72305820efc8fbd102fa29b3f8c6b6d8204db83631784209be0c37fb5fd9c474a48299f60029", - "deployedBytecode": "0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063120fd5b8146100b4578063486f5a831461012557806348bf16bd1461019c5780635a473b69146102595780636b6838961461031657806392d00a4a146103bf5780639e77331c14610430578063aafb28b5146104c0578063ba586e801461056a578063c27e35a714610626578063e7663079146106af575b600080fd5b3480156100c057600080fd5b506100e36004803603810190808035600019169060200190929190505050610706565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013157600080fd5b5061019a6004803603810190808035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061074b565b005b3480156101a857600080fd5b506102576004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610a8f565b005b34801561026557600080fd5b506103146004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d37565b005b34801561032257600080fd5b5061037d600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061126f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103cb57600080fd5b506103ee6004803603810190808035600019169060200190929190505050611304565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561043c57600080fd5b50610445611349565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048557808201518184015260208101905061046a565b50505050905090810190601f1680156104b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104cc57600080fd5b506104ef60048036038101908080356000191690602001909291905050506113e7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561052f578082015181840152602081019050610514565b50505050905090810190601f16801561055c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057657600080fd5b506105ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105eb5780820151818401526020810190506105d0565b50505050905090810190601f1680156106185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063257600080fd5b506106ad600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611580565b005b3480156106bb57600080fd5b506106c4611908565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003836040518082805190602001908083835b60208310151561087a5780518252602082019150602081019050602083039250610855565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b816004600060016000876000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090805190602001906109e892919061192d565b5082600019167ff484e4534e19040e90fc73bc52bae5162e22375cd7d93e8b1a1b0c00bd9da90f836040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a50578082015181840152602081019050610a35565b50505050905090810190601f168015610a7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660016000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610b95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f50726f787920616c72656164792065786973747320666f72207468697320636f81526020017f6e74656e742e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b30610b9e6119ad565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015610bf0573d6000803e3d6000fd5b5090508060016000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360026000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cb2848484610d37565b83600019163373ffffffffffffffffffffffffffffffffffffffff167f9b33caff81bc823f7b9b55dad840ba4a5701d511efb96e05bfa50db060e0413d83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a350505050565b6000833373ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003856040518082805190602001908083835b602083101515610e685780518252602082019150602081019050602083039250610e43565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b60016000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915083600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190610fd992919061192d565b508173ffffffffffffffffffffffffffffffffffffffff16836040516024018080602001828103825283818151815260200191508051906020019080838360005b8381101561103557808201518184015260208101905061101a565b50505050905090810190601f1680156110625780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f4ddf47d4000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156111115780820151818401526020810190506110f6565b50505050905090810190601f16801561113e5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af191505015156111c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e6974206661696c65642e000000000000000000000000000000000000000081525060200191505060405180910390fd5b84600019167ff484e4534e19040e90fc73bc52bae5162e22375cd7d93e8b1a1b0c00bd9da90f856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578082015181840152602081019050611213565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050505050565b60006003826040518082805190602001908083835b6020831015156112a95780518252602082019150602081019050602083039250611284565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600060016000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113df5780601f106113b4576101008083540402835291602001916113df565b820191906000526020600020905b8154815290600101906020018083116113c257829003601f168201915b505050505081565b6060600460006113f684611304565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114c45780601f10611499576101008083540402835291602001916114c4565b820191906000526020600020905b8154815290600101906020018083116114a757829003601f168201915b50505050509050919050565b60046020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115785780601f1061154d57610100808354040283529160200191611578565b820191906000526020600020905b81548152906001019060200180831161155b57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611644576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003836040518082805190602001908083835b602083101515611694578051825260208201915060208101905060208303925061166f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20616c7265616479206578697374732e00000000000000000081525060200191505060405180910390fd5b806003836040518082805190602001908083835b6020831015156117ac5780518252602082019150602081019050602083039250611787565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816005908051906020019061183392919061192d565b507fd8fe3cc65207affabfb13b243ebe763cc4b295ded54e52ec92257e7ba1434da6828260405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156118c95780820151818401526020810190506118ae565b50505050905090810190601f1680156118f65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061196e57805160ff191683800117855561199c565b8280016001018555821561199c579182015b8281111561199b578251825591602001919060010190611980565b5b5090506119a991906119bd565b5090565b604051610395806119e383390190565b6119df91905b808211156119db5760008160009055506001016119c3565b5090565b905600608060405234801561001057600080fd5b5060405160208061039583398101806040528101908080519060200190929190505050600060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b019050604051809103902090508181555050610314806100816000396000f300608060405260008060008060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b01905060405180910390209350835492508291508173ffffffffffffffffffffffffffffffffffffffff16636b6838968373ffffffffffffffffffffffffffffffffffffffff1663ba586e80306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561013e57600080fd5b81019080805164010000000081111561015657600080fd5b8281019050602081018481111561016c57600080fd5b815185600182028301116401000000008211171561018957600080fd5b50509291905050506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101fc5780820151818401526020810190506101e1565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561024857600080fd5b505af115801561025c573d6000803e3d6000fd5b505050506040513d602081101561027257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102c157600080fd5b60405136600082376000803683855af43d806000843e81600081146102e4578184f35b8184fd00a165627a7a723058207531eaf4cb9255e13fa74fb4bfbb0bd5b9a5ddf8a706ae852241d1d23ef1b2500029a165627a7a72305820efc8fbd102fa29b3f8c6b6d8204db83631784209be0c37fb5fd9c474a48299f60029", + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611da3806100606000396000f3006080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063120fd5b8146100b4578063486f5a831461012557806348bf16bd1461019c5780635a473b69146102595780636b6838961461031657806392d00a4a146103bf5780639e77331c14610430578063aafb28b5146104c0578063ba586e801461056a578063c27e35a714610626578063e7663079146106af575b600080fd5b3480156100c057600080fd5b506100e36004803603810190808035600019169060200190929190505050610706565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013157600080fd5b5061019a6004803603810190808035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061074b565b005b3480156101a857600080fd5b506102576004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610a8f565b005b34801561026557600080fd5b506103146004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d37565b005b34801561032257600080fd5b5061037d600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061126f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103cb57600080fd5b506103ee6004803603810190808035600019169060200190929190505050611304565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561043c57600080fd5b50610445611349565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048557808201518184015260208101905061046a565b50505050905090810190601f1680156104b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104cc57600080fd5b506104ef60048036038101908080356000191690602001909291905050506113e7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561052f578082015181840152602081019050610514565b50505050905090810190601f16801561055c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057657600080fd5b506105ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105eb5780820151818401526020810190506105d0565b50505050905090810190601f1680156106185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063257600080fd5b506106ad600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611580565b005b3480156106bb57600080fd5b506106c4611908565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003836040518082805190602001908083835b60208310151561087a5780518252602082019150602081019050602083039250610855565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b816004600060016000876000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090805190602001906109e892919061192d565b5082600019167ff484e4534e19040e90fc73bc52bae5162e22375cd7d93e8b1a1b0c00bd9da90f836040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a50578082015181840152602081019050610a35565b50505050905090810190601f168015610a7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660016000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610b95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f50726f787920616c72656164792065786973747320666f72207468697320636f81526020017f6e74656e742e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b30610b9e6119ad565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015610bf0573d6000803e3d6000fd5b5090508060016000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360026000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cb2848484610d37565b83600019163373ffffffffffffffffffffffffffffffffffffffff167f9b33caff81bc823f7b9b55dad840ba4a5701d511efb96e05bfa50db060e0413d83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a350505050565b6000833373ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003856040518082805190602001908083835b602083101515610e685780518252602082019150602081019050602083039250610e43565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b60016000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915083600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190610fd992919061192d565b508173ffffffffffffffffffffffffffffffffffffffff16836040516024018080602001828103825283818151815260200191508051906020019080838360005b8381101561103557808201518184015260208101905061101a565b50505050905090810190601f1680156110625780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f4ddf47d4000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156111115780820151818401526020810190506110f6565b50505050905090810190601f16801561113e5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af191505015156111c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e6974206661696c65642e000000000000000000000000000000000000000081525060200191505060405180910390fd5b84600019167ff484e4534e19040e90fc73bc52bae5162e22375cd7d93e8b1a1b0c00bd9da90f856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578082015181840152602081019050611213565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050505050565b60006003826040518082805190602001908083835b6020831015156112a95780518252602082019150602081019050602083039250611284565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600060016000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113df5780601f106113b4576101008083540402835291602001916113df565b820191906000526020600020905b8154815290600101906020018083116113c257829003601f168201915b505050505081565b6060600460006113f684611304565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114c45780601f10611499576101008083540402835291602001916114c4565b820191906000526020600020905b8154815290600101906020018083116114a757829003601f168201915b50505050509050919050565b60046020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115785780601f1061154d57610100808354040283529160200191611578565b820191906000526020600020905b81548152906001019060200180831161155b57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611644576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003836040518082805190602001908083835b602083101515611694578051825260208201915060208101905060208303925061166f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20616c7265616479206578697374732e00000000000000000081525060200191505060405180910390fd5b806003836040518082805190602001908083835b6020831015156117ac5780518252602082019150602081019050602083039250611787565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816005908051906020019061183392919061192d565b507fd8fe3cc65207affabfb13b243ebe763cc4b295ded54e52ec92257e7ba1434da6828260405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156118c95780820151818401526020810190506118ae565b50505050905090810190601f1680156118f65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061196e57805160ff191683800117855561199c565b8280016001018555821561199c579182015b8281111561199b578251825591602001919060010190611980565b5b5090506119a991906119bd565b5090565b604051610395806119e383390190565b6119df91905b808211156119db5760008160009055506001016119c3565b5090565b905600608060405234801561001057600080fd5b5060405160208061039583398101806040528101908080519060200190929190505050600060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b019050604051809103902090508181555050610314806100816000396000f300608060405260008060008060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b01905060405180910390209350835492508291508173ffffffffffffffffffffffffffffffffffffffff16636b6838968373ffffffffffffffffffffffffffffffffffffffff1663ba586e80306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561013e57600080fd5b81019080805164010000000081111561015657600080fd5b8281019050602081018481111561016c57600080fd5b815185600182028301116401000000008211171561018957600080fd5b50509291905050506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101fc5780820151818401526020810190506101e1565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561024857600080fd5b505af115801561025c573d6000803e3d6000fd5b505050506040513d602081101561027257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102c157600080fd5b60405136600082376000803683855af43d806000843e81600081146102e4578184f35b8184fd00a165627a7a72305820419cc7e6a3057a4773903929b39306fa5759673edfb5ee6c8402c87c541004c70029a165627a7a72305820d9c89c1d2808d54aa2e761d2e63c22900542c5d5b61be59800e58bf3c15469b40029", + "deployedBytecode": "0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063120fd5b8146100b4578063486f5a831461012557806348bf16bd1461019c5780635a473b69146102595780636b6838961461031657806392d00a4a146103bf5780639e77331c14610430578063aafb28b5146104c0578063ba586e801461056a578063c27e35a714610626578063e7663079146106af575b600080fd5b3480156100c057600080fd5b506100e36004803603810190808035600019169060200190929190505050610706565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013157600080fd5b5061019a6004803603810190808035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061074b565b005b3480156101a857600080fd5b506102576004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610a8f565b005b34801561026557600080fd5b506103146004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d37565b005b34801561032257600080fd5b5061037d600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061126f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103cb57600080fd5b506103ee6004803603810190808035600019169060200190929190505050611304565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561043c57600080fd5b50610445611349565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048557808201518184015260208101905061046a565b50505050905090810190601f1680156104b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104cc57600080fd5b506104ef60048036038101908080356000191690602001909291905050506113e7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561052f578082015181840152602081019050610514565b50505050905090810190601f16801561055c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057657600080fd5b506105ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105eb5780820151818401526020810190506105d0565b50505050905090810190601f1680156106185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063257600080fd5b506106ad600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611580565b005b3480156106bb57600080fd5b506106c4611908565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003836040518082805190602001908083835b60208310151561087a5780518252602082019150602081019050602083039250610855565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b816004600060016000876000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090805190602001906109e892919061192d565b5082600019167ff484e4534e19040e90fc73bc52bae5162e22375cd7d93e8b1a1b0c00bd9da90f836040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a50578082015181840152602081019050610a35565b50505050905090810190601f168015610a7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660016000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610b95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f50726f787920616c72656164792065786973747320666f72207468697320636f81526020017f6e74656e742e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b30610b9e6119ad565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015610bf0573d6000803e3d6000fd5b5090508060016000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360026000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cb2848484610d37565b83600019163373ffffffffffffffffffffffffffffffffffffffff167f9b33caff81bc823f7b9b55dad840ba4a5701d511efb96e05bfa50db060e0413d83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a350505050565b6000833373ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003856040518082805190602001908083835b602083101515610e685780518252602082019150602081019050602083039250610e43565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b60016000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915083600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190610fd992919061192d565b508173ffffffffffffffffffffffffffffffffffffffff16836040516024018080602001828103825283818151815260200191508051906020019080838360005b8381101561103557808201518184015260208101905061101a565b50505050905090810190601f1680156110625780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f4ddf47d4000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156111115780820151818401526020810190506110f6565b50505050905090810190601f16801561113e5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af191505015156111c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e6974206661696c65642e000000000000000000000000000000000000000081525060200191505060405180910390fd5b84600019167ff484e4534e19040e90fc73bc52bae5162e22375cd7d93e8b1a1b0c00bd9da90f856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578082015181840152602081019050611213565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050505050565b60006003826040518082805190602001908083835b6020831015156112a95780518252602082019150602081019050602083039250611284565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600060016000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113df5780601f106113b4576101008083540402835291602001916113df565b820191906000526020600020905b8154815290600101906020018083116113c257829003601f168201915b505050505081565b6060600460006113f684611304565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114c45780601f10611499576101008083540402835291602001916114c4565b820191906000526020600020905b8154815290600101906020018083116114a757829003601f168201915b50505050509050919050565b60046020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115785780601f1061154d57610100808354040283529160200191611578565b820191906000526020600020905b81548152906001019060200180831161155b57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611644576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003836040518082805190602001908083835b602083101515611694578051825260208201915060208101905060208303925061166f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56657273696f6e20616c7265616479206578697374732e00000000000000000081525060200191505060405180910390fd5b806003836040518082805190602001908083835b6020831015156117ac5780518252602082019150602081019050602083039250611787565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816005908051906020019061183392919061192d565b507fd8fe3cc65207affabfb13b243ebe763cc4b295ded54e52ec92257e7ba1434da6828260405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156118c95780820151818401526020810190506118ae565b50505050905090810190601f1680156118f65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061196e57805160ff191683800117855561199c565b8280016001018555821561199c579182015b8281111561199b578251825591602001919060010190611980565b5b5090506119a991906119bd565b5090565b604051610395806119e383390190565b6119df91905b808211156119db5760008160009055506001016119c3565b5090565b905600608060405234801561001057600080fd5b5060405160208061039583398101806040528101908080519060200190929190505050600060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b019050604051809103902090508181555050610314806100816000396000f300608060405260008060008060405180807f696f2e617261626c6f636b732e70726f78792e72656769737472790000000000815250601b01905060405180910390209350835492508291508173ffffffffffffffffffffffffffffffffffffffff16636b6838968373ffffffffffffffffffffffffffffffffffffffff1663ba586e80306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561013e57600080fd5b81019080805164010000000081111561015657600080fd5b8281019050602081018481111561016c57600080fd5b815185600182028301116401000000008211171561018957600080fd5b50509291905050506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101fc5780820151818401526020810190506101e1565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561024857600080fd5b505af115801561025c573d6000803e3d6000fd5b505050506040513d602081101561027257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102c157600080fd5b60405136600082376000803683855af43d806000843e81600081146102e4578184f35b8184fd00a165627a7a72305820419cc7e6a3057a4773903929b39306fa5759673edfb5ee6c8402c87c541004c70029a165627a7a72305820d9c89c1d2808d54aa2e761d2e63c22900542c5d5b61be59800e58bf3c15469b40029", "sourceMap": "49:3703:7:-;;;665:51;8:9:-1;5:2;;;30:1;27;20:12;5:2;665:51:7;701:10;692:6;;:19;;;;;;;;;;;;;;;;;;49:3703;;;;;;", "deployedSourceMap": "49:3703:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1112:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1112:115:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:269;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2352:269:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:411;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1745:411:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:418;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2879:418:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1231:111:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;995:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;995:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;412:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;412:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1346:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1346:132:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1346:132:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;342:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;342:46:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;342:46:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3478:272;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3478:272:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;71:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71:21:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1112:115;1176:7;1198:12;:24;1211:10;1198:24;;;;;;;;;;;;;;;;;;;;;;;;;;;1191:31;;1112:115;;;:::o;2352:269::-;2433:10;931;903:38;;:12;:24;916:10;903:24;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;888:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2490:1;2459:33;;:9;2469:8;2459:19;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;2459:19:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;2451:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2562:8;2526:11;:33;2538:8;:20;2547:10;2538:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2526:33;;;;;;;;;;;;;;;:44;;;;;;;;;;;;:::i;:::-;;2595:10;2581:35;;;;2607:8;2581:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2581:35:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:269;;;:::o;1745:411::-;1918:11;1867:1;1835:34;;:8;:20;1844:10;1835:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;1827:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1950:4;1932:24;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1932:24:7;1918:38;;1985:5;1962:8;:20;1971:10;1962:20;;;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2023:10;1996:12;:24;2009:10;1996:24;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2039:48;2059:10;2071:8;2081:5;2039:19;:48::i;:::-;2124:10;2098:53;;;2112:10;2098:53;;;2144:5;2098:53;;;;;;;;;;;;;;;;;;;;;;1745:411;;;;:::o;2879:418::-;3073:11;2980:10;931;903:38;;:12;:24;916:10;903:24;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;888:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3037:1;3006:33;;:9;3016:8;3006:19;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;3006:19:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;2998:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3093:8;:20;3102:10;3093:20;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:41;;3141:8;3120:11;:18;3132:5;3120:18;;;;;;;;;;;;;;;:29;;;;;;;;;;;;:::i;:::-;;3171:5;3163:19;;3222:5;3183:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3183:45:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3183:45:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;3183:45:7;3163:66;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3163:66:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3155:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3271:10;3257:35;;;;3283:8;3257:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3257:35:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:418;;;;;:::o;1231:111::-;1296:7;1318:9;1328:8;1318:19;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1318:19:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:26;;1231:111;;;:::o;995:113::-;1061:7;1083:8;:20;1092:10;1083:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1076:27;;995:113;;;:::o;412:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1346:132::-;1412:6;1433:11;:40;1445:27;1461:10;1445:15;:27::i;:::-;1433:40;;;;;;;;;;;;;;;1426:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1346:132;;;:::o;342:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3478:272::-;778:6;;;;;;;;;;;764:20;;:10;:20;;;748:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3604:1;3573:33;;:9;3583:8;3573:19;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;3573:19:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3565:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3662:8;3640:9;3650:8;3640:19;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;3640:19:7;;;;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;3693:8;3676:14;:25;;;;;;;;;;;;:::i;:::-;;3712:33;3726:8;3736;3712:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3712:33:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3478:272;;:::o;71:21::-;;;;;;;;;;;;;:::o;49:3703::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "pragma solidity ^0.4.24;\n\nimport \"./Proxy.sol\";\n\ncontract Registry {\n address public owner_;\n mapping (bytes32 => address) private proxies_; // contentId (unhashed) => proxy\n mapping (bytes32 => address) private proxyOwners_; // contentId (unhashed) => owner\n mapping (string => address) private versions_; // version => implementation\n mapping (address => string) public proxyImpls_; // proxy => version\n string public latestVersion_;\n\n event ProxyDeployed(address indexed _owner, bytes32 indexed _contentId, address _address);\n event ProxyUpgraded(bytes32 indexed _contentId, string _version);\n event StandardAdded(string _version, address _address);\n\n constructor() public {\n owner_ = msg.sender;\n }\n\n modifier restricted() {\n require (\n msg.sender == owner_,\n \"Sender not authorized.\"\n );\n _;\n }\n\n modifier onlyProxyOwner(bytes32 _contentId) {\n require(\n proxyOwners_[_contentId] == msg.sender,\n \"Sender not authorized.\"\n );\n _;\n }\n\n function getProxyAddress(bytes32 _contentId) public view returns (address) {\n return proxies_[_contentId];\n }\n\n function getProxyOwner(bytes32 _contentId) public view returns (address) {\n return proxyOwners_[_contentId];\n }\n\n function getImplementation(string _version) public view returns (address) {\n return versions_[_version];\n }\n\n function getProxyVersion(bytes32 _contentId) public view returns (string) {\n return proxyImpls_[getProxyAddress(_contentId)];\n }\n \n /**\n * @dev AFS Proxy Factory\n * @param _contentId The unhashed methodless content DID\n * @param _version The implementation version to use with this Proxy\n * @param _data AFS initialization data\n * @return address of the newly deployed Proxy\n */\n function createAFS(bytes32 _contentId, string _version, bytes _data) public {\n require(proxies_[_contentId] == address(0), \"Proxy already exists for this content.\");\n Proxy proxy = new Proxy(address(this));\n proxies_[_contentId] = proxy;\n proxyOwners_[_contentId] = msg.sender;\n upgradeProxyAndCall(_contentId, _version, _data);\n emit ProxyDeployed(msg.sender, _contentId, address(proxy));\n }\n\n /**\n * @dev Upgrades proxy implementation version\n * @param _contentId The unhashed methodless content DID\n * @param _version The implementation version to upgrade this Proxy to\n */\n function upgradeProxy(bytes32 _contentId, string _version) public onlyProxyOwner(_contentId) {\n require(versions_[_version] != address(0), \"Version does not exist.\");\n proxyImpls_[proxies_[_contentId]] = _version;\n emit ProxyUpgraded(_contentId, _version);\n }\n\n /**\n * @dev Upgrades proxy implementation version with initialization\n * @param _contentId The unhashed methodless content DID\n * @param _version The implementation version to upgrade this Proxy to\n * @param _data AFS initialization data\n */\n function upgradeProxyAndCall(bytes32 _contentId, string _version, bytes _data) public onlyProxyOwner(_contentId) {\n require(versions_[_version] != address(0), \"Version does not exist.\");\n Proxy proxy = Proxy(proxies_[_contentId]);\n proxyImpls_[proxy] = _version;\n require(address(proxy).call(abi.encodeWithSignature(\"init(bytes)\", _data)), \"Init failed.\");\n emit ProxyUpgraded(_contentId, _version);\n }\n\n /**\n * @dev Adds a new AFS implementation standard\n * @param _version The implementation version name\n * @param _address The address of the new AFS implementation\n */\n function addStandardVersion(string _version, address _address) public restricted {\n require(versions_[_version] == address(0), \"Version already exists.\");\n versions_[_version] = _address;\n latestVersion_ = _version;\n emit StandardAdded(_version, _address);\n }\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Registry.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Registry.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Registry.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Registry.sol", "exportedSymbols": { "Registry": [ 2113 @@ -295,7 +295,7 @@ "src": "0:24:7" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Proxy.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", "id": 1799, "nodeType": "ImportDirective", @@ -4435,7 +4435,7 @@ "src": "0:3753:7" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Registry.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Registry.sol", "exportedSymbols": { "Registry": [ 2113 @@ -4456,7 +4456,7 @@ "src": "0:24:7" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/Proxy.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", "id": 1799, "nodeType": "ImportDirective", @@ -8827,8 +8827,38 @@ "links": {}, "address": "0x68a085a21fbe285395296523b61e2c34e16e6c65", "transactionHash": "0xba6f34566c558bdaa1e0627572f311b5347872557ca9cbc0f2ca803d603f3ae9" + }, + "1544468034350": { + "events": {}, + "links": {}, + "address": "0x68a085a21fbe285395296523b61e2c34e16e6c65", + "transactionHash": "0xb6250b03e66eddb20ddda28dc58842530f4eee92d273e51ef9960f7b962df486" + }, + "1544468256515": { + "events": {}, + "links": {}, + "address": "0xdfef8725487ffc1b4d2adf7b29b500d06ff96a5c", + "transactionHash": "0xf1838ea09eb57d8d7a6b5f1be3489a035ea18647dfea53e76c935671ab4f6bf9" + }, + "1544468823500": { + "events": {}, + "links": {}, + "address": "0x68a085a21fbe285395296523b61e2c34e16e6c65", + "transactionHash": "0xb6250b03e66eddb20ddda28dc58842530f4eee92d273e51ef9960f7b962df486" + }, + "1544468892840": { + "events": {}, + "links": {}, + "address": "0x68a085a21fbe285395296523b61e2c34e16e6c65", + "transactionHash": "0xb6250b03e66eddb20ddda28dc58842530f4eee92d273e51ef9960f7b962df486" + }, + "1544469700807": { + "events": {}, + "links": {}, + "address": "0x68a085a21fbe285395296523b61e2c34e16e6c65", + "transactionHash": "0xb6250b03e66eddb20ddda28dc58842530f4eee92d273e51ef9960f7b962df486" } }, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-04T16:32:09.568Z" + "updatedAt": "2018-12-10T19:21:50.092Z" } \ No newline at end of file diff --git a/build/contracts/SafeMath.json b/build/contracts/SafeMath.json index a06c80b..c6d8cca 100644 --- a/build/contracts/SafeMath.json +++ b/build/contracts/SafeMath.json @@ -2361,5 +2361,5 @@ }, "networks": {}, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-03T22:39:45.731Z" + "updatedAt": "2018-12-10T18:54:06.220Z" } \ No newline at end of file diff --git a/build/contracts/StandardToken.json b/build/contracts/StandardToken.json index 547c9e4..6711258 100644 --- a/build/contracts/StandardToken.json +++ b/build/contracts/StandardToken.json @@ -221,14 +221,14 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061103a806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461009357806318160ddd146100f857806323b872dd1461012357806366188463146101a857806370a082311461020d578063a9059cbb14610264578063d73dd623146102c9578063dd62ed3e1461032e575b600080fd5b34801561009f57600080fd5b506100de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103a5565b604051808215151515815260200191505060405180910390f35b34801561010457600080fd5b5061010d610497565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061018e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a1565b604051808215151515815260200191505060405180910390f35b3480156101b457600080fd5b506101f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061085c565b604051808215151515815260200191505060405180910390f35b34801561021957600080fd5b5061024e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aee565b6040518082815260200191505060405180910390f35b34801561027057600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b36565b604051808215151515815260200191505060405180910390f35b3480156102d557600080fd5b50610314600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d56565b604051808215151515815260200191505060405180910390f35b34801561033a57600080fd5b5061038f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f52565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156104f057600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561057b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105b757600080fd5b610608826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061069b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061076c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310151561096e576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a02565b6109818382610fd990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610b8557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610bc157600080fd5b610c12826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ca5826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000610de782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610fe757fe5b818303905092915050565b6000818301905082811015151561100557fe5b809050929150505600a165627a7a72305820e8e2df18c51fc61f60411847c79f92235b8b68a401b1adf560bf7e3acfb0a7240029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461009357806318160ddd146100f857806323b872dd1461012357806366188463146101a857806370a082311461020d578063a9059cbb14610264578063d73dd623146102c9578063dd62ed3e1461032e575b600080fd5b34801561009f57600080fd5b506100de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103a5565b604051808215151515815260200191505060405180910390f35b34801561010457600080fd5b5061010d610497565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061018e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a1565b604051808215151515815260200191505060405180910390f35b3480156101b457600080fd5b506101f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061085c565b604051808215151515815260200191505060405180910390f35b34801561021957600080fd5b5061024e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aee565b6040518082815260200191505060405180910390f35b34801561027057600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b36565b604051808215151515815260200191505060405180910390f35b3480156102d557600080fd5b50610314600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d56565b604051808215151515815260200191505060405180910390f35b34801561033a57600080fd5b5061038f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f52565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156104f057600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561057b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105b757600080fd5b610608826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061069b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061076c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310151561096e576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a02565b6109818382610fd990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610b8557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610bc157600080fd5b610c12826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ca5826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000610de782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610fe757fe5b818303905092915050565b6000818301905082811015151561100557fe5b809050929150505600a165627a7a72305820e8e2df18c51fc61f60411847c79f92235b8b68a401b1adf560bf7e3acfb0a7240029", + "bytecode": "0x608060405234801561001057600080fd5b5061103a806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461009357806318160ddd146100f857806323b872dd1461012357806366188463146101a857806370a082311461020d578063a9059cbb14610264578063d73dd623146102c9578063dd62ed3e1461032e575b600080fd5b34801561009f57600080fd5b506100de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103a5565b604051808215151515815260200191505060405180910390f35b34801561010457600080fd5b5061010d610497565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061018e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a1565b604051808215151515815260200191505060405180910390f35b3480156101b457600080fd5b506101f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061085c565b604051808215151515815260200191505060405180910390f35b34801561021957600080fd5b5061024e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aee565b6040518082815260200191505060405180910390f35b34801561027057600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b36565b604051808215151515815260200191505060405180910390f35b3480156102d557600080fd5b50610314600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d56565b604051808215151515815260200191505060405180910390f35b34801561033a57600080fd5b5061038f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f52565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156104f057600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561057b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105b757600080fd5b610608826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061069b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061076c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310151561096e576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a02565b6109818382610fd990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610b8557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610bc157600080fd5b610c12826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ca5826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000610de782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610fe757fe5b818303905092915050565b6000818301905082811015151561100557fe5b809050929150505600a165627a7a72305820572a38da695042413d47ff5f516c6222e80204b7d7250f82a28858a215388a2a0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461009357806318160ddd146100f857806323b872dd1461012357806366188463146101a857806370a082311461020d578063a9059cbb14610264578063d73dd623146102c9578063dd62ed3e1461032e575b600080fd5b34801561009f57600080fd5b506100de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103a5565b604051808215151515815260200191505060405180910390f35b34801561010457600080fd5b5061010d610497565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061018e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a1565b604051808215151515815260200191505060405180910390f35b3480156101b457600080fd5b506101f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061085c565b604051808215151515815260200191505060405180910390f35b34801561021957600080fd5b5061024e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aee565b6040518082815260200191505060405180910390f35b34801561027057600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b36565b604051808215151515815260200191505060405180910390f35b3480156102d557600080fd5b50610314600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d56565b604051808215151515815260200191505060405180910390f35b34801561033a57600080fd5b5061038f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f52565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156104f057600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561057b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105b757600080fd5b610608826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061069b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061076c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310151561096e576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a02565b6109818382610fd990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610b8557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610bc157600080fd5b610c12826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ca5826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000610de782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610fe757fe5b818303905092915050565b6000818301905082811015151561100557fe5b809050929150505600a165627a7a72305820572a38da695042413d47ff5f516c6222e80204b7d7250f82a28858a215388a2a0029", "sourceMap": "514:6624:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;514:6624:8;;;;;;;", "deployedSourceMap": "514:6624:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2748:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2748:189:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;792:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;792:83:8;;;;;;;;;;;;;;;;;;;;;;;3212:478;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3212:478:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4900:436;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4900:436:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1077:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1077:100:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1804:326;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1804:326:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4143:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4143:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1496:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1496:154:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2748:189;2815:4;2860:6;2827:8;:20;2836:10;2827:20;;;;;;;;;;;;;;;:30;2848:8;2827:30;;;;;;;;;;;;;;;:39;;;;2898:8;2877:38;;2886:10;2877:38;;;2908:6;2877:38;;;;;;;;;;;;;;;;;;2928:4;2921:11;;2748:189;;;;:::o;792:83::-;836:7;858:12;;851:19;;792:83;:::o;3212:478::-;3318:4;3350:9;:16;3360:5;3350:16;;;;;;;;;;;;;;;;3340:6;:26;;3332:35;;;;;;;;3391:8;:15;3400:5;3391:15;;;;;;;;;;;;;;;:27;3407:10;3391:27;;;;;;;;;;;;;;;;3381:6;:37;;3373:46;;;;;;;;3448:1;3433:17;;:3;:17;;;;3425:26;;;;;;;;3477:28;3498:6;3477:9;:16;3487:5;3477:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;3458:9;:16;3468:5;3458:16;;;;;;;;;;;;;;;:47;;;;3528:26;3547:6;3528:9;:14;3538:3;3528:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;3511:9;:14;3521:3;3511:14;;;;;;;;;;;;;;;:43;;;;3590:39;3622:6;3590:8;:15;3599:5;3590:15;;;;;;;;;;;;;;;:27;3606:10;3590:27;;;;;;;;;;;;;;;;:31;;:39;;;;:::i;:::-;3560:8;:15;3569:5;3560:15;;;;;;;;;;;;;;;:27;3576:10;3560:27;;;;;;;;;;;;;;;:69;;;;3656:3;3640:28;;3649:5;3640:28;;;3661:6;3640:28;;;;;;;;;;;;;;;;;;3681:4;3674:11;;3212:478;;;;;:::o;4900:436::-;5006:4;5020:16;5039:8;:20;5048:10;5039:20;;;;;;;;;;;;;;;:30;5060:8;5039:30;;;;;;;;;;;;;;;;5020:49;;5099:8;5079:16;:28;;5075:167;;;5150:1;5117:8;:20;5126:10;5117:20;;;;;;;;;;;;;;;:30;5138:8;5117:30;;;;;;;;;;;;;;;:34;;;;5075:167;;;5205:30;5218:16;5205:8;:12;;:30;;;;:::i;:::-;5172:8;:20;5181:10;5172:20;;;;;;;;;;;;;;;:30;5193:8;5172:30;;;;;;;;;;;;;;;:63;;;;5075:167;5273:8;5252:62;;5261:10;5252:62;;;5283:8;:20;5292:10;5283:20;;;;;;;;;;;;;;;:30;5304:8;5283:30;;;;;;;;;;;;;;;;5252:62;;;;;;;;;;;;;;;;;;5327:4;5320:11;;4900:436;;;;;:::o;1077:100::-;1133:7;1155:9;:17;1165:6;1155:17;;;;;;;;;;;;;;;;1148:24;;1077:100;;;:::o;1804:326::-;1867:4;1897:9;:21;1907:10;1897:21;;;;;;;;;;;;;;;;1887:6;:31;;1879:40;;;;;;;;1948:1;1933:17;;:3;:17;;;;1925:26;;;;;;;;1982:33;2008:6;1982:9;:21;1992:10;1982:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;1958:9;:21;1968:10;1958:21;;;;;;;;;;;;;;;:57;;;;2038:26;2057:6;2038:9;:14;2048:3;2038:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;2021:9;:14;2031:3;2021:14;;;;;;;;;;;;;;;:43;;;;2096:3;2075:33;;2084:10;2075:33;;;2101:6;2075:33;;;;;;;;;;;;;;;;;;2121:4;2114:11;;1804:326;;;;:::o;4143:299::-;4244:4;4299:47;4334:11;4299:8;:20;4308:10;4299:20;;;;;;;;;;;;;;;:30;4320:8;4299:30;;;;;;;;;;;;;;;;:34;;:47;;;;:::i;:::-;4258:8;:20;4267:10;4258:20;;;;;;;;;;;;;;;:30;4279:8;4258:30;;;;;;;;;;;;;;;:89;;;;4379:8;4358:62;;4367:10;4358:62;;;4389:8;:20;4398:10;4389:20;;;;;;;;;;;;;;;:30;4410:8;4389:30;;;;;;;;;;;;;;;;4358:62;;;;;;;;;;;;;;;;;;4433:4;4426:11;;4143:299;;;;:::o;1496:154::-;1595:7;1619:8;:16;1628:6;1619:16;;;;;;;;;;;;;;;:26;1636:8;1619:26;;;;;;;;;;;;;;;;1612:33;;1496:154;;;;:::o;1060:116:10:-;1120:7;1148:2;1142;:8;;1135:16;;;;;;1169:2;1164;:7;1157:14;;1060:116;;;;:::o;1238:128::-;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o", "source": "pragma solidity ^0.4.24;\n\n/**\n * NOTE: This contract will be removed once openzeppelin-solidity releases this code as an official release.\n * -Charles \n */\n\nimport \"./ERC20.sol\";\nimport 'openzeppelin-solidity/contracts/math/SafeMath.sol';\n\n/**\n * @title Standard ERC20 token\n *\n * @dev Implementation of the basic standard token.\n * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\n * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n */\ncontract StandardToken is ERC20 {\n using SafeMath for uint256;\n\n mapping (address => uint256) private balances_;\n\n mapping (address => mapping (address => uint256)) private allowed_;\n\n uint256 private totalSupply_;\n\n /**\n * @dev Total number of tokens in existence\n */\n function totalSupply() public view returns (uint256) {\n return totalSupply_;\n }\n\n /**\n * @dev Gets the balance of the specified address.\n * @param _owner The address to query the the balance of.\n * @return An uint256 representing the amount owned by the passed address.\n */\n function balanceOf(address _owner) public view returns (uint256) {\n return balances_[_owner];\n }\n\n /**\n * @dev Function to check the amount of tokens that an owner allowed to a spender.\n * @param _owner address The address which owns the funds.\n * @param _spender address The address which will spend the funds.\n * @return A uint256 specifying the amount of tokens still available for the spender.\n */\n function allowance(\n address _owner,\n address _spender\n )\n public\n view\n returns (uint256)\n {\n return allowed_[_owner][_spender];\n }\n\n /**\n * @dev Transfer token for a specified address\n * @param _to The address to transfer to.\n * @param _value The amount to be transferred.\n */\n function transfer(address _to, uint256 _value) public returns (bool) {\n require(_value <= balances_[msg.sender]);\n require(_to != address(0));\n\n balances_[msg.sender] = balances_[msg.sender].sub(_value);\n balances_[_to] = balances_[_to].add(_value);\n emit Transfer(msg.sender, _to, _value);\n return true;\n }\n\n /**\n * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n * Beware that changing an allowance with this method brings the risk that someone may use both the old\n * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\n * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n * @param _spender The address which will spend the funds.\n * @param _value The amount of tokens to be spent.\n */\n function approve(address _spender, uint256 _value) public returns (bool) {\n allowed_[msg.sender][_spender] = _value;\n emit Approval(msg.sender, _spender, _value);\n return true;\n }\n\n /**\n * @dev Transfer tokens from one address to another\n * @param _from address The address which you want to send tokens from\n * @param _to address The address which you want to transfer to\n * @param _value uint256 the amount of tokens to be transferred\n */\n function transferFrom(\n address _from,\n address _to,\n uint256 _value\n )\n public\n returns (bool)\n {\n require(_value <= balances_[_from]);\n require(_value <= allowed_[_from][msg.sender]);\n require(_to != address(0));\n\n balances_[_from] = balances_[_from].sub(_value);\n balances_[_to] = balances_[_to].add(_value);\n allowed_[_from][msg.sender] = allowed_[_from][msg.sender].sub(_value);\n emit Transfer(_from, _to, _value);\n return true;\n }\n\n /**\n * @dev Increase the amount of tokens that an owner allowed to a spender.\n * approve should be called when allowed_[_spender] == 0. To increment\n * allowed value is better to use this function to avoid 2 calls (and wait until\n * the first transaction is mined)\n * From MonolithDAO Token.sol\n * @param _spender The address which will spend the funds.\n * @param _addedValue The amount of tokens to increase the allowance by.\n */\n function increaseApproval(\n address _spender,\n uint256 _addedValue\n )\n public\n returns (bool)\n {\n allowed_[msg.sender][_spender] = (\n allowed_[msg.sender][_spender].add(_addedValue));\n emit Approval(msg.sender, _spender, allowed_[msg.sender][_spender]);\n return true;\n }\n\n /**\n * @dev Decrease the amount of tokens that an owner allowed to a spender.\n * approve should be called when allowed_[_spender] == 0. To decrement\n * allowed value is better to use this function to avoid 2 calls (and wait until\n * the first transaction is mined)\n * From MonolithDAO Token.sol\n * @param _spender The address which will spend the funds.\n * @param _subtractedValue The amount of tokens to decrease the allowance by.\n */\n function decreaseApproval(\n address _spender,\n uint256 _subtractedValue\n )\n public\n returns (bool)\n {\n uint256 oldValue = allowed_[msg.sender][_spender];\n if (_subtractedValue >= oldValue) {\n allowed_[msg.sender][_spender] = 0;\n } else {\n allowed_[msg.sender][_spender] = oldValue.sub(_subtractedValue);\n }\n emit Approval(msg.sender, _spender, allowed_[msg.sender][_spender]);\n return true;\n }\n\n /**\n * @dev Internal function that mints an amount of the token and assigns it to\n * an account. This encapsulates the modification of balances such that the\n * proper events are emitted.\n * @param _account The account that will receive the created tokens.\n * @param _amount The amount that will be created.\n */\n function _mint(address _account, uint256 _amount) internal {\n require(_account != 0);\n totalSupply_ = totalSupply_.add(_amount);\n balances_[_account] = balances_[_account].add(_amount);\n emit Transfer(address(0), _account, _amount);\n }\n\n /**\n * @dev Internal function that burns an amount of the token of a given\n * account.\n * @param _account The account whose tokens will be burnt.\n * @param _amount The amount that will be burnt.\n */\n function _burn(address _account, uint256 _amount) internal {\n require(_account != 0);\n require(_amount <= balances_[_account]);\n\n totalSupply_ = totalSupply_.sub(_amount);\n balances_[_account] = balances_[_account].sub(_amount);\n emit Transfer(_account, address(0), _amount);\n }\n\n /**\n * @dev Internal function that burns an amount of the token of a given\n * account, deducting from the sender's allowance for said account. Uses the\n * internal _burn function.\n * @param _account The account whose tokens will be burnt.\n * @param _amount The amount that will be burnt.\n */\n function _burnFrom(address _account, uint256 _amount) internal {\n require(_amount <= allowed_[_account][msg.sender]);\n\n // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,\n // this function needs to emit an event with the updated approval.\n allowed_[_account][msg.sender] = allowed_[_account][msg.sender].sub(\n _amount);\n _burn(_account, _amount);\n }\n}\n", - "sourcePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/StandardToken.sol", + "sourcePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/StandardToken.sol", "ast": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/StandardToken.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/StandardToken.sol", "exportedSymbols": { "StandardToken": [ 2576 @@ -249,7 +249,7 @@ "src": "0:24:8" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/ERC20.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/ERC20.sol", "file": "./ERC20.sol", "id": 2116, "nodeType": "ImportDirective", @@ -6434,7 +6434,7 @@ "src": "0:7139:8" }, "legacyAST": { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/StandardToken.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/StandardToken.sol", "exportedSymbols": { "StandardToken": [ 2576 @@ -6455,7 +6455,7 @@ "src": "0:24:8" }, { - "absolutePath": "/Users/ericjiang/Littlstar/ara-contracts/contracts/ERC20.sol", + "absolutePath": "/Users/charles/Desktop/Development/Ara/ara-contracts/contracts/ERC20.sol", "file": "./ERC20.sol", "id": 2116, "nodeType": "ImportDirective", @@ -12645,5 +12645,5 @@ }, "networks": {}, "schemaVersion": "2.0.1", - "updatedAt": "2018-12-03T22:39:45.728Z" + "updatedAt": "2018-12-10T18:54:06.225Z" } \ No newline at end of file diff --git a/scripts/test b/scripts/test index 5fd2204..2c53d3a 100755 --- a/scripts/test +++ b/scripts/test @@ -30,6 +30,7 @@ sleep 5 command="truffle migrate --reset --network local" safeRunCommand "$command" +sleep 20 # truffle test @@ -55,5 +56,8 @@ safeRunCommand "$command" command="ava test/rewards.js --verbose" safeRunCommand "$command" +command="ava test/storage.js --verbose" +safeRunCommand "$command" + # cleanup pkill -f ganache diff --git a/storage.js b/storage.js index 5c86f19..5ed33fa 100644 --- a/storage.js +++ b/storage.js @@ -1,5 +1,6 @@ const { web3: { tx, call, isAddress } } = require('ara-util') const { abi } = require('./build/contracts/AFS.json') +const isBuffer = require('is-buffer') async function read(opts) { _validateOpts(opts) @@ -63,10 +64,14 @@ async function write(opts, estimate = true, append = false) { async function hasBuffer(opts) { _validateOpts(opts) - if (!opts.buffer || 'string' !== typeof opts.buffer) { + if (!opts.buffer || ('string' !== typeof opts.buffer && false === isBuffer(opts.buffer))) { throw new TypeError('Expecting valid hex string for opts.buffer') } + if (isBuffer(opts.buffer)) { + opts.buffer = `0x${opts.buffer.toString('hex')}` + } + const { fileIndex, address, diff --git a/test/_util.js b/test/_util.js index 6d55f82..9cac11c 100644 --- a/test/_util.js +++ b/test/_util.js @@ -24,7 +24,6 @@ module.exports = { async mirrorIdentity(testDID) { testDID = getIdentifier(testDID) - const publicKey = Buffer.from(testDID, 'hex') const hash = blake2b(publicKey).toString('hex') const path = `${__dirname}/fixtures/identities` diff --git a/test/storage.js b/test/storage.js new file mode 100644 index 0000000..9b88348 --- /dev/null +++ b/test/storage.js @@ -0,0 +1,233 @@ +/* eslint-disable quotes */ + +const { web3: { account } } = require('ara-util') +const { storage, registry } = require('../') +const test = require('ava') + +const { + PASSWORD: password, + TEST_OWNER_DID, + TEST_AFS_DID1 +} = require('./_constants') + +const { + sendEthAraAndDeposit, + mirrorIdentity, + cleanup +} = require('./_util') + +test.before(async (t) => { + t.context.afsAccount = await mirrorIdentity(TEST_AFS_DID1) + const { did: contentDid } = t.context.afsAccount + t.context.address = await registry.deployProxy({ contentDid, password }) + await sendEthAraAndDeposit(TEST_AFS_DID1) +}) + +test.after(async (t) => { + await cleanup(t.context.afsAccount) +}) + +test("hasBuffer(opts) read(opts) invalid opts", async (t) => { + const funcs = [ storage.read, storage.hasBuffer ] + const promises = [] + for (const func of funcs) { + promises.push(new Promise(async (resolve) => { + // opts + await t.throwsAsync(func(), TypeError) + await t.throwsAsync(func('opts'), TypeError) + await t.throwsAsync(func({ }), TypeError) + + // address + await t.throwsAsync(func({ address: null }), TypeError) + await t.throwsAsync(func({ address: '0x123' }), TypeError) + await t.throwsAsync(func({ address: 0x123 }), TypeError) + await t.throwsAsync(func({ address: { } }), TypeError) + + // random address to test with + const address = '0xCd626bc764E1d553e0D75a42f5c4156B91a63F23' + + // fileIndex + await t.throwsAsync(func({ address }), TypeError) + await t.throwsAsync(func({ address, fileIndex: null }), TypeError) + await t.throwsAsync(func({ address, fileIndex: '0' }), TypeError) + + const fileIndex = 0 + // offset + await t.throwsAsync(func({ address, fileIndex }), TypeError) + await t.throwsAsync(func({ address, fileIndex, offset: null }), TypeError) + await t.throwsAsync(func({ address, fileIndex, offset: '32' }), TypeError) + resolve() + })) + } + await Promise.all(promises) +}) + +test("write(opts) invalid opts", async (t) => { + // opts + await t.throwsAsync(storage.write(), TypeError) + await t.throwsAsync(storage.write('opts'), TypeError) + await t.throwsAsync(storage.write({ }), TypeError) + + // mtData + await t.throwsAsync(storage.write({ mtData: null }), TypeError) + await t.throwsAsync(storage.write({ mtData: 'data' }), TypeError) + await t.throwsAsync(storage.write({ mtData: 123 }), TypeError) + await t.throwsAsync(storage.write({ mtData: [] }), TypeError) + + // msData + const mtData = { } + await t.throwsAsync(storage.write({ mtData, msData: null }), TypeError) + await t.throwsAsync(storage.write({ mtData, msData: 'data' }), TypeError) + await t.throwsAsync(storage.write({ mtData, msData: 123 }), TypeError) + await t.throwsAsync(storage.write({ mtData, msData: [] }), TypeError) + + // to + const msData = { } + await t.throwsAsync(storage.write({ mtData, msData, to: null }), TypeError) + await t.throwsAsync(storage.write({ mtData, msData, to: '0x123' }), TypeError) + await t.throwsAsync(storage.write({ mtData, msData, to: 0x123 }), TypeError) + await t.throwsAsync(storage.write({ mtData, msData, to: { } }), TypeError) + + // account + const to = '0xCd626bc764E1d553e0D75a42f5c4156B91a63F23' + await t.throwsAsync(storage.write({ + account: null, + mtData, + msData, + to + }), TypeError) + + await t.throwsAsync(storage.write({ + account: 'data', + mtData, + msData, + to + }), TypeError) + + await t.throwsAsync(storage.write({ + account: 123, + mtData, + msData, + to + }), TypeError) + + await t.throwsAsync(storage.write({ + account: [], + mtData, + msData, + to + }), TypeError) +}) + +test("hasBuffer(opts) invalid buffer", async (t) => { + const opts = { + to: '0xCd626bc764E1d553e0D75a42f5c4156B91a63F23', + mtData: { }, + msData: { }, + account: { } + } + await t.throwsAsync(storage.hasBuffer(opts), TypeError) + await t.throwsAsync(storage.hasBuffer(Object.assign({}, opts, { buffer: false })), TypeError) + await t.throwsAsync(storage.hasBuffer(Object.assign({}, opts, { buffer: 0xff })), TypeError) + await t.throwsAsync(storage.hasBuffer(Object.assign({}, opts, { buffer: [] })), TypeError) +}) + +test.serial("hasBuffer(opts) buffer does not exist", async (t) => { + const { address } = t.context + const buffer = Buffer.from('61eeb14356ff16909fd4e8b9850c532ea06c2ff2d56ed3d18b48799b0e8eb541', 'hex') + + // nothing written yet, buffer does not exist + const exists = await storage.hasBuffer({ + fileIndex: 0, + offset: 0, + buffer, + address + }) + t.true(false === Boolean(exists)) +}) + +test.serial("hasBuffer(opts) buffer exists", async (t) => { + const { address } = t.context + + const mtBuffer = '0x0502570200002807424c414b453262000000000000000000000000000000000045daaec2ad1129bfa6b3fdb16cfcfda882b376e9458bcb328360bfe975dd38bf000000000000002e6d632dafde4651f183018a764af80580f65787a0ee48b3b98668ac3f54353c19000000000000004d46102297733272a51faae3b4bee0c5ce02be67f1f5497a59a6f180d120fc3ba8000000000000001f' + const msBuffer = '0x0502570100004007456432353531390000000000000000000000000000000000610d3b8febd15a0743bf3e8fea52ce7ef40bb517faf47e6c1ada4631b8f4836455fc5abdc37a5d2273ed568f8617c491e01e4613a61f211afe4726170978330efe7f02a9faef11b9c72983a2b85b1c3d10a1daf52816a2a4ba1009b80d356e43a05137d9cbb572f1ef994e8ded9cbd045141f59024de5d24af97e2e240cbdf0bac0ce88170b39baf55c29c17b95f31700499c1fe2ea51a3fc9e7e8f823c0b85c9a8e8f01f5710e7fe61f62e2e4c272bf2b6b0b6a876ac80149bbe9ce9ba83602' + + const acct = await account.load({ did: TEST_OWNER_DID, password }) + + // 0x + 32 bytes + const buffer = mtBuffer.substring(0, 66) + + let exists = await storage.hasBuffer({ + fileIndex: 0, + offset: 0, + buffer, + address + }) + t.true(false === Boolean(exists)) + + const mtData = { + buffer: mtBuffer, + offsets: [ 0, 32, 72, 112 ] + } + const msData = { + buffer: msBuffer, + offsets: [ 0, 32, 96, 160 ] + } + + // write some data + await storage.write({ + account: acct, + to: address, + mtData, + msData + }, false) + + // make sure header now exists + exists = await storage.hasBuffer({ + fileIndex: 0, + offset: 0, + buffer, + address + }) + t.true(true === Boolean(exists)) +}) + +test.serial("write(opts) read(opts) append", async (t) => { + const { address } = t.context + + const acct = await account.load({ did: TEST_OWNER_DID, password }) + const mtBuffer = `0x${Buffer.allocUnsafe(40).fill(0xD3ADB33F).toString('hex')}` + const msBuffer = `0x${Buffer.allocUnsafe(64).fill(0xDEADB33F).toString('hex')}` + + const mtData = { + offsets: [ 152 ], + buffer: mtBuffer + } + const msData = { + offsets: [ 224 ], + buffer: msBuffer + } + + // append garbage at offsets + await storage.write({ + account: acct, + to: address, + mtData, + msData + }, false, true) + + let result = await storage.read({ + fileIndex: 0, + offset: 152, + address + }) + t.is(result, mtBuffer) + + result = await storage.read({ + fileIndex: 1, + offset: 224, + address + }) + t.is(result, msBuffer) +}) +