/* eslint-disable array-bracket-spacing, no-multi-spaces, indent */

export type Ring = 'purine'|'pyrimidine';

export const ReferenceCompounds: Record<string, [string, string]> = {
    AA00: [ 'A',  'G'],
    AA01: ['DC', 'DG'],
    AA02: ['DA', 'DA'],
    AA03: [ 'U',  'C'],
    AA04: [ 'A',  'G'],
    AA05: [ 'A',  'G'],
    AA06: [ 'U',  'G'],
    AA07: [ 'U',  'A'],
    AA08: [ 'G',  'C'],
    AA09: [ 'A',  'A'],
    AA10: [ 'A',  'G'],
    AA11: [ 'A',  'A'],
    AA12: [ 'U',  'G'],
    AA13: [ 'G',  'U'],
    AB01: ['DC', 'DG'],
    AB02: ['DG', 'DG'],
    AB03: ['DC', 'DA'],
    AB04: ['DT', 'DA'],
    AB05: [ 'G',  'U'],
    BA01: ['DA', 'DT'],
    BA05: ['DA', 'DC'],
    BA09: ['DG', 'DG'],
    BA08: ['DC', 'DG'],
    BA10: ['DA', 'DG'],
    BA13: ['DG', 'DA'],
    BA16: [ 'U',  'U'],
    BA17: ['DC', 'DT'],
    BB00: ['DG', 'DA'],
    BB01: ['DA', 'DA'],
    BB17: ['DC', 'DC'],
    BB02: ['DA', 'DC'],
    BB03: ['DA', 'DG'],
    BB11: ['DT', 'DT'],
    BB16: ['DC', 'DG'],
    BB04: ['DC', 'DG'],
    BB05: ['DA', 'DC'],
    BB07: ['DC', 'DG'],
    BB08: ['DC', 'DG'],
    BB10: ['DG', 'DG'],
    BB12: ['DG', 'DA'],
    BB13: ['DA', 'DC'],
    BB14: ['DC', 'DA'],
    BB15: ['DG', 'DC'],
    BB20: ['DT', 'DT'],
    IC01: [ 'C',  'C'],
    IC02: [ 'U',  'U'],
    IC03: [ 'G',  'A'],
    IC04: ['DC', 'DG'],
    IC05: ['DC', 'DG'],
    IC06: ['DC', 'DG'],
    IC07: [ 'G',  'U'],
    OP01: [ 'C',  'A'],
    OP02: [ 'G',  'U'],
    OP03: [ 'G',  'A'],
    OP04: [ 'G',  'A'],
    OP05: [ 'G',  'U'],
    OP06: [ 'U',  'U'],
    OP07: [ 'G',  'C'],
    OP08: [ 'G',  'A'],
    OP09: [ 'U',  'U'],
    OP10: [ 'G',  'A'],
    OP11: [ 'A',  'G'],
    OP12: [ 'U',  'C'],
    OP13: [ 'U',  'G'],
    OP14: [ 'A',  'G'],
    OP15: [ 'G',  'U'],
    OP16: [ 'G',  'G'],
    OP17: [ 'G',  'U'],
    OP18: [ 'U',  'U'],
    OP19: ['DG', 'DT'],
    OP20: ['DA', 'DC'],
    OP21: [ 'U',  'U'],
    OP22: ['DU', 'DU'],
    OP23: [ 'A',  'G'],
    OP24: [ 'A',  'A'],
    OP25: [ 'A',  'U'],
    OP26: [ 'U',  'C'],
    OP27: [ 'C',  'G'],
    OP28: [ 'G',  'U'],
    OP29: [ 'A',  'U'],
    OP30: [ 'C',  'G'],
    OP31: [ 'A',  'G'],
    OPS1: [ 'U',  'C'],
    OP1S: ['DT', 'DG'],
    AAS1: [ 'C',  'A'],
    AB1S: ['DA', 'DG'],
    AB2S: [ 'G',  'G'],
    BB1S: ['DG', 'DG'],
    BB2S: ['DG', 'DG'],
    BBS1: ['DG', 'DG'],
    ZZ01: [ 'U',  'C'],
    ZZ02: [ 'A',  'C'],
    ZZ1S: ['DC', 'DG'],
    ZZ2S: ['DC', 'DG'],
    ZZS1: ['DG', 'DC'],
    ZZS2: ['DG', 'DC'],
};
export type ReferenceCompounds = typeof ReferenceCompounds;

export const CompoundRings: Record<string, Ring> = {
    '0AD': 'purine',
    '0AV': 'purine',
    '0SP': 'purine',
    '0UH': 'purine',
    '12A': 'purine',
    '18M': 'purine',
    '1AP': 'purine',
    '1MA': 'purine',
    '1MG': 'purine',
    '2BU': 'purine',
    '2EG': 'purine',
    '2MA': 'purine',
    '2MG': 'purine',
    '2PR': 'purine',
    '6FK': 'purine',
    '6HA': 'purine',
    '6HB': 'purine',
    '6HG': 'purine',
    '6IA': 'purine',
    '6MA': 'purine',
    '6MC': 'purine',
    '6MT': 'purine',
    '6OG': 'purine',
    '6PO': 'purine',
    '7AT': 'purine',
    '7BG': 'purine',
    '7DA': 'purine',
    '7GU': 'purine',
    '7MG': 'purine',
    '8AA': 'purine',
    '8BA': 'purine',
    '8FG': 'purine',
    '8MG': 'purine',
    '8OG': 'purine',
    '8PY': 'purine',
      'A': 'purine',
    'A23': 'purine',
    'A2L': 'purine',
    'A2M': 'purine',
    'A44': 'purine',
    'A5L': 'purine',
    'A5O': 'purine',
    'A6A': 'purine',
    'A6G': 'purine',
    'A7E': 'purine',
    'A9Z': 'purine',
    'ABR': 'purine',
    'ABS': 'purine',
    'AET': 'purine',
    'AF2': 'purine',
    'AFG': 'purine',
    'AP7': 'purine',
    'ATP': 'purine',
    'AVC': 'purine',
    'B8K': 'purine',
    'B8W': 'purine',
    'B9B': 'purine',
    'BGH': 'purine',
    'BGM': 'purine',
    'C6G': 'purine',
    'CG1': 'purine',
     'DA': 'purine',
    'DCG': 'purine',
    'DFG': 'purine',
     'DG': 'purine',
    'DZM': 'purine',
       'E': 'purine',
    'E1X': 'purine',
    'E6G': 'purine',
    'E7G': 'purine',
    'EDA': 'purine',
    'EHG': 'purine',
    'F74': 'purine',
    'FDG': 'purine',
    'FMG': 'purine',
    'G25': 'purine',
    'G2L': 'purine',
    'G48': 'purine',
    'G7M': 'purine',
    'GAO': 'purine',
    'GF2': 'purine',
    'GMS': 'purine',
    'GOM': 'purine',
    'GRB': 'purine',
    'GSR': 'purine',
    'GSS': 'purine',
    'GX1': 'purine',
    'HN0': 'purine',
    'HN1': 'purine',
     'IG': 'purine',
    'IGU': 'purine',
    'KAG': 'purine',
    'LCG': 'purine',
     'LG': 'purine',
    'LGP': 'purine',
    'M1G': 'purine',
    'M2G': 'purine',
    'M7A': 'purine',
    'MA6': 'purine',
    'MA7': 'purine',
    'MAD': 'purine',
    'MFO': 'purine',
    'MG1': 'purine',
    'MGV': 'purine',
    'MHG': 'purine',
    'MIA': 'purine',
    'MRG': 'purine',
    'MTU': 'purine',
    'N6G': 'purine',
    'O2G': 'purine',
    'OGX': 'purine',
    'OMG': 'purine',
    'P5P': 'purine',
    'P7G': 'purine',
    'PG7': 'purine',
    'PGN': 'purine',
    'PGP': 'purine',
    'PPW': 'purine',
    'PR5': 'purine',
    'PRN': 'purine',
    'QUO': 'purine',
      'R': 'purine',
    'RDG': 'purine',
    'RIA': 'purine',
    'S6G': 'purine',
    'SDH': 'purine',
    'T6A': 'purine',
    'V3L': 'purine',
      'X': 'purine',
    'XPB': 'purine',
    'XUA': 'purine',
    'XUG': 'purine',
     'YG': 'purine',
    'YYG': 'purine',
    'AD2': 'purine',
    'A3P': 'purine',
    'DDG': 'purine',
    'GDP': 'purine',
    'GFL': 'purine',
      'G': 'purine',
    'GNE': 'purine',
    'GTP': 'purine',
    'TGP': 'purine',
    '2FI': 'purine',
    '2DA': 'purine',
     'DI': 'purine',

    '0AP': 'pyrimidine',
    '0AU': 'pyrimidine',
    '125': 'pyrimidine',
    '126': 'pyrimidine',
    '127': 'pyrimidine',
    '18Q': 'pyrimidine',
    '1CC': 'pyrimidine',
    '1FC': 'pyrimidine',
    '1RN': 'pyrimidine',
    '2AT': 'pyrimidine',
    '2AU': 'pyrimidine',
    '2BT': 'pyrimidine',
    '2GT': 'pyrimidine',
    '2MU': 'pyrimidine',
    '2NT': 'pyrimidine',
    '2OM': 'pyrimidine',
    '2OT': 'pyrimidine',
    '2ST': 'pyrimidine',
    '3AU': 'pyrimidine',
    '3ME': 'pyrimidine',
    '3MU': 'pyrimidine',
    '47C': 'pyrimidine',
    '4OC': 'pyrimidine',
    '4PC': 'pyrimidine',
    '4PD': 'pyrimidine',
    '4PE': 'pyrimidine',
    '4SU': 'pyrimidine',
    '4U3': 'pyrimidine',
    '5BU': 'pyrimidine',
    '5CM': 'pyrimidine',
    '5FC': 'pyrimidine',
    '5HC': 'pyrimidine',
    '5HM': 'pyrimidine',
    '5HU': 'pyrimidine',
    '5IC': 'pyrimidine',
    '5IT': 'pyrimidine',
    '5IU': 'pyrimidine',
    '5MC': 'pyrimidine',
    '5MU': 'pyrimidine',
    '5NC': 'pyrimidine',
    '5PC': 'pyrimidine',
    '5PY': 'pyrimidine',
    '5SE': 'pyrimidine',
    '64T': 'pyrimidine',
    '6HC': 'pyrimidine',
    '6HT': 'pyrimidine',
    '70U': 'pyrimidine',
    '75B': 'pyrimidine',
    '77Y': 'pyrimidine',
    '85Y': 'pyrimidine',
    '8DT': 'pyrimidine',
    '8RO': 'pyrimidine',
    '94O': 'pyrimidine',
    '9QV': 'pyrimidine',
    'A5M': 'pyrimidine',
    'A6C': 'pyrimidine',
    'A6U': 'pyrimidine',
    'ATD': 'pyrimidine',
    'ATL': 'pyrimidine',
    'B7C': 'pyrimidine',
    'B8Q': 'pyrimidine',
    'B8T': 'pyrimidine',
    'B9H': 'pyrimidine',
    'BOE': 'pyrimidine',
    'BRU': 'pyrimidine',
    'C25': 'pyrimidine',
    'C2L': 'pyrimidine',
    'C34': 'pyrimidine',
    'C43': 'pyrimidine',
    'C5L': 'pyrimidine',
    'CAR': 'pyrimidine',
    'CB2': 'pyrimidine',
    'CBR': 'pyrimidine',
    'CCC': 'pyrimidine',
    'CDW': 'pyrimidine',
     'CH': 'pyrimidine',
    'CTG': 'pyrimidine',
    'D00': 'pyrimidine',
     'DC': 'pyrimidine',
    'DDN': 'pyrimidine',
    'DFC': 'pyrimidine',
    'DHU': 'pyrimidine',
    'DNR': 'pyrimidine',
    'DRT': 'pyrimidine',
     'DT': 'pyrimidine',
     'DU': 'pyrimidine',
    'DUZ': 'pyrimidine',
    'E3C': 'pyrimidine',
    'EIT': 'pyrimidine',
    'F3H': 'pyrimidine',
    'GMU': 'pyrimidine',
    'H2U': 'pyrimidine',
    'HEU': 'pyrimidine',
    'I4U': 'pyrimidine',
    'I5C': 'pyrimidine',
     'IC': 'pyrimidine',
    'IMC': 'pyrimidine',
     'IU': 'pyrimidine',
    'JDT': 'pyrimidine',
    'JMH': 'pyrimidine',
     'LC': 'pyrimidine',
    'LHU': 'pyrimidine',
    'LSH': 'pyrimidine',
    'LST': 'pyrimidine',
    'M5M': 'pyrimidine',
    'MNU': 'pyrimidine',
    'N5M': 'pyrimidine',
    'NCU': 'pyrimidine',
    'NDU': 'pyrimidine',
    'NMS': 'pyrimidine',
    'NMT': 'pyrimidine',
    'NTT': 'pyrimidine',
    'OHU': 'pyrimidine',
    'OMC': 'pyrimidine',
    'OMU': 'pyrimidine',
    'ONE': 'pyrimidine',
    'P2T': 'pyrimidine',
    'P4U': 'pyrimidine',
    'PDU': 'pyrimidine',
    'PST': 'pyrimidine',
    'PYO': 'pyrimidine',
    'RPC': 'pyrimidine',
    'RSQ': 'pyrimidine',
    'S2M': 'pyrimidine',
    'S4U': 'pyrimidine',
    'SMT': 'pyrimidine',
    'SUR': 'pyrimidine',
    'T39': 'pyrimidine',
    'T3P': 'pyrimidine',
    'T4S': 'pyrimidine',
    'T5O': 'pyrimidine',
    'T5S': 'pyrimidine',
    'TA3': 'pyrimidine',
    'TAF': 'pyrimidine',
    'TC1': 'pyrimidine',
    'TDY': 'pyrimidine',
    'TED': 'pyrimidine',
    'TFE': 'pyrimidine',
    'TLC': 'pyrimidine',
    'TLN': 'pyrimidine',
    'TTM': 'pyrimidine',
    'U25': 'pyrimidine',
    'U2L': 'pyrimidine',
    'U2N': 'pyrimidine',
    'U36': 'pyrimidine',
    'U8U': 'pyrimidine',
    'UAR': 'pyrimidine',
    'UBI': 'pyrimidine',
    'UBR': 'pyrimidine',
    'UD5': 'pyrimidine',
    'UFT': 'pyrimidine',
    'UMS': 'pyrimidine',
    'UMX': 'pyrimidine',
    'UPE': 'pyrimidine',
    'UPV': 'pyrimidine',
    'UR3': 'pyrimidine',
    'URX': 'pyrimidine',
    'US3': 'pyrimidine',
    'USM': 'pyrimidine',
    'UVX': 'pyrimidine',
    'XCY': 'pyrimidine',
    'YCO': 'pyrimidine',
      'Z': 'pyrimidine',
    'ZDU': 'pyrimidine',
    'CFL': 'pyrimidine',
      'C': 'pyrimidine',
    'C38': 'pyrimidine',
    'DOC': 'pyrimidine',
    'F2T': 'pyrimidine',
    'ME6': 'pyrimidine',
    'SPT': 'pyrimidine',
      'T': 'pyrimidine',
    'TPC': 'pyrimidine',
    'TCP': 'pyrimidine',
      'U': 'pyrimidine',
    'UMP': 'pyrimidine',
    '2DT': 'pyrimidine',
    'CFZ': 'pyrimidine'
};
export type CompoundRings = typeof CompoundRings;

export const BackboneAtoms = {
    first: ["C5'", "C4'", "O4'", "C3'", "O3'", "C1'"],
    /* eslint-disable @typescript-eslint/quotes */
    second: ["P", "O5'", "C5'", "C4'", "O4'", "C3'", "O3'", "C1'"],
    purine: ['N9', 'C4'],
    pyrimidine: ['N1', 'C2'],
};