60806040526019600c55600f600d55604b600e556701140bbd030c4000600f5566f523226980800060105561270f6011556001601260006101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff0219169083151502179055506040518060400160405280600781526020017f5745445249505a000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f53560000000000000000000000000000000000000000000000000000000000008152508160029080519060200190620001059291906200045c565b5080600390805190602001906200011e9291906200045c565b506200012f6200017060201b60201c565b6000819055505050620001576200014b6200017960201b60201c565b6200018160201b60201c565b6200016a33601e6200024760201b60201c565b62000570565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620002b4576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203620002ef576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200030460008483856200043c60201b60201c565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060e162000371600184146200044260201b60201c565b901b60a042901b62000389856200044c60201b60201c565b171760046000838152602001908152602001600020819055506000819050600083820190505b818060010192508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808210620003af578160008190555050506200043760008483856200045660201b60201c565b505050565b50505050565b6000819050919050565b6000819050919050565b50505050565b8280546200046a906200053b565b90600052602060002090601f0160209004810192826200048e5760008555620004da565b82601f10620004a957805160ff1916838001178555620004da565b82800160010185558215620004da579182015b82811115620004d9578251825591602001919060010190620004bc565b5b509050620004e99190620004ed565b5090565b5b8082111562000508576000816000905550600101620004ee565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200055457607f821691505b6020821081036200056a57620005696200050c565b5b50919050565b61459380620005806000396000f3fe6080604052600436106102555760003560e01c8063612f8cba11610139578063a22cb465116100b6578063cfc86f7b1161007a578063cfc86f7b146108cd578063d5002f2e146108f8578063d5abeb0114610923578063e985e9c51461094e578063f19e75d41461098b578063f2fde38b146109b457610295565b8063a22cb465146107d8578063ab377daa14610801578063b88d4fde1461083e578063bedb86fb14610867578063c87b56dd1461089057610295565b80637cb64759116100fd5780637cb64759146107145780638da5cb5b1461073d57806395d89b4114610768578063a0712d6814610793578063a101ff6d146107af57610295565b8063612f8cba1461062f5780636352211e14610658578063672a7fe01461069557806370a08231146106c0578063715018a6146106fd57610295565b806330390830116101d25780634bb10a73116101965780634bb10a731461051d578063507e094f14610548578063518302271461057357806355f804b31461059e57806357a858fc146105c75780635c975abb1461060457610295565b8063303908301461047a57806330a464f5146104965780633ccfd60b146104bf57806342842e0e146104c9578063453c2310146104f257610295565b806318160ddd1161021957806318160ddd1461039357806318cae269146103be57806323b872dd146103fb5780632a23d07d146104245780632eb4a7ab1461044f57610295565b806301ffc9a71461029a57806306fdde03146102d7578063081812fc14610302578063095ea7b31461033f57806313faede61461036857610295565b36610295577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874333460405161028b929190613048565b60405180910390a1005b600080fd5b3480156102a657600080fd5b506102c160048036038101906102bc91906130dd565b6109dd565b6040516102ce9190613125565b60405180910390f35b3480156102e357600080fd5b506102ec610a6f565b6040516102f991906131d9565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190613227565b610b01565b6040516103369190613254565b60405180910390f35b34801561034b57600080fd5b506103666004803603810190610361919061329b565b610b7d565b005b34801561037457600080fd5b5061037d610d23565b60405161038a91906132db565b60405180910390f35b34801561039f57600080fd5b506103a8610d29565b6040516103b591906132db565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e091906132f6565b610d40565b6040516103f291906132db565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613323565b610d58565b005b34801561043057600080fd5b50610439610d68565b60405161044691906132db565b60405180910390f35b34801561045b57600080fd5b50610464610d6e565b604051610471919061338f565b60405180910390f35b610494600480360381019061048f919061340f565b610d74565b005b3480156104a257600080fd5b506104bd60048036038101906104b8919061349b565b611144565b005b6104c76111dd565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190613323565b611346565b005b3480156104fe57600080fd5b50610507611366565b60405161051491906132db565b60405180910390f35b34801561052957600080fd5b5061053261136c565b60405161053f91906132db565b60405180910390f35b34801561055457600080fd5b5061055d611372565b60405161056a91906132db565b60405180910390f35b34801561057f57600080fd5b50610588611378565b6040516105959190613125565b60405180910390f35b3480156105aa57600080fd5b506105c560048036038101906105c091906135f8565b61138b565b005b3480156105d357600080fd5b506105ee60048036038101906105e99190613227565b611421565b6040516105fb91906132db565b60405180910390f35b34801561061057600080fd5b50610619611445565b6040516106269190613125565b60405180910390f35b34801561063b57600080fd5b5061065660048036038101906106519190613805565b611458565b005b34801561066457600080fd5b5061067f600480360381019061067a9190613227565b61161e565b60405161068c9190613254565b60405180910390f35b3480156106a157600080fd5b506106aa611630565b6040516106b79190613125565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e291906132f6565b611643565b6040516106f491906132db565b60405180910390f35b34801561070957600080fd5b506107126116fb565b005b34801561072057600080fd5b5061073b600480360381019061073691906138a9565b611783565b005b34801561074957600080fd5b50610752611809565b60405161075f9190613254565b60405180910390f35b34801561077457600080fd5b5061077d611833565b60405161078a91906131d9565b60405180910390f35b6107ad60048036038101906107a89190613227565b6118c5565b005b3480156107bb57600080fd5b506107d660048036038101906107d191906138d6565b611bda565b005b3480156107e457600080fd5b506107ff60048036038101906107fa9190613932565b611c8b565b005b34801561080d57600080fd5b5061082860048036038101906108239190613227565b611e02565b6040516108359190613981565b60405180910390f35b34801561084a57600080fd5b5061086560048036038101906108609190613a3d565b611e41565b005b34801561087357600080fd5b5061088e6004803603810190610889919061349b565b611eb4565b005b34801561089c57600080fd5b506108b760048036038101906108b29190613227565b611f4d565b6040516108c491906131d9565b60405180910390f35b3480156108d957600080fd5b506108e261200f565b6040516108ef91906131d9565b60405180910390f35b34801561090457600080fd5b5061090d61209d565b60405161091a91906132db565b60405180910390f35b34801561092f57600080fd5b506109386120fd565b60405161094591906132db565b60405180910390f35b34801561095a57600080fd5b5061097560048036038101906109709190613ac0565b612103565b6040516109829190613125565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190613227565b612197565b005b3480156109c057600080fd5b506109db60048036038101906109d691906132f6565b612277565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a3857506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a685750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060028054610a7e90613b2f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aaa90613b2f565b8015610af75780601f10610acc57610100808354040283529160200191610af7565b820191906000526020600020905b815481529060010190602001808311610ada57829003601f168201915b5050505050905090565b6000610b0c8261236e565b610b42576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b88826123cd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bef576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c0e612499565b73ffffffffffffffffffffffffffffffffffffffff1614610c7157610c3a81610c35612499565b612103565b610c70576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600f5481565b6000610d336124a1565b6001546000540303905090565b60146020528060005260406000206000915090505481565b610d638383836124aa565b505050565b60105481565b60135481565b8260001515601260009054906101000a900460ff16151514610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290613bac565b60405180910390fd5b60115481610dd7612851565b610de19190613bfb565b1115610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1990613c9d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790613d09565b60405180910390fd5b600d54811115610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90613d9b565b60405180910390fd5b600e5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f239190613bfb565b1115610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90613e2d565b60405180910390fd5b60011515601260019054906101000a900460ff16151503610fd45780601054610f8d9190613e4d565b341015610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc690613ef3565b60405180910390fd5b611025565b80600f54610fe29190613e4d565b341015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90613ef3565b60405180910390fd5b5b6000336040516020016110389190613f5b565b60405160208183030381529060405280519060200120905061109e848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060135483612864565b6110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490613fe8565b60405180910390fd5b6110e7338661287b565b84601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111369190613bfb565b925050819055505050505050565b61114c612a4d565b73ffffffffffffffffffffffffffffffffffffffff1661116a611809565b73ffffffffffffffffffffffffffffffffffffffff16146111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790614054565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b60008060006111ea61209d565b905060006009805490509050600047905060005b8281101561133e576009818154811061121a57611219614074565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600a818154811061125b5761125a614074565b5b9060005260206000200154945060008673ffffffffffffffffffffffffffffffffffffffff1685878561128e9190613e4d565b61129891906140d2565b6040516112a490614134565b60006040518083038185875af1925050503d80600081146112e1576040519150601f19603f3d011682016040523d82523d6000602084013e6112e6565b606091505b505090508061132a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611321906141bb565b60405180910390fd5b508080611336906141db565b9150506111fe565b505050505050565b61136183838360405180602001604052806000815250611e41565b505050565b600e5481565b600c5481565b600d5481565b601260029054906101000a900460ff1681565b611393612a4d565b73ffffffffffffffffffffffffffffffffffffffff166113b1611809565b73ffffffffffffffffffffffffffffffffffffffff1614611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe90614054565b60405180910390fd5b80600b908051906020019061141d929190612f09565b5050565b600a818154811061143157600080fd5b906000526020600020016000915090505481565b601260009054906101000a900460ff1681565b611460612a4d565b73ffffffffffffffffffffffffffffffffffffffff1661147e611809565b73ffffffffffffffffffffffffffffffffffffffff16146114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90614054565b60405180910390fd5b600960006114e29190612f8f565b600a60006114f09190612fb0565b600082519050815183511461153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190614295565b60405180910390fd5b60005b8181101561161857600984828151811061155a57611559614074565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a8382815181106115d7576115d6614074565b5b602002602001015190806001815401808255809150506001900390600052602060002001600090919091909150558080611610906141db565b91505061153d565b50505050565b6000611629826123cd565b9050919050565b601260019054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116aa576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611703612a4d565b73ffffffffffffffffffffffffffffffffffffffff16611721611809565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90614054565b60405180910390fd5b6117816000612a55565b565b61178b612a4d565b73ffffffffffffffffffffffffffffffffffffffff166117a9611809565b73ffffffffffffffffffffffffffffffffffffffff16146117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f690614054565b60405180910390fd5b8060138190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461184290613b2f565b80601f016020809104026020016040519081016040528092919081815260200182805461186e90613b2f565b80156118bb5780601f10611890576101008083540402835291602001916118bb565b820191906000526020600020905b81548152906001019060200180831161189e57829003601f168201915b5050505050905090565b8060001515601260009054906101000a900460ff1615151461191c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191390613bac565b60405180910390fd5b60115481611928612851565b6119329190613bfb565b1115611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90613c9d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890613d09565b60405180910390fd5b600d54811115611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d90613d9b565b60405180910390fd5b600e5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a749190613bfb565b1115611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac90613e2d565b60405180910390fd5b60011515601260019054906101000a900460ff16151503611b255780601054611ade9190613e4d565b341015611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1790613ef3565b60405180910390fd5b611b76565b80600f54611b339190613e4d565b341015611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c90613ef3565b60405180910390fd5b5b611b80338361287b565b81601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bcf9190613bfb565b925050819055505050565b611be2612a4d565b73ffffffffffffffffffffffffffffffffffffffff16611c00611809565b73ffffffffffffffffffffffffffffffffffffffff1614611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90614054565b60405180910390fd5b81601260026101000a81548160ff02191690831515021790555080600b9080519060200190611c86929190612f09565b505050565b611c93612499565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cf7576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611d04612499565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611db1612499565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611df69190613125565b60405180910390a35050565b60098181548110611e1257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e4c8484846124aa565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611eae57611e7784848484612b1b565b611ead576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611ebc612a4d565b73ffffffffffffffffffffffffffffffffffffffff16611eda611809565b73ffffffffffffffffffffffffffffffffffffffff1614611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790614054565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b60606000611f59612c6b565b905060011515601260029054906101000a900460ff16151503611fc7576000815111611f945760405180602001604052806000815250611fbf565b80611f9e84612cfd565b604051602001611faf92919061433d565b6040516020818303038152906040525b91505061200a565b6000815111611fe55760405180602001604052806000815250612006565b80604051602001611ff6919061436c565b6040516020818303038152906040525b9150505b919050565b600b805461201c90613b2f565b80601f016020809104026020016040519081016040528092919081815260200182805461204890613b2f565b80156120955780601f1061206a57610100808354040283529160200191612095565b820191906000526020600020905b81548152906001019060200180831161207857829003601f168201915b505050505081565b6000806000600980549050905060005b818110156120f457600a81815481106120c9576120c8614074565b5b9060005260206000200154836120df9190613bfb565b925080806120ec906141db565b9150506120ad565b50819250505090565b60115481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61219f612a4d565b73ffffffffffffffffffffffffffffffffffffffff166121bd611809565b73ffffffffffffffffffffffffffffffffffffffff1614612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a90614054565b60405180910390fd5b6011548161221f612851565b6122299190613bfb565b111561226a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226190613c9d565b60405180910390fd5b612274338261287b565b50565b61227f612a4d565b73ffffffffffffffffffffffffffffffffffffffff1661229d611809565b73ffffffffffffffffffffffffffffffffffffffff16146122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90614054565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612362576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612359906143f5565b60405180910390fd5b61236b81612a55565b50565b6000816123796124a1565b11158015612388575060005482105b80156123c6575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600080829050806123dc6124a1565b11612462576000548110156124615760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082160361245f575b6000810361245557600460008360019003935083815260200190815260200160002054905061242b565b8092505050612494565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600033905090565b60006001905090565b60006124b5826123cd565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461251c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1661253d612499565b73ffffffffffffffffffffffffffffffffffffffff16148061256c575061256b85612566612499565b612103565b5b806125b1575061257a612499565b73ffffffffffffffffffffffffffffffffffffffff1661259984610b01565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806125ea576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612650576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61265d8585856001612e5d565b6006600084815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055507c020000000000000000000000000000000000000000000000000000000060a042901b61275a86612e63565b1717600460008581526020019081526020016000208190555060007c02000000000000000000000000000000000000000000000000000000008316036127e257600060018401905060006004600083815260200190815260200160002054036127e05760005481146127df578260046000838152602001908152602001600020819055505b5b505b828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461284a8585856001612e6d565b5050505050565b600061285b6124a1565b60005403905090565b6000826128718584612e73565b1490509392505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128e7576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203612921576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61292e6000848385612e5d565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060e161299360018414612ee8565b901b60a042901b6129a385612e63565b171760046000838152602001908152602001600020819055506000819050600083820190505b818060010192508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106129c957816000819055505050612a486000848385612e6d565b505050565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b41612499565b8786866040518563ffffffff1660e01b8152600401612b63949392919061446a565b6020604051808303816000875af1925050508015612b9f57506040513d601f19601f82011682018060405250810190612b9c91906144cb565b60015b612c18573d8060008114612bcf576040519150601f19603f3d011682016040523d82523d6000602084013e612bd4565b606091505b506000815103612c10576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600b8054612c7a90613b2f565b80601f0160208091040260200160405190810160405280929190818152602001828054612ca690613b2f565b8015612cf35780601f10612cc857610100808354040283529160200191612cf3565b820191906000526020600020905b815481529060010190602001808311612cd657829003601f168201915b5050505050905090565b606060008203612d44576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e58565b600082905060005b60008214612d76578080612d5f906141db565b915050600a82612d6f91906140d2565b9150612d4c565b60008167ffffffffffffffff811115612d9257612d916134cd565b5b6040519080825280601f01601f191660200182016040528015612dc45781602001600182028036833780820191505090505b5090505b60008514612e5157600182612ddd91906144f8565b9150600a85612dec919061452c565b6030612df89190613bfb565b60f81b818381518110612e0e57612e0d614074565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e4a91906140d2565b9450612dc8565b8093505050505b919050565b50505050565b6000819050919050565b50505050565b60008082905060005b8451811015612edd576000858281518110612e9a57612e99614074565b5b60200260200101519050808311612ebc57612eb58382612ef2565b9250612ec9565b612ec68184612ef2565b92505b508080612ed5906141db565b915050612e7c565b508091505092915050565b6000819050919050565b600082600052816020526040600020905092915050565b828054612f1590613b2f565b90600052602060002090601f016020900481019282612f375760008555612f7e565b82601f10612f5057805160ff1916838001178555612f7e565b82800160010185558215612f7e579182015b82811115612f7d578251825591602001919060010190612f62565b5b509050612f8b9190612fd1565b5090565b5080546000825590600052602060002090810190612fad9190612fd1565b50565b5080546000825590600052602060002090810190612fce9190612fd1565b50565b5b80821115612fea576000816000905550600101612fd2565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301982612fee565b9050919050565b6130298161300e565b82525050565b6000819050919050565b6130428161302f565b82525050565b600060408201905061305d6000830185613020565b61306a6020830184613039565b9392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130ba81613085565b81146130c557600080fd5b50565b6000813590506130d7816130b1565b92915050565b6000602082840312156130f3576130f261307b565b5b6000613101848285016130c8565b91505092915050565b60008115159050919050565b61311f8161310a565b82525050565b600060208201905061313a6000830184613116565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561317a57808201518184015260208101905061315f565b83811115613189576000848401525b50505050565b6000601f19601f8301169050919050565b60006131ab82613140565b6131b5818561314b565b93506131c581856020860161315c565b6131ce8161318f565b840191505092915050565b600060208201905081810360008301526131f381846131a0565b905092915050565b6132048161302f565b811461320f57600080fd5b50565b600081359050613221816131fb565b92915050565b60006020828403121561323d5761323c61307b565b5b600061324b84828501613212565b91505092915050565b60006020820190506132696000830184613020565b92915050565b6132788161300e565b811461328357600080fd5b50565b6000813590506132958161326f565b92915050565b600080604083850312156132b2576132b161307b565b5b60006132c085828601613286565b92505060206132d185828601613212565b9150509250929050565b60006020820190506132f06000830184613039565b92915050565b60006020828403121561330c5761330b61307b565b5b600061331a84828501613286565b91505092915050565b60008060006060848603121561333c5761333b61307b565b5b600061334a86828701613286565b935050602061335b86828701613286565b925050604061336c86828701613212565b9150509250925092565b6000819050919050565b61338981613376565b82525050565b60006020820190506133a46000830184613380565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126133cf576133ce6133aa565b5b8235905067ffffffffffffffff8111156133ec576133eb6133af565b5b602083019150836020820283011115613408576134076133b4565b5b9250929050565b6000806000604084860312156134285761342761307b565b5b600061343686828701613212565b935050602084013567ffffffffffffffff81111561345757613456613080565b5b613463868287016133b9565b92509250509250925092565b6134788161310a565b811461348357600080fd5b50565b6000813590506134958161346f565b92915050565b6000602082840312156134b1576134b061307b565b5b60006134bf84828501613486565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135058261318f565b810181811067ffffffffffffffff82111715613524576135236134cd565b5b80604052505050565b6000613537613071565b905061354382826134fc565b919050565b600067ffffffffffffffff821115613563576135626134cd565b5b61356c8261318f565b9050602081019050919050565b82818337600083830152505050565b600061359b61359684613548565b61352d565b9050828152602081018484840111156135b7576135b66134c8565b5b6135c2848285613579565b509392505050565b600082601f8301126135df576135de6133aa565b5b81356135ef848260208601613588565b91505092915050565b60006020828403121561360e5761360d61307b565b5b600082013567ffffffffffffffff81111561362c5761362b613080565b5b613638848285016135ca565b91505092915050565b600067ffffffffffffffff82111561365c5761365b6134cd565b5b602082029050602081019050919050565b600061367882612fee565b9050919050565b6136888161366d565b811461369357600080fd5b50565b6000813590506136a58161367f565b92915050565b60006136be6136b984613641565b61352d565b905080838252602082019050602084028301858111156136e1576136e06133b4565b5b835b8181101561370a57806136f68882613696565b8452602084019350506020810190506136e3565b5050509392505050565b600082601f830112613729576137286133aa565b5b81356137398482602086016136ab565b91505092915050565b600067ffffffffffffffff82111561375d5761375c6134cd565b5b602082029050602081019050919050565b600061378161377c84613742565b61352d565b905080838252602082019050602084028301858111156137a4576137a36133b4565b5b835b818110156137cd57806137b98882613212565b8452602084019350506020810190506137a6565b5050509392505050565b600082601f8301126137ec576137eb6133aa565b5b81356137fc84826020860161376e565b91505092915050565b6000806040838503121561381c5761381b61307b565b5b600083013567ffffffffffffffff81111561383a57613839613080565b5b61384685828601613714565b925050602083013567ffffffffffffffff81111561386757613866613080565b5b613873858286016137d7565b9150509250929050565b61388681613376565b811461389157600080fd5b50565b6000813590506138a38161387d565b92915050565b6000602082840312156138bf576138be61307b565b5b60006138cd84828501613894565b91505092915050565b600080604083850312156138ed576138ec61307b565b5b60006138fb85828601613486565b925050602083013567ffffffffffffffff81111561391c5761391b613080565b5b613928858286016135ca565b9150509250929050565b600080604083850312156139495761394861307b565b5b600061395785828601613286565b925050602061396885828601613486565b9150509250929050565b61397b8161366d565b82525050565b60006020820190506139966000830184613972565b92915050565b600067ffffffffffffffff8211156139b7576139b66134cd565b5b6139c08261318f565b9050602081019050919050565b60006139e06139db8461399c565b61352d565b9050828152602081018484840111156139fc576139fb6134c8565b5b613a07848285613579565b509392505050565b600082601f830112613a2457613a236133aa565b5b8135613a348482602086016139cd565b91505092915050565b60008060008060808587031215613a5757613a5661307b565b5b6000613a6587828801613286565b9450506020613a7687828801613286565b9350506040613a8787828801613212565b925050606085013567ffffffffffffffff811115613aa857613aa7613080565b5b613ab487828801613a0f565b91505092959194509250565b60008060408385031215613ad757613ad661307b565b5b6000613ae585828601613286565b9250506020613af685828601613286565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b4757607f821691505b602082108103613b5a57613b59613b00565b5b50919050565b7f436f6e7472616374206973207061757365640000000000000000000000000000600082015250565b6000613b9660128361314b565b9150613ba182613b60565b602082019050919050565b60006020820190508181036000830152613bc581613b89565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c068261302f565b9150613c118361302f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c4657613c45613bcc565b5b828201905092915050565b7f436f6c6c656374696f6e2069732063617070656420617420392c393939000000600082015250565b6000613c87601d8361314b565b9150613c9282613c51565b602082019050919050565b60006020820190508181036000830152613cb681613c7a565b9050919050565b7f4e6f20636f6e7472616374732100000000000000000000000000000000000000600082015250565b6000613cf3600d8361314b565b9150613cfe82613cbd565b602082019050919050565b60006020820190508181036000830152613d2281613ce6565b9050919050565b7f596f752063616e2774206d696e742074686973206d616e79206174206f6e636560008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d8560218361314b565b9150613d9082613d29565b604082019050919050565b60006020820190508181036000830152613db481613d78565b9050919050565b7f596f75206d696e746564206173206d616e7920617320796f752063616e20616c60008201527f72656164792e0000000000000000000000000000000000000000000000000000602082015250565b6000613e1760268361314b565b9150613e2282613dbb565b604082019050919050565b60006020820190508181036000830152613e4681613e0a565b9050919050565b6000613e588261302f565b9150613e638361302f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e9c57613e9b613bcc565b5b828202905092915050565b7f496e73756666696369656e742046756e64732e00000000000000000000000000600082015250565b6000613edd60138361314b565b9150613ee882613ea7565b602082019050919050565b60006020820190508181036000830152613f0c81613ed0565b9050919050565b60008160601b9050919050565b6000613f2b82613f13565b9050919050565b6000613f3d82613f20565b9050919050565b613f55613f508261300e565b613f32565b82525050565b6000613f678284613f44565b60148201915081905092915050565b7f496e76616c6964204d65726b6c6520547265652070726f6f6620737570706c6960008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fd260228361314b565b9150613fdd82613f76565b604082019050919050565b6000602082019050818103600083015261400181613fc5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061403e60208361314b565b915061404982614008565b602082019050919050565b6000602082019050818103600083015261406d81614031565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140dd8261302f565b91506140e88361302f565b9250826140f8576140f76140a3565b5b828204905092915050565b600081905092915050565b50565b600061411e600083614103565b91506141298261410e565b600082019050919050565b600061413f82614111565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006141a5603a8361314b565b91506141b082614149565b604082019050919050565b600060208201905081810360008301526141d481614198565b9050919050565b60006141e68261302f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361421857614217613bcc565b5b600182019050919050565b7f6e756d626572206f66206e6577207368617265686f6c64657273206d7573742060008201527f6d61746368206e756d626572206f66206e657720736861726573000000000000602082015250565b600061427f603a8361314b565b915061428a82614223565b604082019050919050565b600060208201905081810360008301526142ae81614272565b9050919050565b600081905092915050565b60006142cb82613140565b6142d581856142b5565b93506142e581856020860161315c565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006143276005836142b5565b9150614332826142f1565b600582019050919050565b600061434982856142c0565b915061435582846142c0565b91506143608261431a565b91508190509392505050565b600061437882846142c0565b915081905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143df60268361314b565b91506143ea82614383565b604082019050919050565b6000602082019050818103600083015261440e816143d2565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061443c82614415565b6144468185614420565b935061445681856020860161315c565b61445f8161318f565b840191505092915050565b600060808201905061447f6000830187613020565b61448c6020830186613020565b6144996040830185613039565b81810360608301526144ab8184614431565b905095945050505050565b6000815190506144c5816130b1565b92915050565b6000602082840312156144e1576144e061307b565b5b60006144ef848285016144b6565b91505092915050565b60006145038261302f565b915061450e8361302f565b92508282101561452157614520613bcc565b5b828203905092915050565b60006145378261302f565b91506145428361302f565b925082614552576145516140a3565b5b82820690509291505056fea2646970667358221220d575962892a0738582de915fb9d2db8e40545d8eb9087ebb8776258c09c7038064736f6c634300080e0033