ETH Price: $3,113.96 (+0.53%)
Gas: 3 Gwei

Token

Cyber Agents (CA)
 

Overview

Max Total Supply

623 CA

Holders

107

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
reagentzero.eth
Balance
3 CA
0xaad1195adcec96c05534c80069fa30d19e19b1f1
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CyberAgentsNFT

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-25
*/

// SPDX-License-Identifier: MIT
// Created by petdomaa100

pragma solidity 0.8.11;


library Strings {
	function toString(uint256 value) internal pure returns(string memory) {
		if (value == 0) return "0";

		uint256 temp = value;
		uint256 digits;

		while (temp != 0) {
			digits++;
			temp /= 10;
		}

		bytes memory buffer = new bytes(digits);

		while (value != 0) {
			digits -= 1;
			buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
			value /= 10;
		}

		return string(buffer);
	}
}

library Address {
	function isContract(address account) internal view returns(bool) {
		return account.code.length > 0;
	}
}

library Counters {
	struct Counter {
		uint256 _value;
	}


	function current(Counter storage counter) internal view returns(uint256) {
		return counter._value;
	}

	function increment(Counter storage counter) internal {
		unchecked {
			counter._value += 1;
		}
	}

	function decrement(Counter storage counter) internal {
		uint256 value = counter._value;
		require(value > 0, "Counter: decrement overflow");

		unchecked {
			counter._value = value - 1;
		}
	}

	function reset(Counter storage counter) internal {
		counter._value = 0;
	}
}


interface IERC165 {
	function supportsInterface(bytes4 interfaceID) external view returns(bool);
}

interface IERC721 is IERC165 {
	event Transfer(address indexed from, address indexed to, uint256 indexed tokenID);
	event Approval(address indexed owner, address indexed approved, uint256 indexed tokenID);
	event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

	function balanceOf(address owner) external view returns(uint256 balance);

	function ownerOf(uint256 tokenID) external view returns(address owner);

	function safeTransferFrom(address from, address to, uint256 tokenID) external;

	function transferFrom(address from, address to, uint256 tokenID) external;

	function approve(address to, uint256 tokenID) external;

	function getApproved(uint256 tokenID) external view returns(address operator);

	function setApprovalForAll(address operator, bool _approved) external;

	function isApprovedForAll(address owner, address operator) external view returns(bool);

	function safeTransferFrom(address from, address to, uint256 tokenID, bytes calldata data) external;
}

interface IERC721Metadata is IERC721 {
	function name() external view returns(string memory);

	function symbol() external view returns(string memory);

	function tokenURI(uint256 tokenID) external view returns(string memory);
}

interface IERC721Receiver {
	function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns(bytes4);
}


abstract contract Context {
	function _msgSender() internal view virtual returns(address) {
		return msg.sender;
	}

	function _msgData() internal view virtual returns(bytes calldata) {
		return msg.data;
	}
}

abstract contract Ownable is Context {
	address private _owner;

	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

 
	constructor() {
		_transferOwnership(_msgSender());
	}


	function owner() public view virtual returns(address) {
		return _owner;
	}

	modifier onlyOwner() {
		require(owner() == _msgSender(), "Ownable: caller is not the owner");
		_;
	}


	function transferOwnership(address newOwner) public virtual onlyOwner {
		require(newOwner != address(0), "Ownable: new owner is the zero address");

		_transferOwnership(newOwner);
	}

	function _transferOwnership(address newOwner) internal virtual {
		address oldOwner = _owner;

		_owner = newOwner;

		emit OwnershipTransferred(oldOwner, newOwner);
	}
}

abstract contract ERC165 is IERC165 {
	function supportsInterface(bytes4 interfaceID) public view virtual override returns(bool) {
		return interfaceID == type(IERC165).interfaceId;
	}
}

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
	using Address for address;
	using Strings for uint256;

	string private _name;
	string private _symbol;

	mapping(uint256 => address) private _owners;
	mapping(address => uint256) private _balances;
	mapping(uint256 => address) private _tokenApprovals;
	mapping(address => mapping(address => bool)) private _operatorApprovals;

	constructor(string memory name_, string memory symbol_) {
		_name = name_;
		_symbol = symbol_;
	}

	function supportsInterface(bytes4 interfaceID) public view virtual override(ERC165, IERC165) returns(bool) {
		return interfaceID == type(IERC721).interfaceId || interfaceID == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceID);
	}

	function balanceOf(address owner) public view virtual override returns(uint256) {
		require(owner != address(0), "ERC721: balance query for the zero address");

		return _balances[owner];
	}

	function ownerOf(uint256 tokenId) public view virtual override returns(address) {
		address owner = _owners[tokenId];

		require(owner != address(0), "ERC721: owner query for nonexistent token");

		return owner;
	}

	function name() public view virtual override returns(string memory) {
		return _name;
	}

	function symbol() public view virtual override returns(string memory) {
		return _symbol;
	}

	function tokenURI(uint256 tokenID) public view virtual override returns(string memory) {
		require(_exists(tokenID), "ERC721Metadata: URI query for nonexistent token");

		string memory baseURI = _baseURI();

		return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenID.toString())) : "";
	}

	function _baseURI() internal view virtual returns(string memory) {
		return "";
	}

	function approve(address to, uint256 tokenID) public virtual override {
		address owner = ERC721.ownerOf(tokenID);
		require(to != owner, "ERC721: approval to current owner");

		require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all");

		_approve(to, tokenID);
	}

	function getApproved(uint256 tokenID) public view virtual override returns(address) {
		require(_exists(tokenID), "ERC721: approved query for nonexistent token");

		return _tokenApprovals[tokenID];
	}

	function setApprovalForAll(address operator, bool approved) public virtual override {
		_setApprovalForAll(_msgSender(), operator, approved);
	}

	function isApprovedForAll(address owner, address operator) public view virtual override returns(bool) {
		return _operatorApprovals[owner][operator];
	}

	function transferFrom(address from, address to, uint256 tokenID) public virtual override {
		//solhint-disable-next-line max-line-length
		require(_isApprovedOrOwner(_msgSender(), tokenID), "ERC721: transfer caller is not owner nor approved");

		_transfer(from, to, tokenID);
	}

	function safeTransferFrom(address from, address to, uint256 tokenID) public virtual override {
		safeTransferFrom(from, to, tokenID, "");
	}

	function safeTransferFrom(address from, address to, uint256 tokenID, bytes memory _data) public virtual override {
		require(_isApprovedOrOwner(_msgSender(), tokenID), "ERC721: transfer caller is not owner nor approved");

		_safeTransfer(from, to, tokenID, _data);
	}

	function _safeTransfer(address from, address to, uint256 tokenID, bytes memory _data) internal virtual {
		_transfer(from, to, tokenID);

		require(_checkOnERC721Received(from, to, tokenID, _data), "ERC721: transfer to non ERC721Receiver implementer");
	}

	function _exists(uint256 tokenID) internal view virtual returns(bool) {
		return _owners[tokenID] != address(0);
	}

	function _isApprovedOrOwner(address spender, uint256 tokenID) internal view virtual returns(bool) {
		require(_exists(tokenID), "ERC721: operator query for nonexistent token");

		address owner = ERC721.ownerOf(tokenID);

		return (spender == owner || getApproved(tokenID) == spender || isApprovedForAll(owner, spender));
	}

	function _safeMint(address to, uint256 tokenID) internal virtual {
		_safeMint(to, tokenID, "");
	}

	function _safeMint(address to, uint256 tokenID, bytes memory _data) internal virtual {
		_mint(to, tokenID);

		require(_checkOnERC721Received(address(0), to, tokenID, _data), "ERC721: transfer to non ERC721Receiver implementer");
	}

	function _mint(address to, uint256 tokenID) internal virtual {
		require(to != address(0), "ERC721: mint to the zero address");
		require(!_exists(tokenID), "ERC721: token already minted");

		_beforeTokenTransfer(address(0), to, tokenID);

		_balances[to] += 1;
		_owners[tokenID] = to;

		emit Transfer(address(0), to, tokenID);

		_afterTokenTransfer(address(0), to, tokenID);
	}

	function _burn(uint256 tokenID) internal virtual {
		address owner = ERC721.ownerOf(tokenID);

		_beforeTokenTransfer(owner, address(0), tokenID);
		_approve(address(0), tokenID);

		_balances[owner] -= 1;
		delete _owners[tokenID];

		emit Transfer(owner, address(0), tokenID);

		_afterTokenTransfer(owner, address(0), tokenID);
	}

	function _transfer(address from, address to, uint256 tokenID) internal virtual {
		require(ERC721.ownerOf(tokenID) == from, "ERC721: transfer from incorrect owner");
		require(to != address(0), "ERC721: transfer to the zero address");

		_beforeTokenTransfer(from, to, tokenID);
		_approve(address(0), tokenID);

		_balances[from] -= 1;
		_balances[to] += 1;
		_owners[tokenID] = to;

		emit Transfer(from, to, tokenID);

		_afterTokenTransfer(from, to, tokenID);
	}

	function _approve(address to, uint256 tokenID) internal virtual {
		_tokenApprovals[tokenID] = to;

		emit Approval(ERC721.ownerOf(tokenID), to, tokenID);
	}

	function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {
		require(owner != operator, "ERC721: approve to caller");
		
		_operatorApprovals[owner][operator] = approved;
		
		emit ApprovalForAll(owner, operator, approved);
	}

	function _checkOnERC721Received(address from, address to, uint256 tokenID, bytes memory _data) private returns(bool) {
		if (to.isContract()) {
			try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenID, _data) returns(bytes4 retval) {
				return retval == IERC721Receiver.onERC721Received.selector;
			} catch (bytes memory reason) {
				if (reason.length == 0) revert("ERC721: transfer to non ERC721Receiver implementer");
				
				else {
					assembly {
						revert(add(32, reason), mload(reason))
					}
				}
			}
		}
		
		else return true;
	}

	function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}

	function _afterTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}
}



contract CyberAgentsNFT is ERC721, Ownable {
	using Counters for Counters.Counter;
	using Strings for uint256;


	bool public paused;
	bool public revealed;

	string private unrevealedURI;
	string private baseURI;
	string private uriSuffix;
	
	uint256 public cost;
	uint256 public maxSupply;
	uint256 public freeToMintSupply;
	uint256 public maxMintAmountPerTX;

	Counters.Counter private supply;


	constructor(string memory _initUnrevealedURI) ERC721("Cyber Agents", "CA") {
		paused = true;
		revealed = false;

		cost = 0;
		maxSupply = 5555;
		freeToMintSupply = 555;
		maxMintAmountPerTX = 5;

		setURIsuffix(".json");
		setUnrevealedURI(_initUnrevealedURI);
	}


	function mint(uint256 amount) public payable {
		uint256 newSupply = supply.current() + amount;

		require(amount > 0 && amount <= maxMintAmountPerTX, "Invalid mint amount");
		require(newSupply <= maxSupply, "Max token supply exceeded");
		require(!paused, "Minting is paused");
		require(msg.value >= cost * amount, "Insufficient funds");


		_mintLoop(_msgSender(), amount);


		if (cost == 0 && newSupply >= freeToMintSupply) cost = 0.05 ether;
	}

	function airDrop(address[] calldata addresses, uint8[] calldata amounts) public onlyOwner {
		assert(addresses.length == amounts.length);
		assert(addresses.length > 0 && amounts.length > 0);


		uint256 totalAmount;
		for (uint256 i = 0; i < amounts.length; i++) totalAmount += amounts[0];

		uint256 newSupply = supply.current() + totalAmount;
		require(newSupply <= maxSupply, "Max token supply exceeded");


		for (uint256 i = 0; i < addresses.length; i++) {
			_mintLoop(addresses[i], amounts[i]);
		}


		if (cost == 0 && newSupply >= freeToMintSupply) cost = 0.07 ether;
	}

	function flipPausedState() public onlyOwner {
		paused = !paused;
	}

	function reveal(string memory _initBaseURI) public onlyOwner {
		revealed = true;

		setBaseURI(_initBaseURI);
	}

	function withdraw() public onlyOwner {
		(bool success, ) = payable(owner()).call{ value: address(this).balance }("");
		require(success);
	}


	function totalSupply() public view returns(uint256) {
		return supply.current();
	}

	function tokenURI(uint256 tokenID) public view override returns(string memory) {
		require(_exists(tokenID), "ERC721Metadata: URI query for nonexistent token");

		if (!revealed) return unrevealedURI;


		string memory currentBaseURI = _baseURI();

		return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked(currentBaseURI, tokenID.toString(), uriSuffix) ) : "";
	}

	function walletOfOwner(address _address) public view returns(uint256[] memory) {
		uint256 ownerTokenCount = balanceOf(_address);

		uint256[] memory ownedTokenIDs = new uint256[](ownerTokenCount);


		uint256 tokenIndex = 1;
		uint256 ownedTokenIndex = 0;

		while (ownedTokenIndex < ownerTokenCount && tokenIndex <= maxSupply) {
			address owner = ownerOf(tokenIndex);

			if (owner == _address) {
				ownedTokenIDs[ownedTokenIndex] = tokenIndex;

				ownedTokenIndex++;
			}

			tokenIndex++;
		}


		return ownedTokenIDs;
	}


	function setBaseURI(string memory newBaseURI) public onlyOwner {
		baseURI = newBaseURI;
	}

	function setUnrevealedURI(string memory newUnrevealedURI) public onlyOwner {
		unrevealedURI = newUnrevealedURI;
	}

	function setURIsuffix(string memory newSuffix) public onlyOwner {
		uriSuffix = newSuffix;
	}

	function setMaxSupply(uint256 newAmount) public onlyOwner {
		maxSupply = newAmount;
	}

	function setFreeToMintSupply(uint256 newAmount) public onlyOwner {
		freeToMintSupply = newAmount;
	}

	function setMaxMintAmountPerTX(uint256 newAmount) public onlyOwner {
		maxMintAmountPerTX = newAmount;
	}

	function setCost(uint256 newCost) public onlyOwner {
		cost = newCost;
	}


	function _baseURI() internal view override returns(string memory) {
		return baseURI;
	}

	function _mintLoop(address to, uint256 amount) internal {
		for (uint256 i = 0; i < amount; i++) {
			supply.increment();

			_safeMint(to, supply.current());
		}
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_initUnrevealedURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"amounts","type":"uint8[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPausedState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freeToMintSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setFreeToMintSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxMintAmountPerTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSuffix","type":"string"}],"name":"setURIsuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"name":"setUnrevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162004ab238038062004ab2833981810160405281019062000037919062000648565b6040518060400160405280600c81526020017f4379626572204167656e747300000000000000000000000000000000000000008152506040518060400160405280600281526020017f43410000000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000bb929190620003fb565b508060019080519060200190620000d4929190620003fb565b505050620000f7620000eb620001ad60201b60201c565b620001b560201b60201c565b6001600660146101000a81548160ff0219169083151502179055506000600660156101000a81548160ff0219169083151502179055506000600a819055506115b3600b8190555061022b600c819055506005600d81905550620001956040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506200027b60201b60201c565b620001a6816200032660201b60201c565b5062000781565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200028b620001ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002b1620003d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200030a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030190620006fa565b60405180910390fd5b806009908051906020019062000322929190620003fb565b5050565b62000336620001ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200035c620003d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003ac90620006fa565b60405180910390fd5b8060079080519060200190620003cd929190620003fb565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000409906200074b565b90600052602060002090601f0160209004810192826200042d576000855562000479565b82601f106200044857805160ff191683800117855562000479565b8280016001018555821562000479579182015b82811115620004785782518255916020019190600101906200045b565b5b5090506200048891906200048c565b5090565b5b80821115620004a75760008160009055506001016200048d565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200051482620004c9565b810181811067ffffffffffffffff82111715620005365762000535620004da565b5b80604052505050565b60006200054b620004ab565b905062000559828262000509565b919050565b600067ffffffffffffffff8211156200057c576200057b620004da565b5b6200058782620004c9565b9050602081019050919050565b60005b83811015620005b457808201518184015260208101905062000597565b83811115620005c4576000848401525b50505050565b6000620005e1620005db846200055e565b6200053f565b9050828152602081018484840111156200060057620005ff620004c4565b5b6200060d84828562000594565b509392505050565b600082601f8301126200062d576200062c620004bf565b5b81516200063f848260208601620005ca565b91505092915050565b600060208284031215620006615762000660620004b5565b5b600082015167ffffffffffffffff811115620006825762000681620004ba565b5b620006908482850162000615565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620006e260208362000699565b9150620006ef82620006aa565b602082019050919050565b600060208201905081810360008301526200071581620006d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200076457607f821691505b602082108114156200077b576200077a6200071c565b5b50919050565b61432180620007916000396000f3fe6080604052600436106102045760003560e01c80635c975abb11610118578063a22cb465116100a0578063d5abeb011161006f578063d5abeb0114610730578063e985e9c51461075b578063f2fde38b14610798578063f9daade4146107c1578063fe2c7fee146107ea57610204565b8063a22cb46514610678578063aff72141146106a1578063b88d4fde146106ca578063c87b56dd146106f357610204565b80638da5cb5b116100e75780638da5cb5b146105c65780638e6fe1a3146105f157806393eff8511461061a57806395d89b4114610631578063a0712d681461065c57610204565b80635c975abb146104f85780636352211e146105235780636f8b44b01461056057806370a082311461058957610204565b80632dfa9d001161019b57806344a0d68a1161016a57806344a0d68a146104275780634c1d3f8b146104505780634c2612471461047b57806351830227146104a457806355f804b3146104cf57610204565b80632dfa9d001461037f5780633ccfd60b146103aa57806342842e0e146103c1578063438b6300146103ea57610204565b806313faede6116101d757806313faede6146102d757806318160ddd146103025780631db2f61d1461032d57806323b872dd1461035657610204565b806301ffc9a71461020957806306fdde0314610246578063081812fc14610271578063095ea7b3146102ae575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612b1f565b610813565b60405161023d9190612b67565b60405180910390f35b34801561025257600080fd5b5061025b6108f5565b6040516102689190612c1b565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612c73565b610987565b6040516102a59190612ce1565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190612d28565b610a0c565b005b3480156102e357600080fd5b506102ec610b24565b6040516102f99190612d77565b60405180910390f35b34801561030e57600080fd5b50610317610b2a565b6040516103249190612d77565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190612c73565b610b3b565b005b34801561036257600080fd5b5061037d60048036038101906103789190612d92565b610bc1565b005b34801561038b57600080fd5b50610394610c21565b6040516103a19190612d77565b60405180910390f35b3480156103b657600080fd5b506103bf610c27565b005b3480156103cd57600080fd5b506103e860048036038101906103e39190612d92565b610d23565b005b3480156103f657600080fd5b50610411600480360381019061040c9190612de5565b610d43565b60405161041e9190612ed0565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612c73565b610e4e565b005b34801561045c57600080fd5b50610465610ed4565b6040516104729190612d77565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190613027565b610eda565b005b3480156104b057600080fd5b506104b9610f7d565b6040516104c69190612b67565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190613027565b610f90565b005b34801561050457600080fd5b5061050d611026565b60405161051a9190612b67565b60405180910390f35b34801561052f57600080fd5b5061054a60048036038101906105459190612c73565b611039565b6040516105579190612ce1565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612c73565b6110eb565b005b34801561059557600080fd5b506105b060048036038101906105ab9190612de5565b611171565b6040516105bd9190612d77565b60405180910390f35b3480156105d257600080fd5b506105db611229565b6040516105e89190612ce1565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190612c73565b611253565b005b34801561062657600080fd5b5061062f6112d9565b005b34801561063d57600080fd5b50610646611381565b6040516106539190612c1b565b60405180910390f35b61067660048036038101906106719190612c73565b611413565b005b34801561068457600080fd5b5061069f600480360381019061069a919061309c565b61159f565b005b3480156106ad57600080fd5b506106c860048036038101906106c39190613027565b6115b5565b005b3480156106d657600080fd5b506106f160048036038101906106ec919061317d565b61164b565b005b3480156106ff57600080fd5b5061071a60048036038101906107159190612c73565b6116ad565b6040516107279190612c1b565b60405180910390f35b34801561073c57600080fd5b506107456117fe565b6040516107529190612d77565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d9190613200565b611804565b60405161078f9190612b67565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190612de5565b611898565b005b3480156107cd57600080fd5b506107e860048036038101906107e391906132f6565b611990565b005b3480156107f657600080fd5b50610811600480360381019061080c9190613027565b611bb0565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108de57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108ee57506108ed82611c46565b5b9050919050565b606060008054610904906133a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610930906133a6565b801561097d5780601f106109525761010080835404028352916020019161097d565b820191906000526020600020905b81548152906001019060200180831161096057829003601f168201915b5050505050905090565b600061099282611cb0565b6109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c89061344a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a1782611039565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f906134dc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610aa7611d1c565b73ffffffffffffffffffffffffffffffffffffffff161480610ad65750610ad581610ad0611d1c565b611804565b5b610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c9061356e565b60405180910390fd5b610b1f8383611d24565b505050565b600a5481565b6000610b36600e611ddd565b905090565b610b43611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610b61611229565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae906135da565b60405180910390fd5b80600c8190555050565b610bd2610bcc611d1c565b82611deb565b610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c089061366c565b60405180910390fd5b610c1c838383611ec9565b505050565b600d5481565b610c2f611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610c4d611229565b73ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a906135da565b60405180910390fd5b6000610cad611229565b73ffffffffffffffffffffffffffffffffffffffff1647604051610cd0906136bd565b60006040518083038185875af1925050503d8060008114610d0d576040519150601f19603f3d011682016040523d82523d6000602084013e610d12565b606091505b5050905080610d2057600080fd5b50565b610d3e8383836040518060200160405280600081525061164b565b505050565b60606000610d5083611171565b905060008167ffffffffffffffff811115610d6e57610d6d612efc565b5b604051908082528060200260200182016040528015610d9c5781602001602082028036833780820191505090505b50905060006001905060005b8381108015610db95750600b548211155b15610e42576000610dc983611039565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e2e5782848381518110610e1357610e126136d2565b5b6020026020010181815250508180610e2a90613730565b9250505b8280610e3990613730565b93505050610da8565b82945050505050919050565b610e56611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610e74611229565b73ffffffffffffffffffffffffffffffffffffffff1614610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec1906135da565b60405180910390fd5b80600a8190555050565b600c5481565b610ee2611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610f00611229565b73ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d906135da565b60405180910390fd5b6001600660156101000a81548160ff021916908315150217905550610f7a81610f90565b50565b600660159054906101000a900460ff1681565b610f98611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610fb6611229565b73ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611003906135da565b60405180910390fd5b8060089080519060200190611022929190612a10565b5050565b600660149054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d9906137eb565b60405180910390fd5b80915050919050565b6110f3611d1c565b73ffffffffffffffffffffffffffffffffffffffff16611111611229565b73ffffffffffffffffffffffffffffffffffffffff1614611167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115e906135da565b60405180910390fd5b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d99061387d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61125b611d1c565b73ffffffffffffffffffffffffffffffffffffffff16611279611229565b73ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c6906135da565b60405180910390fd5b80600d8190555050565b6112e1611d1c565b73ffffffffffffffffffffffffffffffffffffffff166112ff611229565b73ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c906135da565b60405180910390fd5b600660149054906101000a900460ff1615600660146101000a81548160ff021916908315150217905550565b606060018054611390906133a6565b80601f01602080910402602001604051908101604052809291908181526020018280546113bc906133a6565b80156114095780601f106113de57610100808354040283529160200191611409565b820191906000526020600020905b8154815290600101906020018083116113ec57829003601f168201915b5050505050905090565b600081611420600e611ddd565b61142a919061389d565b905060008211801561143e5750600d548211155b61147d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114749061393f565b60405180910390fd5b600b548111156114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b9906139ab565b60405180910390fd5b600660149054906101000a900460ff1615611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990613a17565b60405180910390fd5b81600a546115209190613a37565b341015611562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155990613add565b60405180910390fd5b61157361156d611d1c565b83612130565b6000600a541480156115875750600c548110155b1561159b5766b1a2bc2ec50000600a819055505b5050565b6115b16115aa611d1c565b8383612170565b5050565b6115bd611d1c565b73ffffffffffffffffffffffffffffffffffffffff166115db611229565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611628906135da565b60405180910390fd5b8060099080519060200190611647929190612a10565b5050565b61165c611656611d1c565b83611deb565b61169b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116929061366c565b60405180910390fd5b6116a7848484846122dd565b50505050565b60606116b882611cb0565b6116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613b6f565b60405180910390fd5b600660159054906101000a900460ff1661179d5760078054611718906133a6565b80601f0160208091040260200160405190810160405280929190818152602001828054611744906133a6565b80156117915780601f1061176657610100808354040283529160200191611791565b820191906000526020600020905b81548152906001019060200180831161177457829003601f168201915b505050505090506117f9565b60006117a7612339565b905060008151116117c757604051806020016040528060008152506117f5565b806117d1846123cb565b60096040516020016117e593929190613c5f565b6040516020818303038152906040525b9150505b919050565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6118a0611d1c565b73ffffffffffffffffffffffffffffffffffffffff166118be611229565b73ffffffffffffffffffffffffffffffffffffffff1614611914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190b906135da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90613d02565b60405180910390fd5b61198d8161252c565b50565b611998611d1c565b73ffffffffffffffffffffffffffffffffffffffff166119b6611229565b73ffffffffffffffffffffffffffffffffffffffff1614611a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a03906135da565b60405180910390fd5b818190508484905014611a2257611a21613d22565b5b600084849050118015611a385750600082829050115b611a4557611a44613d22565b5b600080600090505b83839050811015611aa45783836000818110611a6c57611a6b6136d2565b5b9050602002016020810190611a819190613d8a565b60ff1682611a8f919061389d565b91508080611a9c90613730565b915050611a4d565b50600081611ab2600e611ddd565b611abc919061389d565b9050600b54811115611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa906139ab565b60405180910390fd5b60005b86869050811015611b7f57611b6c878783818110611b2757611b266136d2565b5b9050602002016020810190611b3c9190612de5565b868684818110611b4f57611b4e6136d2565b5b9050602002016020810190611b649190613d8a565b60ff16612130565b8080611b7790613730565b915050611b06565b506000600a54148015611b945750600c548110155b15611ba85766f8b0a10e470000600a819055505b505050505050565b611bb8611d1c565b73ffffffffffffffffffffffffffffffffffffffff16611bd6611229565b73ffffffffffffffffffffffffffffffffffffffff1614611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c23906135da565b60405180910390fd5b8060079080519060200190611c42929190612a10565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d9783611039565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6000611df682611cb0565b611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c90613e29565b60405180910390fd5b6000611e4083611039565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611eaf57508373ffffffffffffffffffffffffffffffffffffffff16611e9784610987565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ec05750611ebf8185611804565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ee982611039565b73ffffffffffffffffffffffffffffffffffffffff1614611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3690613ebb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690613f4d565b60405180910390fd5b611fba8383836125f2565b611fc5600082611d24565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120159190613f6d565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461206c919061389d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461212b8383836125f7565b505050565b60005b8181101561216b57612145600e6125fc565b61215883612153600e611ddd565b612612565b808061216390613730565b915050612133565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d690613fed565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122d09190612b67565b60405180910390a3505050565b6122e8848484611ec9565b6122f484848484612630565b612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a9061407f565b60405180910390fd5b50505050565b606060088054612348906133a6565b80601f0160208091040260200160405190810160405280929190818152602001828054612374906133a6565b80156123c15780601f10612396576101008083540402835291602001916123c1565b820191906000526020600020905b8154815290600101906020018083116123a457829003601f168201915b5050505050905090565b60606000821415612413576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612527565b600082905060005b6000821461244557808061242e90613730565b915050600a8261243e91906140ce565b915061241b565b60008167ffffffffffffffff81111561246157612460612efc565b5b6040519080825280601f01601f1916602001820160405280156124935781602001600182028036833780820191505090505b5090505b60008514612520576001826124ac9190613f6d565b9150600a856124bb91906140ff565b60306124c7919061389d565b60f81b8183815181106124dd576124dc6136d2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561251991906140ce565b9450612497565b8093505050505b919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6001816000016000828254019250508190555050565b61262c8282604051806020016040528060008152506127b8565b5050565b60006126518473ffffffffffffffffffffffffffffffffffffffff16612813565b156127ab578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261267a611d1c565b8786866040518563ffffffff1660e01b815260040161269c9493929190614185565b6020604051808303816000875af19250505080156126d857506040513d601f19601f820116820180604052508101906126d591906141e6565b60015b61275b573d8060008114612708576040519150601f19603f3d011682016040523d82523d6000602084013e61270d565b606091505b50600081511415612753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274a9061407f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506127b0565b600190505b949350505050565b6127c28383612836565b6127cf6000848484612630565b61280e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128059061407f565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d9061425f565b60405180910390fd5b6128af81611cb0565b156128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e6906142cb565b60405180910390fd5b6128fb600083836125f2565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461294b919061389d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a0c600083836125f7565b5050565b828054612a1c906133a6565b90600052602060002090601f016020900481019282612a3e5760008555612a85565b82601f10612a5757805160ff1916838001178555612a85565b82800160010185558215612a85579182015b82811115612a84578251825591602001919060010190612a69565b5b509050612a929190612a96565b5090565b5b80821115612aaf576000816000905550600101612a97565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612afc81612ac7565b8114612b0757600080fd5b50565b600081359050612b1981612af3565b92915050565b600060208284031215612b3557612b34612abd565b5b6000612b4384828501612b0a565b91505092915050565b60008115159050919050565b612b6181612b4c565b82525050565b6000602082019050612b7c6000830184612b58565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bbc578082015181840152602081019050612ba1565b83811115612bcb576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bed82612b82565b612bf78185612b8d565b9350612c07818560208601612b9e565b612c1081612bd1565b840191505092915050565b60006020820190508181036000830152612c358184612be2565b905092915050565b6000819050919050565b612c5081612c3d565b8114612c5b57600080fd5b50565b600081359050612c6d81612c47565b92915050565b600060208284031215612c8957612c88612abd565b5b6000612c9784828501612c5e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ccb82612ca0565b9050919050565b612cdb81612cc0565b82525050565b6000602082019050612cf66000830184612cd2565b92915050565b612d0581612cc0565b8114612d1057600080fd5b50565b600081359050612d2281612cfc565b92915050565b60008060408385031215612d3f57612d3e612abd565b5b6000612d4d85828601612d13565b9250506020612d5e85828601612c5e565b9150509250929050565b612d7181612c3d565b82525050565b6000602082019050612d8c6000830184612d68565b92915050565b600080600060608486031215612dab57612daa612abd565b5b6000612db986828701612d13565b9350506020612dca86828701612d13565b9250506040612ddb86828701612c5e565b9150509250925092565b600060208284031215612dfb57612dfa612abd565b5b6000612e0984828501612d13565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e4781612c3d565b82525050565b6000612e598383612e3e565b60208301905092915050565b6000602082019050919050565b6000612e7d82612e12565b612e878185612e1d565b9350612e9283612e2e565b8060005b83811015612ec3578151612eaa8882612e4d565b9750612eb583612e65565b925050600181019050612e96565b5085935050505092915050565b60006020820190508181036000830152612eea8184612e72565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f3482612bd1565b810181811067ffffffffffffffff82111715612f5357612f52612efc565b5b80604052505050565b6000612f66612ab3565b9050612f728282612f2b565b919050565b600067ffffffffffffffff821115612f9257612f91612efc565b5b612f9b82612bd1565b9050602081019050919050565b82818337600083830152505050565b6000612fca612fc584612f77565b612f5c565b905082815260208101848484011115612fe657612fe5612ef7565b5b612ff1848285612fa8565b509392505050565b600082601f83011261300e5761300d612ef2565b5b813561301e848260208601612fb7565b91505092915050565b60006020828403121561303d5761303c612abd565b5b600082013567ffffffffffffffff81111561305b5761305a612ac2565b5b61306784828501612ff9565b91505092915050565b61307981612b4c565b811461308457600080fd5b50565b60008135905061309681613070565b92915050565b600080604083850312156130b3576130b2612abd565b5b60006130c185828601612d13565b92505060206130d285828601613087565b9150509250929050565b600067ffffffffffffffff8211156130f7576130f6612efc565b5b61310082612bd1565b9050602081019050919050565b600061312061311b846130dc565b612f5c565b90508281526020810184848401111561313c5761313b612ef7565b5b613147848285612fa8565b509392505050565b600082601f83011261316457613163612ef2565b5b813561317484826020860161310d565b91505092915050565b6000806000806080858703121561319757613196612abd565b5b60006131a587828801612d13565b94505060206131b687828801612d13565b93505060406131c787828801612c5e565b925050606085013567ffffffffffffffff8111156131e8576131e7612ac2565b5b6131f48782880161314f565b91505092959194509250565b6000806040838503121561321757613216612abd565b5b600061322585828601612d13565b925050602061323685828601612d13565b9150509250929050565b600080fd5b600080fd5b60008083601f8401126132605761325f612ef2565b5b8235905067ffffffffffffffff81111561327d5761327c613240565b5b60208301915083602082028301111561329957613298613245565b5b9250929050565b60008083601f8401126132b6576132b5612ef2565b5b8235905067ffffffffffffffff8111156132d3576132d2613240565b5b6020830191508360208202830111156132ef576132ee613245565b5b9250929050565b600080600080604085870312156133105761330f612abd565b5b600085013567ffffffffffffffff81111561332e5761332d612ac2565b5b61333a8782880161324a565b9450945050602085013567ffffffffffffffff81111561335d5761335c612ac2565b5b613369878288016132a0565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133be57607f821691505b602082108114156133d2576133d1613377565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613434602c83612b8d565b915061343f826133d8565b604082019050919050565b6000602082019050818103600083015261346381613427565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c6602183612b8d565b91506134d18261346a565b604082019050919050565b600060208201905081810360008301526134f5816134b9565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613558603883612b8d565b9150613563826134fc565b604082019050919050565b600060208201905081810360008301526135878161354b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135c4602083612b8d565b91506135cf8261358e565b602082019050919050565b600060208201905081810360008301526135f3816135b7565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613656603183612b8d565b9150613661826135fa565b604082019050919050565b6000602082019050818103600083015261368581613649565b9050919050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061373b82612c3d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561376e5761376d613701565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006137d5602983612b8d565b91506137e082613779565b604082019050919050565b60006020820190508181036000830152613804816137c8565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613867602a83612b8d565b91506138728261380b565b604082019050919050565b600060208201905081810360008301526138968161385a565b9050919050565b60006138a882612c3d565b91506138b383612c3d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138e8576138e7613701565b5b828201905092915050565b7f496e76616c6964206d696e7420616d6f756e7400000000000000000000000000600082015250565b6000613929601383612b8d565b9150613934826138f3565b602082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f4d617820746f6b656e20737570706c7920657863656564656400000000000000600082015250565b6000613995601983612b8d565b91506139a08261395f565b602082019050919050565b600060208201905081810360008301526139c481613988565b9050919050565b7f4d696e74696e6720697320706175736564000000000000000000000000000000600082015250565b6000613a01601183612b8d565b9150613a0c826139cb565b602082019050919050565b60006020820190508181036000830152613a30816139f4565b9050919050565b6000613a4282612c3d565b9150613a4d83612c3d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a8657613a85613701565b5b828202905092915050565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b6000613ac7601283612b8d565b9150613ad282613a91565b602082019050919050565b60006020820190508181036000830152613af681613aba565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b59602f83612b8d565b9150613b6482613afd565b604082019050919050565b60006020820190508181036000830152613b8881613b4c565b9050919050565b600081905092915050565b6000613ba582612b82565b613baf8185613b8f565b9350613bbf818560208601612b9e565b80840191505092915050565b60008190508160005260206000209050919050565b60008154613bed816133a6565b613bf78186613b8f565b94506001821660008114613c125760018114613c2357613c56565b60ff19831686528186019350613c56565b613c2c85613bcb565b60005b83811015613c4e57815481890152600182019150602081019050613c2f565b838801955050505b50505092915050565b6000613c6b8286613b9a565b9150613c778285613b9a565b9150613c838284613be0565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cec602683612b8d565b9150613cf782613c90565b604082019050919050565b60006020820190508181036000830152613d1b81613cdf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600060ff82169050919050565b613d6781613d51565b8114613d7257600080fd5b50565b600081359050613d8481613d5e565b92915050565b600060208284031215613da057613d9f612abd565b5b6000613dae84828501613d75565b91505092915050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613e13602c83612b8d565b9150613e1e82613db7565b604082019050919050565b60006020820190508181036000830152613e4281613e06565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613ea5602583612b8d565b9150613eb082613e49565b604082019050919050565b60006020820190508181036000830152613ed481613e98565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f37602483612b8d565b9150613f4282613edb565b604082019050919050565b60006020820190508181036000830152613f6681613f2a565b9050919050565b6000613f7882612c3d565b9150613f8383612c3d565b925082821015613f9657613f95613701565b5b828203905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613fd7601983612b8d565b9150613fe282613fa1565b602082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614069603283612b8d565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140d982612c3d565b91506140e483612c3d565b9250826140f4576140f361409f565b5b828204905092915050565b600061410a82612c3d565b915061411583612c3d565b9250826141255761412461409f565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b600061415782614130565b614161818561413b565b9350614171818560208601612b9e565b61417a81612bd1565b840191505092915050565b600060808201905061419a6000830187612cd2565b6141a76020830186612cd2565b6141b46040830185612d68565b81810360608301526141c6818461414c565b905095945050505050565b6000815190506141e081612af3565b92915050565b6000602082840312156141fc576141fb612abd565b5b600061420a848285016141d1565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614249602083612b8d565b915061425482614213565b602082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006142b5601c83612b8d565b91506142c08261427f565b602082019050919050565b600060208201905081810360008301526142e4816142a8565b905091905056fea2646970667358221220b06df1e16e2b0980a3c1aad6cdd5838fb72f75895d3a9209d73a85bb8c073b1264736f6c634300080b003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102045760003560e01c80635c975abb11610118578063a22cb465116100a0578063d5abeb011161006f578063d5abeb0114610730578063e985e9c51461075b578063f2fde38b14610798578063f9daade4146107c1578063fe2c7fee146107ea57610204565b8063a22cb46514610678578063aff72141146106a1578063b88d4fde146106ca578063c87b56dd146106f357610204565b80638da5cb5b116100e75780638da5cb5b146105c65780638e6fe1a3146105f157806393eff8511461061a57806395d89b4114610631578063a0712d681461065c57610204565b80635c975abb146104f85780636352211e146105235780636f8b44b01461056057806370a082311461058957610204565b80632dfa9d001161019b57806344a0d68a1161016a57806344a0d68a146104275780634c1d3f8b146104505780634c2612471461047b57806351830227146104a457806355f804b3146104cf57610204565b80632dfa9d001461037f5780633ccfd60b146103aa57806342842e0e146103c1578063438b6300146103ea57610204565b806313faede6116101d757806313faede6146102d757806318160ddd146103025780631db2f61d1461032d57806323b872dd1461035657610204565b806301ffc9a71461020957806306fdde0314610246578063081812fc14610271578063095ea7b3146102ae575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612b1f565b610813565b60405161023d9190612b67565b60405180910390f35b34801561025257600080fd5b5061025b6108f5565b6040516102689190612c1b565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612c73565b610987565b6040516102a59190612ce1565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190612d28565b610a0c565b005b3480156102e357600080fd5b506102ec610b24565b6040516102f99190612d77565b60405180910390f35b34801561030e57600080fd5b50610317610b2a565b6040516103249190612d77565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190612c73565b610b3b565b005b34801561036257600080fd5b5061037d60048036038101906103789190612d92565b610bc1565b005b34801561038b57600080fd5b50610394610c21565b6040516103a19190612d77565b60405180910390f35b3480156103b657600080fd5b506103bf610c27565b005b3480156103cd57600080fd5b506103e860048036038101906103e39190612d92565b610d23565b005b3480156103f657600080fd5b50610411600480360381019061040c9190612de5565b610d43565b60405161041e9190612ed0565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612c73565b610e4e565b005b34801561045c57600080fd5b50610465610ed4565b6040516104729190612d77565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190613027565b610eda565b005b3480156104b057600080fd5b506104b9610f7d565b6040516104c69190612b67565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190613027565b610f90565b005b34801561050457600080fd5b5061050d611026565b60405161051a9190612b67565b60405180910390f35b34801561052f57600080fd5b5061054a60048036038101906105459190612c73565b611039565b6040516105579190612ce1565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612c73565b6110eb565b005b34801561059557600080fd5b506105b060048036038101906105ab9190612de5565b611171565b6040516105bd9190612d77565b60405180910390f35b3480156105d257600080fd5b506105db611229565b6040516105e89190612ce1565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190612c73565b611253565b005b34801561062657600080fd5b5061062f6112d9565b005b34801561063d57600080fd5b50610646611381565b6040516106539190612c1b565b60405180910390f35b61067660048036038101906106719190612c73565b611413565b005b34801561068457600080fd5b5061069f600480360381019061069a919061309c565b61159f565b005b3480156106ad57600080fd5b506106c860048036038101906106c39190613027565b6115b5565b005b3480156106d657600080fd5b506106f160048036038101906106ec919061317d565b61164b565b005b3480156106ff57600080fd5b5061071a60048036038101906107159190612c73565b6116ad565b6040516107279190612c1b565b60405180910390f35b34801561073c57600080fd5b506107456117fe565b6040516107529190612d77565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d9190613200565b611804565b60405161078f9190612b67565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190612de5565b611898565b005b3480156107cd57600080fd5b506107e860048036038101906107e391906132f6565b611990565b005b3480156107f657600080fd5b50610811600480360381019061080c9190613027565b611bb0565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108de57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108ee57506108ed82611c46565b5b9050919050565b606060008054610904906133a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610930906133a6565b801561097d5780601f106109525761010080835404028352916020019161097d565b820191906000526020600020905b81548152906001019060200180831161096057829003601f168201915b5050505050905090565b600061099282611cb0565b6109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c89061344a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a1782611039565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f906134dc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610aa7611d1c565b73ffffffffffffffffffffffffffffffffffffffff161480610ad65750610ad581610ad0611d1c565b611804565b5b610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c9061356e565b60405180910390fd5b610b1f8383611d24565b505050565b600a5481565b6000610b36600e611ddd565b905090565b610b43611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610b61611229565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae906135da565b60405180910390fd5b80600c8190555050565b610bd2610bcc611d1c565b82611deb565b610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c089061366c565b60405180910390fd5b610c1c838383611ec9565b505050565b600d5481565b610c2f611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610c4d611229565b73ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a906135da565b60405180910390fd5b6000610cad611229565b73ffffffffffffffffffffffffffffffffffffffff1647604051610cd0906136bd565b60006040518083038185875af1925050503d8060008114610d0d576040519150601f19603f3d011682016040523d82523d6000602084013e610d12565b606091505b5050905080610d2057600080fd5b50565b610d3e8383836040518060200160405280600081525061164b565b505050565b60606000610d5083611171565b905060008167ffffffffffffffff811115610d6e57610d6d612efc565b5b604051908082528060200260200182016040528015610d9c5781602001602082028036833780820191505090505b50905060006001905060005b8381108015610db95750600b548211155b15610e42576000610dc983611039565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e2e5782848381518110610e1357610e126136d2565b5b6020026020010181815250508180610e2a90613730565b9250505b8280610e3990613730565b93505050610da8565b82945050505050919050565b610e56611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610e74611229565b73ffffffffffffffffffffffffffffffffffffffff1614610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec1906135da565b60405180910390fd5b80600a8190555050565b600c5481565b610ee2611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610f00611229565b73ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d906135da565b60405180910390fd5b6001600660156101000a81548160ff021916908315150217905550610f7a81610f90565b50565b600660159054906101000a900460ff1681565b610f98611d1c565b73ffffffffffffffffffffffffffffffffffffffff16610fb6611229565b73ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611003906135da565b60405180910390fd5b8060089080519060200190611022929190612a10565b5050565b600660149054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d9906137eb565b60405180910390fd5b80915050919050565b6110f3611d1c565b73ffffffffffffffffffffffffffffffffffffffff16611111611229565b73ffffffffffffffffffffffffffffffffffffffff1614611167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115e906135da565b60405180910390fd5b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d99061387d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61125b611d1c565b73ffffffffffffffffffffffffffffffffffffffff16611279611229565b73ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c6906135da565b60405180910390fd5b80600d8190555050565b6112e1611d1c565b73ffffffffffffffffffffffffffffffffffffffff166112ff611229565b73ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c906135da565b60405180910390fd5b600660149054906101000a900460ff1615600660146101000a81548160ff021916908315150217905550565b606060018054611390906133a6565b80601f01602080910402602001604051908101604052809291908181526020018280546113bc906133a6565b80156114095780601f106113de57610100808354040283529160200191611409565b820191906000526020600020905b8154815290600101906020018083116113ec57829003601f168201915b5050505050905090565b600081611420600e611ddd565b61142a919061389d565b905060008211801561143e5750600d548211155b61147d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114749061393f565b60405180910390fd5b600b548111156114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b9906139ab565b60405180910390fd5b600660149054906101000a900460ff1615611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990613a17565b60405180910390fd5b81600a546115209190613a37565b341015611562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155990613add565b60405180910390fd5b61157361156d611d1c565b83612130565b6000600a541480156115875750600c548110155b1561159b5766b1a2bc2ec50000600a819055505b5050565b6115b16115aa611d1c565b8383612170565b5050565b6115bd611d1c565b73ffffffffffffffffffffffffffffffffffffffff166115db611229565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611628906135da565b60405180910390fd5b8060099080519060200190611647929190612a10565b5050565b61165c611656611d1c565b83611deb565b61169b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116929061366c565b60405180910390fd5b6116a7848484846122dd565b50505050565b60606116b882611cb0565b6116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613b6f565b60405180910390fd5b600660159054906101000a900460ff1661179d5760078054611718906133a6565b80601f0160208091040260200160405190810160405280929190818152602001828054611744906133a6565b80156117915780601f1061176657610100808354040283529160200191611791565b820191906000526020600020905b81548152906001019060200180831161177457829003601f168201915b505050505090506117f9565b60006117a7612339565b905060008151116117c757604051806020016040528060008152506117f5565b806117d1846123cb565b60096040516020016117e593929190613c5f565b6040516020818303038152906040525b9150505b919050565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6118a0611d1c565b73ffffffffffffffffffffffffffffffffffffffff166118be611229565b73ffffffffffffffffffffffffffffffffffffffff1614611914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190b906135da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90613d02565b60405180910390fd5b61198d8161252c565b50565b611998611d1c565b73ffffffffffffffffffffffffffffffffffffffff166119b6611229565b73ffffffffffffffffffffffffffffffffffffffff1614611a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a03906135da565b60405180910390fd5b818190508484905014611a2257611a21613d22565b5b600084849050118015611a385750600082829050115b611a4557611a44613d22565b5b600080600090505b83839050811015611aa45783836000818110611a6c57611a6b6136d2565b5b9050602002016020810190611a819190613d8a565b60ff1682611a8f919061389d565b91508080611a9c90613730565b915050611a4d565b50600081611ab2600e611ddd565b611abc919061389d565b9050600b54811115611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa906139ab565b60405180910390fd5b60005b86869050811015611b7f57611b6c878783818110611b2757611b266136d2565b5b9050602002016020810190611b3c9190612de5565b868684818110611b4f57611b4e6136d2565b5b9050602002016020810190611b649190613d8a565b60ff16612130565b8080611b7790613730565b915050611b06565b506000600a54148015611b945750600c548110155b15611ba85766f8b0a10e470000600a819055505b505050505050565b611bb8611d1c565b73ffffffffffffffffffffffffffffffffffffffff16611bd6611229565b73ffffffffffffffffffffffffffffffffffffffff1614611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c23906135da565b60405180910390fd5b8060079080519060200190611c42929190612a10565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d9783611039565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6000611df682611cb0565b611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c90613e29565b60405180910390fd5b6000611e4083611039565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611eaf57508373ffffffffffffffffffffffffffffffffffffffff16611e9784610987565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ec05750611ebf8185611804565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ee982611039565b73ffffffffffffffffffffffffffffffffffffffff1614611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3690613ebb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690613f4d565b60405180910390fd5b611fba8383836125f2565b611fc5600082611d24565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120159190613f6d565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461206c919061389d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461212b8383836125f7565b505050565b60005b8181101561216b57612145600e6125fc565b61215883612153600e611ddd565b612612565b808061216390613730565b915050612133565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d690613fed565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122d09190612b67565b60405180910390a3505050565b6122e8848484611ec9565b6122f484848484612630565b612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a9061407f565b60405180910390fd5b50505050565b606060088054612348906133a6565b80601f0160208091040260200160405190810160405280929190818152602001828054612374906133a6565b80156123c15780601f10612396576101008083540402835291602001916123c1565b820191906000526020600020905b8154815290600101906020018083116123a457829003601f168201915b5050505050905090565b60606000821415612413576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612527565b600082905060005b6000821461244557808061242e90613730565b915050600a8261243e91906140ce565b915061241b565b60008167ffffffffffffffff81111561246157612460612efc565b5b6040519080825280601f01601f1916602001820160405280156124935781602001600182028036833780820191505090505b5090505b60008514612520576001826124ac9190613f6d565b9150600a856124bb91906140ff565b60306124c7919061389d565b60f81b8183815181106124dd576124dc6136d2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561251991906140ce565b9450612497565b8093505050505b919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6001816000016000828254019250508190555050565b61262c8282604051806020016040528060008152506127b8565b5050565b60006126518473ffffffffffffffffffffffffffffffffffffffff16612813565b156127ab578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261267a611d1c565b8786866040518563ffffffff1660e01b815260040161269c9493929190614185565b6020604051808303816000875af19250505080156126d857506040513d601f19601f820116820180604052508101906126d591906141e6565b60015b61275b573d8060008114612708576040519150601f19603f3d011682016040523d82523d6000602084013e61270d565b606091505b50600081511415612753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274a9061407f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506127b0565b600190505b949350505050565b6127c28383612836565b6127cf6000848484612630565b61280e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128059061407f565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d9061425f565b60405180910390fd5b6128af81611cb0565b156128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e6906142cb565b60405180910390fd5b6128fb600083836125f2565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461294b919061389d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a0c600083836125f7565b5050565b828054612a1c906133a6565b90600052602060002090601f016020900481019282612a3e5760008555612a85565b82601f10612a5757805160ff1916838001178555612a85565b82800160010185558215612a85579182015b82811115612a84578251825591602001919060010190612a69565b5b509050612a929190612a96565b5090565b5b80821115612aaf576000816000905550600101612a97565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612afc81612ac7565b8114612b0757600080fd5b50565b600081359050612b1981612af3565b92915050565b600060208284031215612b3557612b34612abd565b5b6000612b4384828501612b0a565b91505092915050565b60008115159050919050565b612b6181612b4c565b82525050565b6000602082019050612b7c6000830184612b58565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bbc578082015181840152602081019050612ba1565b83811115612bcb576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bed82612b82565b612bf78185612b8d565b9350612c07818560208601612b9e565b612c1081612bd1565b840191505092915050565b60006020820190508181036000830152612c358184612be2565b905092915050565b6000819050919050565b612c5081612c3d565b8114612c5b57600080fd5b50565b600081359050612c6d81612c47565b92915050565b600060208284031215612c8957612c88612abd565b5b6000612c9784828501612c5e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ccb82612ca0565b9050919050565b612cdb81612cc0565b82525050565b6000602082019050612cf66000830184612cd2565b92915050565b612d0581612cc0565b8114612d1057600080fd5b50565b600081359050612d2281612cfc565b92915050565b60008060408385031215612d3f57612d3e612abd565b5b6000612d4d85828601612d13565b9250506020612d5e85828601612c5e565b9150509250929050565b612d7181612c3d565b82525050565b6000602082019050612d8c6000830184612d68565b92915050565b600080600060608486031215612dab57612daa612abd565b5b6000612db986828701612d13565b9350506020612dca86828701612d13565b9250506040612ddb86828701612c5e565b9150509250925092565b600060208284031215612dfb57612dfa612abd565b5b6000612e0984828501612d13565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e4781612c3d565b82525050565b6000612e598383612e3e565b60208301905092915050565b6000602082019050919050565b6000612e7d82612e12565b612e878185612e1d565b9350612e9283612e2e565b8060005b83811015612ec3578151612eaa8882612e4d565b9750612eb583612e65565b925050600181019050612e96565b5085935050505092915050565b60006020820190508181036000830152612eea8184612e72565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f3482612bd1565b810181811067ffffffffffffffff82111715612f5357612f52612efc565b5b80604052505050565b6000612f66612ab3565b9050612f728282612f2b565b919050565b600067ffffffffffffffff821115612f9257612f91612efc565b5b612f9b82612bd1565b9050602081019050919050565b82818337600083830152505050565b6000612fca612fc584612f77565b612f5c565b905082815260208101848484011115612fe657612fe5612ef7565b5b612ff1848285612fa8565b509392505050565b600082601f83011261300e5761300d612ef2565b5b813561301e848260208601612fb7565b91505092915050565b60006020828403121561303d5761303c612abd565b5b600082013567ffffffffffffffff81111561305b5761305a612ac2565b5b61306784828501612ff9565b91505092915050565b61307981612b4c565b811461308457600080fd5b50565b60008135905061309681613070565b92915050565b600080604083850312156130b3576130b2612abd565b5b60006130c185828601612d13565b92505060206130d285828601613087565b9150509250929050565b600067ffffffffffffffff8211156130f7576130f6612efc565b5b61310082612bd1565b9050602081019050919050565b600061312061311b846130dc565b612f5c565b90508281526020810184848401111561313c5761313b612ef7565b5b613147848285612fa8565b509392505050565b600082601f83011261316457613163612ef2565b5b813561317484826020860161310d565b91505092915050565b6000806000806080858703121561319757613196612abd565b5b60006131a587828801612d13565b94505060206131b687828801612d13565b93505060406131c787828801612c5e565b925050606085013567ffffffffffffffff8111156131e8576131e7612ac2565b5b6131f48782880161314f565b91505092959194509250565b6000806040838503121561321757613216612abd565b5b600061322585828601612d13565b925050602061323685828601612d13565b9150509250929050565b600080fd5b600080fd5b60008083601f8401126132605761325f612ef2565b5b8235905067ffffffffffffffff81111561327d5761327c613240565b5b60208301915083602082028301111561329957613298613245565b5b9250929050565b60008083601f8401126132b6576132b5612ef2565b5b8235905067ffffffffffffffff8111156132d3576132d2613240565b5b6020830191508360208202830111156132ef576132ee613245565b5b9250929050565b600080600080604085870312156133105761330f612abd565b5b600085013567ffffffffffffffff81111561332e5761332d612ac2565b5b61333a8782880161324a565b9450945050602085013567ffffffffffffffff81111561335d5761335c612ac2565b5b613369878288016132a0565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133be57607f821691505b602082108114156133d2576133d1613377565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613434602c83612b8d565b915061343f826133d8565b604082019050919050565b6000602082019050818103600083015261346381613427565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c6602183612b8d565b91506134d18261346a565b604082019050919050565b600060208201905081810360008301526134f5816134b9565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613558603883612b8d565b9150613563826134fc565b604082019050919050565b600060208201905081810360008301526135878161354b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135c4602083612b8d565b91506135cf8261358e565b602082019050919050565b600060208201905081810360008301526135f3816135b7565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613656603183612b8d565b9150613661826135fa565b604082019050919050565b6000602082019050818103600083015261368581613649565b9050919050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061373b82612c3d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561376e5761376d613701565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006137d5602983612b8d565b91506137e082613779565b604082019050919050565b60006020820190508181036000830152613804816137c8565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613867602a83612b8d565b91506138728261380b565b604082019050919050565b600060208201905081810360008301526138968161385a565b9050919050565b60006138a882612c3d565b91506138b383612c3d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138e8576138e7613701565b5b828201905092915050565b7f496e76616c6964206d696e7420616d6f756e7400000000000000000000000000600082015250565b6000613929601383612b8d565b9150613934826138f3565b602082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f4d617820746f6b656e20737570706c7920657863656564656400000000000000600082015250565b6000613995601983612b8d565b91506139a08261395f565b602082019050919050565b600060208201905081810360008301526139c481613988565b9050919050565b7f4d696e74696e6720697320706175736564000000000000000000000000000000600082015250565b6000613a01601183612b8d565b9150613a0c826139cb565b602082019050919050565b60006020820190508181036000830152613a30816139f4565b9050919050565b6000613a4282612c3d565b9150613a4d83612c3d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a8657613a85613701565b5b828202905092915050565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b6000613ac7601283612b8d565b9150613ad282613a91565b602082019050919050565b60006020820190508181036000830152613af681613aba565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b59602f83612b8d565b9150613b6482613afd565b604082019050919050565b60006020820190508181036000830152613b8881613b4c565b9050919050565b600081905092915050565b6000613ba582612b82565b613baf8185613b8f565b9350613bbf818560208601612b9e565b80840191505092915050565b60008190508160005260206000209050919050565b60008154613bed816133a6565b613bf78186613b8f565b94506001821660008114613c125760018114613c2357613c56565b60ff19831686528186019350613c56565b613c2c85613bcb565b60005b83811015613c4e57815481890152600182019150602081019050613c2f565b838801955050505b50505092915050565b6000613c6b8286613b9a565b9150613c778285613b9a565b9150613c838284613be0565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cec602683612b8d565b9150613cf782613c90565b604082019050919050565b60006020820190508181036000830152613d1b81613cdf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600060ff82169050919050565b613d6781613d51565b8114613d7257600080fd5b50565b600081359050613d8481613d5e565b92915050565b600060208284031215613da057613d9f612abd565b5b6000613dae84828501613d75565b91505092915050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613e13602c83612b8d565b9150613e1e82613db7565b604082019050919050565b60006020820190508181036000830152613e4281613e06565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613ea5602583612b8d565b9150613eb082613e49565b604082019050919050565b60006020820190508181036000830152613ed481613e98565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f37602483612b8d565b9150613f4282613edb565b604082019050919050565b60006020820190508181036000830152613f6681613f2a565b9050919050565b6000613f7882612c3d565b9150613f8383612c3d565b925082821015613f9657613f95613701565b5b828203905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613fd7601983612b8d565b9150613fe282613fa1565b602082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614069603283612b8d565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140d982612c3d565b91506140e483612c3d565b9250826140f4576140f361409f565b5b828204905092915050565b600061410a82612c3d565b915061411583612c3d565b9250826141255761412461409f565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b600061415782614130565b614161818561413b565b9350614171818560208601612b9e565b61417a81612bd1565b840191505092915050565b600060808201905061419a6000830187612cd2565b6141a76020830186612cd2565b6141b46040830185612d68565b81810360608301526141c6818461414c565b905095945050505050565b6000815190506141e081612af3565b92915050565b6000602082840312156141fc576141fb612abd565b5b600061420a848285016141d1565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614249602083612b8d565b915061425482614213565b602082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006142b5601c83612b8d565b91506142c08261427f565b602082019050919050565b600060208201905081810360008301526142e4816142a8565b905091905056fea2646970667358221220b06df1e16e2b0980a3c1aad6cdd5838fb72f75895d3a9209d73a85bb8c073b1264736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _initUnrevealedURI (string):

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

10888:4147:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4491:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5177:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6131:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5779:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11144:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13013:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14464:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6651:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11230:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12862:144;;;;;;;;;;;;;:::i;:::-;;6940:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13492:551;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14684:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11195:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12740:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11029:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14050:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11007:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4951:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14370:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4752:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3218:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14572:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12665:70;;;;;;;;;;;;;:::i;:::-;;5272:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11593:464;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6341:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14270:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7087:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13103:384;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11167:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6492:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3412:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12062:598;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14148:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4491:256;4592:4;4625:25;4610:40;;;:11;:40;;;;:92;;;;4669:33;4654:48;;;:11;:48;;;;4610:92;:132;;;;4706:36;4730:11;4706:23;:36::i;:::-;4610:132;4603:139;;4491:256;;;:::o;5177:90::-;5230:13;5257:5;5250:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5177:90;:::o;6131:205::-;6206:7;6228:16;6236:7;6228;:16::i;:::-;6220:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6307:15;:24;6323:7;6307:24;;;;;;;;;;;;;;;;;;;;;6300:31;;6131:205;;;:::o;5779:347::-;5854:13;5870:23;5885:7;5870:14;:23::i;:::-;5854:39;;5912:5;5906:11;;:2;:11;;;;5898:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5986:5;5970:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;5995:37;6012:5;6019:12;:10;:12::i;:::-;5995:16;:37::i;:::-;5970:62;5962:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;6100:21;6109:2;6113:7;6100:8;:21::i;:::-;5849:277;5779:347;;:::o;11144:19::-;;;;:::o;13013:85::-;13056:7;13077:16;:6;:14;:16::i;:::-;13070:23;;13013:85;:::o;14464:103::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14553:9:::1;14534:16;:28;;;;14464:103:::0;:::o;6651:284::-;6800:41;6819:12;:10;:12::i;:::-;6833:7;6800:18;:41::i;:::-;6792:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;6902:28;6912:4;6918:2;6922:7;6902:9;:28::i;:::-;6651:284;;;:::o;11230:33::-;;;;:::o;12862:144::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12905:12:::1;12931:7;:5;:7::i;:::-;12923:21;;12953;12923:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12904:76;;;12993:7;12985:16;;;::::0;::::1;;12899:107;12862:144::o:0;6940:142::-;7038:39;7055:4;7061:2;7065:7;7038:39;;;;;;;;;;;;:16;:39::i;:::-;6940:142;;;:::o;13492:551::-;13553:16;13576:23;13602:19;13612:8;13602:9;:19::i;:::-;13576:45;;13628:30;13675:15;13661:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13628:63;;13700:18;13721:1;13700:22;;13727:23;13761:249;13786:15;13768;:33;:60;;;;;13819:9;;13805:10;:23;;13768:60;13761:249;;;13836:13;13852:19;13860:10;13852:7;:19::i;:::-;13836:35;;13892:8;13883:17;;:5;:17;;;13879:106;;;13942:10;13909:13;13923:15;13909:30;;;;;;;;:::i;:::-;;;;;;;:43;;;;;13961:17;;;;;:::i;:::-;;;;13879:106;13992:12;;;;;:::i;:::-;;;;13830:180;13761:249;;;14025:13;14018:20;;;;;;13492:551;;;:::o;14684:75::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14747:7:::1;14740:4;:14;;;;14684:75:::0;:::o;11195:31::-;;;;:::o;12740:117::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12817:4:::1;12806:8;;:15;;;;;;;;;;;;;;;;;;12828:24;12839:12;12828:10;:24::i;:::-;12740:117:::0;:::o;11029:20::-;;;;;;;;;;;;;:::o;14050:93::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14128:10:::1;14118:7;:20;;;;;;;;;;;;:::i;:::-;;14050:93:::0;:::o;11007:18::-;;;;;;;;;;;;;:::o;4951:221::-;5022:7;5036:13;5052:7;:16;5060:7;5052:16;;;;;;;;;;;;;;;;;;;;;5036:32;;5100:1;5083:19;;:5;:19;;;;5075:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5162:5;5155:12;;;4951:221;;;:::o;14370:89::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14445:9:::1;14433;:21;;;;14370:89:::0;:::o;4752:194::-;4823:7;4862:1;4845:19;;:5;:19;;;;4837:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4925:9;:16;4935:5;4925:16;;;;;;;;;;;;;;;;4918:23;;4752:194;;;:::o;3218:77::-;3263:7;3284:6;;;;;;;;;;;3277:13;;3218:77;:::o;14572:107::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14665:9:::1;14644:18;:30;;;;14572:107:::0;:::o;12665:70::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12724:6:::1;;;;;;;;;;;12723:7;12714:6;;:16;;;;;;;;;;;;;;;;;;12665:70::o:0;5272:94::-;5327:13;5354:7;5347:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5272:94;:::o;11593:464::-;11643:17;11682:6;11663:16;:6;:14;:16::i;:::-;:25;;;;:::i;:::-;11643:45;;11712:1;11703:6;:10;:42;;;;;11727:18;;11717:6;:28;;11703:42;11695:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11795:9;;11782;:22;;11774:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11848:6;;;;;;;;;;;11847:7;11839:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;11909:6;11902:4;;:13;;;;:::i;:::-;11889:9;:26;;11881:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11947:31;11957:12;:10;:12::i;:::-;11971:6;11947:9;:31::i;:::-;11999:1;11991:4;;:9;:42;;;;;12017:16;;12004:9;:29;;11991:42;11987:65;;;12042:10;12035:4;:17;;;;11987:65;11638:419;11593:464;:::o;6341:146::-;6430:52;6449:12;:10;:12::i;:::-;6463:8;6473;6430:18;:52::i;:::-;6341:146;;:::o;14270:95::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14351:9:::1;14339;:21;;;;;;;;;;;;:::i;:::-;;14270:95:::0;:::o;7087:272::-;7213:41;7232:12;:10;:12::i;:::-;7246:7;7213:18;:41::i;:::-;7205:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;7315:39;7329:4;7335:2;7339:7;7348:5;7315:13;:39::i;:::-;7087:272;;;;:::o;13103:384::-;13167:13;13195:16;13203:7;13195;:16::i;:::-;13187:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13275:8;;;;;;;;;;;13270:35;;13292:13;13285:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13270:35;13314:28;13345:10;:8;:10::i;:::-;13314:41;;13400:1;13375:14;13369:28;:32;:113;;;;;;;;;;;;;;;;;13429:14;13445:18;:7;:16;:18::i;:::-;13465:9;13412:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13369:113;13362:120;;;13103:384;;;;:::o;11167:24::-;;;;:::o;6492:154::-;6588:4;6606:18;:25;6625:5;6606:25;;;;;;;;;;;;;;;:35;6632:8;6606:35;;;;;;;;;;;;;;;;;;;;;;;;;6599:42;;6492:154;;;;:::o;3412:188::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3515:1:::1;3495:22;;:8;:22;;;;3487:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3567:28;3586:8;3567:18;:28::i;:::-;3412:188:::0;:::o;12062:598::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12184:7:::1;;:14;;12164:9;;:16;;:34;12157:42;;;;:::i;:::-;;12230:1;12211:9;;:16;;:20;:42;;;;;12252:1;12235:7;;:14;;:18;12211:42;12204:50;;;;:::i;:::-;;12263:19;12292:9:::0;12304:1:::1;12292:13;;12287:70;12311:7;;:14;;12307:1;:18;12287:70;;;12347:7;;12355:1;12347:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12332:25;;;;;;;:::i;:::-;;;12327:3;;;;;:::i;:::-;;;;12287:70;;;;12364:17;12403:11;12384:16;:6;:14;:16::i;:::-;:30;;;;:::i;:::-;12364:50;;12440:9;;12427;:22;;12419:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12493:9;12488:94;12512:9;;:16;;12508:1;:20;12488:94;;;12541:35;12551:9;;12561:1;12551:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12565:7;;12573:1;12565:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12541:35;;:9;:35::i;:::-;12530:3;;;;;:::i;:::-;;;;12488:94;;;;12602:1;12594:4;;:9;:42;;;;;12620:16;;12607:9;:29;;12594:42;12590:65;;;12645:10;12638:4;:17;;;;12590:65;12152:508;;12062:598:::0;;;;:::o;14148:117::-;3345:12;:10;:12::i;:::-;3334:23;;:7;:5;:7::i;:::-;:23;;;3326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14244:16:::1;14228:13;:32;;;;;;;;;;;;:::i;:::-;;14148:117:::0;:::o;3826:147::-;3910:4;3943:25;3928:40;;;:11;:40;;;;3921:47;;3826:147;;;:::o;7628:117::-;7692:4;7738:1;7710:30;;:7;:16;7718:7;7710:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7703:37;;7628:117;;;:::o;2803:88::-;2855:7;2876:10;2869:17;;2803:88;:::o;9667:161::-;9763:2;9736:15;:24;9752:7;9736:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;9815:7;9811:2;9777:46;;9786:23;9801:7;9786:14;:23::i;:::-;9777:46;;;;;;;;;;;;9667:161;;:::o;730:104::-;794:7;815;:14;;;808:21;;730:104;;;:::o;7750:330::-;7842:4;7861:16;7869:7;7861;:16::i;:::-;7853:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7933:13;7949:23;7964:7;7949:14;:23::i;:::-;7933:39;;7998:5;7987:16;;:7;:16;;;:51;;;;8031:7;8007:31;;:20;8019:7;8007:11;:20::i;:::-;:31;;;7987:51;:87;;;;8042:32;8059:5;8066:7;8042:16;:32::i;:::-;7987:87;7979:96;;;7750:330;;;;:::o;9182:480::-;9301:4;9274:31;;:23;9289:7;9274:14;:23::i;:::-;:31;;;9266:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9374:1;9360:16;;:2;:16;;;;9352:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9424:39;9445:4;9451:2;9455:7;9424:20;:39::i;:::-;9468:29;9485:1;9489:7;9468:8;:29::i;:::-;9523:1;9504:9;:15;9514:4;9504:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;9546:1;9529:9;:13;9539:2;9529:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;9571:2;9552:7;:16;9560:7;9552:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9604:7;9600:2;9585:27;;9594:4;9585:27;;;;;;;;;;;;9619:38;9639:4;9645:2;9649:7;9619:19;:38::i;:::-;9182:480;;;:::o;14861:171::-;14927:9;14922:106;14946:6;14942:1;:10;14922:106;;;14965:18;:6;:16;:18::i;:::-;14991:31;15001:2;15005:16;:6;:14;:16::i;:::-;14991:9;:31::i;:::-;14954:3;;;;;:::i;:::-;;;;14922:106;;;;14861:171;;:::o;9833:268::-;9948:8;9939:17;;:5;:17;;;;9931:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;10033:8;9995:18;:25;10014:5;9995:25;;;;;;;;;;;;;;;:35;10021:8;9995:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;10077:8;10055:41;;10070:5;10055:41;;;10087:8;10055:41;;;;;;:::i;:::-;;;;;;;;9833:268;;;:::o;7364:259::-;7472:28;7482:4;7488:2;7492:7;7472:9;:28::i;:::-;7515:48;7538:4;7544:2;7548:7;7557:5;7515:22;:48::i;:::-;7507:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7364:259;;;;:::o;14766:90::-;14817:13;14844:7;14837:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14766:90;:::o;111:413::-;166:13;199:1;190:5;:10;186:26;;;202:10;;;;;;;;;;;;;;;;;;;;;186:26;219:12;234:5;219:20;;244:14;265:54;280:1;272:4;:9;265:54;;289:8;;;;;:::i;:::-;;;;311:2;303:10;;;;;:::i;:::-;;;265:54;;;325:19;357:6;347:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;325:39;;371:121;387:1;378:5;:10;371:121;;406:1;396:11;;;;;:::i;:::-;;;464:2;456:5;:10;;;;:::i;:::-;443:2;:24;;;;:::i;:::-;430:39;;413:6;420;413:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;484:2;475:11;;;;;:::i;:::-;;;371:121;;;512:6;498:21;;;;;111:413;;;;:::o;3605:174::-;3673:16;3692:6;;;;;;;;;;;3673:25;;3714:8;3705:6;;:17;;;;;;;;;;;;;;;;;;3765:8;3734:40;;3755:8;3734:40;;;;;;;;;;;;3668:111;3605:174;:::o;10689:92::-;;;;:::o;10786:91::-;;;;:::o;839:103::-;931:1;913:7;:14;;;:19;;;;;;;;;;;839:103;:::o;8085:101::-;8155:26;8165:2;8169:7;8155:26;;;;;;;;;;;;:9;:26::i;:::-;8085:101;;:::o;10106:578::-;10217:4;10232:15;:2;:13;;;:15::i;:::-;10228:451;;;10275:2;10259:36;;;10296:12;:10;:12::i;:::-;10310:4;10316:7;10325:5;10259:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10255:395;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10484:1;10467:6;:13;:18;10463:181;;;10487:60;;;;;;;;;;:::i;:::-;;;;;;;;10463:181;10621:6;10615:13;10606:6;10602:2;10598:15;10591:38;10255:395;10379:41;;;10369:51;;;:6;:51;;;;10362:58;;;;;10228:451;10675:4;10668:11;;10106:578;;;;;;;:::o;8191:237::-;8281:18;8287:2;8291:7;8281:5;:18::i;:::-;8314:54;8345:1;8349:2;8353:7;8362:5;8314:22;:54::i;:::-;8306:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;8191:237;;;:::o;551:105::-;610:4;650:1;628:7;:19;;;:23;621:30;;551:105;;;:::o;8433:394::-;8521:1;8507:16;;:2;:16;;;;8499:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8574:16;8582:7;8574;:16::i;:::-;8573:17;8565:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;8630:45;8659:1;8663:2;8667:7;8630:20;:45::i;:::-;8699:1;8682:9;:13;8692:2;8682:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;8724:2;8705:7;:16;8713:7;8705:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;8763:7;8759:2;8738:33;;8755:1;8738:33;;;;;;;;;;;;8778:44;8806:1;8810:2;8814:7;8778:19;:44::i;:::-;8433:394;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:619::-;5367:6;5375;5383;5432:2;5420:9;5411:7;5407:23;5403:32;5400:119;;;5438:79;;:::i;:::-;5400:119;5558:1;5583:53;5628:7;5619:6;5608:9;5604:22;5583:53;:::i;:::-;5573:63;;5529:117;5685:2;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5656:118;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5290:619;;;;;:::o;5915:329::-;5974:6;6023:2;6011:9;6002:7;5998:23;5994:32;5991:119;;;6029:79;;:::i;:::-;5991:119;6149:1;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6120:117;5915:329;;;;:::o;6250:114::-;6317:6;6351:5;6345:12;6335:22;;6250:114;;;:::o;6370:184::-;6469:11;6503:6;6498:3;6491:19;6543:4;6538:3;6534:14;6519:29;;6370:184;;;;:::o;6560:132::-;6627:4;6650:3;6642:11;;6680:4;6675:3;6671:14;6663:22;;6560:132;;;:::o;6698:108::-;6775:24;6793:5;6775:24;:::i;:::-;6770:3;6763:37;6698:108;;:::o;6812:179::-;6881:10;6902:46;6944:3;6936:6;6902:46;:::i;:::-;6980:4;6975:3;6971:14;6957:28;;6812:179;;;;:::o;6997:113::-;7067:4;7099;7094:3;7090:14;7082:22;;6997:113;;;:::o;7146:732::-;7265:3;7294:54;7342:5;7294:54;:::i;:::-;7364:86;7443:6;7438:3;7364:86;:::i;:::-;7357:93;;7474:56;7524:5;7474:56;:::i;:::-;7553:7;7584:1;7569:284;7594:6;7591:1;7588:13;7569:284;;;7670:6;7664:13;7697:63;7756:3;7741:13;7697:63;:::i;:::-;7690:70;;7783:60;7836:6;7783:60;:::i;:::-;7773:70;;7629:224;7616:1;7613;7609:9;7604:14;;7569:284;;;7573:14;7869:3;7862:10;;7270:608;;;7146:732;;;;:::o;7884:373::-;8027:4;8065:2;8054:9;8050:18;8042:26;;8114:9;8108:4;8104:20;8100:1;8089:9;8085:17;8078:47;8142:108;8245:4;8236:6;8142:108;:::i;:::-;8134:116;;7884:373;;;;:::o;8263:117::-;8372:1;8369;8362:12;8386:117;8495:1;8492;8485:12;8509:180;8557:77;8554:1;8547:88;8654:4;8651:1;8644:15;8678:4;8675:1;8668:15;8695:281;8778:27;8800:4;8778:27;:::i;:::-;8770:6;8766:40;8908:6;8896:10;8893:22;8872:18;8860:10;8857:34;8854:62;8851:88;;;8919:18;;:::i;:::-;8851:88;8959:10;8955:2;8948:22;8738:238;8695:281;;:::o;8982:129::-;9016:6;9043:20;;:::i;:::-;9033:30;;9072:33;9100:4;9092:6;9072:33;:::i;:::-;8982:129;;;:::o;9117:308::-;9179:4;9269:18;9261:6;9258:30;9255:56;;;9291:18;;:::i;:::-;9255:56;9329:29;9351:6;9329:29;:::i;:::-;9321:37;;9413:4;9407;9403:15;9395:23;;9117:308;;;:::o;9431:154::-;9515:6;9510:3;9505;9492:30;9577:1;9568:6;9563:3;9559:16;9552:27;9431:154;;;:::o;9591:412::-;9669:5;9694:66;9710:49;9752:6;9710:49;:::i;:::-;9694:66;:::i;:::-;9685:75;;9783:6;9776:5;9769:21;9821:4;9814:5;9810:16;9859:3;9850:6;9845:3;9841:16;9838:25;9835:112;;;9866:79;;:::i;:::-;9835:112;9956:41;9990:6;9985:3;9980;9956:41;:::i;:::-;9675:328;9591:412;;;;;:::o;10023:340::-;10079:5;10128:3;10121:4;10113:6;10109:17;10105:27;10095:122;;10136:79;;:::i;:::-;10095:122;10253:6;10240:20;10278:79;10353:3;10345:6;10338:4;10330:6;10326:17;10278:79;:::i;:::-;10269:88;;10085:278;10023:340;;;;:::o;10369:509::-;10438:6;10487:2;10475:9;10466:7;10462:23;10458:32;10455:119;;;10493:79;;:::i;:::-;10455:119;10641:1;10630:9;10626:17;10613:31;10671:18;10663:6;10660:30;10657:117;;;10693:79;;:::i;:::-;10657:117;10798:63;10853:7;10844:6;10833:9;10829:22;10798:63;:::i;:::-;10788:73;;10584:287;10369:509;;;;:::o;10884:116::-;10954:21;10969:5;10954:21;:::i;:::-;10947:5;10944:32;10934:60;;10990:1;10987;10980:12;10934:60;10884:116;:::o;11006:133::-;11049:5;11087:6;11074:20;11065:29;;11103:30;11127:5;11103:30;:::i;:::-;11006:133;;;;:::o;11145:468::-;11210:6;11218;11267:2;11255:9;11246:7;11242:23;11238:32;11235:119;;;11273:79;;:::i;:::-;11235:119;11393:1;11418:53;11463:7;11454:6;11443:9;11439:22;11418:53;:::i;:::-;11408:63;;11364:117;11520:2;11546:50;11588:7;11579:6;11568:9;11564:22;11546:50;:::i;:::-;11536:60;;11491:115;11145:468;;;;;:::o;11619:307::-;11680:4;11770:18;11762:6;11759:30;11756:56;;;11792:18;;:::i;:::-;11756:56;11830:29;11852:6;11830:29;:::i;:::-;11822:37;;11914:4;11908;11904:15;11896:23;;11619:307;;;:::o;11932:410::-;12009:5;12034:65;12050:48;12091:6;12050:48;:::i;:::-;12034:65;:::i;:::-;12025:74;;12122:6;12115:5;12108:21;12160:4;12153:5;12149:16;12198:3;12189:6;12184:3;12180:16;12177:25;12174:112;;;12205:79;;:::i;:::-;12174:112;12295:41;12329:6;12324:3;12319;12295:41;:::i;:::-;12015:327;11932:410;;;;;:::o;12361:338::-;12416:5;12465:3;12458:4;12450:6;12446:17;12442:27;12432:122;;12473:79;;:::i;:::-;12432:122;12590:6;12577:20;12615:78;12689:3;12681:6;12674:4;12666:6;12662:17;12615:78;:::i;:::-;12606:87;;12422:277;12361:338;;;;:::o;12705:943::-;12800:6;12808;12816;12824;12873:3;12861:9;12852:7;12848:23;12844:33;12841:120;;;12880:79;;:::i;:::-;12841:120;13000:1;13025:53;13070:7;13061:6;13050:9;13046:22;13025:53;:::i;:::-;13015:63;;12971:117;13127:2;13153:53;13198:7;13189:6;13178:9;13174:22;13153:53;:::i;:::-;13143:63;;13098:118;13255:2;13281:53;13326:7;13317:6;13306:9;13302:22;13281:53;:::i;:::-;13271:63;;13226:118;13411:2;13400:9;13396:18;13383:32;13442:18;13434:6;13431:30;13428:117;;;13464:79;;:::i;:::-;13428:117;13569:62;13623:7;13614:6;13603:9;13599:22;13569:62;:::i;:::-;13559:72;;13354:287;12705:943;;;;;;;:::o;13654:474::-;13722:6;13730;13779:2;13767:9;13758:7;13754:23;13750:32;13747:119;;;13785:79;;:::i;:::-;13747:119;13905:1;13930:53;13975:7;13966:6;13955:9;13951:22;13930:53;:::i;:::-;13920:63;;13876:117;14032:2;14058:53;14103:7;14094:6;14083:9;14079:22;14058:53;:::i;:::-;14048:63;;14003:118;13654:474;;;;;:::o;14134:117::-;14243:1;14240;14233:12;14257:117;14366:1;14363;14356:12;14397:568;14470:8;14480:6;14530:3;14523:4;14515:6;14511:17;14507:27;14497:122;;14538:79;;:::i;:::-;14497:122;14651:6;14638:20;14628:30;;14681:18;14673:6;14670:30;14667:117;;;14703:79;;:::i;:::-;14667:117;14817:4;14809:6;14805:17;14793:29;;14871:3;14863:4;14855:6;14851:17;14841:8;14837:32;14834:41;14831:128;;;14878:79;;:::i;:::-;14831:128;14397:568;;;;;:::o;14986:566::-;15057:8;15067:6;15117:3;15110:4;15102:6;15098:17;15094:27;15084:122;;15125:79;;:::i;:::-;15084:122;15238:6;15225:20;15215:30;;15268:18;15260:6;15257:30;15254:117;;;15290:79;;:::i;:::-;15254:117;15404:4;15396:6;15392:17;15380:29;;15458:3;15450:4;15442:6;15438:17;15428:8;15424:32;15421:41;15418:128;;;15465:79;;:::i;:::-;15418:128;14986:566;;;;;:::o;15558:930::-;15678:6;15686;15694;15702;15751:2;15739:9;15730:7;15726:23;15722:32;15719:119;;;15757:79;;:::i;:::-;15719:119;15905:1;15894:9;15890:17;15877:31;15935:18;15927:6;15924:30;15921:117;;;15957:79;;:::i;:::-;15921:117;16070:80;16142:7;16133:6;16122:9;16118:22;16070:80;:::i;:::-;16052:98;;;;15848:312;16227:2;16216:9;16212:18;16199:32;16258:18;16250:6;16247:30;16244:117;;;16280:79;;:::i;:::-;16244:117;16393:78;16463:7;16454:6;16443:9;16439:22;16393:78;:::i;:::-;16375:96;;;;16170:311;15558:930;;;;;;;:::o;16494:180::-;16542:77;16539:1;16532:88;16639:4;16636:1;16629:15;16663:4;16660:1;16653:15;16680:320;16724:6;16761:1;16755:4;16751:12;16741:22;;16808:1;16802:4;16798:12;16829:18;16819:81;;16885:4;16877:6;16873:17;16863:27;;16819:81;16947:2;16939:6;16936:14;16916:18;16913:38;16910:84;;;16966:18;;:::i;:::-;16910:84;16731:269;16680:320;;;:::o;17006:231::-;17146:34;17142:1;17134:6;17130:14;17123:58;17215:14;17210:2;17202:6;17198:15;17191:39;17006:231;:::o;17243:366::-;17385:3;17406:67;17470:2;17465:3;17406:67;:::i;:::-;17399:74;;17482:93;17571:3;17482:93;:::i;:::-;17600:2;17595:3;17591:12;17584:19;;17243:366;;;:::o;17615:419::-;17781:4;17819:2;17808:9;17804:18;17796:26;;17868:9;17862:4;17858:20;17854:1;17843:9;17839:17;17832:47;17896:131;18022:4;17896:131;:::i;:::-;17888:139;;17615:419;;;:::o;18040:220::-;18180:34;18176:1;18168:6;18164:14;18157:58;18249:3;18244:2;18236:6;18232:15;18225:28;18040:220;:::o;18266:366::-;18408:3;18429:67;18493:2;18488:3;18429:67;:::i;:::-;18422:74;;18505:93;18594:3;18505:93;:::i;:::-;18623:2;18618:3;18614:12;18607:19;;18266:366;;;:::o;18638:419::-;18804:4;18842:2;18831:9;18827:18;18819:26;;18891:9;18885:4;18881:20;18877:1;18866:9;18862:17;18855:47;18919:131;19045:4;18919:131;:::i;:::-;18911:139;;18638:419;;;:::o;19063:243::-;19203:34;19199:1;19191:6;19187:14;19180:58;19272:26;19267:2;19259:6;19255:15;19248:51;19063:243;:::o;19312:366::-;19454:3;19475:67;19539:2;19534:3;19475:67;:::i;:::-;19468:74;;19551:93;19640:3;19551:93;:::i;:::-;19669:2;19664:3;19660:12;19653:19;;19312:366;;;:::o;19684:419::-;19850:4;19888:2;19877:9;19873:18;19865:26;;19937:9;19931:4;19927:20;19923:1;19912:9;19908:17;19901:47;19965:131;20091:4;19965:131;:::i;:::-;19957:139;;19684:419;;;:::o;20109:182::-;20249:34;20245:1;20237:6;20233:14;20226:58;20109:182;:::o;20297:366::-;20439:3;20460:67;20524:2;20519:3;20460:67;:::i;:::-;20453:74;;20536:93;20625:3;20536:93;:::i;:::-;20654:2;20649:3;20645:12;20638:19;;20297:366;;;:::o;20669:419::-;20835:4;20873:2;20862:9;20858:18;20850:26;;20922:9;20916:4;20912:20;20908:1;20897:9;20893:17;20886:47;20950:131;21076:4;20950:131;:::i;:::-;20942:139;;20669:419;;;:::o;21094:236::-;21234:34;21230:1;21222:6;21218:14;21211:58;21303:19;21298:2;21290:6;21286:15;21279:44;21094:236;:::o;21336:366::-;21478:3;21499:67;21563:2;21558:3;21499:67;:::i;:::-;21492:74;;21575:93;21664:3;21575:93;:::i;:::-;21693:2;21688:3;21684:12;21677:19;;21336:366;;;:::o;21708:419::-;21874:4;21912:2;21901:9;21897:18;21889:26;;21961:9;21955:4;21951:20;21947:1;21936:9;21932:17;21925:47;21989:131;22115:4;21989:131;:::i;:::-;21981:139;;21708:419;;;:::o;22133:147::-;22234:11;22271:3;22256:18;;22133:147;;;;:::o;22286:114::-;;:::o;22406:398::-;22565:3;22586:83;22667:1;22662:3;22586:83;:::i;:::-;22579:90;;22678:93;22767:3;22678:93;:::i;:::-;22796:1;22791:3;22787:11;22780:18;;22406:398;;;:::o;22810:379::-;22994:3;23016:147;23159:3;23016:147;:::i;:::-;23009:154;;23180:3;23173:10;;22810:379;;;:::o;23195:180::-;23243:77;23240:1;23233:88;23340:4;23337:1;23330:15;23364:4;23361:1;23354:15;23381:180;23429:77;23426:1;23419:88;23526:4;23523:1;23516:15;23550:4;23547:1;23540:15;23567:233;23606:3;23629:24;23647:5;23629:24;:::i;:::-;23620:33;;23675:66;23668:5;23665:77;23662:103;;;23745:18;;:::i;:::-;23662:103;23792:1;23785:5;23781:13;23774:20;;23567:233;;;:::o;23806:228::-;23946:34;23942:1;23934:6;23930:14;23923:58;24015:11;24010:2;24002:6;23998:15;23991:36;23806:228;:::o;24040:366::-;24182:3;24203:67;24267:2;24262:3;24203:67;:::i;:::-;24196:74;;24279:93;24368:3;24279:93;:::i;:::-;24397:2;24392:3;24388:12;24381:19;;24040:366;;;:::o;24412:419::-;24578:4;24616:2;24605:9;24601:18;24593:26;;24665:9;24659:4;24655:20;24651:1;24640:9;24636:17;24629:47;24693:131;24819:4;24693:131;:::i;:::-;24685:139;;24412:419;;;:::o;24837:229::-;24977:34;24973:1;24965:6;24961:14;24954:58;25046:12;25041:2;25033:6;25029:15;25022:37;24837:229;:::o;25072:366::-;25214:3;25235:67;25299:2;25294:3;25235:67;:::i;:::-;25228:74;;25311:93;25400:3;25311:93;:::i;:::-;25429:2;25424:3;25420:12;25413:19;;25072:366;;;:::o;25444:419::-;25610:4;25648:2;25637:9;25633:18;25625:26;;25697:9;25691:4;25687:20;25683:1;25672:9;25668:17;25661:47;25725:131;25851:4;25725:131;:::i;:::-;25717:139;;25444:419;;;:::o;25869:305::-;25909:3;25928:20;25946:1;25928:20;:::i;:::-;25923:25;;25962:20;25980:1;25962:20;:::i;:::-;25957:25;;26116:1;26048:66;26044:74;26041:1;26038:81;26035:107;;;26122:18;;:::i;:::-;26035:107;26166:1;26163;26159:9;26152:16;;25869:305;;;;:::o;26180:169::-;26320:21;26316:1;26308:6;26304:14;26297:45;26180:169;:::o;26355:366::-;26497:3;26518:67;26582:2;26577:3;26518:67;:::i;:::-;26511:74;;26594:93;26683:3;26594:93;:::i;:::-;26712:2;26707:3;26703:12;26696:19;;26355:366;;;:::o;26727:419::-;26893:4;26931:2;26920:9;26916:18;26908:26;;26980:9;26974:4;26970:20;26966:1;26955:9;26951:17;26944:47;27008:131;27134:4;27008:131;:::i;:::-;27000:139;;26727:419;;;:::o;27152:175::-;27292:27;27288:1;27280:6;27276:14;27269:51;27152:175;:::o;27333:366::-;27475:3;27496:67;27560:2;27555:3;27496:67;:::i;:::-;27489:74;;27572:93;27661:3;27572:93;:::i;:::-;27690:2;27685:3;27681:12;27674:19;;27333:366;;;:::o;27705:419::-;27871:4;27909:2;27898:9;27894:18;27886:26;;27958:9;27952:4;27948:20;27944:1;27933:9;27929:17;27922:47;27986:131;28112:4;27986:131;:::i;:::-;27978:139;;27705:419;;;:::o;28130:167::-;28270:19;28266:1;28258:6;28254:14;28247:43;28130:167;:::o;28303:366::-;28445:3;28466:67;28530:2;28525:3;28466:67;:::i;:::-;28459:74;;28542:93;28631:3;28542:93;:::i;:::-;28660:2;28655:3;28651:12;28644:19;;28303:366;;;:::o;28675:419::-;28841:4;28879:2;28868:9;28864:18;28856:26;;28928:9;28922:4;28918:20;28914:1;28903:9;28899:17;28892:47;28956:131;29082:4;28956:131;:::i;:::-;28948:139;;28675:419;;;:::o;29100:348::-;29140:7;29163:20;29181:1;29163:20;:::i;:::-;29158:25;;29197:20;29215:1;29197:20;:::i;:::-;29192:25;;29385:1;29317:66;29313:74;29310:1;29307:81;29302:1;29295:9;29288:17;29284:105;29281:131;;;29392:18;;:::i;:::-;29281:131;29440:1;29437;29433:9;29422:20;;29100:348;;;;:::o;29454:168::-;29594:20;29590:1;29582:6;29578:14;29571:44;29454:168;:::o;29628:366::-;29770:3;29791:67;29855:2;29850:3;29791:67;:::i;:::-;29784:74;;29867:93;29956:3;29867:93;:::i;:::-;29985:2;29980:3;29976:12;29969:19;;29628:366;;;:::o;30000:419::-;30166:4;30204:2;30193:9;30189:18;30181:26;;30253:9;30247:4;30243:20;30239:1;30228:9;30224:17;30217:47;30281:131;30407:4;30281:131;:::i;:::-;30273:139;;30000:419;;;:::o;30425:234::-;30565:34;30561:1;30553:6;30549:14;30542:58;30634:17;30629:2;30621:6;30617:15;30610:42;30425:234;:::o;30665:366::-;30807:3;30828:67;30892:2;30887:3;30828:67;:::i;:::-;30821:74;;30904:93;30993:3;30904:93;:::i;:::-;31022:2;31017:3;31013:12;31006:19;;30665:366;;;:::o;31037:419::-;31203:4;31241:2;31230:9;31226:18;31218:26;;31290:9;31284:4;31280:20;31276:1;31265:9;31261:17;31254:47;31318:131;31444:4;31318:131;:::i;:::-;31310:139;;31037:419;;;:::o;31462:148::-;31564:11;31601:3;31586:18;;31462:148;;;;:::o;31616:377::-;31722:3;31750:39;31783:5;31750:39;:::i;:::-;31805:89;31887:6;31882:3;31805:89;:::i;:::-;31798:96;;31903:52;31948:6;31943:3;31936:4;31929:5;31925:16;31903:52;:::i;:::-;31980:6;31975:3;31971:16;31964:23;;31726:267;31616:377;;;;:::o;31999:141::-;32048:4;32071:3;32063:11;;32094:3;32091:1;32084:14;32128:4;32125:1;32115:18;32107:26;;31999:141;;;:::o;32170:845::-;32273:3;32310:5;32304:12;32339:36;32365:9;32339:36;:::i;:::-;32391:89;32473:6;32468:3;32391:89;:::i;:::-;32384:96;;32511:1;32500:9;32496:17;32527:1;32522:137;;;;32673:1;32668:341;;;;32489:520;;32522:137;32606:4;32602:9;32591;32587:25;32582:3;32575:38;32642:6;32637:3;32633:16;32626:23;;32522:137;;32668:341;32735:38;32767:5;32735:38;:::i;:::-;32795:1;32809:154;32823:6;32820:1;32817:13;32809:154;;;32897:7;32891:14;32887:1;32882:3;32878:11;32871:35;32947:1;32938:7;32934:15;32923:26;;32845:4;32842:1;32838:12;32833:17;;32809:154;;;32992:6;32987:3;32983:16;32976:23;;32675:334;;32489:520;;32277:738;;32170:845;;;;:::o;33021:589::-;33246:3;33268:95;33359:3;33350:6;33268:95;:::i;:::-;33261:102;;33380:95;33471:3;33462:6;33380:95;:::i;:::-;33373:102;;33492:92;33580:3;33571:6;33492:92;:::i;:::-;33485:99;;33601:3;33594:10;;33021:589;;;;;;:::o;33616:225::-;33756:34;33752:1;33744:6;33740:14;33733:58;33825:8;33820:2;33812:6;33808:15;33801:33;33616:225;:::o;33847:366::-;33989:3;34010:67;34074:2;34069:3;34010:67;:::i;:::-;34003:74;;34086:93;34175:3;34086:93;:::i;:::-;34204:2;34199:3;34195:12;34188:19;;33847:366;;;:::o;34219:419::-;34385:4;34423:2;34412:9;34408:18;34400:26;;34472:9;34466:4;34462:20;34458:1;34447:9;34443:17;34436:47;34500:131;34626:4;34500:131;:::i;:::-;34492:139;;34219:419;;;:::o;34644:180::-;34692:77;34689:1;34682:88;34789:4;34786:1;34779:15;34813:4;34810:1;34803:15;34830:86;34865:7;34905:4;34898:5;34894:16;34883:27;;34830:86;;;:::o;34922:118::-;34993:22;35009:5;34993:22;:::i;:::-;34986:5;34983:33;34973:61;;35030:1;35027;35020:12;34973:61;34922:118;:::o;35046:135::-;35090:5;35128:6;35115:20;35106:29;;35144:31;35169:5;35144:31;:::i;:::-;35046:135;;;;:::o;35187:325::-;35244:6;35293:2;35281:9;35272:7;35268:23;35264:32;35261:119;;;35299:79;;:::i;:::-;35261:119;35419:1;35444:51;35487:7;35478:6;35467:9;35463:22;35444:51;:::i;:::-;35434:61;;35390:115;35187:325;;;;:::o;35518:231::-;35658:34;35654:1;35646:6;35642:14;35635:58;35727:14;35722:2;35714:6;35710:15;35703:39;35518:231;:::o;35755:366::-;35897:3;35918:67;35982:2;35977:3;35918:67;:::i;:::-;35911:74;;35994:93;36083:3;35994:93;:::i;:::-;36112:2;36107:3;36103:12;36096:19;;35755:366;;;:::o;36127:419::-;36293:4;36331:2;36320:9;36316:18;36308:26;;36380:9;36374:4;36370:20;36366:1;36355:9;36351:17;36344:47;36408:131;36534:4;36408:131;:::i;:::-;36400:139;;36127:419;;;:::o;36552:224::-;36692:34;36688:1;36680:6;36676:14;36669:58;36761:7;36756:2;36748:6;36744:15;36737:32;36552:224;:::o;36782:366::-;36924:3;36945:67;37009:2;37004:3;36945:67;:::i;:::-;36938:74;;37021:93;37110:3;37021:93;:::i;:::-;37139:2;37134:3;37130:12;37123:19;;36782:366;;;:::o;37154:419::-;37320:4;37358:2;37347:9;37343:18;37335:26;;37407:9;37401:4;37397:20;37393:1;37382:9;37378:17;37371:47;37435:131;37561:4;37435:131;:::i;:::-;37427:139;;37154:419;;;:::o;37579:223::-;37719:34;37715:1;37707:6;37703:14;37696:58;37788:6;37783:2;37775:6;37771:15;37764:31;37579:223;:::o;37808:366::-;37950:3;37971:67;38035:2;38030:3;37971:67;:::i;:::-;37964:74;;38047:93;38136:3;38047:93;:::i;:::-;38165:2;38160:3;38156:12;38149:19;;37808:366;;;:::o;38180:419::-;38346:4;38384:2;38373:9;38369:18;38361:26;;38433:9;38427:4;38423:20;38419:1;38408:9;38404:17;38397:47;38461:131;38587:4;38461:131;:::i;:::-;38453:139;;38180:419;;;:::o;38605:191::-;38645:4;38665:20;38683:1;38665:20;:::i;:::-;38660:25;;38699:20;38717:1;38699:20;:::i;:::-;38694:25;;38738:1;38735;38732:8;38729:34;;;38743:18;;:::i;:::-;38729:34;38788:1;38785;38781:9;38773:17;;38605:191;;;;:::o;38802:175::-;38942:27;38938:1;38930:6;38926:14;38919:51;38802:175;:::o;38983:366::-;39125:3;39146:67;39210:2;39205:3;39146:67;:::i;:::-;39139:74;;39222:93;39311:3;39222:93;:::i;:::-;39340:2;39335:3;39331:12;39324:19;;38983:366;;;:::o;39355:419::-;39521:4;39559:2;39548:9;39544:18;39536:26;;39608:9;39602:4;39598:20;39594:1;39583:9;39579:17;39572:47;39636:131;39762:4;39636:131;:::i;:::-;39628:139;;39355:419;;;:::o;39780:237::-;39920:34;39916:1;39908:6;39904:14;39897:58;39989:20;39984:2;39976:6;39972:15;39965:45;39780:237;:::o;40023:366::-;40165:3;40186:67;40250:2;40245:3;40186:67;:::i;:::-;40179:74;;40262:93;40351:3;40262:93;:::i;:::-;40380:2;40375:3;40371:12;40364:19;;40023:366;;;:::o;40395:419::-;40561:4;40599:2;40588:9;40584:18;40576:26;;40648:9;40642:4;40638:20;40634:1;40623:9;40619:17;40612:47;40676:131;40802:4;40676:131;:::i;:::-;40668:139;;40395:419;;;:::o;40820:180::-;40868:77;40865:1;40858:88;40965:4;40962:1;40955:15;40989:4;40986:1;40979:15;41006:185;41046:1;41063:20;41081:1;41063:20;:::i;:::-;41058:25;;41097:20;41115:1;41097:20;:::i;:::-;41092:25;;41136:1;41126:35;;41141:18;;:::i;:::-;41126:35;41183:1;41180;41176:9;41171:14;;41006:185;;;;:::o;41197:176::-;41229:1;41246:20;41264:1;41246:20;:::i;:::-;41241:25;;41280:20;41298:1;41280:20;:::i;:::-;41275:25;;41319:1;41309:35;;41324:18;;:::i;:::-;41309:35;41365:1;41362;41358:9;41353:14;;41197:176;;;;:::o;41379:98::-;41430:6;41464:5;41458:12;41448:22;;41379:98;;;:::o;41483:168::-;41566:11;41600:6;41595:3;41588:19;41640:4;41635:3;41631:14;41616:29;;41483:168;;;;:::o;41657:360::-;41743:3;41771:38;41803:5;41771:38;:::i;:::-;41825:70;41888:6;41883:3;41825:70;:::i;:::-;41818:77;;41904:52;41949:6;41944:3;41937:4;41930:5;41926:16;41904:52;:::i;:::-;41981:29;42003:6;41981:29;:::i;:::-;41976:3;41972:39;41965:46;;41747:270;41657:360;;;;:::o;42023:640::-;42218:4;42256:3;42245:9;42241:19;42233:27;;42270:71;42338:1;42327:9;42323:17;42314:6;42270:71;:::i;:::-;42351:72;42419:2;42408:9;42404:18;42395:6;42351:72;:::i;:::-;42433;42501:2;42490:9;42486:18;42477:6;42433:72;:::i;:::-;42552:9;42546:4;42542:20;42537:2;42526:9;42522:18;42515:48;42580:76;42651:4;42642:6;42580:76;:::i;:::-;42572:84;;42023:640;;;;;;;:::o;42669:141::-;42725:5;42756:6;42750:13;42741:22;;42772:32;42798:5;42772:32;:::i;:::-;42669:141;;;;:::o;42816:349::-;42885:6;42934:2;42922:9;42913:7;42909:23;42905:32;42902:119;;;42940:79;;:::i;:::-;42902:119;43060:1;43085:63;43140:7;43131:6;43120:9;43116:22;43085:63;:::i;:::-;43075:73;;43031:127;42816:349;;;;:::o;43171:182::-;43311:34;43307:1;43299:6;43295:14;43288:58;43171:182;:::o;43359:366::-;43501:3;43522:67;43586:2;43581:3;43522:67;:::i;:::-;43515:74;;43598:93;43687:3;43598:93;:::i;:::-;43716:2;43711:3;43707:12;43700:19;;43359:366;;;:::o;43731:419::-;43897:4;43935:2;43924:9;43920:18;43912:26;;43984:9;43978:4;43974:20;43970:1;43959:9;43955:17;43948:47;44012:131;44138:4;44012:131;:::i;:::-;44004:139;;43731:419;;;:::o;44156:178::-;44296:30;44292:1;44284:6;44280:14;44273:54;44156:178;:::o;44340:366::-;44482:3;44503:67;44567:2;44562:3;44503:67;:::i;:::-;44496:74;;44579:93;44668:3;44579:93;:::i;:::-;44697:2;44692:3;44688:12;44681:19;;44340:366;;;:::o;44712:419::-;44878:4;44916:2;44905:9;44901:18;44893:26;;44965:9;44959:4;44955:20;44951:1;44940:9;44936:17;44929:47;44993:131;45119:4;44993:131;:::i;:::-;44985:139;;44712:419;;;:::o

Swarm Source

ipfs://b06df1e16e2b0980a3c1aad6cdd5838fb72f75895d3a9209d73a85bb8c073b12
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.