60806040526000600b60006101000a81548160ff0219169083151502179055506002600c55611068600d5566038d7ea4c68000600e553480156200004257600080fd5b506040516200479138038062004791833981810160405281019062000068919062000329565b8383816000908051906020019062000082929190620001f0565b5080600190805190602001906200009b929190620001f0565b505050620000be620000b26200012260201b60201c565b6200012a60201b60201c565b81600a9080519060200190620000d6929190620001f0565b5080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506200059e565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001fe90620004a9565b90600052602060002090601f0160209004810192826200022257600085556200026e565b82601f106200023d57805160ff19168380011785556200026e565b828001600101855582156200026e579182015b828111156200026d57825182559160200191906001019062000250565b5b5090506200027d919062000281565b5090565b5b808211156200029c57600081600090555060010162000282565b5090565b6000620002b7620002b18462000409565b620003e0565b905082815260208101848484011115620002d057600080fd5b620002dd84828562000473565b509392505050565b600081519050620002f68162000584565b92915050565b600082601f8301126200030e57600080fd5b815162000320848260208601620002a0565b91505092915050565b600080600080608085870312156200034057600080fd5b600085015167ffffffffffffffff8111156200035b57600080fd5b6200036987828801620002fc565b945050602085015167ffffffffffffffff8111156200038757600080fd5b6200039587828801620002fc565b935050604085015167ffffffffffffffff811115620003b357600080fd5b620003c187828801620002fc565b9250506060620003d487828801620002e5565b91505092959194509250565b6000620003ec620003ff565b9050620003fa8282620004df565b919050565b6000604051905090565b600067ffffffffffffffff82111562000427576200042662000544565b5b620004328262000573565b9050602081019050919050565b60006200044c8262000453565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156200049357808201518184015260208101905062000476565b83811115620004a3576000848401525b50505050565b60006002820490506001821680620004c257607f821691505b60208210811415620004d957620004d862000515565b5b50919050565b620004ea8262000573565b810181811067ffffffffffffffff821117156200050c576200050b62000544565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6200058f816200043f565b81146200059b57600080fd5b50565b6141e380620005ae6000396000f3fe6080604052600436106101d85760003560e01c80638da5cb5b11610102578063b88d4fde11610095578063d111515d11610064578063d111515d14610687578063e985e9c51461069e578063f2fde38b146106db578063f6bff7d514610704576101d8565b8063b88d4fde146105cd578063c7b65a30146105f6578063c87b56dd1461061f578063caabb87d1461065c576101d8565b8063a22cb465116100d1578063a22cb46514610513578063a2b40d191461053c578063a3af02b314610565578063b3f00674146105a2576101d8565b80638da5cb5b1461046957806395d89b4114610494578063a0008455146104bf578063a035b1fe146104e8576101d8565b80633ccfd60b1161017a5780636352211e116101495780636352211e146103ad5780636c0360eb146103ea57806370a0823114610415578063715018a614610452576101d8565b80633ccfd60b1461032857806340c10f191461033f57806342842e0e1461035b57806355f804b314610384576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806318160ddd146102ab57806323b872dd146102d65780632be74218146102ff576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612c14565b61072f565b604051610211919061329d565b60405180910390f35b34801561022657600080fd5b5061022f610811565b60405161023c91906132b8565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612ca7565b6108a3565b604051610279919061321b565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612bd8565b610928565b005b3480156102b757600080fd5b506102c0610a40565b6040516102cd919061361a565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f89190612ad2565b610a4a565b005b34801561030b57600080fd5b5061032660048036038101906103219190612ca7565b610aaa565b005b34801561033457600080fd5b5061033d610bac565b005b61035960048036038101906103549190612bd8565b610c75565b005b34801561036757600080fd5b50610382600480360381019061037d9190612ad2565b610e80565b005b34801561039057600080fd5b506103ab60048036038101906103a69190612c66565b610ea0565b005b3480156103b957600080fd5b506103d460048036038101906103cf9190612ca7565b610f86565b6040516103e1919061321b565b60405180910390f35b3480156103f657600080fd5b506103ff611038565b60405161040c91906132b8565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190612a6d565b6110ca565b604051610449919061361a565b60405180910390f35b34801561045e57600080fd5b50610467611182565b005b34801561047557600080fd5b5061047e61120a565b60405161048b919061321b565b60405180910390f35b3480156104a057600080fd5b506104a9611234565b6040516104b691906132b8565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190612cd0565b6112c6565b005b3480156104f457600080fd5b506104fd611455565b60405161050a919061361a565b60405180910390f35b34801561051f57600080fd5b5061053a60048036038101906105359190612b9c565b61145b565b005b34801561054857600080fd5b50610563600480360381019061055e9190612ca7565b6115dc565b005b34801561057157600080fd5b5061058c60048036038101906105879190612ca7565b6116dd565b60405161059991906132b8565b60405180910390f35b3480156105ae57600080fd5b506105b7611782565b6040516105c49190613236565b60405180910390f35b3480156105d957600080fd5b506105f460048036038101906105ef9190612b21565b6117a8565b005b34801561060257600080fd5b5061061d60048036038101906106189190612ca7565b61180a565b005b34801561062b57600080fd5b5061064660048036038101906106419190612ca7565b611890565b60405161065391906132b8565b60405180910390f35b34801561066857600080fd5b50610671611938565b60405161067e919061361a565b60405180910390f35b34801561069357600080fd5b5061069c611973565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190612a96565b611a38565b6040516106d2919061329d565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190612a6d565b611acc565b005b34801561071057600080fd5b50610719611bc4565b604051610726919061361a565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107fa57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061080a575061080982611bca565b5b9050919050565b60606000805461082090613917565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90613917565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b5050505050905090565b60006108ae82611c34565b6108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e49061351a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061093382610f86565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b9061359a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109c3611ca0565b73ffffffffffffffffffffffffffffffffffffffff1614806109f257506109f1816109ec611ca0565b611a38565b5b610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a289061349a565b60405180910390fd5b610a3b8383611ca8565b505050565b6000611068905090565b610a5b610a55611ca0565b82611d61565b610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a91906135fa565b60405180910390fd5b610aa5838383611e3f565b505050565b610ab2611ca0565b73ffffffffffffffffffffffffffffffffffffffff16610ad061120a565b73ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d9061353a565b60405180910390fd5b611068811115610b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b62906135da565b60405180910390fd5b80600d819055507faa8c228c8c2a7207440944c5656515417d9882a076965c59bddb775a2b59f85c81604051610ba1919061361a565b60405180910390a150565b610bb4611ca0565b73ffffffffffffffffffffffffffffffffffffffff16610bd261120a565b73ffffffffffffffffffffffffffffffffffffffff1614610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f9061353a565b60405180910390fd5b610c7347600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661209b90919063ffffffff16565b565b600d5481610c83600761218f565b610c8d919061373a565b1115610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc59061339a565b60405180910390fd5b600c5481600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d1c919061373a565b1115610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d54906132da565b60405180910390fd5b80600e54610d6b91906137c1565b3414610dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da3906133fa565b60405180910390fd5b60005b81811015610e7b57610dc1600761219d565b6000610dcd600761218f565b9050610dd984826121b3565b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e29919061373a565b925050819055507f07883703ed0e86588a40d76551c92f8a4b329e3bf19765e0e6749473c1a8466581604051610e5f919061361a565b60405180910390a1508080610e739061397a565b915050610daf565b505050565b610e9b838383604051806020016040528060008152506117a8565b505050565b610ea8611ca0565b73ffffffffffffffffffffffffffffffffffffffff16610ec661120a565b73ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061353a565b60405180910390fd5b600b60009054906101000a900460ff1615610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f639061335a565b60405180910390fd5b80600a9080519060200190610f82929190612891565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561102f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611026906134da565b60405180910390fd5b80915050919050565b6060600a805461104790613917565b80601f016020809104026020016040519081016040528092919081815260200182805461107390613917565b80156110c05780601f10611095576101008083540402835291602001916110c0565b820191906000526020600020905b8154815290600101906020018083116110a357829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561113b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611132906134ba565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61118a611ca0565b73ffffffffffffffffffffffffffffffffffffffff166111a861120a565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f59061353a565b60405180910390fd5b6112086000612381565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461124390613917565b80601f016020809104026020016040519081016040528092919081815260200182805461126f90613917565b80156112bc5780601f10611291576101008083540402835291602001916112bc565b820191906000526020600020905b81548152906001019060200180831161129f57829003601f168201915b5050505050905090565b6112ce611ca0565b73ffffffffffffffffffffffffffffffffffffffff166112ec61120a565b73ffffffffffffffffffffffffffffffffffffffff1614611342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113399061353a565b60405180910390fd5b600060086000848152602001908152602001600020805461136290613917565b9050146113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b906135ba565b60405180910390fd5b6113ae600761218f565b8211156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061341a565b60405180910390fd5b80600860008481526020019081526020016000209080519060200190611417929190612891565b507f591366ded260008f23473879d583c2723509348c749fbfe609120552704570cb8282604051611449929190613635565b60405180910390a15050565b600e5481565b611463611ca0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c8906133da565b60405180910390fd5b80600560006114de611ca0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661158b611ca0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115d0919061329d565b60405180910390a35050565b6115e4611ca0565b73ffffffffffffffffffffffffffffffffffffffff1661160261120a565b73ffffffffffffffffffffffffffffffffffffffff1614611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f9061353a565b60405180910390fd5b600081101561169c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611693906132fa565b60405180910390fd5b80600e819055507fa6dc15bdb68da224c66db4b3838d9a2b205138e8cff6774e57d0af91e196d622816040516116d2919061361a565b60405180910390a150565b60606008600083815260200190815260200160002080546116fd90613917565b80601f016020809104026020016040519081016040528092919081815260200182805461172990613917565b80156117765780601f1061174b57610100808354040283529160200191611776565b820191906000526020600020905b81548152906001019060200180831161175957829003601f168201915b50505050509050919050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117b96117b3611ca0565b83611d61565b6117f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ef906135fa565b60405180910390fd5b61180484848484612447565b50505050565b611812611ca0565b73ffffffffffffffffffffffffffffffffffffffff1661183061120a565b73ffffffffffffffffffffffffffffffffffffffff1614611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d9061353a565b60405180910390fd5b80600c8190555050565b606061189b82611c34565b6118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d19061357a565b60405180910390fd5b60006118e46124a3565b51116118ff5760405180602001604052806000815250611931565b6119076124a3565b61191083612535565b6040516020016119219291906131d7565b6040516020818303038152906040525b9050919050565b6000600d54611947600761218f565b101561196b57611957600761218f565b600d54611964919061381b565b9050611970565b600090505b90565b61197b611ca0565b73ffffffffffffffffffffffffffffffffffffffff1661199961120a565b73ffffffffffffffffffffffffffffffffffffffff16146119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e69061353a565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507feef043febddf4e1d1cf1f72ff1407b84e036e805aa0934418cb82095da8d716460405160405180910390a1565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ad4611ca0565b73ffffffffffffffffffffffffffffffffffffffff16611af261120a565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061353a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061333a565b60405180910390fd5b611bc181612381565b50565b600d5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d1b83610f86565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611d6c82611c34565b611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da29061347a565b60405180910390fd5b6000611db683610f86565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e2557508373ffffffffffffffffffffffffffffffffffffffff16611e0d846108a3565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e365750611e358185611a38565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e5f82610f86565b73ffffffffffffffffffffffffffffffffffffffff1614611eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eac9061355a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c906133ba565b60405180910390fd5b611f308383836126e2565b611f3b600082611ca8565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f8b919061381b565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fe2919061373a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b804710156120de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d59061345a565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161210490613206565b60006040518083038185875af1925050503d8060008114612141576040519150601f19603f3d011682016040523d82523d6000602084013e612146565b606091505b505090508061218a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121819061343a565b60405180910390fd5b505050565b600081600001549050919050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a906134fa565b60405180910390fd5b61222c81611c34565b1561226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639061337a565b60405180910390fd5b612278600083836126e2565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c8919061373a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612452848484611e3f565b61245e848484846126e7565b61249d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124949061331a565b60405180910390fd5b50505050565b6060600a80546124b290613917565b80601f01602080910402602001604051908101604052809291908181526020018280546124de90613917565b801561252b5780601f106125005761010080835404028352916020019161252b565b820191906000526020600020905b81548152906001019060200180831161250e57829003601f168201915b5050505050905090565b6060600082141561257d576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506126dd565b600082905060005b600082146125af5780806125989061397a565b915050600a826125a89190613790565b9150612585565b60008167ffffffffffffffff8111156125f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156126235781602001600182028036833780820191505090505b5090505b600085146126d65760018261263c919061381b565b9150600a8561264b91906139c3565b6030612657919061373a565b60f81b818381518110612693577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856126cf9190613790565b9450612627565b8093505050505b919050565b505050565b60006127088473ffffffffffffffffffffffffffffffffffffffff1661287e565b15612871578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612731611ca0565b8786866040518563ffffffff1660e01b81526004016127539493929190613251565b602060405180830381600087803b15801561276d57600080fd5b505af192505050801561279e57506040513d601f19601f8201168201806040525081019061279b9190612c3d565b60015b612821573d80600081146127ce576040519150601f19603f3d011682016040523d82523d6000602084013e6127d3565b606091505b50600081511415612819576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128109061331a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612876565b600190505b949350505050565b600080823b905060008111915050919050565b82805461289d90613917565b90600052602060002090601f0160209004810192826128bf5760008555612906565b82601f106128d857805160ff1916838001178555612906565b82800160010185558215612906579182015b828111156129055782518255916020019190600101906128ea565b5b5090506129139190612917565b5090565b5b80821115612930576000816000905550600101612918565b5090565b60006129476129428461368a565b613665565b90508281526020810184848401111561295f57600080fd5b61296a8482856138d5565b509392505050565b6000612985612980846136bb565b613665565b90508281526020810184848401111561299d57600080fd5b6129a88482856138d5565b509392505050565b6000813590506129bf81614151565b92915050565b6000813590506129d481614168565b92915050565b6000813590506129e98161417f565b92915050565b6000815190506129fe8161417f565b92915050565b600082601f830112612a1557600080fd5b8135612a25848260208601612934565b91505092915050565b600082601f830112612a3f57600080fd5b8135612a4f848260208601612972565b91505092915050565b600081359050612a6781614196565b92915050565b600060208284031215612a7f57600080fd5b6000612a8d848285016129b0565b91505092915050565b60008060408385031215612aa957600080fd5b6000612ab7858286016129b0565b9250506020612ac8858286016129b0565b9150509250929050565b600080600060608486031215612ae757600080fd5b6000612af5868287016129b0565b9350506020612b06868287016129b0565b9250506040612b1786828701612a58565b9150509250925092565b60008060008060808587031215612b3757600080fd5b6000612b45878288016129b0565b9450506020612b56878288016129b0565b9350506040612b6787828801612a58565b925050606085013567ffffffffffffffff811115612b8457600080fd5b612b9087828801612a04565b91505092959194509250565b60008060408385031215612baf57600080fd5b6000612bbd858286016129b0565b9250506020612bce858286016129c5565b9150509250929050565b60008060408385031215612beb57600080fd5b6000612bf9858286016129b0565b9250506020612c0a85828601612a58565b9150509250929050565b600060208284031215612c2657600080fd5b6000612c34848285016129da565b91505092915050565b600060208284031215612c4f57600080fd5b6000612c5d848285016129ef565b91505092915050565b600060208284031215612c7857600080fd5b600082013567ffffffffffffffff811115612c9257600080fd5b612c9e84828501612a2e565b91505092915050565b600060208284031215612cb957600080fd5b6000612cc784828501612a58565b91505092915050565b60008060408385031215612ce357600080fd5b6000612cf185828601612a58565b925050602083013567ffffffffffffffff811115612d0e57600080fd5b612d1a85828601612a2e565b9150509250929050565b612d2d81613861565b82525050565b612d3c8161384f565b82525050565b612d4b81613873565b82525050565b6000612d5c826136ec565b612d668185613702565b9350612d768185602086016138e4565b612d7f81613ab0565b840191505092915050565b6000612d95826136f7565b612d9f818561371e565b9350612daf8185602086016138e4565b612db881613ab0565b840191505092915050565b6000612dce826136f7565b612dd8818561372f565b9350612de88185602086016138e4565b80840191505092915050565b6000612e0160218361371e565b9150612e0c82613ac1565b604082019050919050565b6000612e24601f8361371e565b9150612e2f82613b10565b602082019050919050565b6000612e4760328361371e565b9150612e5282613b39565b604082019050919050565b6000612e6a60268361371e565b9150612e7582613b88565b604082019050919050565b6000612e8d60128361371e565b9150612e9882613bd7565b602082019050919050565b6000612eb0601c8361371e565b9150612ebb82613c00565b602082019050919050565b6000612ed3601e8361371e565b9150612ede82613c29565b602082019050919050565b6000612ef660248361371e565b9150612f0182613c52565b604082019050919050565b6000612f1960198361371e565b9150612f2482613ca1565b602082019050919050565b6000612f3c601f8361371e565b9150612f4782613cca565b602082019050919050565b6000612f5f60178361371e565b9150612f6a82613cf3565b602082019050919050565b6000612f82603a8361371e565b9150612f8d82613d1c565b604082019050919050565b6000612fa5601d8361371e565b9150612fb082613d6b565b602082019050919050565b6000612fc8602c8361371e565b9150612fd382613d94565b604082019050919050565b6000612feb60388361371e565b9150612ff682613de3565b604082019050919050565b600061300e602a8361371e565b915061301982613e32565b604082019050919050565b600061303160298361371e565b915061303c82613e81565b604082019050919050565b600061305460208361371e565b915061305f82613ed0565b602082019050919050565b6000613077602c8361371e565b915061308282613ef9565b604082019050919050565b600061309a60058361372f565b91506130a582613f48565b600582019050919050565b60006130bd60208361371e565b91506130c882613f71565b602082019050919050565b60006130e060298361371e565b91506130eb82613f9a565b604082019050919050565b6000613103602f8361371e565b915061310e82613fe9565b604082019050919050565b600061312660218361371e565b915061313182614038565b604082019050919050565b600061314960168361371e565b915061315482614087565b602082019050919050565b600061316c60318361371e565b9150613177826140b0565b604082019050919050565b600061318f600083613713565b915061319a826140ff565b600082019050919050565b60006131b260318361371e565b91506131bd82614102565b604082019050919050565b6131d1816138cb565b82525050565b60006131e38285612dc3565b91506131ef8284612dc3565b91506131fa8261308d565b91508190509392505050565b600061321182613182565b9150819050919050565b60006020820190506132306000830184612d33565b92915050565b600060208201905061324b6000830184612d24565b92915050565b60006080820190506132666000830187612d33565b6132736020830186612d33565b61328060408301856131c8565b81810360608301526132928184612d51565b905095945050505050565b60006020820190506132b26000830184612d42565b92915050565b600060208201905081810360008301526132d28184612d8a565b905092915050565b600060208201905081810360008301526132f381612df4565b9050919050565b6000602082019050818103600083015261331381612e17565b9050919050565b6000602082019050818103600083015261333381612e3a565b9050919050565b6000602082019050818103600083015261335381612e5d565b9050919050565b6000602082019050818103600083015261337381612e80565b9050919050565b6000602082019050818103600083015261339381612ea3565b9050919050565b600060208201905081810360008301526133b381612ec6565b9050919050565b600060208201905081810360008301526133d381612ee9565b9050919050565b600060208201905081810360008301526133f381612f0c565b9050919050565b6000602082019050818103600083015261341381612f2f565b9050919050565b6000602082019050818103600083015261343381612f52565b9050919050565b6000602082019050818103600083015261345381612f75565b9050919050565b6000602082019050818103600083015261347381612f98565b9050919050565b6000602082019050818103600083015261349381612fbb565b9050919050565b600060208201905081810360008301526134b381612fde565b9050919050565b600060208201905081810360008301526134d381613001565b9050919050565b600060208201905081810360008301526134f381613024565b9050919050565b6000602082019050818103600083015261351381613047565b9050919050565b600060208201905081810360008301526135338161306a565b9050919050565b60006020820190508181036000830152613553816130b0565b9050919050565b60006020820190508181036000830152613573816130d3565b9050919050565b60006020820190508181036000830152613593816130f6565b9050919050565b600060208201905081810360008301526135b381613119565b9050919050565b600060208201905081810360008301526135d38161313c565b9050919050565b600060208201905081810360008301526135f38161315f565b9050919050565b60006020820190508181036000830152613613816131a5565b9050919050565b600060208201905061362f60008301846131c8565b92915050565b600060408201905061364a60008301856131c8565b818103602083015261365c8184612d8a565b90509392505050565b600061366f613680565b905061367b8282613949565b919050565b6000604051905090565b600067ffffffffffffffff8211156136a5576136a4613a81565b5b6136ae82613ab0565b9050602081019050919050565b600067ffffffffffffffff8211156136d6576136d5613a81565b5b6136df82613ab0565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613745826138cb565b9150613750836138cb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613785576137846139f4565b5b828201905092915050565b600061379b826138cb565b91506137a6836138cb565b9250826137b6576137b5613a23565b5b828204905092915050565b60006137cc826138cb565b91506137d7836138cb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138105761380f6139f4565b5b828202905092915050565b6000613826826138cb565b9150613831836138cb565b925082821015613844576138436139f4565b5b828203905092915050565b600061385a826138ab565b9050919050565b600061386c826138ab565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156139025780820151818401526020810190506138e7565b83811115613911576000848401525b50505050565b6000600282049050600182168061392f57607f821691505b6020821081141561394357613942613a52565b5b50919050565b61395282613ab0565b810181811067ffffffffffffffff8211171561397157613970613a81565b5b80604052505050565b6000613985826138cb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139b8576139b76139f4565b5b600182019050919050565b60006139ce826138cb565b91506139d9836138cb565b9250826139e9576139e8613a23565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45786365656473206d696e74696e67206c696d6974207065722061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f5072696365206d7573742062652067726561746572207468616e207a65726f00600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4d657461646174612069732066726f7a656e0000000000000000000000000000600082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f457863656564732074656d706f7261727920737570706c79206c696d69740000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f45746865722076616c75652073656e74206973206e6f7420636f727265637400600082015250565b7f546f6b656e20494420646f6573206e6f74206578697374000000000000000000600082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f50726f6475637420494420616c72656164792073657400000000000000000000600082015250565b7f54656d706f7261727920737570706c79206c696d69742065786365656473207460008201527f6f74616c20737570706c79206c696d6974000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b61415a8161384f565b811461416557600080fd5b50565b61417181613873565b811461417c57600080fd5b50565b6141888161387f565b811461419357600080fd5b50565b61419f816138cb565b81146141aa57600080fd5b5056fea26469706673582212203d26558632008402cd434d4287a06866dff748565e45d5f1a8e7b44e2a2d704f64736f6c63430008040033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000c426ea3c4d0b766d19df1d08aa9a7c8e56dcce930000000000000000000000000000000000000000000000000000000000000008537572694672657900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044652335900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a68747470733a2f2f6e66742d6261636b656e642e73757269667265792e636f6d2f6d657461646174612f00000000000000000000000000000000000000000000