608060405234801561000f575f80fd5b506040518060400160405280600981526020017f436f6c6f727761797300000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f3434343400000000000000000000000000000000000000000000000000000000815250815f908161008a919061038c565b50806001908161009a919061038c565b50505061012c600b5f73704cf202792341d79a9fd6dd97046aa7ef3f431973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506102bc600b5f738177b34687bc8b99c205e533ae7dd7c6c9d07a6673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061045b565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806101cd57607f821691505b6020821081036101e0576101df610189565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610207565b61024c8683610207565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61029061028b61028684610264565b61026d565b610264565b9050919050565b5f819050919050565b6102a983610276565b6102bd6102b582610297565b848454610213565b825550505050565b5f90565b6102d16102c5565b6102dc8184846102a0565b505050565b5b818110156102ff576102f45f826102c9565b6001810190506102e2565b5050565b601f82111561034457610315816101e6565b61031e846101f8565b8101602085101561032d578190505b610341610339856101f8565b8301826102e1565b50505b505050565b5f82821c905092915050565b5f6103645f1984600802610349565b1980831691505092915050565b5f61037c8383610355565b9150826002028217905092915050565b61039582610152565b67ffffffffffffffff8111156103ae576103ad61015c565b5b6103b882546101b6565b6103c3828285610303565b5f60209050601f8311600181146103f4575f84156103e2578287015190505b6103ec8582610371565b865550610453565b601f198416610402866101e6565b5f5b8281101561042957848901518255600182019150602085019450602081019050610404565b868310156104465784890151610442601f891682610355565b8355505b6001600288020188555050505b505050505050565b613de0806104685f395ff3fe60806040526004361061011e575f3560e01c80636352211e1161009f578063b88d4fde11610063578063b88d4fde146103da578063c87b56dd14610402578063c8a9b9801461043e578063daa91f2e1461047d578063e985e9c5146104b95761011e565b80636352211e146102f457806370a0823114610330578063722c61821461036c57806395d89b4114610388578063a22cb465146103b25761011e565b806323b872dd116100e657806323b872dd146102165780632f745c591461023e5780633ccfd60b1461027a57806342842e0e146102905780634f6ccce7146102b85761011e565b806301ffc9a71461012257806306fdde031461015e578063081812fc14610188578063095ea7b3146101c457806318160ddd146101ec575b5f80fd5b34801561012d575f80fd5b506101486004803603810190610143919061284b565b6104f5565b6040516101559190612890565b60405180910390f35b348015610169575f80fd5b5061017261056e565b60405161017f9190612919565b60405180910390f35b348015610193575f80fd5b506101ae60048036038101906101a9919061296c565b6105fd565b6040516101bb91906129d6565b60405180910390f35b3480156101cf575f80fd5b506101ea60048036038101906101e59190612a19565b610618565b005b3480156101f7575f80fd5b5061020061062e565b60405161020d9190612a66565b60405180910390f35b348015610221575f80fd5b5061023c60048036038101906102379190612a7f565b61063a565b005b348015610249575f80fd5b50610264600480360381019061025f9190612a19565b610739565b6040516102719190612a66565b60405180910390f35b348015610285575f80fd5b5061028e6107dd565b005b34801561029b575f80fd5b506102b660048036038101906102b19190612a7f565b6109c1565b005b3480156102c3575f80fd5b506102de60048036038101906102d9919061296c565b6109e0565b6040516102eb9190612a66565b60405180910390f35b3480156102ff575f80fd5b5061031a6004803603810190610315919061296c565b610a52565b60405161032791906129d6565b60405180910390f35b34801561033b575f80fd5b5061035660048036038101906103519190612acf565b610a63565b6040516103639190612a66565b60405180910390f35b6103866004803603810190610381919061296c565b610b19565b005b348015610393575f80fd5b5061039c610c18565b6040516103a99190612919565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190612b24565b610ca8565b005b3480156103e5575f80fd5b5061040060048036038101906103fb9190612c8e565b610cbe565b005b34801561040d575f80fd5b506104286004803603810190610423919061296c565b610cdb565b6040516104359190612919565b60405180910390f35b348015610449575f80fd5b50610464600480360381019061045f919061296c565b610dec565b6040516104749493929190612d0e565b60405180910390f35b348015610488575f80fd5b506104a3600480360381019061049e9190612acf565b610e20565b6040516104b09190612a66565b60405180910390f35b3480156104c4575f80fd5b506104df60048036038101906104da9190612d66565b610ee2565b6040516104ec9190612890565b60405180910390f35b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610567575061056682610f70565b5b9050919050565b60605f805461057c90612dd1565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890612dd1565b80156105f35780601f106105ca576101008083540402835291602001916105f3565b820191905f5260205f20905b8154815290600101906020018083116105d657829003601f168201915b5050505050905090565b5f61060782611051565b50610611826110d7565b9050919050565b61062a8282610625611110565b611117565b5050565b5f600880549050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106aa575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016106a191906129d6565b60405180910390fd5b5f6106bd83836106b8611110565b611129565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610733578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161072a93929190612e01565b60405180910390fd5b50505050565b5f61074383610a63565b82106107885782826040517fa57d13dc00000000000000000000000000000000000000000000000000000000815260040161077f929190612e36565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541161085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085390612ea7565b60405180910390fd5b5f61086633610e20565b90505f81116108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a190612ea7565b60405180910390fd5b80600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108f69190612ef2565b9250508190555080600a5f82825461090e9190612ef2565b925050819055505f3373ffffffffffffffffffffffffffffffffffffffff168260405161093a90612f52565b5f6040518083038185875af1925050503d805f8114610974576040519150601f19603f3d011682016040523d82523d5f602084013e610979565b606091505b50509050806109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b490612ea7565b60405180910390fd5b5050565b6109db83838360405180602001604052805f815250610cbe565b505050565b5f6109e961062e565b8210610a2e575f826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610a25929190612e36565b60405180910390fd5b60088281548110610a4257610a41612f66565b5b905f5260205f2001549050919050565b5f610a5c82611051565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ad4575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610acb91906129d6565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8111610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5290612ea7565b60405180910390fd5b80660194368d829200610b6e9190612f93565b3414610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690612ea7565b60405180910390fd5b5f5b81811015610c14575f6001610bc461062e565b610bce9190612ef2565b9050610bda3382611243565b7ff5cf4573c4a416f5cf2dc81b8c41dc082b67c3729dcac8c2bbcf27f43ac123e260405160405180910390a1508080600101915050610bb1565b5050565b606060018054610c2790612dd1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5390612dd1565b8015610c9e5780601f10610c7557610100808354040283529160200191610c9e565b820191905f5260205f20905b815481529060010190602001808311610c8157829003601f168201915b5050505050905090565b610cba610cb3611110565b8383611260565b5050565b610cc984848461063a565b610cd5848484846113c9565b50505050565b60605f73ffffffffffffffffffffffffffffffffffffffff16610cfd8361157b565b73ffffffffffffffffffffffffffffffffffffffff1603610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a90612ea7565b60405180910390fd5b5f805f80610d6086610dec565b93509350935093505f610d76858585858b6115b4565b90505f610dbd610d8589611634565b610d8e8a611634565b610d97856116fe565b604051602001610da993929190613286565b6040516020818303038152906040526116fe565b905080604051602001610dd0919061334d565b6040516020818303038152906040529650505050505050919050565b60608060605f610dfb8561186b565b8094508195508296505050505f600586610e15919061339b565b141590509193509193565b5f80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600a5447610e719190612ef2565b90505f600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546103e88484610ec19190612f93565b610ecb91906133cb565b610ed591906133fb565b9050809350505050919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061104a5750611049826119ef565b5b9050919050565b5f8061105c8361157b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110ce57826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016110c59190612a66565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6111248383836001611a58565b505050565b5f80611136858585611c17565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111795761117484611e22565b6111b8565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111b7576111b68185611e66565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036111f9576111f484611fb0565b611238565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611237576112368585612070565b5b5b809150509392505050565b61125c828260405180602001604052805f8152506120f4565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d057816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016112c791906129d6565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113bc9190612890565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611575578273ffffffffffffffffffffffffffffffffffffffff1663150b7a0261140c611110565b8685856040518563ffffffff1660e01b815260040161142e9493929190613480565b6020604051808303815f875af192505050801561146957506040513d601f19601f8201168201806040525081019061146691906134de565b60015b6114ea573d805f8114611497576040519150601f19603f3d011682016040523d82523d5f602084013e61149c565b606091505b505f8151036114e257836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016114d991906129d6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461157357836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161156a91906129d6565b60405180910390fd5b505b50505050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60605f836115d05760405180602001604052805f8152506115f1565b856040516020016115e191906135c3565b6040516020818303038152906040525b90505f87828761160087611634565b89604051602001611615959493929190613b0d565b6040516020818303038152906040529050809250505095945050505050565b60605f60016116428461210f565b0190505f8167ffffffffffffffff8111156116605761165f612b6a565b5b6040519080825280601f01601f1916602001820160405280156116925781602001600182028036833780820191505090505b5090505f82602001820190505b6001156116f3578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816116e8576116e761336e565b5b0494505f850361169f575b819350505050919050565b60605f82510361171e5760405180602001604052805f8152509050611866565b5f604051806060016040528060408152602001613d6b6040913990505f60036002855161174b9190612ef2565b61175591906133cb565b60046117619190612f93565b67ffffffffffffffff81111561177a57611779612b6a565b5b6040519080825280601f01601f1916602001820160405280156117ac5781602001600182028036833780820191505090505b509050600182016020820185865187016020810180515f82525b82841015611821576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653600186019550506117c6565b80825260038a51066001811461183e576002811461185157611859565b603d6001870353603d6002870353611859565b603d60018703535b5050505050505080925050505b919050565b60608060605f8060c890505f826001848461188691906133fb565b6118909190612ef2565b886040516020016118a19190613c3a565b604051602081830303815290604052805190602001205f1c6118c3919061339b565b6118cd9190612ef2565b90505f83600185856118df91906133fb565b6118e99190612ef2565b896040516020016118fa9190613ca9565b604051602081830303815290604052805190602001205f1c61191c919061339b565b6119269190612ef2565b90505f846001868661193891906133fb565b6119429190612ef2565b8a6040516020016119539190613d18565b604051602081830303815290604052805190602001205f1c611975919061339b565b61197f9190612ef2565b905061198c838383612260565b97506119bd8360ff61199e91906133fb565b8360ff6119ab91906133fb565b8360ff6119b891906133fb565b612260565b96505f805f6119cd86868661249d565b9250925092506119de838383612260565b985050505050505050509193909250565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8080611a9057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bc2575f611a9f84611051565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b0957508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611b1c5750611b1a8184610ee2565b155b15611b5e57826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611b5591906129d6565b60405180910390fd5b8115611bc057838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f80611c228461157b565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c6357611c62818486612539565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611cee57611ca25f855f80611a58565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611d6d57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60088054905060095f8381526020019081526020015f2081905550600881908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f611e7083610a63565b90505f60075f8481526020019081526020015f20549050818114611f47575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160075f8381526020019081526020015f2081905550505b60075f8481526020019081526020015f205f905560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f6001600880549050611fc391906133fb565b90505f60095f8481526020019081526020015f205490505f60088381548110611fef57611fee612f66565b5b905f5260205f2001549050806008838154811061200f5761200e612f66565b5b905f5260205f2001819055508160095f8381526020019081526020015f208190555060095f8581526020019081526020015f205f9055600880548061205757612056613d3d565b5b600190038181905f5260205f20015f9055905550505050565b5f600161207c84610a63565b61208691906133fb565b90508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060075f8481526020019081526020015f2081905550505050565b6120fe83836125fc565b61210a5f8484846113c9565b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061216b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816121615761216061336e565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106121a8576d04ee2d6d415b85acef8100000000838161219e5761219d61336e565b5b0492506020810190505b662386f26fc1000083106121d757662386f26fc1000083816121cd576121cc61336e565b5b0492506010810190505b6305f5e1008310612200576305f5e10083816121f6576121f561336e565b5b0492506008810190505b612710831061222557612710838161221b5761221a61336e565b5b0492506004810190505b60648310612248576064838161223e5761223d61336e565b5b0492506002810190505b600a8310612257576001810190505b80915050919050565b60605f600667ffffffffffffffff81111561227e5761227d612b6a565b5b6040519080825280601f01601f1916602001820160405280156122b05781602001600182028036833780820191505090505b5090506122c3600f600487901c166126ef565b815f815181106122d6576122d5612f66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350612310600f86166126ef565b8160018151811061232457612323612f66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350612362600f600486901c166126ef565b8160028151811061237657612375612f66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506123b0600f85166126ef565b816003815181106123c4576123c3612f66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350612402600f600485901c166126ef565b8160048151811061241657612415612f66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350612450600f84166126ef565b8160058151811061246457612463612f66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350809150509392505050565b5f805f80601e90505f60ff82896124b49190612ef2565b116124ca5781886124c59190612ef2565b6124cd565b60ff5b90505f60ff83896124de9190612ef2565b116124f45782886124ef9190612ef2565b6124f7565b60ff5b90505f60ff84896125089190612ef2565b1161251e5783886125199190612ef2565b612521565b60ff5b90508282829650965096505050505093509350939050565b612544838383612725565b6125f7575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125b857806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016125af9190612a66565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016125ee929190612e36565b60405180910390fd5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361266c575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161266391906129d6565b60405180910390fd5b5f61267883835f611129565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146126ea575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016126e191906129d6565b60405180910390fd5b505050565b5f6009821161270d576030826127059190612ef2565b60f81b61271e565b60378261271a9190612ef2565b60f81b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127dc57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061279d575061279c8484610ee2565b5b806127db57508273ffffffffffffffffffffffffffffffffffffffff166127c3836110d7565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61282a816127f6565b8114612834575f80fd5b50565b5f8135905061284581612821565b92915050565b5f602082840312156128605761285f6127ee565b5b5f61286d84828501612837565b91505092915050565b5f8115159050919050565b61288a81612876565b82525050565b5f6020820190506128a35f830184612881565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128eb826128a9565b6128f581856128b3565b93506129058185602086016128c3565b61290e816128d1565b840191505092915050565b5f6020820190508181035f83015261293181846128e1565b905092915050565b5f819050919050565b61294b81612939565b8114612955575f80fd5b50565b5f8135905061296681612942565b92915050565b5f60208284031215612981576129806127ee565b5b5f61298e84828501612958565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129c082612997565b9050919050565b6129d0816129b6565b82525050565b5f6020820190506129e95f8301846129c7565b92915050565b6129f8816129b6565b8114612a02575f80fd5b50565b5f81359050612a13816129ef565b92915050565b5f8060408385031215612a2f57612a2e6127ee565b5b5f612a3c85828601612a05565b9250506020612a4d85828601612958565b9150509250929050565b612a6081612939565b82525050565b5f602082019050612a795f830184612a57565b92915050565b5f805f60608486031215612a9657612a956127ee565b5b5f612aa386828701612a05565b9350506020612ab486828701612a05565b9250506040612ac586828701612958565b9150509250925092565b5f60208284031215612ae457612ae36127ee565b5b5f612af184828501612a05565b91505092915050565b612b0381612876565b8114612b0d575f80fd5b50565b5f81359050612b1e81612afa565b92915050565b5f8060408385031215612b3a57612b396127ee565b5b5f612b4785828601612a05565b9250506020612b5885828601612b10565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ba0826128d1565b810181811067ffffffffffffffff82111715612bbf57612bbe612b6a565b5b80604052505050565b5f612bd16127e5565b9050612bdd8282612b97565b919050565b5f67ffffffffffffffff821115612bfc57612bfb612b6a565b5b612c05826128d1565b9050602081019050919050565b828183375f83830152505050565b5f612c32612c2d84612be2565b612bc8565b905082815260208101848484011115612c4e57612c4d612b66565b5b612c59848285612c12565b509392505050565b5f82601f830112612c7557612c74612b62565b5b8135612c85848260208601612c20565b91505092915050565b5f805f8060808587031215612ca657612ca56127ee565b5b5f612cb387828801612a05565b9450506020612cc487828801612a05565b9350506040612cd587828801612958565b925050606085013567ffffffffffffffff811115612cf657612cf56127f2565b5b612d0287828801612c61565b91505092959194509250565b5f6080820190508181035f830152612d2681876128e1565b90508181036020830152612d3a81866128e1565b90508181036040830152612d4e81856128e1565b9050612d5d6060830184612881565b95945050505050565b5f8060408385031215612d7c57612d7b6127ee565b5b5f612d8985828601612a05565b9250506020612d9a85828601612a05565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612de857607f821691505b602082108103612dfb57612dfa612da4565b5b50919050565b5f606082019050612e145f8301866129c7565b612e216020830185612a57565b612e2e60408301846129c7565b949350505050565b5f604082019050612e495f8301856129c7565b612e566020830184612a57565b9392505050565b7f68696768657200000000000000000000000000000000000000000000000000005f82015250565b5f612e916006836128b3565b9150612e9c82612e5d565b602082019050919050565b5f6020820190508181035f830152612ebe81612e85565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612efc82612939565b9150612f0783612939565b9250828201905080821115612f1f57612f1e612ec5565b5b92915050565b5f81905092915050565b50565b5f612f3d5f83612f25565b9150612f4882612f2f565b5f82019050919050565b5f612f5c82612f32565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612f9d82612939565b9150612fa883612939565b9250828202612fb681612939565b91508282048414831517612fcd57612fcc612ec5565b5b5092915050565b5f81905092915050565b7f7b000000000000000000000000000000000000000000000000000000000000005f82015250565b5f613012600183612fd4565b915061301d82612fde565b600182019050919050565b7f226e616d65223a2022436f6c6f727761792023000000000000000000000000005f82015250565b5f61305c601383612fd4565b915061306782613028565b601382019050919050565b5f61307c826128a9565b6130868185612fd4565b93506130968185602086016128c3565b80840191505092915050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6130d6600283612fd4565b91506130e1826130a2565b600282019050919050565b7f226465736372697074696f6e223a2022412068696768657220636f6c6f7220735f8201527f747564792e222c00000000000000000000000000000000000000000000000000602082015250565b5f613146602783612fd4565b9150613151826130ec565b602782019050919050565b7f2265787465726e616c5f75726c223a202268747470733a2f2f686967686572635f8201527f6f6c6f72776179732e636f6d2f00000000000000000000000000000000000000602082015250565b5f6131b6602d83612fd4565b91506131c18261315c565b602d82019050919050565b7f222c22696d616765223a2022646174613a696d6167652f7376672b786d6c3b625f8201527f61736536342c0000000000000000000000000000000000000000000000000000602082015250565b5f613226602683612fd4565b9150613231826131cc565b602682019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f613270600283612fd4565b915061327b8261323c565b600282019050919050565b5f61329082613006565b915061329b82613050565b91506132a78286613072565b91506132b2826130ca565b91506132bd8261313a565b91506132c8826131aa565b91506132d48285613072565b91506132df8261321a565b91506132eb8284613072565b91506132f682613264565b9150819050949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f613337601d83612fd4565b915061334282613303565b601d82019050919050565b5f6133578261332b565b91506133638284613072565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133a582612939565b91506133b083612939565b9250826133c0576133bf61336e565b5b828206905092915050565b5f6133d582612939565b91506133e083612939565b9250826133f0576133ef61336e565b5b828204905092915050565b5f61340582612939565b915061341083612939565b925082820390508181111561342857613427612ec5565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f6134528261342e565b61345c8185613438565b935061346c8185602086016128c3565b613475816128d1565b840191505092915050565b5f6080820190506134935f8301876129c7565b6134a060208301866129c7565b6134ad6040830185612a57565b81810360608301526134bf8184613448565b905095945050505050565b5f815190506134d881612821565b92915050565b5f602082840312156134f3576134f26127ee565b5b5f613500848285016134ca565b91505092915050565b7f3c636972636c652063783d22363030222063793d223630302220723d223330305f8201527f222066696c6c3d22230000000000000000000000000000000000000000000000602082015250565b5f613563602983612fd4565b915061356e82613509565b602982019050919050565b7f22202f3e000000000000000000000000000000000000000000000000000000005f82015250565b5f6135ad600483612fd4565b91506135b882613579565b600482019050919050565b5f6135cd82613557565b91506135d98284613072565b91506135e4826135a1565b915081905092915050565b7f3c7376672077696474683d223130302522206865696768743d223130302522205f8201527f76696577426f783d22302030203132303020313230302220786d6c6e733d226860208201527f7474703a2f2f7777772e77332e6f72672f323030302f7376672220707265736560408201527f727665417370656374526174696f3d22784d6964594d6964206d656574223e00606082015250565b5f613695607f83612fd4565b91506136a0826135ef565b607f82019050919050565b7f3c726563742077696474683d223130302522206865696768743d2231303025225f8201527f2066696c6c3d2223000000000000000000000000000000000000000000000000602082015250565b5f613705602883612fd4565b9150613710826136ab565b602882019050919050565b7f3c67207472616e73666f726d3d227472616e736c617465283235302c333335295f8201527f207363616c65283829223e000000000000000000000000000000000000000000602082015250565b5f613775602b83612fd4565b91506137808261371b565b602b82019050919050565b7f3c7061746820643d226d36362e37352033312e37382d372e303720372e30372d5f8201527f31312e32362d31312e32367632382e3931682d3130762d32382e39326c2d313160208201527f2e32372031312e32372d372e30372d372e30372031362e32372d31362e32362060408201527f372e30372d372e303720372e303720372e30377a222066696c6c3d222346464660608201527f464646223e3c2f706174683e0000000000000000000000000000000000000000608082015250565b5f613857608c83612fd4565b91506138628261378b565b608c82019050919050565b7f3c2f673e000000000000000000000000000000000000000000000000000000005f82015250565b5f6138a1600483612fd4565b91506138ac8261386d565b600482019050919050565b7f3c7465787420783d223630302220793d2231303630222020666f6e742d66616d5f8201527f696c793d2248656c7665746963612c417269616c2220666f6e742d776569676860208201527f743d22626f6c642220666f6e742d73697a653d223630222066696c6c3d222300604082015250565b5f613937605f83612fd4565b9150613942826138b7565b605f82019050919050565b7f2220746578742d616e63686f723d226d6964646c65223e2300000000000000005f82015250565b5f613981601883612fd4565b915061398c8261394d565b601882019050919050565b7f3c2f746578743e3c7465787420783d223630302220793d22313130302220666f5f8201527f6e742d66616d696c793d2248656c7665746963612c417269616c2220666f6e7460208201527f2d7765696768743d22626f6c642220666f6e742d73697a653d2232302220666960408201527f6c6c3d2223000000000000000000000000000000000000000000000000000000606082015250565b5f613a3d606583612fd4565b9150613a4882613997565b606582019050919050565b7f2220746578742d616e63686f723d226d6964646c65223e686967686572202f2f5f8201527f20636f6c6f72776179733c2f746578743e000000000000000000000000000000602082015250565b5f613aad603183612fd4565b9150613ab882613a53565b603182019050919050565b7f3c2f7376673e00000000000000000000000000000000000000000000000000005f82015250565b5f613af7600683612fd4565b9150613b0282613ac3565b600682019050919050565b5f613b1782613689565b9150613b22826136f9565b9150613b2e8288613072565b9150613b39826135a1565b9150613b458287613072565b9150613b5082613769565b9150613b5b8261384b565b9150613b6682613895565b9150613b718261392b565b9150613b7d8286613072565b9150613b8882613975565b9150613b948285613072565b9150613b9f82613a31565b9150613bab8284613072565b9150613bb682613aa1565b9150613bc182613aeb565b91508190509695505050505050565b5f819050919050565b613bea613be582612939565b613bd0565b82525050565b7f52000000000000000000000000000000000000000000000000000000000000005f82015250565b5f613c24600183612fd4565b9150613c2f82613bf0565b600182019050919050565b5f613c458284613bd9565b602082019150613c5482613c18565b915081905092915050565b7f47000000000000000000000000000000000000000000000000000000000000005f82015250565b5f613c93600183612fd4565b9150613c9e82613c5f565b600182019050919050565b5f613cb48284613bd9565b602082019150613cc382613c87565b915081905092915050565b7f42000000000000000000000000000000000000000000000000000000000000005f82015250565b5f613d02600183612fd4565b9150613d0d82613cce565b600182019050919050565b5f613d238284613bd9565b602082019150613d3282613cf6565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220dd6f2ea3fe210d9c665117084337b59cf4765bfe130f569df1f20e359c123e0364736f6c63430008190033