0x608060405234801561000f575f80fd5b506040516139ed3803806139ed83398181016040528101906100319190610312565b80333382610044816101b260201b60201c565b508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600160055f600181526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f600281526020019081526020015f205f6101000a81548160ff0219169083151502179055505073e93f21b8e4659b2b41c70c5a97453a0113ee226560075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066013e52b9abe00060065f600181526020019081526020015f208190555066013e52b9abe00060065f600281526020019081526020015f208190555050610635565b80600290816101c19190610566565b5050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610224826101de565b810181811067ffffffffffffffff82111715610243576102426101ee565b5b80604052505050565b5f6102556101c5565b9050610261828261021b565b919050565b5f67ffffffffffffffff8211156102805761027f6101ee565b5b610289826101de565b9050602081019050919050565b8281835e5f83830152505050565b5f6102b66102b184610266565b61024c565b9050828152602081018484840111156102d2576102d16101da565b5b6102dd848285610296565b509392505050565b5f82601f8301126102f9576102f86101d6565b5b81516103098482602086016102a4565b91505092915050565b5f60208284031215610327576103266101ce565b5b5f82015167ffffffffffffffff811115610344576103436101d2565b5b610350848285016102e5565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103a757607f821691505b6020821081036103ba576103b9610363565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261041c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103e1565b61042686836103e1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61046a6104656104608461043e565b610447565b61043e565b9050919050565b5f819050919050565b61048383610450565b61049761048f82610471565b8484546103ed565b825550505050565b5f90565b6104ab61049f565b6104b681848461047a565b505050565b5b818110156104d9576104ce5f826104a3565b6001810190506104bc565b5050565b601f82111561051e576104ef816103c0565b6104f8846103d2565b81016020851015610507578190505b61051b610513856103d2565b8301826104bb565b50505b505050565b5f82821c905092915050565b5f61053e5f1984600802610523565b1980831691505092915050565b5f610556838361052f565b9150826002028217905092915050565b61056f82610359565b67ffffffffffffffff811115610588576105876101ee565b5b6105928254610390565b61059d8282856104dd565b5f60209050601f8311600181146105ce575f84156105bc578287015190505b6105c6858261054b565b86555061062d565b601f1984166105dc866103c0565b5f5b82811015610603578489015182556001820191506020850194506020810190506105de565b86831015610620578489015161061c601f89168261052f565b8355505b6001600288020188555050505b505050505050565b6133ab806106425f395ff3fe608060405260043610610164575f3560e01c8063718da7ee116100d0578063c457fb3711610089578063f242432a11610063578063f242432a14610548578063f2fde38b14610570578063f5298aca14610598578063f7260d3e146105c057610164565b8063c457fb37146104a8578063e985e9c5146104e4578063eb685c471461052057610164565b8063718da7ee146103a2578063731133e9146103ca5780638da5cb5b146103f2578063a22cb4651461041c578063ad99f3c414610444578063b3ab15fb1461048057610164565b80634c807530116101225780634c807530146102945780634e1273f4146102bc5780634ffced54146102f8578063570ca7351461031457806361b93e391461033e5780636b20c4541461037a57610164565b8062fdd58e1461016857806301ffc9a7146101a457806302fe5305146101e05780630e89341c146102085780631f7fdffa146102445780632eb2c2d61461026c575b5f80fd5b348015610173575f80fd5b5061018e60048036038101906101899190612183565b6105ea565b60405161019b91906121d0565b60405180910390f35b3480156101af575f80fd5b506101ca60048036038101906101c5919061223e565b61063f565b6040516101d79190612283565b60405180910390f35b3480156101eb575f80fd5b50610206600480360381019061020191906123d8565b610720565b005b348015610213575f80fd5b5061022e6004803603810190610229919061241f565b610734565b60405161023b91906124aa565b60405180910390f35b34801561024f575f80fd5b5061026a6004803603810190610265919061262c565b6107c6565b005b348015610277575f80fd5b50610292600480360381019061028d91906126e4565b6107e0565b005b34801561029f575f80fd5b506102ba60048036038101906102b591906127d9565b6108ab565b005b3480156102c7575f80fd5b506102e260048036038101906102dd91906128d7565b6108df565b6040516102ef9190612a04565b60405180910390f35b610312600480360381019061030d9190612a24565b6109e6565b005b34801561031f575f80fd5b50610328610b5d565b6040516103359190612a9f565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190612ab8565b610b85565b6040516103719190612283565b60405180910390f35b348015610385575f80fd5b506103a0600480360381019061039b9190612af6565b610c46565b005b3480156103ad575f80fd5b506103c860048036038101906103c39190612b7e565b610cae565b005b3480156103d5575f80fd5b506103f060048036038101906103eb9190612ba9565b610cf9565b005b3480156103fd575f80fd5b50610406610d13565b6040516104139190612a9f565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d9190612c29565b610d3b565b005b34801561044f575f80fd5b5061046a6004803603810190610465919061241f565b610d51565b6040516104779190612283565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190612b7e565b610d77565b005b3480156104b3575f80fd5b506104ce60048036038101906104c9919061241f565b610e32565b6040516104db91906121d0565b60405180910390f35b3480156104ef575f80fd5b5061050a60048036038101906105059190612ab8565b610e4c565b6040516105179190612283565b60405180910390f35b34801561052b575f80fd5b5061054660048036038101906105419190612c67565b610e5f565b005b348015610553575f80fd5b5061056e60048036038101906105699190612ca5565b610e81565b005b34801561057b575f80fd5b5061059660048036038101906105919190612b7e565b610f33565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612d38565b610fee565b005b3480156105cb575f80fd5b506105d4611056565b6040516105e19190612a9f565b60405180910390f35b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061070957507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061071957506107188261107e565b5b9050919050565b6107286110e7565b610731816111b6565b50565b60606002805461074390612db5565b80601f016020809104026020016040519081016040528092919081815260200182805461076f90612db5565b80156107ba5780601f10610791576101008083540402835291602001916107ba565b820191905f5260205f20905b81548152906001019060200180831161079d57829003601f168201915b50505050509050919050565b6107ce6110e7565b6107da848484846111c9565b50505050565b825f5b8151811015610802576107f58161124c565b80806001019150506107e3565b505f61080c6112af565b90508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610851575061084f8782610e4c565b155b156108955780876040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161088c929190612de5565b60405180910390fd5b6108a287878787876112b6565b50505050505050565b6108b36110e7565b8060055f8481526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6060815183511461092b57815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610922929190612e0c565b60405180910390fd5b5f835167ffffffffffffffff811115610947576109466122b4565b5b6040519080825280602002602001820160405280156109755781602001602082028036833780820191505090505b5090505f5b84518110156109db576109b161099982876113aa90919063ffffffff16565b6109ac83876113bd90919063ffffffff16565b6105ea565b8282815181106109c4576109c3612e33565b5b60200260200101818152505080600101905061097a565b508091505092915050565b5f60065f8581526020019081526020015f205403610a30576040517fe1d4a5a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8260065f8681526020019081526020015f2054610a4e9190612e8d565b905080341015610a8a576040517f30147aa100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610ad090612efb565b5f6040518083038185875af1925050503d805f8114610b0a576040519150601f19603f3d011682016040523d82523d5f602084013e610b0f565b606091505b5050905080610b4a576040517fca2a411700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b56338686866113d0565b5050505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610c2d575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610c3e5750610c3d8383610e4c565b5b905092915050565b82610c4f6112af565b610c598282610b85565b610c9c5781816040517f9db93c53000000000000000000000000000000000000000000000000000000008152600401610c93929190612de5565b60405180910390fd5b610ca7858585611465565b5050505050565b610cb66114f5565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d016110e7565b610d0d848484846113d0565b50505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d4d610d466112af565b838361157c565b5050565b5f60055f8381526020019081526020015f205f9054906101000a900460ff169050919050565b610d7f6114f5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610def575f6040517f04c57a33000000000000000000000000000000000000000000000000000000008152600401610de69190612a9f565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60065f8381526020019081526020015f20549050919050565b5f610e5783836116e5565b905092915050565b610e676110e7565b8060065f8481526020019081526020015f20819055505050565b82610e8b8161124c565b5f610e946112af565b90508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610ed95750610ed78782610e4c565b155b15610f1d5780876040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610f14929190612de5565b60405180910390fd5b610f2a8787878787611773565b50505050505050565b610f3b6114f5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fab575f6040517f04c57a33000000000000000000000000000000000000000000000000000000008152600401610fa29190612a9f565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82610ff76112af565b6110018282610b85565b6110445781816040517f9db93c5300000000000000000000000000000000000000000000000000000000815260040161103b929190612de5565b60405180910390fd5b61104f858585611879565b5050505050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6110ef6112af565b73ffffffffffffffffffffffffffffffffffffffff1661110d610d13565b73ffffffffffffffffffffffffffffffffffffffff161415801561116b57506111346112af565b73ffffffffffffffffffffffffffffffffffffffff16611152610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614155b156111b4576111786112af565b6040517f32b2baa30000000000000000000000000000000000000000000000000000000081526004016111ab9190612a9f565b60405180910390fd5b565b80600290816111c591906130ac565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611239575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016112309190612a9f565b60405180910390fd5b6112465f8585858561191b565b50505050565b60055f8281526020019081526020015f205f9054906101000a900460ff16156112ac57806040517f9920c9ce0000000000000000000000000000000000000000000000000000000081526004016112a391906121d0565b60405180910390fd5b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611326575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161131d9190612a9f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611396575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161138d9190612a9f565b60405180910390fd5b6113a3858585858561191b565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611440575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114379190612a9f565b60405180910390fd5b5f8061144c85856119c7565b9150915061145d5f8784848761191b565b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d5575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016114cc9190612a9f565b60405180910390fd5b6114f0835f848460405180602001604052805f81525061191b565b505050565b6114fd6112af565b73ffffffffffffffffffffffffffffffffffffffff1661151b610d13565b73ffffffffffffffffffffffffffffffffffffffff161461157a5761153e6112af565b6040517f32b2baa30000000000000000000000000000000000000000000000000000000081526004016115719190612a9f565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ec575f6040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016115e39190612a9f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116d89190612283565b60405180910390a3505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036117e3575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016117da9190612a9f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611853575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161184a9190612a9f565b60405180910390fd5b5f8061185f85856119c7565b91509150611870878784848761191b565b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e9575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016118e09190612a9f565b60405180910390fd5b5f806118f584846119c7565b91509150611914855f848460405180602001604052805f81525061191b565b5050505050565b611927858585856119f7565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146119c0575f6119636112af565b905060018451036119af575f6119825f866113bd90919063ffffffff16565b90505f6119985f866113bd90919063ffffffff16565b90506119a8838989858589611d87565b50506119be565b6119bd818787878787611f36565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b8051825114611a4157815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611a38929190612e0c565b60405180910390fd5b5f611a4a6112af565b90505f5b8351811015611c46575f611a6b82866113bd90919063ffffffff16565b90505f611a8183866113bd90919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611ba4575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611b5057888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401611b47949392919061317b565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611c3957805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611c3191906131be565b925050819055505b5050806001019050611a4e565b506001835103611d01575f611c645f856113bd90919063ffffffff16565b90505f611c7a5f856113bd90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611cf2929190612e0c565b60405180910390a45050611d80565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611d779291906131f1565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611f2e578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611de7959493929190613278565b6020604051808303815f875af1925050508015611e2257506040513d601f19601f82011682018060405250810190611e1f91906132e4565b60015b611ea3573d805f8114611e50576040519150601f19603f3d011682016040523d82523d5f602084013e611e55565b606091505b505f815103611e9b57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611e929190612a9f565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f2c57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611f239190612a9f565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156120dd578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611f9695949392919061330f565b6020604051808303815f875af1925050508015611fd157506040513d601f19601f82011682018060405250810190611fce91906132e4565b60015b612052573d805f8114611fff576040519150601f19603f3d011682016040523d82523d5f602084013e612004565b606091505b505f81510361204a57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016120419190612a9f565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146120db57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016120d29190612a9f565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61211f826120f6565b9050919050565b61212f81612115565b8114612139575f80fd5b50565b5f8135905061214a81612126565b92915050565b5f819050919050565b61216281612150565b811461216c575f80fd5b50565b5f8135905061217d81612159565b92915050565b5f8060408385031215612199576121986120ee565b5b5f6121a68582860161213c565b92505060206121b78582860161216f565b9150509250929050565b6121ca81612150565b82525050565b5f6020820190506121e35f8301846121c1565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61221d816121e9565b8114612227575f80fd5b50565b5f8135905061223881612214565b92915050565b5f60208284031215612253576122526120ee565b5b5f6122608482850161222a565b91505092915050565b5f8115159050919050565b61227d81612269565b82525050565b5f6020820190506122965f830184612274565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6122ea826122a4565b810181811067ffffffffffffffff82111715612309576123086122b4565b5b80604052505050565b5f61231b6120e5565b905061232782826122e1565b919050565b5f67ffffffffffffffff821115612346576123456122b4565b5b61234f826122a4565b9050602081019050919050565b828183375f83830152505050565b5f61237c6123778461232c565b612312565b905082815260208101848484011115612398576123976122a0565b5b6123a384828561235c565b509392505050565b5f82601f8301126123bf576123be61229c565b5b81356123cf84826020860161236a565b91505092915050565b5f602082840312156123ed576123ec6120ee565b5b5f82013567ffffffffffffffff81111561240a576124096120f2565b5b612416848285016123ab565b91505092915050565b5f60208284031215612434576124336120ee565b5b5f6124418482850161216f565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61247c8261244a565b6124868185612454565b9350612496818560208601612464565b61249f816122a4565b840191505092915050565b5f6020820190508181035f8301526124c28184612472565b905092915050565b5f67ffffffffffffffff8211156124e4576124e36122b4565b5b602082029050602081019050919050565b5f80fd5b5f61250b612506846124ca565b612312565b9050808382526020820190506020840283018581111561252e5761252d6124f5565b5b835b818110156125575780612543888261216f565b845260208401935050602081019050612530565b5050509392505050565b5f82601f8301126125755761257461229c565b5b81356125858482602086016124f9565b91505092915050565b5f67ffffffffffffffff8211156125a8576125a76122b4565b5b6125b1826122a4565b9050602081019050919050565b5f6125d06125cb8461258e565b612312565b9050828152602081018484840111156125ec576125eb6122a0565b5b6125f784828561235c565b509392505050565b5f82601f8301126126135761261261229c565b5b81356126238482602086016125be565b91505092915050565b5f805f8060808587031215612644576126436120ee565b5b5f6126518782880161213c565b945050602085013567ffffffffffffffff811115612672576126716120f2565b5b61267e87828801612561565b935050604085013567ffffffffffffffff81111561269f5761269e6120f2565b5b6126ab87828801612561565b925050606085013567ffffffffffffffff8111156126cc576126cb6120f2565b5b6126d8878288016125ff565b91505092959194509250565b5f805f805f60a086880312156126fd576126fc6120ee565b5b5f61270a8882890161213c565b955050602061271b8882890161213c565b945050604086013567ffffffffffffffff81111561273c5761273b6120f2565b5b61274888828901612561565b935050606086013567ffffffffffffffff811115612769576127686120f2565b5b61277588828901612561565b925050608086013567ffffffffffffffff811115612796576127956120f2565b5b6127a2888289016125ff565b9150509295509295909350565b6127b881612269565b81146127c2575f80fd5b50565b5f813590506127d3816127af565b92915050565b5f80604083850312156127ef576127ee6120ee565b5b5f6127fc8582860161216f565b925050602061280d858286016127c5565b9150509250929050565b5f67ffffffffffffffff821115612831576128306122b4565b5b602082029050602081019050919050565b5f61285461284f84612817565b612312565b90508083825260208201905060208402830185811115612877576128766124f5565b5b835b818110156128a0578061288c888261213c565b845260208401935050602081019050612879565b5050509392505050565b5f82601f8301126128be576128bd61229c565b5b81356128ce848260208601612842565b91505092915050565b5f80604083850312156128ed576128ec6120ee565b5b5f83013567ffffffffffffffff81111561290a576129096120f2565b5b612916858286016128aa565b925050602083013567ffffffffffffffff811115612937576129366120f2565b5b61294385828601612561565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61297f81612150565b82525050565b5f6129908383612976565b60208301905092915050565b5f602082019050919050565b5f6129b28261294d565b6129bc8185612957565b93506129c783612967565b805f5b838110156129f75781516129de8882612985565b97506129e98361299c565b9250506001810190506129ca565b5085935050505092915050565b5f6020820190508181035f830152612a1c81846129a8565b905092915050565b5f805f60608486031215612a3b57612a3a6120ee565b5b5f612a488682870161216f565b9350506020612a598682870161216f565b925050604084013567ffffffffffffffff811115612a7a57612a796120f2565b5b612a86868287016125ff565b9150509250925092565b612a9981612115565b82525050565b5f602082019050612ab25f830184612a90565b92915050565b5f8060408385031215612ace57612acd6120ee565b5b5f612adb8582860161213c565b9250506020612aec8582860161213c565b9150509250929050565b5f805f60608486031215612b0d57612b0c6120ee565b5b5f612b1a8682870161213c565b935050602084013567ffffffffffffffff811115612b3b57612b3a6120f2565b5b612b4786828701612561565b925050604084013567ffffffffffffffff811115612b6857612b676120f2565b5b612b7486828701612561565b9150509250925092565b5f60208284031215612b9357612b926120ee565b5b5f612ba08482850161213c565b91505092915050565b5f805f8060808587031215612bc157612bc06120ee565b5b5f612bce8782880161213c565b9450506020612bdf8782880161216f565b9350506040612bf08782880161216f565b925050606085013567ffffffffffffffff811115612c1157612c106120f2565b5b612c1d878288016125ff565b91505092959194509250565b5f8060408385031215612c3f57612c3e6120ee565b5b5f612c4c8582860161213c565b9250506020612c5d858286016127c5565b9150509250929050565b5f8060408385031215612c7d57612c7c6120ee565b5b5f612c8a8582860161216f565b9250506020612c9b8582860161216f565b9150509250929050565b5f805f805f60a08688031215612cbe57612cbd6120ee565b5b5f612ccb8882890161213c565b9550506020612cdc8882890161213c565b9450506040612ced8882890161216f565b9350506060612cfe8882890161216f565b925050608086013567ffffffffffffffff811115612d1f57612d1e6120f2565b5b612d2b888289016125ff565b9150509295509295909350565b5f805f60608486031215612d4f57612d4e6120ee565b5b5f612d5c8682870161213c565b9350506020612d6d8682870161216f565b9250506040612d7e8682870161216f565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612dcc57607f821691505b602082108103612ddf57612dde612d88565b5b50919050565b5f604082019050612df85f830185612a90565b612e056020830184612a90565b9392505050565b5f604082019050612e1f5f8301856121c1565b612e2c60208301846121c1565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e9782612150565b9150612ea283612150565b9250828202612eb081612150565b91508282048414831517612ec757612ec6612e60565b5b5092915050565b5f81905092915050565b50565b5f612ee65f83612ece565b9150612ef182612ed8565b5f82019050919050565b5f612f0582612edb565b9150819050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612f6b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612f30565b612f758683612f30565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612fb0612fab612fa684612150565b612f8d565b612150565b9050919050565b5f819050919050565b612fc983612f96565b612fdd612fd582612fb7565b848454612f3c565b825550505050565b5f90565b612ff1612fe5565b612ffc818484612fc0565b505050565b5b8181101561301f576130145f82612fe9565b600181019050613002565b5050565b601f8211156130645761303581612f0f565b61303e84612f21565b8101602085101561304d578190505b61306161305985612f21565b830182613001565b50505b505050565b5f82821c905092915050565b5f6130845f1984600802613069565b1980831691505092915050565b5f61309c8383613075565b9150826002028217905092915050565b6130b58261244a565b67ffffffffffffffff8111156130ce576130cd6122b4565b5b6130d88254612db5565b6130e3828285613023565b5f60209050601f831160018114613114575f8415613102578287015190505b61310c8582613091565b865550613173565b601f19841661312286612f0f565b5f5b8281101561314957848901518255600182019150602085019450602081019050613124565b868310156131665784890151613162601f891682613075565b8355505b6001600288020188555050505b505050505050565b5f60808201905061318e5f830187612a90565b61319b60208301866121c1565b6131a860408301856121c1565b6131b560608301846121c1565b95945050505050565b5f6131c882612150565b91506131d383612150565b92508282019050808211156131eb576131ea612e60565b5b92915050565b5f6040820190508181035f83015261320981856129a8565b9050818103602083015261321d81846129a8565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f61324a82613226565b6132548185613230565b9350613264818560208601612464565b61326d816122a4565b840191505092915050565b5f60a08201905061328b5f830188612a90565b6132986020830187612a90565b6132a560408301866121c1565b6132b260608301856121c1565b81810360808301526132c48184613240565b90509695505050505050565b5f815190506132de81612214565b92915050565b5f602082840312156132f9576132f86120ee565b5b5f613306848285016132d0565b91505092915050565b5f60a0820190506133225f830188612a90565b61332f6020830187612a90565b818103604083015261334181866129a8565b9050818103606083015261335581856129a8565b905081810360808301526133698184613240565b9050969550505050505056fea26469706673582212202e0e4e081b56891f02e08c0b07b7b0020e898be0ecaca9371662813326b693c364736f6c634300081a00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003168747470733a2f2f63322e776f726c642f6d657461646174612f4669727374436974697a656e732f7b69647d2e6a736f6e000000000000000000000000000000