60806040525f600a60146101000a81548160ff021916908360ff1602179055506019600a60156101000a81548160ff021916908360ff1602179055506003600a60166101000a81548160ff021916908360ff160217905550730bf3de8c5d3e8a2b34d2beeb17abfcebaf363a59600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8b745b65e7bf9aa30daf5fe91e436ad1baed0719a966138c2befe95e1c2effac600d55739ddfaca8183c41ad55329bdeed9f6a8d53168b1b600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f787d74caea10b2b357790d5b5247c2f63d1d91572a9846f780606e4d953677ae5f1b600f55620f424060105f6101000a81548163ffffffff021916908363ffffffff1602179055506003601060046101000a81548161ffff021916908361ffff1602179055506001601060066101000a81548163ffffffff021916908363ffffffff16021790555060405180604001604052806040518060800160405280605081526020016200442160509139815260200160405180608001604052806050815260200162004471605091398152506011906002620002059291906200059f565b5034801562000212575f80fd5b50600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633805f6040518060400160405280600681526020017f542d4e46543000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f544e465430000000000000000000000000000000000000000000000000000000815250815f9081620002b49190620008e8565b508060019081620002c69190620008e8565b5050505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200033a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003319062000a2a565b60405180910390fd5b8160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620003c057620003bf816200047060201b60201c565b5b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000429576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000ab8565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620004e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d89062000a98565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127860405160405180910390a350565b828054828255905f5260205f20908101928215620005ea579160200282015b82811115620005e9578251829081620005d89190620008e8565b5091602001919060010190620005be565b5b509050620005f99190620005fd565b5090565b5b8082111562000620575f818162000616919062000624565b50600101620005fe565b5090565b5080546200063290620006e8565b5f825580601f1062000645575062000664565b601f0160209004905f5260205f209081019062000663919062000667565b5b50565b5b8082111562000680575f815f90555060010162000668565b5090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200070057607f821691505b602082108103620007165762000715620006bb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200077a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200073d565b6200078686836200073d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007d0620007ca620007c4846200079e565b620007a7565b6200079e565b9050919050565b5f819050919050565b620007eb83620007b0565b62000803620007fa82620007d7565b84845462000749565b825550505050565b5f90565b620008196200080b565b62000826818484620007e0565b505050565b5b818110156200084d57620008415f826200080f565b6001810190506200082c565b5050565b601f8211156200089c5762000866816200071c565b62000871846200072e565b8101602085101562000881578190505b6200089962000890856200072e565b8301826200082b565b50505b505050565b5f82821c905092915050565b5f620008be5f1984600802620008a1565b1980831691505092915050565b5f620008d88383620008ad565b9150826002028217905092915050565b620008f38262000684565b67ffffffffffffffff8111156200090f576200090e6200068e565b5b6200091b8254620006e8565b6200092882828562000851565b5f60209050601f8311600181146200095e575f841562000949578287015190505b620009558582620008cb565b865550620009c4565b601f1984166200096e866200071c565b5f5b82811015620009975784890151825560018201915060208501945060208101905062000970565b86831015620009b75784890151620009b3601f891682620008ad565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000005f82015250565b5f62000a12601883620009cc565b915062000a1f82620009dc565b602082019050919050565b5f6020820190508181035f83015262000a438162000a04565b9050919050565b7f43616e6e6f74207472616e7366657220746f2073656c660000000000000000005f82015250565b5f62000a80601783620009cc565b915062000a8d8262000a4a565b602082019050919050565b5f6020820190508181035f83015262000ab18162000a72565b9050919050565b61395b8062000ac65f395ff3fe608060405234801561000f575f80fd5b506004361061018c575f3560e01c80638da5cb5b116100dc578063a3e56fa811610095578063c87b56dd1161006f578063c87b56dd14610446578063e985e9c514610476578063eedcf574146104a6578063f2fde38b146104c25761018c565b8063a3e56fa8146103ee578063b88d4fde1461040c578063c0cc4293146104285761018c565b80638da5cb5b146103405780638ea981171461035e57806395d89b411461037a5780639eccacf614610398578063a1469dc2146103b6578063a22cb465146103d25761018c565b806324f74697116101495780636812452e116101235780636812452e146102cc57806370a08231146102ea57806379ba50971461031a57806385572ffb146103245761018c565b806324f746971461026257806342842e0e146102805780636352211e1461029c5761018c565b806301ffc9a71461019057806306fdde03146101c0578063081812fc146101de578063095ea7b31461020e5780631fe543e31461022a57806323b872dd14610246575b5f80fd5b6101aa60048036038101906101a5919061273a565b6104de565b6040516101b7919061277f565b60405180910390f35b6101c8610557565b6040516101d59190612822565b60405180910390f35b6101f860048036038101906101f39190612875565b6105e6565b60405161020591906128df565b60405180910390f35b61022860048036038101906102239190612922565b610601565b005b610244600480360381019061023f91906129c1565b610617565b005b610260600480360381019061025b9190612a1e565b6106db565b005b61026a6107da565b6040516102779190612a8c565b60405180910390f35b61029a60048036038101906102959190612a1e565b6107ef565b005b6102b660048036038101906102b19190612875565b61080e565b6040516102c391906128df565b60405180910390f35b6102d461081f565b6040516102e19190612822565b60405180910390f35b61030460048036038101906102ff9190612aa5565b6108ab565b6040516103119190612adf565b60405180910390f35b610322610961565b005b61033e60048036038101906103399190612b1a565b610af2565b005b610348610ce0565b60405161035591906128df565b60405180910390f35b61037860048036038101906103739190612aa5565b610d08565b005b610382610ee5565b60405161038f9190612822565b60405180910390f35b6103a0610f75565b6040516103ad9190612bbc565b60405180910390f35b6103d060048036038101906103cb9190612875565b610f9a565b005b6103ec60048036038101906103e79190612bff565b610fac565b005b6103f6610fc2565b60405161040391906128df565b60405180910390f35b61042660048036038101906104219190612d65565b610fe7565b005b610430611004565b60405161043d91906128df565b60405180910390f35b610460600480360381019061045b9190612875565b611029565b60405161046d9190612822565b60405180910390f35b610490600480360381019061048b9190612de5565b611134565b60405161049d919061277f565b60405180910390f35b6104c060048036038101906104bb9190612e4d565b6111c2565b005b6104dc60048036038101906104d79190612aa5565b6111ed565b005b5f7f85572ffb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610550575061054f82611201565b5b9050919050565b60605f805461056590612ea5565b80601f016020809104026020016040519081016040528092919081815260200182805461059190612ea5565b80156105dc5780601f106105b3576101008083540402835291602001916105dc565b820191905f5260205f20905b8154815290600101906020018083116105bf57829003601f168201915b5050505050905090565b5f6105f082611261565b506105fa826112e7565b9050919050565b610613828261060e611320565b611327565b5050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cb573360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f1cf993f40000000000000000000000000000000000000000000000000000000081526004016106c2929190612ed5565b60405180910390fd5b6106d6838383611339565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361074b575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161074291906128df565b60405180910390fd5b5f61075e8383610759611320565b611432565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107d4578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016107cb93929190612efc565b60405180910390fd5b50505050565b60105f9054906101000a900463ffffffff1681565b61080983838360405180602001604052805f815250610fe7565b505050565b5f61081882611261565b9050919050565b600b805461082c90612ea5565b80601f016020809104026020016040519081016040528092919081815260200182805461085890612ea5565b80156108a35780601f1061087a576101008083540402835291602001916108a3565b820191905f5260205f20905b81548152906001019060200180831161088657829003601f168201915b505050505081565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361091c575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161091391906128df565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e790612f7b565b60405180910390fd5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b8357336040517fd7f73334000000000000000000000000000000000000000000000000000000008152600401610b7a91906128df565b60405180910390fd5b808060600190610b939190612fa5565b600b9182610ba29291906131a5565b505f818060400190610bb49190612fa5565b810190610bc191906132ad565b905080600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60169054906101000a900460ff1660ff16610c1f826108ab565b10610c98577f352c9d4e43d435859963cf9b2304653300a39be9e852ab9ac6e67a8c63e8625f81604051610c5391906128df565b60405180910390a1806040517f4547acd4000000000000000000000000000000000000000000000000000000008152600401610c8f91906128df565b60405180910390fd5b600a60159054906101000a900460ff1660ff16600a60149054906101000a900460ff1660ff1611610cd057610ccb61163d565b610cdc565b610cdb816001611768565b5b5050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d10610ce0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d98575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610e065733610da6610ce0565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f061db9c1000000000000000000000000000000000000000000000000000000008152600401610dfd939291906132d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e6b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be681604051610eda91906128df565b60405180910390a150565b606060018054610ef490612ea5565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2090612ea5565b8015610f6b5780601f10610f4257610100808354040283529160200191610f6b565b820191905f5260205f20905b815481529060010190602001808311610f4e57829003601f168201915b5050505050905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fa2611883565b80600d8190555050565b610fbe610fb7611320565b8383611914565b5050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ff28484846106db565b610ffe84848484611a7d565b50505050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061103482611261565b505f60065f8481526020019081526020015f20805461105290612ea5565b80601f016020809104026020016040519081016040528092919081815260200182805461107e90612ea5565b80156110c95780601f106110a0576101008083540402835291602001916110c9565b820191905f5260205f20905b8154815290600101906020018083116110ac57829003601f168201915b505050505090505f6110d9611c2f565b90505f8151036110ed57819250505061112f565b5f82511115611121578082604051602001611109929190613347565b6040516020818303038152906040529250505061112f565b61112a84611c45565b925050505b919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6111ca611883565b8060105f6101000a81548163ffffffff021916908363ffffffff16021790555050565b6111f5611883565b6111fe81611cab565b50565b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061125a575061125982611dd7565b5b9050919050565b5f8061126c83611eb8565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112de57826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016112d59190612adf565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6113348383836001611ef1565b505050565b5f60118054905083835f8181106113535761135261336a565b5b9050602002013561136491906133c4565b9050600181036113a757600a601481819054906101000a900460ff168092919061138d9061342d565b91906101000a81548160ff021916908360ff160217905550505b6113d2600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611768565b7f6ee8631045bc128eca03d82ca34583e07c049c1dffe044242789e5ac79f70bc684600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611424929190613455565b60405180910390a150505050565b5f8061143d84611eb8565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461147e5761147d8184866120b0565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611509576114bd5f855f80611ef1565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461158857600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b1c385e6040518060c00160405280600f548152602001600d548152602001601060049054906101000a900461ffff1661ffff16815260200160105f9054906101000a900463ffffffff1663ffffffff168152602001601060069054906101000a900463ffffffff1663ffffffff16815260200161170460405180602001604052805f1515815250612173565b8152506040518263ffffffff1660e01b815260040161172391906135a6565b6020604051808303815f875af115801561173f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176391906135da565b905050565b6117748260125461220b565b6118226012546011838154811061178e5761178d61336a565b5b905f5260205f200180546117a190612ea5565b80601f01602080910402602001604051908101604052809291908181526020018280546117cd90612ea5565b80156118185780601f106117ef57610100808354040283529160200191611818565b820191905f5260205f20905b8154815290600101906020018083116117fb57829003601f168201915b5050505050612228565b60125f81548092919061183490613605565b91905055508173ffffffffffffffffffffffffffffffffffffffff166012547fa3bdf6020d8dccb60b422ce46ef094ee1a9a378820862c3b233636af4bbfab9760405160405180910390a35050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613696565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361198457816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161197b91906128df565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a70919061277f565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611c29578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611ac0611320565b8685856040518563ffffffff1660e01b8152600401611ae294939291906136fc565b6020604051808303815f875af1925050508015611b1d57506040513d601f19601f82011682018060405250810190611b1a919061375a565b60015b611b9e573d805f8114611b4b576040519150601f19603f3d011682016040523d82523d5f602084013e611b50565b606091505b505f815103611b9657836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611b8d91906128df565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c2757836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611c1e91906128df565b60405180910390fd5b505b50505050565b606060405180602001604052805f815250905090565b6060611c5082611261565b505f611c5a611c2f565b90505f815111611c785760405180602001604052805f815250611ca3565b80611c8284612282565b604051602001611c93929190613347565b6040516020818303038152906040525b915050919050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d10906137cf565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127860405160405180910390a350565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ea157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611eb15750611eb08261234c565b5b9050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611f2957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561205b575f611f3884611261565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fa257508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611fb55750611fb38184611134565b155b15611ff757826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611fee91906128df565b60405180910390fd5b811561205957838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6120bb8383836123b5565b61216e575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361212f57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016121269190612adf565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016121659291906137ed565b60405180910390fd5b505050565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa826040516024016121a7919061383d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050919050565b612224828260405180602001604052805f815250612475565b5050565b8060065f8481526020019081526020015f2090816122469190613856565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516122769190612adf565b60405180910390a15050565b60605f600161229084612490565b0190505f8167ffffffffffffffff8111156122ae576122ad612c41565b5b6040519080825280601f01601f1916602001820160405280156122e05781602001600182028036833780820191505090505b5090505f82602001820190505b600115612341578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161233657612335613397565b5b0494505f85036122ed575b819350505050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561246c57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061242d575061242c8484611134565b5b8061246b57508273ffffffffffffffffffffffffffffffffffffffff16612453836112e7565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b61247f83836125e1565b61248b5f848484611a7d565b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106124ec577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816124e2576124e1613397565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000838161251f5761251e613397565b5b0492506020810190505b662386f26fc10000831061255857662386f26fc10000838161254e5761254d613397565b5b0492506010810190505b6305f5e1008310612581576305f5e100838161257757612576613397565b5b0492506008810190505b61271083106125a657612710838161259c5761259b613397565b5b0492506004810190505b606483106125c957606483816125bf576125be613397565b5b0492506002810190505b600a83106125d8576001810190505b80915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612651575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161264891906128df565b60405180910390fd5b5f61265d83835f611432565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146126cf575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016126c691906128df565b60405180910390fd5b505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612719816126e5565b8114612723575f80fd5b50565b5f8135905061273481612710565b92915050565b5f6020828403121561274f5761274e6126dd565b5b5f61275c84828501612726565b91505092915050565b5f8115159050919050565b61277981612765565b82525050565b5f6020820190506127925f830184612770565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127cf5780820151818401526020810190506127b4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127f482612798565b6127fe81856127a2565b935061280e8185602086016127b2565b612817816127da565b840191505092915050565b5f6020820190508181035f83015261283a81846127ea565b905092915050565b5f819050919050565b61285481612842565b811461285e575f80fd5b50565b5f8135905061286f8161284b565b92915050565b5f6020828403121561288a576128896126dd565b5b5f61289784828501612861565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128c9826128a0565b9050919050565b6128d9816128bf565b82525050565b5f6020820190506128f25f8301846128d0565b92915050565b612901816128bf565b811461290b575f80fd5b50565b5f8135905061291c816128f8565b92915050565b5f8060408385031215612938576129376126dd565b5b5f6129458582860161290e565b925050602061295685828601612861565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261298157612980612960565b5b8235905067ffffffffffffffff81111561299e5761299d612964565b5b6020830191508360208202830111156129ba576129b9612968565b5b9250929050565b5f805f604084860312156129d8576129d76126dd565b5b5f6129e586828701612861565b935050602084013567ffffffffffffffff811115612a0657612a056126e1565b5b612a128682870161296c565b92509250509250925092565b5f805f60608486031215612a3557612a346126dd565b5b5f612a428682870161290e565b9350506020612a538682870161290e565b9250506040612a6486828701612861565b9150509250925092565b5f63ffffffff82169050919050565b612a8681612a6e565b82525050565b5f602082019050612a9f5f830184612a7d565b92915050565b5f60208284031215612aba57612ab96126dd565b5b5f612ac78482850161290e565b91505092915050565b612ad981612842565b82525050565b5f602082019050612af25f830184612ad0565b92915050565b5f80fd5b5f60a08284031215612b1157612b10612af8565b5b81905092915050565b5f60208284031215612b2f57612b2e6126dd565b5b5f82013567ffffffffffffffff811115612b4c57612b4b6126e1565b5b612b5884828501612afc565b91505092915050565b5f819050919050565b5f612b84612b7f612b7a846128a0565b612b61565b6128a0565b9050919050565b5f612b9582612b6a565b9050919050565b5f612ba682612b8b565b9050919050565b612bb681612b9c565b82525050565b5f602082019050612bcf5f830184612bad565b92915050565b612bde81612765565b8114612be8575f80fd5b50565b5f81359050612bf981612bd5565b92915050565b5f8060408385031215612c1557612c146126dd565b5b5f612c228582860161290e565b9250506020612c3385828601612beb565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c77826127da565b810181811067ffffffffffffffff82111715612c9657612c95612c41565b5b80604052505050565b5f612ca86126d4565b9050612cb48282612c6e565b919050565b5f67ffffffffffffffff821115612cd357612cd2612c41565b5b612cdc826127da565b9050602081019050919050565b828183375f83830152505050565b5f612d09612d0484612cb9565b612c9f565b905082815260208101848484011115612d2557612d24612c3d565b5b612d30848285612ce9565b509392505050565b5f82601f830112612d4c57612d4b612960565b5b8135612d5c848260208601612cf7565b91505092915050565b5f805f8060808587031215612d7d57612d7c6126dd565b5b5f612d8a8782880161290e565b9450506020612d9b8782880161290e565b9350506040612dac87828801612861565b925050606085013567ffffffffffffffff811115612dcd57612dcc6126e1565b5b612dd987828801612d38565b91505092959194509250565b5f8060408385031215612dfb57612dfa6126dd565b5b5f612e088582860161290e565b9250506020612e198582860161290e565b9150509250929050565b612e2c81612a6e565b8114612e36575f80fd5b50565b5f81359050612e4781612e23565b92915050565b5f60208284031215612e6257612e616126dd565b5b5f612e6f84828501612e39565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612ebc57607f821691505b602082108103612ecf57612ece612e78565b5b50919050565b5f604082019050612ee85f8301856128d0565b612ef560208301846128d0565b9392505050565b5f606082019050612f0f5f8301866128d0565b612f1c6020830185612ad0565b612f2960408301846128d0565b949350505050565b7f4d7573742062652070726f706f736564206f776e6572000000000000000000005f82015250565b5f612f656016836127a2565b9150612f7082612f31565b602082019050919050565b5f6020820190508181035f830152612f9281612f59565b9050919050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612fc157612fc0612f99565b5b80840192508235915067ffffffffffffffff821115612fe357612fe2612f9d565b5b602083019250600182023603831315612fff57612ffe612fa1565b5b509250929050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261306d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613032565b6130778683613032565b95508019841693508086168417925050509392505050565b5f6130a96130a461309f84612842565b612b61565b612842565b9050919050565b5f819050919050565b6130c28361308f565b6130d66130ce826130b0565b84845461303e565b825550505050565b5f90565b6130ea6130de565b6130f58184846130b9565b505050565b5b818110156131185761310d5f826130e2565b6001810190506130fb565b5050565b601f82111561315d5761312e81613011565b61313784613023565b81016020851015613146578190505b61315a61315285613023565b8301826130fa565b50505b505050565b5f82821c905092915050565b5f61317d5f1984600802613162565b1980831691505092915050565b5f613195838361316e565b9150826002028217905092915050565b6131af8383613007565b67ffffffffffffffff8111156131c8576131c7612c41565b5b6131d28254612ea5565b6131dd82828561311c565b5f601f83116001811461320a575f84156131f8578287013590505b613202858261318a565b865550613269565b601f19841661321886613011565b5f5b8281101561323f5784890135825560018201915060208501945060208101905061321a565b8683101561325c5784890135613258601f89168261316e565b8355505b6001600288020188555050505b50505050505050565b5f61327c826128a0565b9050919050565b61328c81613272565b8114613296575f80fd5b50565b5f813590506132a781613283565b92915050565b5f602082840312156132c2576132c16126dd565b5b5f6132cf84828501613299565b91505092915050565b5f6060820190506132eb5f8301866128d0565b6132f860208301856128d0565b61330560408301846128d0565b949350505050565b5f81905092915050565b5f61332182612798565b61332b818561330d565b935061333b8185602086016127b2565b80840191505092915050565b5f6133528285613317565b915061335e8284613317565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133ce82612842565b91506133d983612842565b9250826133e9576133e8613397565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff82169050919050565b5f61343782613421565b915060ff820361344a576134496133f4565b5b600182019050919050565b5f6040820190506134685f830185612ad0565b61347560208301846128d0565b9392505050565b5f819050919050565b61348e8161347c565b82525050565b61349d81612842565b82525050565b5f61ffff82169050919050565b6134b9816134a3565b82525050565b6134c881612a6e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6134f2826134ce565b6134fc81856134d8565b935061350c8185602086016127b2565b613515816127da565b840191505092915050565b5f60c083015f8301516135355f860182613485565b5060208301516135486020860182613494565b50604083015161355b60408601826134b0565b50606083015161356e60608601826134bf565b50608083015161358160808601826134bf565b5060a083015184820360a086015261359982826134e8565b9150508091505092915050565b5f6020820190508181035f8301526135be8184613520565b905092915050565b5f815190506135d48161284b565b92915050565b5f602082840312156135ef576135ee6126dd565b5b5f6135fc848285016135c6565b91505092915050565b5f61360f82612842565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613641576136406133f4565b5b600182019050919050565b7f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000005f82015250565b5f6136806016836127a2565b915061368b8261364c565b602082019050919050565b5f6020820190508181035f8301526136ad81613674565b9050919050565b5f82825260208201905092915050565b5f6136ce826134ce565b6136d881856136b4565b93506136e88185602086016127b2565b6136f1816127da565b840191505092915050565b5f60808201905061370f5f8301876128d0565b61371c60208301866128d0565b6137296040830185612ad0565b818103606083015261373b81846136c4565b905095945050505050565b5f8151905061375481612710565b92915050565b5f6020828403121561376f5761376e6126dd565b5b5f61377c84828501613746565b91505092915050565b7f43616e6e6f74207472616e7366657220746f2073656c660000000000000000005f82015250565b5f6137b96017836127a2565b91506137c482613785565b602082019050919050565b5f6020820190508181035f8301526137e6816137ad565b9050919050565b5f6040820190506138005f8301856128d0565b61380d6020830184612ad0565b9392505050565b61381d81612765565b82525050565b602082015f8201516138375f850182613814565b50505050565b5f6020820190506138505f830184613823565b92915050565b61385f82612798565b67ffffffffffffffff81111561387857613877612c41565b5b6138828254612ea5565b61388d82828561311c565b5f60209050601f8311600181146138be575f84156138ac578287015190505b6138b6858261318a565b86555061391d565b601f1984166138cc86613011565b5f5b828110156138f3578489015182556001820191506020850194506020810190506138ce565b86831015613910578489015161390c601f89168261316e565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220777bf22c5be7027e9411b2a254356708ada27a5b49f11b1fa1d7e8737f2de1a164736f6c6343000814003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d554e4a645335774b626b714831547670564b6f4c6b38583635666867685561504a6732526248714b59354c5a68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d66516f7674635367546d3848416e4174414b5665355358467072365369616b734a683832515453435145546e