0x608060405234801561001057600080fd5b50600436106101365760003560e01c80638da5cb5b116100b2578063c45a015511610081578063df349ed511610066578063df349ed514610399578063e130054d146103b9578063f2fde38b146103da57600080fd5b8063c45a01551461035f578063dd3ee4cb1461038657600080fd5b80638da5cb5b146102fb578063a694fc3a14610319578063ac9650d81461032c578063bb558df11461034c57600080fd5b806335aac57911610109578063715018a6116100ee578063715018a614610294578063791b98bc1461029c5780638abfb4b3146102e857600080fd5b806335aac5791461021e5780636206dc231461027357600080fd5b80630792d5131461013b5780630bddfc66146101d6578063160624a4146101f65780632e17de781461020b575b600080fd5b610192610149366004611bcd565b60026020819052600091825260409091205480820b9163010000008204900b906601000000000000900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1683565b60408051600294850b81529290930b602083015279ffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091526060015b60405180910390f35b6101e96101e4366004611bea565b6103ed565b6040516101cd9190611c2b565b610209610204366004611bcd565b610456565b005b610209610219366004611c80565b61055d565b61026361022c366004611bcd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602081905260409091205463010000008104820b910b1290565b60405190151581526020016101cd565b610286610281366004611c99565b6107ea565b6040519081526020016101cd565b610209610830565b6102c37f000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe8881565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cd565b6102636102f6366004611ce1565b610844565b60005473ffffffffffffffffffffffffffffffffffffffff166102c3565b610209610327366004611c80565b6108bc565b61033f61033a366004611d2c565b610d81565b6040516101cd9190611e11565b61020961035a366004611ec3565b610e6b565b6102c37f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98481565b610263610394366004611bea565b611062565b6102866103a7366004611bcd565b60036020526000908152604090205481565b6103cc6103c7366004611bea565b6110a0565b6040516101cd929190611fc2565b6102096103e8366004611bcd565b61110c565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905273ffffffffffffffffffffffffffffffffffffffff878116835260018252848320908716835290529190912061044e90836111c3565b949350505050565b61045e6112d1565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602081905260409091205463010000008104820b910b126104fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6e6f6e6578697374656e7420706f6f6c20636f6e66696775726174696f6e000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602090815260408083209290925590519182527f893ea5cd9f61e202ce1de43c9d277f6fb0d0c43f05a0e6646b40679e1d78e2ad910160405180910390a150565b600061056882611352565b9050610575338284611062565b6105db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f74207374616b65642079657400000000000000000000000000000000000060448201526064016104f5565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152812061061590846111c3565b905080608001514211610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420756e6c6f636b6564207965740000000000000000000000000000000060448201526064016104f5565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290206106be9084611482565b506060810151815173ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040812080549091906106fa90849061204c565b90915550506040517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018490527f000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe8873ffffffffffffffffffffffffffffffffffffffff16906342842e0e90606401600060405180830381600087803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b505060408051338152602081018790527f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75935001905060405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff80831660009081526001602090815260408083209385168352929052908120610827906114ce565b90505b92915050565b6108386112d1565b61084260006114d9565b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260208190526040822054810b9084900b1280159061044e57505073ffffffffffffffffffffffffffffffffffffffff831660009081526002602081905260409091205463010000009004810b9082900b13155b9392505050565b6000806000806000807f000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe8873ffffffffffffffffffffffffffffffffffffffff166399fbab88886040518263ffffffff1660e01b815260040161092091815260200190565b61018060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096291906120ad565b50505050975097509750975097509750505060006109eb7f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98460405180606001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018862ffffff1681525061154e565b90506109f833828a611062565b15610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f616c7265616479207374616b656400000000000000000000000000000000000060448201526064016104f5565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018990527f000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe8873ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050610b468173ffffffffffffffffffffffffffffffffffffffff1660009081526002602081905260409091205463010000008104820b910b1290565b610bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6e6f6e6578697374656e7420706f6f6c20636f6e66696775726174696f6e000060448201526064016104f5565b610bb7818585610844565b610c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420696e2072616e6765000000000000000000000000000000000000000060448201526064016104f5565b6040805160a08101825273ffffffffffffffffffffffffffffffffffffffff8316808252600287810b60208085019190915287820b848601526fffffffffffffffffffffffffffffffff87166060850152600092835252918220546080820190610cad906601000000000000900479ffffffffffffffffffffffffffffffffffffffffffffffffffff164261218f565b905233600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091529020909150610ced908a836116a7565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080546fffffffffffffffffffffffffffffffff86169290610d3590849061218f565b90915550506040517fb010b502db27ea3aa420b0d65ffcd229cd8b4ae85d0d271096849ac51697137490610d6e9033908c9085906121a2565b60405180910390a1505050505050505050565b60608167ffffffffffffffff811115610d9c57610d9c611e94565b604051908082528060200260200182016040528015610dcf57816020015b6060815260200190600190039081610dba5790505b50905060005b82811015610e6457610e3f30858584818110610df357610df361221a565b9050602002810190610e059190612249565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178b92505050565b828281518110610e5157610e5161221a565b6020908102919091010152600101610dd5565b5092915050565b610e736112d1565b73ffffffffffffffffffffffffffffffffffffffff8216610ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f696e76616c696420706f6f6c000000000000000000000000000000000000000060448201526064016104f5565b806000015160020b816020015160020b13610f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964207469636b2072616e6765000000000000000000000000000060448201526064016104f5565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020818152604092839020855181548784018051898801805162ffffff9586167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090951694909417630100000095909216949094021765ffffffffffff16660100000000000079ffffffffffffffffffffffffffffffffffffffffffffffffffff938416021790935585519687528751850b93870193909352905190920b92840192909252511660608201527f0e590d9f7177087afa0f1062b1986ae87a88589092e28eb535fc6ebb95af12839060800160405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600160209081526040808320938616835292905290812061044e90836117b0565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905273ffffffffffffffffffffffffffffffffffffffff8781168352600182528483209087168352905291822061110090846117bc565b90969095509350505050565b6111146112d1565b73ffffffffffffffffffffffffffffffffffffffff81166111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104f5565b6111c0816114d9565b50565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600082815260028085016020908152604092839020835160a081018552815473ffffffffffffffffffffffffffffffffffffffff81168252740100000000000000000000000000000000000000008104850b9382019390935277010000000000000000000000000000000000000000000000909204830b938201939093526001830154606082018190529290910154608082015290158015611297575061129584846117b0565b155b15610827576040517f3a054bd4000000000000000000000000000000000000000000000000000000008152600481018490526024016104f5565b60005473ffffffffffffffffffffffffffffffffffffffff163314610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f5565b6000806000807f000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe8873ffffffffffffffffffffffffffffffffffffffff166399fbab88866040518263ffffffff1660e01b81526004016113b391815260200190565b61018060405180830381865afa1580156113d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f591906120ad565b5050505050505094509450945050506114797f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98460405180606001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018462ffffff1681525061154e565b95945050505050565b600081815260028084016020526040822080547fffffffffffff000000000000000000000000000000000000000000000000000016815560018101839055018190556108278383611890565b600061082a8261189c565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061159057600080fd5b8151602080840151604080860151815173ffffffffffffffffffffffffffffffffffffffff95861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201207fff0000000000000000000000000000000000000000000000000000000000000060a08401529085901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b600082815260028085016020908152604080842085518154938701519287015162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff9190941674010000000000000000000000000000000000000000027fffffffffffffffffff000000000000000000000000000000000000000000000090951673ffffffffffffffffffffffffffffffffffffffff90921691909117939093179290921617815560608401516001820155608084015191015561044e84846118a6565b6060610827838360405180606001604052806027815260200161230d602791396118b2565b60006108278383611937565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905260006117f2858561194f565b600081815260028088016020908152604092839020835160a081018552815473ffffffffffffffffffffffffffffffffffffffff81168252740100000000000000000000000000000000000000008104850b9382019390935277010000000000000000000000000000000000000000000000909204830b938201939093526001830154606082015291015460808201529093509150505b9250929050565b6000610827838361195b565b600061082a825490565b60006108278383611a4e565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516118dc91906122ae565b600060405180830381855af49150503d8060008114611917576040519150601f19603f3d011682016040523d82523d6000602084013e61191c565b606091505b509150915061192d86838387611a9d565b9695505050505050565b60008181526001830160205260408120541515610827565b60006108278383611b3d565b60008181526001830160205260408120548015611a4457600061197f60018361204c565b85549091506000906119939060019061204c565b90508181146119f85760008660000182815481106119b3576119b361221a565b90600052602060002001549050808760000184815481106119d6576119d661221a565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a0957611a096122ca565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061082a565b600091505061082a565b6000818152600183016020526040812054611a955750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561082a565b50600061082a565b60608315611b33578251600003611b2c5773ffffffffffffffffffffffffffffffffffffffff85163b611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f5565b508161044e565b61044e8383611b67565b6000826000018281548110611b5457611b5461221a565b9060005260206000200154905092915050565b815115611b775781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f591906122f9565b73ffffffffffffffffffffffffffffffffffffffff811681146111c057600080fd5b600060208284031215611bdf57600080fd5b813561082781611bab565b600080600060608486031215611bff57600080fd5b8335611c0a81611bab565b92506020840135611c1a81611bab565b929592945050506040919091013590565b60a0810161082a828473ffffffffffffffffffffffffffffffffffffffff8151168252602081015160020b6020830152604081015160020b604083015260608101516060830152608081015160808301525050565b600060208284031215611c9257600080fd5b5035919050565b60008060408385031215611cac57600080fd5b8235611cb781611bab565b91506020830135611cc781611bab565b809150509250929050565b8060020b81146111c057600080fd5b600080600060608486031215611cf657600080fd5b8335611d0181611bab565b92506020840135611d1181611cd2565b91506040840135611d2181611cd2565b809150509250925092565b60008060208385031215611d3f57600080fd5b823567ffffffffffffffff811115611d5657600080fd5b8301601f81018513611d6757600080fd5b803567ffffffffffffffff811115611d7e57600080fd5b8560208260051b8401011115611d9357600080fd5b6020919091019590945092505050565b60005b83811015611dbe578181015183820152602001611da6565b50506000910152565b60008151808452611ddf816020860160208601611da3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015611e88577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452611e73858351611dc7565b94506020938401939190910190600101611e39565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000808284036080811215611ed757600080fd5b8335611ee281611bab565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215611f1457600080fd5b506040516060810181811067ffffffffffffffff82111715611f5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526020840135611f7081611cd2565b81526040840135611f8081611cd2565b6020820152606084013579ffffffffffffffffffffffffffffffffffffffffffffffffffff81168114611fb257600080fd5b6040820152919491935090915050565b82815260c081016108b5602083018473ffffffffffffffffffffffffffffffffffffffff8151168252602081015160020b6020830152604081015160020b604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561082a5761082a61201d565b805161206a81611bab565b919050565b805162ffffff8116811461206a57600080fd5b805161206a81611cd2565b80516fffffffffffffffffffffffffffffffff8116811461206a57600080fd5b6000806000806000806000806000806000806101808d8f0312156120d057600080fd5b8c516bffffffffffffffffffffffff811681146120ec57600080fd5b9b506120fa60208e0161205f565b9a5061210860408e0161205f565b995061211660608e0161205f565b985061212460808e0161206f565b975061213260a08e01612082565b965061214060c08e01612082565b955061214e60e08e0161208d565b6101008e01516101208f01519196509450925061216e6101408e0161208d565b915061217d6101608e0161208d565b90509295989b509295989b509295989b565b8082018082111561082a5761082a61201d565b73ffffffffffffffffffffffffffffffffffffffff841681526020810183905260e0810161044e604083018473ffffffffffffffffffffffffffffffffffffffff8151168252602081015160020b6020830152604081015160020b604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261227e57600080fd5b83018035915067ffffffffffffffff82111561229957600080fd5b60200191503681900382131561188957600080fd5b600082516122c0818460208701611da3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6020815260006108276020830184611dc756fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220288ec5a82b2aa97be2e9c50c10f806aabbf35c82450b73b287895d602462c4af64736f6c634300081c0033
0x60c060405234801561001057600080fd5b506040516124c93803806124c983398101604081905261002f916100c4565b6100383361005c565b6001600160a01b03808416608052821660a0526100548161005c565b505050610111565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100c157600080fd5b50565b6000806000606084860312156100d957600080fd5b83516100e4816100ac565b60208501519093506100f5816100ac565b6040850151909250610106816100ac565b809150509250925092565b60805160a051612369610160600039600081816103640152818161097b01526114090152600081816102a10152818161073a015281816108c701528181610a9a015261135a01526123696000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80638da5cb5b116100b2578063c45a015511610081578063df349ed511610066578063df349ed514610399578063e130054d146103b9578063f2fde38b146103da57600080fd5b8063c45a01551461035f578063dd3ee4cb1461038657600080fd5b80638da5cb5b146102fb578063a694fc3a14610319578063ac9650d81461032c578063bb558df11461034c57600080fd5b806335aac57911610109578063715018a6116100ee578063715018a614610294578063791b98bc1461029c5780638abfb4b3146102e857600080fd5b806335aac5791461021e5780636206dc231461027357600080fd5b80630792d5131461013b5780630bddfc66146101d6578063160624a4146101f65780632e17de781461020b575b600080fd5b610192610149366004611bcd565b60026020819052600091825260409091205480820b9163010000008204900b906601000000000000900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1683565b60408051600294850b81529290930b602083015279ffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091526060015b60405180910390f35b6101e96101e4366004611bea565b6103ed565b6040516101cd9190611c2b565b610209610204366004611bcd565b610456565b005b610209610219366004611c80565b61055d565b61026361022c366004611bcd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602081905260409091205463010000008104820b910b1290565b60405190151581526020016101cd565b610286610281366004611c99565b6107ea565b6040519081526020016101cd565b610209610830565b6102c37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cd565b6102636102f6366004611ce1565b610844565b60005473ffffffffffffffffffffffffffffffffffffffff166102c3565b610209610327366004611c80565b6108bc565b61033f61033a366004611d2c565b610d81565b6040516101cd9190611e11565b61020961035a366004611ec3565b610e6b565b6102c37f000000000000000000000000000000000000000000000000000000000000000081565b610263610394366004611bea565b611062565b6102866103a7366004611bcd565b60036020526000908152604090205481565b6103cc6103c7366004611bea565b6110a0565b6040516101cd929190611fc2565b6102096103e8366004611bcd565b61110c565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905273ffffffffffffffffffffffffffffffffffffffff878116835260018252848320908716835290529190912061044e90836111c3565b949350505050565b61045e6112d1565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602081905260409091205463010000008104820b910b126104fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6e6f6e6578697374656e7420706f6f6c20636f6e66696775726174696f6e000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602090815260408083209290925590519182527f893ea5cd9f61e202ce1de43c9d277f6fb0d0c43f05a0e6646b40679e1d78e2ad910160405180910390a150565b600061056882611352565b9050610575338284611062565b6105db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f74207374616b65642079657400000000000000000000000000000000000060448201526064016104f5565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152812061061590846111c3565b905080608001514211610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420756e6c6f636b6564207965740000000000000000000000000000000060448201526064016104f5565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290206106be9084611482565b506060810151815173ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040812080549091906106fa90849061204c565b90915550506040517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342842e0e90606401600060405180830381600087803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b505060408051338152602081018790527f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75935001905060405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff80831660009081526001602090815260408083209385168352929052908120610827906114ce565b90505b92915050565b6108386112d1565b61084260006114d9565b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260208190526040822054810b9084900b1280159061044e57505073ffffffffffffffffffffffffffffffffffffffff831660009081526002602081905260409091205463010000009004810b9082900b13155b9392505050565b6000806000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166399fbab88886040518263ffffffff1660e01b815260040161092091815260200190565b61018060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096291906120ad565b50505050975097509750975097509750505060006109eb7f000000000000000000000000000000000000000000000000000000000000000060405180606001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018862ffffff1681525061154e565b90506109f833828a611062565b15610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f616c7265616479207374616b656400000000000000000000000000000000000060448201526064016104f5565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018990527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050610b468173ffffffffffffffffffffffffffffffffffffffff1660009081526002602081905260409091205463010000008104820b910b1290565b610bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6e6f6e6578697374656e7420706f6f6c20636f6e66696775726174696f6e000060448201526064016104f5565b610bb7818585610844565b610c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420696e2072616e6765000000000000000000000000000000000000000060448201526064016104f5565b6040805160a08101825273ffffffffffffffffffffffffffffffffffffffff8316808252600287810b60208085019190915287820b848601526fffffffffffffffffffffffffffffffff87166060850152600092835252918220546080820190610cad906601000000000000900479ffffffffffffffffffffffffffffffffffffffffffffffffffff164261218f565b905233600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091529020909150610ced908a836116a7565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080546fffffffffffffffffffffffffffffffff86169290610d3590849061218f565b90915550506040517fb010b502db27ea3aa420b0d65ffcd229cd8b4ae85d0d271096849ac51697137490610d6e9033908c9085906121a2565b60405180910390a1505050505050505050565b60608167ffffffffffffffff811115610d9c57610d9c611e94565b604051908082528060200260200182016040528015610dcf57816020015b6060815260200190600190039081610dba5790505b50905060005b82811015610e6457610e3f30858584818110610df357610df361221a565b9050602002810190610e059190612249565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178b92505050565b828281518110610e5157610e5161221a565b6020908102919091010152600101610dd5565b5092915050565b610e736112d1565b73ffffffffffffffffffffffffffffffffffffffff8216610ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f696e76616c696420706f6f6c000000000000000000000000000000000000000060448201526064016104f5565b806000015160020b816020015160020b13610f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964207469636b2072616e6765000000000000000000000000000060448201526064016104f5565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020818152604092839020855181548784018051898801805162ffffff9586167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090951694909417630100000095909216949094021765ffffffffffff16660100000000000079ffffffffffffffffffffffffffffffffffffffffffffffffffff938416021790935585519687528751850b93870193909352905190920b92840192909252511660608201527f0e590d9f7177087afa0f1062b1986ae87a88589092e28eb535fc6ebb95af12839060800160405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600160209081526040808320938616835292905290812061044e90836117b0565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905273ffffffffffffffffffffffffffffffffffffffff8781168352600182528483209087168352905291822061110090846117bc565b90969095509350505050565b6111146112d1565b73ffffffffffffffffffffffffffffffffffffffff81166111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104f5565b6111c0816114d9565b50565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600082815260028085016020908152604092839020835160a081018552815473ffffffffffffffffffffffffffffffffffffffff81168252740100000000000000000000000000000000000000008104850b9382019390935277010000000000000000000000000000000000000000000000909204830b938201939093526001830154606082018190529290910154608082015290158015611297575061129584846117b0565b155b15610827576040517f3a054bd4000000000000000000000000000000000000000000000000000000008152600481018490526024016104f5565b60005473ffffffffffffffffffffffffffffffffffffffff163314610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f5565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166399fbab88866040518263ffffffff1660e01b81526004016113b391815260200190565b61018060405180830381865afa1580156113d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f591906120ad565b5050505050505094509450945050506114797f000000000000000000000000000000000000000000000000000000000000000060405180606001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018462ffffff1681525061154e565b95945050505050565b600081815260028084016020526040822080547fffffffffffff000000000000000000000000000000000000000000000000000016815560018101839055018190556108278383611890565b600061082a8261189c565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061159057600080fd5b8151602080840151604080860151815173ffffffffffffffffffffffffffffffffffffffff95861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201207fff0000000000000000000000000000000000000000000000000000000000000060a08401529085901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b600082815260028085016020908152604080842085518154938701519287015162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff9190941674010000000000000000000000000000000000000000027fffffffffffffffffff000000000000000000000000000000000000000000000090951673ffffffffffffffffffffffffffffffffffffffff90921691909117939093179290921617815560608401516001820155608084015191015561044e84846118a6565b6060610827838360405180606001604052806027815260200161230d602791396118b2565b60006108278383611937565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905260006117f2858561194f565b600081815260028088016020908152604092839020835160a081018552815473ffffffffffffffffffffffffffffffffffffffff81168252740100000000000000000000000000000000000000008104850b9382019390935277010000000000000000000000000000000000000000000000909204830b938201939093526001830154606082015291015460808201529093509150505b9250929050565b6000610827838361195b565b600061082a825490565b60006108278383611a4e565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516118dc91906122ae565b600060405180830381855af49150503d8060008114611917576040519150601f19603f3d011682016040523d82523d6000602084013e61191c565b606091505b509150915061192d86838387611a9d565b9695505050505050565b60008181526001830160205260408120541515610827565b60006108278383611b3d565b60008181526001830160205260408120548015611a4457600061197f60018361204c565b85549091506000906119939060019061204c565b90508181146119f85760008660000182815481106119b3576119b361221a565b90600052602060002001549050808760000184815481106119d6576119d661221a565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a0957611a096122ca565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061082a565b600091505061082a565b6000818152600183016020526040812054611a955750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561082a565b50600061082a565b60608315611b33578251600003611b2c5773ffffffffffffffffffffffffffffffffffffffff85163b611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f5565b508161044e565b61044e8383611b67565b6000826000018281548110611b5457611b5461221a565b9060005260206000200154905092915050565b815115611b775781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f591906122f9565b73ffffffffffffffffffffffffffffffffffffffff811681146111c057600080fd5b600060208284031215611bdf57600080fd5b813561082781611bab565b600080600060608486031215611bff57600080fd5b8335611c0a81611bab565b92506020840135611c1a81611bab565b929592945050506040919091013590565b60a0810161082a828473ffffffffffffffffffffffffffffffffffffffff8151168252602081015160020b6020830152604081015160020b604083015260608101516060830152608081015160808301525050565b600060208284031215611c9257600080fd5b5035919050565b60008060408385031215611cac57600080fd5b8235611cb781611bab565b91506020830135611cc781611bab565b809150509250929050565b8060020b81146111c057600080fd5b600080600060608486031215611cf657600080fd5b8335611d0181611bab565b92506020840135611d1181611cd2565b91506040840135611d2181611cd2565b809150509250925092565b60008060208385031215611d3f57600080fd5b823567ffffffffffffffff811115611d5657600080fd5b8301601f81018513611d6757600080fd5b803567ffffffffffffffff811115611d7e57600080fd5b8560208260051b8401011115611d9357600080fd5b6020919091019590945092505050565b60005b83811015611dbe578181015183820152602001611da6565b50506000910152565b60008151808452611ddf816020860160208601611da3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015611e88577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452611e73858351611dc7565b94506020938401939190910190600101611e39565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000808284036080811215611ed757600080fd5b8335611ee281611bab565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215611f1457600080fd5b506040516060810181811067ffffffffffffffff82111715611f5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526020840135611f7081611cd2565b81526040840135611f8081611cd2565b6020820152606084013579ffffffffffffffffffffffffffffffffffffffffffffffffffff81168114611fb257600080fd5b6040820152919491935090915050565b82815260c081016108b5602083018473ffffffffffffffffffffffffffffffffffffffff8151168252602081015160020b6020830152604081015160020b604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561082a5761082a61201d565b805161206a81611bab565b919050565b805162ffffff8116811461206a57600080fd5b805161206a81611cd2565b80516fffffffffffffffffffffffffffffffff8116811461206a57600080fd5b6000806000806000806000806000806000806101808d8f0312156120d057600080fd5b8c516bffffffffffffffffffffffff811681146120ec57600080fd5b9b506120fa60208e0161205f565b9a5061210860408e0161205f565b995061211660608e0161205f565b985061212460808e0161206f565b975061213260a08e01612082565b965061214060c08e01612082565b955061214e60e08e0161208d565b6101008e01516101208f01519196509450925061216e6101408e0161208d565b915061217d6101608e0161208d565b90509295989b509295989b509295989b565b8082018082111561082a5761082a61201d565b73ffffffffffffffffffffffffffffffffffffffff841681526020810183905260e0810161044e604083018473ffffffffffffffffffffffffffffffffffffffff8151168252602081015160020b6020830152604081015160020b604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261227e57600080fd5b83018035915067ffffffffffffffff82111561229957600080fd5b60200191503681900382131561188957600080fd5b600082516122c0818460208701611da3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6020815260006108276020830184611dc756fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220288ec5a82b2aa97be2e9c50c10f806aabbf35c82450b73b287895d602462c4af64736f6c634300081c0033000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe880000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000aa57db9286b6d3c1ff85aa06629e48ff32db7149