608060405260405180602001604052806000815250600290805190602001906200002b929190620001e9565b506000600b60146101000a81548160ff0219169083151502179055503480156200005457600080fd5b506040518060400160405280600881526020017f5a6f6f2047616e670000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5a47414e470000000000000000000000000000000000000000000000000000008152508160009080519060200190620000d9929190620001e9565b508060019080519060200190620000f2929190620001e9565b50505062000115620001096200011b60201b60201c565b6200012360201b60201c565b620002fe565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001f790620002c8565b90600052602060002090601f0160209004810192826200021b576000855562000267565b82601f106200023657805160ff191683800117855562000267565b8280016001018555821562000267579182015b828111156200026657825182559160200191906001019062000249565b5b5090506200027691906200027a565b5090565b5b80821115620002955760008160009055506001016200027b565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002e157607f821691505b60208210811415620002f857620002f762000299565b5b50919050565b614018806200030e6000396000f3fe6080604052600436106101b75760003560e01c8063715018a6116100ec578063b88d4fde1161008a578063e985e9c511610064578063e985e9c5146105d7578063eb8d244414610614578063f2fde38b1461063f578063f47c84c514610668576101b7565b8063b88d4fde1461055a578063c87b56dd14610583578063cd3293de146105c0576101b7565b80638da5cb5b116100c65780638da5cb5b146104bf57806395d89b41146104ea578063a0712d6814610515578063a22cb46514610531576101b7565b8063715018a6146104665780637d8966e41461047d5780638d859f3e14610494576101b7565b80633ccfd60b1161015957806355f804b31161013357806355f804b3146103985780636352211e146103c157806370a08231146103fe5780637146bd081461043b576101b7565b80633ccfd60b1461031b57806342842e0e146103325780634f6ccce71461035b576101b7565b8063095ea7b311610195578063095ea7b31461026157806318160ddd1461028a57806323b872dd146102b55780632f745c59146102de576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de91906128be565b610693565b6040516101f09190612906565b60405180910390f35b34801561020557600080fd5b5061020e61070d565b60405161021b91906129ba565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612a12565b61079f565b6040516102589190612a80565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612ac7565b610824565b005b34801561029657600080fd5b5061029f61093c565b6040516102ac9190612b16565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d79190612b31565b610949565b005b3480156102ea57600080fd5b5061030560048036038101906103009190612ac7565b6109a9565b6040516103129190612b16565b60405180910390f35b34801561032757600080fd5b50610330610a4e565b005b34801561033e57600080fd5b5061035960048036038101906103549190612b31565b610b26565b005b34801561036757600080fd5b50610382600480360381019061037d9190612a12565b610b46565b60405161038f9190612b16565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612cb9565b610bb7565b005b3480156103cd57600080fd5b506103e860048036038101906103e39190612a12565b610c3f565b6040516103f59190612a80565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190612d02565b610cf1565b6040516104329190612b16565b60405180910390f35b34801561044757600080fd5b50610450610da9565b60405161045d9190612b16565b60405180910390f35b34801561047257600080fd5b5061047b610dae565b005b34801561048957600080fd5b50610492610e36565b005b3480156104a057600080fd5b506104a9610ede565b6040516104b69190612b16565b60405180910390f35b3480156104cb57600080fd5b506104d4610ee9565b6040516104e19190612a80565b60405180910390f35b3480156104f657600080fd5b506104ff610f13565b60405161050c91906129ba565b60405180910390f35b61052f600480360381019061052a9190612a12565b610fa5565b005b34801561053d57600080fd5b5061055860048036038101906105539190612d5b565b611144565b005b34801561056657600080fd5b50610581600480360381019061057c9190612e3c565b6112c5565b005b34801561058f57600080fd5b506105aa60048036038101906105a59190612a12565b611327565b6040516105b791906129ba565b60405180910390f35b3480156105cc57600080fd5b506105d56113cf565b005b3480156105e357600080fd5b506105fe60048036038101906105f99190612ebf565b6114ec565b60405161060b9190612906565b60405180910390f35b34801561062057600080fd5b50610629611580565b6040516106369190612906565b60405180910390f35b34801561064b57600080fd5b5061066660048036038101906106619190612d02565b611593565b005b34801561067457600080fd5b5061067d61168b565b60405161068a9190612b16565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610706575061070582611691565b5b9050919050565b60606000805461071c90612f2e565b80601f016020809104026020016040519081016040528092919081815260200182805461074890612f2e565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050505050905090565b60006107aa82611773565b6107e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e090612fd2565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061082f82610c3f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089790613064565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108bf6117df565b73ffffffffffffffffffffffffffffffffffffffff1614806108ee57506108ed816108e86117df565b6114ec565b5b61092d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610924906130f6565b60405180910390fd5b61093783836117e7565b505050565b6000600980549050905090565b61095a6109546117df565b826118a0565b610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099090613188565b60405180910390fd5b6109a483838361197e565b505050565b60006109b483610cf1565b82106109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ec9061321a565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a566117df565b73ffffffffffffffffffffffffffffffffffffffff16610a74610ee9565b73ffffffffffffffffffffffffffffffffffffffff1614610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190613286565b60405180910390fd5b6000610ad46117df565b905060004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b21573d6000803e3d6000fd5b505050565b610b41838383604051806020016040528060008152506112c5565b505050565b6000610b5061093c565b8210610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890613318565b60405180910390fd5b60098281548110610ba557610ba4613338565b5b90600052602060002001549050919050565b610bbf6117df565b73ffffffffffffffffffffffffffffffffffffffff16610bdd610ee9565b73ffffffffffffffffffffffffffffffffffffffff1614610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a90613286565b60405180910390fd5b610c3c81611bda565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf906133d9565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d599061346b565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601481565b610db66117df565b73ffffffffffffffffffffffffffffffffffffffff16610dd4610ee9565b73ffffffffffffffffffffffffffffffffffffffff1614610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190613286565b60405180910390fd5b610e346000611bf4565b565b610e3e6117df565b73ffffffffffffffffffffffffffffffffffffffff16610e5c610ee9565b73ffffffffffffffffffffffffffffffffffffffff1614610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990613286565b60405180910390fd5b600b60149054906101000a900460ff1615600b60146101000a81548160ff021916908315150217905550565b66b1a2bc2ec5000081565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610f2290612f2e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4e90612f2e565b8015610f9b5780601f10610f7057610100808354040283529160200191610f9b565b820191906000526020600020905b815481529060010190602001808311610f7e57829003601f168201915b5050505050905090565b600b60149054906101000a900460ff16610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb906134fd565b60405180910390fd5b6014811115611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f9061358f565b60405180910390fd5b6127106110558261104761093c565b611cba90919063ffffffff16565b1115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90613621565b60405180910390fd5b346110b18266b1a2bc2ec50000611cd090919063ffffffff16565b11156110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e99061368d565b60405180910390fd5b60005b8181101561114057600061110761093c565b905061271061111461093c565b101561112c5761112b6111256117df565b82611ce6565b5b508080611138906136dc565b9150506110f5565b5050565b61114c6117df565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b190613771565b60405180910390fd5b80600660006111c76117df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166112746117df565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112b99190612906565b60405180910390a35050565b6112d66112d06117df565b836118a0565b611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613188565b60405180910390fd5b61132184848484611d04565b50505050565b606061133282611773565b611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890613803565b60405180910390fd5b600061137b611d60565b9050600081511161139b57604051806020016040528060008152506113c7565b60026113a684611df2565b6040516020016113b79291906138f3565b6040516020818303038152906040525b915050919050565b6113d76117df565b73ffffffffffffffffffffffffffffffffffffffff166113f5610ee9565b73ffffffffffffffffffffffffffffffffffffffff161461144b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144290613286565b60405180910390fd5b60001515600b60149054906101000a900460ff161515146114a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149890613989565b60405180910390fd5b60006114ab61093c565b905060005b60148110156114e8576114d56114c46117df565b82846114d091906139a9565b611ce6565b80806114e0906136dc565b9150506114b0565b5050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600b60149054906101000a900460ff1681565b61159b6117df565b73ffffffffffffffffffffffffffffffffffffffff166115b9610ee9565b73ffffffffffffffffffffffffffffffffffffffff161461160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690613286565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690613a71565b60405180910390fd5b61168881611bf4565b50565b61271081565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061175c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061176c575061176b82611f53565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661185a83610c3f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006118ab82611773565b6118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e190613b03565b60405180910390fd5b60006118f583610c3f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061196457508373ffffffffffffffffffffffffffffffffffffffff1661194c8461079f565b73ffffffffffffffffffffffffffffffffffffffff16145b80611975575061197481856114ec565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661199e82610c3f565b73ffffffffffffffffffffffffffffffffffffffff16146119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90613b95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90613c27565b60405180910390fd5b611a6f838383611fbd565b611a7a6000826117e7565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611aca9190613c47565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b2191906139a9565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8060029080519060200190611bf09291906127af565b5050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183611cc891906139a9565b905092915050565b60008183611cde9190613c7b565b905092915050565b611d008282604051806020016040528060008152506120d1565b5050565b611d0f84848461197e565b611d1b8484848461212c565b611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5190613d47565b60405180910390fd5b50505050565b606060028054611d6f90612f2e565b80601f0160208091040260200160405190810160405280929190818152602001828054611d9b90612f2e565b8015611de85780601f10611dbd57610100808354040283529160200191611de8565b820191906000526020600020905b815481529060010190602001808311611dcb57829003601f168201915b5050505050905090565b60606000821415611e3a576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f4e565b600082905060005b60008214611e6c578080611e55906136dc565b915050600a82611e659190613d96565b9150611e42565b60008167ffffffffffffffff811115611e8857611e87612b8e565b5b6040519080825280601f01601f191660200182016040528015611eba5781602001600182028036833780820191505090505b5090505b60008514611f4757600182611ed39190613c47565b9150600a85611ee29190613dc7565b6030611eee91906139a9565b60f81b818381518110611f0457611f03613338565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611f409190613d96565b9450611ebe565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611fc88383836122c3565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561200b57612006816122c8565b61204a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612049576120488382612311565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561208d576120888161247e565b6120cc565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120cb576120ca828261254f565b5b5b505050565b6120db83836125ce565b6120e8600084848461212c565b612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e90613d47565b60405180910390fd5b505050565b600061214d8473ffffffffffffffffffffffffffffffffffffffff1661279c565b156122b6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121766117df565b8786866040518563ffffffff1660e01b81526004016121989493929190613e4d565b602060405180830381600087803b1580156121b257600080fd5b505af19250505080156121e357506040513d601f19601f820116820180604052508101906121e09190613eae565b60015b612266573d8060008114612213576040519150601f19603f3d011682016040523d82523d6000602084013e612218565b606091505b5060008151141561225e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225590613d47565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122bb565b600190505b949350505050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161231e84610cf1565b6123289190613c47565b905060006008600084815260200190815260200160002054905081811461240d576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506124929190613c47565b90506000600a60008481526020019081526020016000205490506000600983815481106124c2576124c1613338565b5b9060005260206000200154905080600983815481106124e4576124e3613338565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a600085815260200190815260200160002060009055600980548061253357612532613edb565b5b6001900381819060005260206000200160009055905550505050565b600061255a83610cf1565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561263e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263590613f56565b60405180910390fd5b61264781611773565b15612687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267e90613fc2565b60405180910390fd5b61269360008383611fbd565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126e391906139a9565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546127bb90612f2e565b90600052602060002090601f0160209004810192826127dd5760008555612824565b82601f106127f657805160ff1916838001178555612824565b82800160010185558215612824579182015b82811115612823578251825591602001919060010190612808565b5b5090506128319190612835565b5090565b5b8082111561284e576000816000905550600101612836565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61289b81612866565b81146128a657600080fd5b50565b6000813590506128b881612892565b92915050565b6000602082840312156128d4576128d361285c565b5b60006128e2848285016128a9565b91505092915050565b60008115159050919050565b612900816128eb565b82525050565b600060208201905061291b60008301846128f7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295b578082015181840152602081019050612940565b8381111561296a576000848401525b50505050565b6000601f19601f8301169050919050565b600061298c82612921565b612996818561292c565b93506129a681856020860161293d565b6129af81612970565b840191505092915050565b600060208201905081810360008301526129d48184612981565b905092915050565b6000819050919050565b6129ef816129dc565b81146129fa57600080fd5b50565b600081359050612a0c816129e6565b92915050565b600060208284031215612a2857612a2761285c565b5b6000612a36848285016129fd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6a82612a3f565b9050919050565b612a7a81612a5f565b82525050565b6000602082019050612a956000830184612a71565b92915050565b612aa481612a5f565b8114612aaf57600080fd5b50565b600081359050612ac181612a9b565b92915050565b60008060408385031215612ade57612add61285c565b5b6000612aec85828601612ab2565b9250506020612afd858286016129fd565b9150509250929050565b612b10816129dc565b82525050565b6000602082019050612b2b6000830184612b07565b92915050565b600080600060608486031215612b4a57612b4961285c565b5b6000612b5886828701612ab2565b9350506020612b6986828701612ab2565b9250506040612b7a868287016129fd565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc682612970565b810181811067ffffffffffffffff82111715612be557612be4612b8e565b5b80604052505050565b6000612bf8612852565b9050612c048282612bbd565b919050565b600067ffffffffffffffff821115612c2457612c23612b8e565b5b612c2d82612970565b9050602081019050919050565b82818337600083830152505050565b6000612c5c612c5784612c09565b612bee565b905082815260208101848484011115612c7857612c77612b89565b5b612c83848285612c3a565b509392505050565b600082601f830112612ca057612c9f612b84565b5b8135612cb0848260208601612c49565b91505092915050565b600060208284031215612ccf57612cce61285c565b5b600082013567ffffffffffffffff811115612ced57612cec612861565b5b612cf984828501612c8b565b91505092915050565b600060208284031215612d1857612d1761285c565b5b6000612d2684828501612ab2565b91505092915050565b612d38816128eb565b8114612d4357600080fd5b50565b600081359050612d5581612d2f565b92915050565b60008060408385031215612d7257612d7161285c565b5b6000612d8085828601612ab2565b9250506020612d9185828601612d46565b9150509250929050565b600067ffffffffffffffff821115612db657612db5612b8e565b5b612dbf82612970565b9050602081019050919050565b6000612ddf612dda84612d9b565b612bee565b905082815260208101848484011115612dfb57612dfa612b89565b5b612e06848285612c3a565b509392505050565b600082601f830112612e2357612e22612b84565b5b8135612e33848260208601612dcc565b91505092915050565b60008060008060808587031215612e5657612e5561285c565b5b6000612e6487828801612ab2565b9450506020612e7587828801612ab2565b9350506040612e86878288016129fd565b925050606085013567ffffffffffffffff811115612ea757612ea6612861565b5b612eb387828801612e0e565b91505092959194509250565b60008060408385031215612ed657612ed561285c565b5b6000612ee485828601612ab2565b9250506020612ef585828601612ab2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f4657607f821691505b60208210811415612f5a57612f59612eff565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000612fbc602c8361292c565b9150612fc782612f60565b604082019050919050565b60006020820190508181036000830152612feb81612faf565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061304e60218361292c565b915061305982612ff2565b604082019050919050565b6000602082019050818103600083015261307d81613041565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006130e060388361292c565b91506130eb82613084565b604082019050919050565b6000602082019050818103600083015261310f816130d3565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061317260318361292c565b915061317d82613116565b604082019050919050565b600060208201905081810360008301526131a181613165565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613204602b8361292c565b915061320f826131a8565b604082019050919050565b60006020820190508181036000830152613233816131f7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061327060208361292c565b915061327b8261323a565b602082019050919050565b6000602082019050818103600083015261329f81613263565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613302602c8361292c565b915061330d826132a6565b604082019050919050565b60006020820190508181036000830152613331816132f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006133c360298361292c565b91506133ce82613367565b604082019050919050565b600060208201905081810360008301526133f2816133b6565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613455602a8361292c565b9150613460826133f9565b604082019050919050565b6000602082019050818103600083015261348481613448565b9050919050565b7f53616c65206d7573742062652061637469766520746f206d696e74205a6f6f2060008201527f47616e6700000000000000000000000000000000000000000000000000000000602082015250565b60006134e760248361292c565b91506134f28261348b565b604082019050919050565b60006020820190508181036000830152613516816134da565b9050919050565b7f43616e206f6e6c79206d696e7420323020746f6b656e7320617420612074696d60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061357960218361292c565b91506135848261351d565b604082019050919050565b600060208201905081810360008301526135a88161356c565b9050919050565b7f507572636861736520776f756c6420657863656564206d617820737570706c7960008201527f206f66205a6f6f2047616e677300000000000000000000000000000000000000602082015250565b600061360b602d8361292c565b9150613616826135af565b604082019050919050565b6000602082019050818103600083015261363a816135fe565b9050919050565b7f45746865722076616c75652073656e74206973206e6f7420636f727265637400600082015250565b6000613677601f8361292c565b915061368282613641565b602082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136e7826129dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561371a576137196136ad565b5b600182019050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061375b60198361292c565b915061376682613725565b602082019050919050565b6000602082019050818103600083015261378a8161374e565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006137ed602f8361292c565b91506137f882613791565b604082019050919050565b6000602082019050818103600083015261381c816137e0565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461385081612f2e565b61385a8186613823565b945060018216600081146138755760018114613886576138b9565b60ff198316865281860193506138b9565b61388f8561382e565b60005b838110156138b157815481890152600182019150602081019050613892565b838801955050505b50505092915050565b60006138cd82612921565b6138d78185613823565b93506138e781856020860161293d565b80840191505092915050565b60006138ff8285613843565b915061390b82846138c2565b91508190509392505050565b7f496d706f737369626c6520726573657276652061205a6f6f2047616e6720776860008201527f656e2073616c6520697320616374697665000000000000000000000000000000602082015250565b600061397360318361292c565b915061397e82613917565b604082019050919050565b600060208201905081810360008301526139a281613966565b9050919050565b60006139b4826129dc565b91506139bf836129dc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139f4576139f36136ad565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a5b60268361292c565b9150613a66826139ff565b604082019050919050565b60006020820190508181036000830152613a8a81613a4e565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613aed602c8361292c565b9150613af882613a91565b604082019050919050565b60006020820190508181036000830152613b1c81613ae0565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613b7f60298361292c565b9150613b8a82613b23565b604082019050919050565b60006020820190508181036000830152613bae81613b72565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c1160248361292c565b9150613c1c82613bb5565b604082019050919050565b60006020820190508181036000830152613c4081613c04565b9050919050565b6000613c52826129dc565b9150613c5d836129dc565b925082821015613c7057613c6f6136ad565b5b828203905092915050565b6000613c86826129dc565b9150613c91836129dc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cca57613cc96136ad565b5b828202905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d3160328361292c565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613da1826129dc565b9150613dac836129dc565b925082613dbc57613dbb613d67565b5b828204905092915050565b6000613dd2826129dc565b9150613ddd836129dc565b925082613ded57613dec613d67565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000613e1f82613df8565b613e298185613e03565b9350613e3981856020860161293d565b613e4281612970565b840191505092915050565b6000608082019050613e626000830187612a71565b613e6f6020830186612a71565b613e7c6040830185612b07565b8181036060830152613e8e8184613e14565b905095945050505050565b600081519050613ea881612892565b92915050565b600060208284031215613ec457613ec361285c565b5b6000613ed284828501613e99565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613f4060208361292c565b9150613f4b82613f0a565b602082019050919050565b60006020820190508181036000830152613f6f81613f33565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613fac601c8361292c565b9150613fb782613f76565b602082019050919050565b60006020820190508181036000830152613fdb81613f9f565b905091905056fea26469706673582212200b4e62b964ef7377bf40112d7796a9a15c0ba4816e46bad861727020aaf2cdaf64736f6c63430008090033