{
  "_format": "hh-sol-artifact-1",
  "contractName": "NonTransferable",
  "sourceName": "contracts/soma/SecurityTokens/extensions/NonTransferable.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "Whitelisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "WhitelistedRevoked",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "GLOBAL_WHITELIST_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_WHITELIST_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SOMA",
      "outputs": [
        {
          "internalType": "contract ISOMA",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeWhitelist",
      "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": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "whitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "whitelisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052730f3dc00189dbcd1d0c574e48031270cae04c4adf60805234801561002857600080fd5b506080516119c36100756000396000818161024f01528181610480015281816105a10152818161063d01528181610728015281816107ce0152818161086a015261094d01526119c36000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806363727fc2116100c35780639c7f33151161007c5780639c7f3315146102e8578063a457c2d7146102fb578063a9059cbb1461030e578063ac9650d814610321578063d936547e14610341578063dd62ed3e1461036e57600080fd5b806363727fc21461024a57806370a08231146102895780638456cb59146102b257806391d14854146102ba57806395d89b41146102cd5780639b19251a146102d557600080fd5b8063313ce56711610115578063313ce567146101e557806339509351146101f45780633f4ba83a1461020757806348796f3a146102115780634fdf55391461021b5780635c975abb1461024257600080fd5b806301ffc9a71461015d57806306fdde0314610185578063095ea7b31461019a57806318160ddd146101ad57806323b872dd146101bf578063248a9ca3146101d2575b600080fd5b61017061016b3660046115ab565b610381565b60405190151581526020015b60405180910390f35b61018d6103ac565b60405161017c9190611625565b6101706101a836600461164d565b61043e565b6035545b60405190815260200161017c565b6101706101cd366004611679565b610456565b6101b16101e03660046116ba565b61047c565b6040516012815260200161017c565b61017061020236600461164d565b61056e565b61020f610590565b005b6101b161015f5481565b6101b17f65659992a02fcf9ce2b04ab43007430a8837bc12ad27389588d5121faf38b2ff81565b610170610724565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161017c565b6101b16102973660046116d3565b6001600160a01b031660009081526033602052604090205490565b61020f6107bd565b6101706102c83660046116f0565b610949565b61018d610a40565b61020f6102e33660046116d3565b610a4f565b61020f6102f63660046116d3565b610ae8565b61017061030936600461164d565b610b7d565b61017061031c36600461164d565b610c03565b61033461032f366004611720565b610c11565b60405161017c9190611795565b61017061034f3660046116d3565b6001600160a01b03166000908152610160602052604090205460ff1690565b6101b161037c3660046117f7565b610d06565b60006001600160e01b0319821663de50427160e01b14806103a657506103a682610d31565b92915050565b6060603680546103bb90611825565b80601f01602080910402602001604051908101604052809291908181526020018280546103e790611825565b80156104345780601f1061040957610100808354040283529160200191610434565b820191906000526020600020905b81548152906001019060200180831161041757829003601f168201915b5050505050905090565b60003361044c818585610d56565b5060019392505050565b600033610464858285610e7a565b61046f858585610ef4565b60019150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610500919061185f565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b815260040161052d91815260200190565b602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a6919061187c565b60003361044c8185856105818383610d06565b61058b91906118ab565b610d56565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610621919061185f565b6001600160a01b031614806106c85750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bd919061185f565b6001600160a01b0316145b6107195760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064015b60405180910390fd5b6107216110cd565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a891906118be565b806107b857505060655460ff1690565b905090565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e919061185f565b6001600160a01b031614806108f55750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea919061185f565b6001600160a01b0316145b6109415760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610710565b61072161111f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd919061185f565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d1485490604401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047591906118be565b6060603780546103bb90611825565b61015f543390610a5f9082610949565b80610a8f5750610a8f7f65659992a02fcf9ce2b04ab43007430a8837bc12ad27389588d5121faf38b2ff82610949565b610adb5760405162461bcd60e51b815260206004820152601d60248201527f4e6f6e5472616e7366657261626c653a20554e415554484f52495a45440000006044820152606401610710565b610ae48261115c565b5050565b61015f543390610af89082610949565b80610b285750610b287f65659992a02fcf9ce2b04ab43007430a8837bc12ad27389588d5121faf38b2ff82610949565b610b745760405162461bcd60e51b815260206004820152601d60248201527f4e6f6e5472616e7366657261626c653a20554e415554484f52495a45440000006044820152606401610710565b610ae48261123f565b60003381610b8b8286610d06565b905083811015610beb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610710565b610bf88286868403610d56565b506001949350505050565b60003361044c818585610ef4565b60608167ffffffffffffffff811115610c2c57610c2c6118e0565b604051908082528060200260200182016040528015610c5f57816020015b6060815260200190600190039081610c4a5790505b50905060005b82811015610cff57610ccf30858584818110610c8357610c836118f6565b9050602002810190610c95919061190c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112f492505050565b828281518110610ce157610ce16118f6565b60200260200101819052508080610cf79061195a565b915050610c65565b5092915050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b60006001600160e01b0319821663b55bd4f760e01b14806103a657506103a6826113e8565b6001600160a01b038316610db85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610710565b6001600160a01b038216610e195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610710565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e868484610d06565b90506000198114610eee5781811015610ee15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610710565b610eee8484848403610d56565b50505050565b6001600160a01b038316610f585760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610710565b6001600160a01b038216610fba5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610710565b610fc583838361141d565b6001600160a01b0383166000908152603360205260409020548181101561103d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610710565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906110749084906118ab565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110c091815260200190565b60405180910390a3610eee565b6110d56114dd565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61112761152a565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111023390565b6001600160a01b0381166000908152610160602052604090205460ff16156111d25760405162461bcd60e51b8152602060048201526024808201527f4e6f6e5472616e7366657261626c653a20414c52454144595f57484954454c4960448201526314d5115160e21b6064820152608401610710565b6001600160a01b038116600090815261016060205260409020805460ff191660011790556111fd3390565b6001600160a01b0316816001600160a01b03167f6661a7108aecd07864384529117d96c319c1163e3010c01390f6b704726e07de60405160405180910390a350565b6001600160a01b0381166000908152610160602052604090205460ff166112a85760405162461bcd60e51b815260206004820181905260248201527f4e6f6e5472616e7366657261626c653a204e4f545f57484954454c49535445446044820152606401610710565b6001600160a01b03811660008181526101606020526040808220805460ff19169055513392917f203a4831d82862245daf54e51ceeb2f38b6de688e5cc8f20e85aa19dc378b5f091a350565b60606001600160a01b0383163b61135c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610710565b600080846001600160a01b0316846040516113779190611973565b600060405180830381855af49150503d80600081146113b2576040519150601f19603f3d011682016040523d82523d6000602084013e6113b7565b606091505b50915091506113df828260405180606001604052806027815260200161199060279139611572565b95945050505050565b60006001600160e01b0319821663d86f1ca160e01b14806103a657506301ffc9a760e01b6001600160e01b03198316146103a6565b6001600160a01b038316158061143a57506001600160a01b038216155b8061145e57506001600160a01b0383166000908152610160602052604090205460ff165b8061148257506001600160a01b0382166000908152610160602052604090205460ff165b6114d85760405162461bcd60e51b815260206004820152602160248201527f4e6f6e5472616e7366657261626c653a204e4f4e5f5452414e5346455241424c6044820152604560f81b6064820152608401610710565b505050565b6114e5610724565b6115285760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610710565b565b611532610724565b156115285760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610710565b60608315611581575081610475565b8251156115915782518084602001fd5b8160405162461bcd60e51b81526004016107109190611625565b6000602082840312156115bd57600080fd5b81356001600160e01b03198116811461047557600080fd5b60005b838110156115f05781810151838201526020016115d8565b50506000910152565b600081518084526116118160208601602086016115d5565b601f01601f19169290920160200192915050565b60208152600061047560208301846115f9565b6001600160a01b038116811461072157600080fd5b6000806040838503121561166057600080fd5b823561166b81611638565b946020939093013593505050565b60008060006060848603121561168e57600080fd5b833561169981611638565b925060208401356116a981611638565b929592945050506040919091013590565b6000602082840312156116cc57600080fd5b5035919050565b6000602082840312156116e557600080fd5b813561047581611638565b6000806040838503121561170357600080fd5b82359150602083013561171581611638565b809150509250929050565b6000806020838503121561173357600080fd5b823567ffffffffffffffff8082111561174b57600080fd5b818501915085601f83011261175f57600080fd5b81358181111561176e57600080fd5b8660208260051b850101111561178357600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156117ea57603f198886030184526117d88583516115f9565b945092850192908501906001016117bc565b5092979650505050505050565b6000806040838503121561180a57600080fd5b823561181581611638565b9150602083013561171581611638565b600181811c9082168061183957607f821691505b60208210810361185957634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561187157600080fd5b815161047581611638565b60006020828403121561188e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103a6576103a6611895565b6000602082840312156118d057600080fd5b8151801515811461047557600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261192357600080fd5b83018035915067ffffffffffffffff82111561193e57600080fd5b60200191503681900382131561195357600080fd5b9250929050565b60006001820161196c5761196c611895565b5060010190565b600082516119858184602087016115d5565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c806363727fc2116100c35780639c7f33151161007c5780639c7f3315146102e8578063a457c2d7146102fb578063a9059cbb1461030e578063ac9650d814610321578063d936547e14610341578063dd62ed3e1461036e57600080fd5b806363727fc21461024a57806370a08231146102895780638456cb59146102b257806391d14854146102ba57806395d89b41146102cd5780639b19251a146102d557600080fd5b8063313ce56711610115578063313ce567146101e557806339509351146101f45780633f4ba83a1461020757806348796f3a146102115780634fdf55391461021b5780635c975abb1461024257600080fd5b806301ffc9a71461015d57806306fdde0314610185578063095ea7b31461019a57806318160ddd146101ad57806323b872dd146101bf578063248a9ca3146101d2575b600080fd5b61017061016b3660046115ab565b610381565b60405190151581526020015b60405180910390f35b61018d6103ac565b60405161017c9190611625565b6101706101a836600461164d565b61043e565b6035545b60405190815260200161017c565b6101706101cd366004611679565b610456565b6101b16101e03660046116ba565b61047c565b6040516012815260200161017c565b61017061020236600461164d565b61056e565b61020f610590565b005b6101b161015f5481565b6101b17f65659992a02fcf9ce2b04ab43007430a8837bc12ad27389588d5121faf38b2ff81565b610170610724565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161017c565b6101b16102973660046116d3565b6001600160a01b031660009081526033602052604090205490565b61020f6107bd565b6101706102c83660046116f0565b610949565b61018d610a40565b61020f6102e33660046116d3565b610a4f565b61020f6102f63660046116d3565b610ae8565b61017061030936600461164d565b610b7d565b61017061031c36600461164d565b610c03565b61033461032f366004611720565b610c11565b60405161017c9190611795565b61017061034f3660046116d3565b6001600160a01b03166000908152610160602052604090205460ff1690565b6101b161037c3660046117f7565b610d06565b60006001600160e01b0319821663de50427160e01b14806103a657506103a682610d31565b92915050565b6060603680546103bb90611825565b80601f01602080910402602001604051908101604052809291908181526020018280546103e790611825565b80156104345780601f1061040957610100808354040283529160200191610434565b820191906000526020600020905b81548152906001019060200180831161041757829003601f168201915b5050505050905090565b60003361044c818585610d56565b5060019392505050565b600033610464858285610e7a565b61046f858585610ef4565b60019150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610500919061185f565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b815260040161052d91815260200190565b602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a6919061187c565b60003361044c8185856105818383610d06565b61058b91906118ab565b610d56565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610621919061185f565b6001600160a01b031614806106c85750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bd919061185f565b6001600160a01b0316145b6107195760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064015b60405180910390fd5b6107216110cd565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a891906118be565b806107b857505060655460ff1690565b905090565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e919061185f565b6001600160a01b031614806108f55750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea919061185f565b6001600160a01b0316145b6109415760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610710565b61072161111f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd919061185f565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d1485490604401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047591906118be565b6060603780546103bb90611825565b61015f543390610a5f9082610949565b80610a8f5750610a8f7f65659992a02fcf9ce2b04ab43007430a8837bc12ad27389588d5121faf38b2ff82610949565b610adb5760405162461bcd60e51b815260206004820152601d60248201527f4e6f6e5472616e7366657261626c653a20554e415554484f52495a45440000006044820152606401610710565b610ae48261115c565b5050565b61015f543390610af89082610949565b80610b285750610b287f65659992a02fcf9ce2b04ab43007430a8837bc12ad27389588d5121faf38b2ff82610949565b610b745760405162461bcd60e51b815260206004820152601d60248201527f4e6f6e5472616e7366657261626c653a20554e415554484f52495a45440000006044820152606401610710565b610ae48261123f565b60003381610b8b8286610d06565b905083811015610beb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610710565b610bf88286868403610d56565b506001949350505050565b60003361044c818585610ef4565b60608167ffffffffffffffff811115610c2c57610c2c6118e0565b604051908082528060200260200182016040528015610c5f57816020015b6060815260200190600190039081610c4a5790505b50905060005b82811015610cff57610ccf30858584818110610c8357610c836118f6565b9050602002810190610c95919061190c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112f492505050565b828281518110610ce157610ce16118f6565b60200260200101819052508080610cf79061195a565b915050610c65565b5092915050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b60006001600160e01b0319821663b55bd4f760e01b14806103a657506103a6826113e8565b6001600160a01b038316610db85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610710565b6001600160a01b038216610e195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610710565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e868484610d06565b90506000198114610eee5781811015610ee15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610710565b610eee8484848403610d56565b50505050565b6001600160a01b038316610f585760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610710565b6001600160a01b038216610fba5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610710565b610fc583838361141d565b6001600160a01b0383166000908152603360205260409020548181101561103d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610710565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906110749084906118ab565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110c091815260200190565b60405180910390a3610eee565b6110d56114dd565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61112761152a565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111023390565b6001600160a01b0381166000908152610160602052604090205460ff16156111d25760405162461bcd60e51b8152602060048201526024808201527f4e6f6e5472616e7366657261626c653a20414c52454144595f57484954454c4960448201526314d5115160e21b6064820152608401610710565b6001600160a01b038116600090815261016060205260409020805460ff191660011790556111fd3390565b6001600160a01b0316816001600160a01b03167f6661a7108aecd07864384529117d96c319c1163e3010c01390f6b704726e07de60405160405180910390a350565b6001600160a01b0381166000908152610160602052604090205460ff166112a85760405162461bcd60e51b815260206004820181905260248201527f4e6f6e5472616e7366657261626c653a204e4f545f57484954454c49535445446044820152606401610710565b6001600160a01b03811660008181526101606020526040808220805460ff19169055513392917f203a4831d82862245daf54e51ceeb2f38b6de688e5cc8f20e85aa19dc378b5f091a350565b60606001600160a01b0383163b61135c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610710565b600080846001600160a01b0316846040516113779190611973565b600060405180830381855af49150503d80600081146113b2576040519150601f19603f3d011682016040523d82523d6000602084013e6113b7565b606091505b50915091506113df828260405180606001604052806027815260200161199060279139611572565b95945050505050565b60006001600160e01b0319821663d86f1ca160e01b14806103a657506301ffc9a760e01b6001600160e01b03198316146103a6565b6001600160a01b038316158061143a57506001600160a01b038216155b8061145e57506001600160a01b0383166000908152610160602052604090205460ff165b8061148257506001600160a01b0382166000908152610160602052604090205460ff165b6114d85760405162461bcd60e51b815260206004820152602160248201527f4e6f6e5472616e7366657261626c653a204e4f4e5f5452414e5346455241424c6044820152604560f81b6064820152608401610710565b505050565b6114e5610724565b6115285760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610710565b565b611532610724565b156115285760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610710565b60608315611581575081610475565b8251156115915782518084602001fd5b8160405162461bcd60e51b81526004016107109190611625565b6000602082840312156115bd57600080fd5b81356001600160e01b03198116811461047557600080fd5b60005b838110156115f05781810151838201526020016115d8565b50506000910152565b600081518084526116118160208601602086016115d5565b601f01601f19169290920160200192915050565b60208152600061047560208301846115f9565b6001600160a01b038116811461072157600080fd5b6000806040838503121561166057600080fd5b823561166b81611638565b946020939093013593505050565b60008060006060848603121561168e57600080fd5b833561169981611638565b925060208401356116a981611638565b929592945050506040919091013590565b6000602082840312156116cc57600080fd5b5035919050565b6000602082840312156116e557600080fd5b813561047581611638565b6000806040838503121561170357600080fd5b82359150602083013561171581611638565b809150509250929050565b6000806020838503121561173357600080fd5b823567ffffffffffffffff8082111561174b57600080fd5b818501915085601f83011261175f57600080fd5b81358181111561176e57600080fd5b8660208260051b850101111561178357600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156117ea57603f198886030184526117d88583516115f9565b945092850192908501906001016117bc565b5092979650505050505050565b6000806040838503121561180a57600080fd5b823561181581611638565b9150602083013561171581611638565b600181811c9082168061183957607f821691505b60208210810361185957634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561187157600080fd5b815161047581611638565b60006020828403121561188e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103a6576103a6611895565b6000602082840312156118d057600080fd5b8151801515811461047557600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261192357600080fd5b83018035915067ffffffffffffffff82111561193e57600080fd5b60200191503681900382131561195357600080fd5b9250929050565b60006001820161196c5761196c611895565b5060010190565b600082516119858184602087016115d5565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
