#!/usr/bin/env python
import sys
import os
import argparse
import numpy as np
import numpy.linalg as LA
import spglib
from scipy.spatial.transform import Rotation as scipy_rot
from phonopy.interface.calculator import read_crystal_structure

__date__ = "Sep. 22, 2023"
__version__ = "0.2.0"

periodic_table = {
    'H': 1, 'He': 2, 'Li': 3, 'Be': 4, 'B': 5, 'C': 6, 'N': 7, 'O': 8, 'F': 9, 'Ne': 10,
    'Na': 11, 'Mg': 12, 'Al': 13, 'Si': 14, 'P': 15, 'S': 16, 'Cl': 17, 'Ar': 18,
    'K': 19, 'Ca': 20, 'Sc': 21, 'Ti': 22, 'V': 23, 'Cr': 24, 'Mn': 25, 'Fe': 26, 'Co': 27, 'Ni': 28, 'Cu': 29, 'Zn': 30,
    'Ga': 31, 'Ge': 32, 'As': 33, 'Se': 34, 'Br': 35, 'Kr': 36, 'Rb': 37, 'Sr': 38, 'Y': 39, 'Zr': 40,
    'Nb': 41, 'Mo': 42, 'Tc': 43, 'Ru': 44, 'Rh': 45, 'Pd': 46, 'Ag': 47, 'Cd': 48, 'In': 49, 'Sn': 50,
    'Sb': 51, 'Te': 52, 'I': 53, 'Xe': 54, 'Cs': 55, 'Ba': 56, 'La': 57, 'Ce': 58, 'Pr': 59, 'Nd': 60,
    'Pm': 61, 'Sm': 62, 'Eu': 63, 'Gd': 64, 'Tb': 65, 'Dy': 66, 'Ho': 67, 'Er': 68, 'Tm': 69, 'Yb': 70,
    'Lu': 71, 'Hf': 72, 'Ta': 73, 'W': 74, 'Re': 75, 'Os': 76, 'Ir': 77, 'Pt': 78, 'Au': 79, 'Hg': 80,
    'Tl': 81, 'Pb': 82, 'Bi': 83, 'Po': 84, 'At': 85, 'Rn': 86, 'Fr': 87, 'Ra': 88, 'Ac': 89, 'Th': 90,
    'Pa': 91, 'U': 92, 'Np': 93, 'Pu': 94, 'Am': 95, 'Cm': 96, 'Bk': 97, 'Cf': 98, 'Es': 99, 'Fm': 100,
    'Md': 101, 'No': 102, 'Lr': 103, 'Rf': 104, 'Db': 105, 'Sg': 106, 'Bh': 107, 'Hs': 108, 'Mt': 109,
    'Ds': 110, 'Rg': 111, 'Cn': 112, 'Nh': 113, 'Fl': 114, 'Mc': 115, 'Lv': 116, 'Ts': 117, 'Og': 118
}
periodic_table_inv = {
    1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', 8: 'O', 9: 'F', 10: 'Ne',
    11: 'Na', 12: 'Mg', 13: 'Al', 14: 'Si', 15: 'P', 16: 'S', 17: 'Cl', 18: 'Ar',
    19: 'K', 20: 'Ca', 21: 'Sc', 22: 'Ti', 23: 'V', 24: 'Cr', 25: 'Mn', 26: 'Fe', 27: 'Co', 28: 'Ni', 29: 'Cu', 30: 'Zn',
    31: 'Ga', 32: 'Ge', 33: 'As', 34: 'Se', 35: 'Br', 36: 'Kr', 37: 'Rb', 38: 'Sr', 39: 'Y', 40: 'Zr',
    41: 'Nb', 42: 'Mo', 43: 'Tc', 44: 'Ru', 45: 'Rh', 46: 'Pd', 47: 'Ag', 48: 'Cd', 49: 'In', 50: 'Sn',
    51: 'Sb', 52: 'Te', 53: 'I', 54: 'Xe', 55: 'Cs', 56: 'Ba', 57: 'La', 58: 'Ce', 59: 'Pr', 60: 'Nd',
    61: 'Pm', 62: 'Sm', 63: 'Eu', 64: 'Gd', 65: 'Tb', 66: 'Dy', 67: 'Ho', 68: 'Er', 69: 'Tm', 70: 'Yb',
    71: 'Lu', 72: 'Hf', 73: 'Ta', 74: 'W', 75: 'Re', 76: 'Os', 77: 'Ir', 78: 'Pt', 79: 'Au', 80: 'Hg',
    81: 'Tl', 82: 'Pb', 83: 'Bi', 84: 'Po', 85: 'At', 86: 'Rn', 87: 'Fr', 88: 'Ra', 89: 'Ac', 90: 'Th',
    91: 'Pa', 92: 'U', 93: 'Np', 94: 'Pu', 95: 'Am', 96: 'Cm', 97: 'Bk', 98: 'Cf', 99: 'Es', 100: 'Fm',
    101: 'Md', 102: 'No', 103: 'Lr', 104: 'Rf', 105: 'Db', 106: 'Sg', 107: 'Bh', 108: 'Hs', 109: 'Mt',
    110: 'Ds', 111: 'Rg', 112: 'Cn', 113: 'Nh', 114: 'Fl', 115: 'Mc', 116: 'Lv', 117: 'Ts', 118: 'Og'
}

class db_msg(object):
    msg_BNS_number = ['1.1', '1.2', '1.3', '2.4', '2.5', '2.6', '2.7', '3.1', '3.2', '3.3', '3.4', '3.5', '3.6', '4.7', '4.8', '4.9', '4.10', '4.11', '4.12', '5.13', '5.14', '5.15', '5.16', '5.17', '6.18', '6.19', '6.20', '6.21', '6.22', '6.23', '7.24', '7.25', '7.26', '7.27', '7.28', '7.29', '7.30', '7.31', '8.32', '8.33', '8.34', '8.35', '8.36', '9.37', '9.38', '9.39', '9.40', '9.41', '10.42', '10.43', '10.44', '10.45', '10.46', '10.47', '10.48', '10.49', '11.50', '11.51', '11.52', '11.53', '11.54', '11.55', '11.56', '11.57', '12.58', '12.59', '12.60', '12.61', '12.62', '12.63', '12.64', '13.65', '13.66', '13.67', '13.68', '13.69', '13.70', '13.71', '13.72', '13.73', '13.74', '14.75', '14.76', '14.77', '14.78', '14.79', '14.80', '14.81', '14.82', '14.83', '14.84', '15.85', '15.86', '15.87', '15.88', '15.89', '15.90', '15.91', '16.1', '16.2', '16.3', '16.4', '16.5', '16.6', '17.7', '17.8', '17.9', '17.10', '17.11', '17.12', '17.13', '17.14', '17.15', '18.16', '18.17', '18.18', '18.19', '18.20', '18.21', '18.22', '18.23', '18.24', '19.25', '19.26', '19.27', '19.28', '19.29', '19.30', '20.31', '20.32', '20.33', '20.34', '20.35', '20.36', '20.37', '21.38', '21.39', '21.40', '21.41', '21.42', '21.43', '21.44', '22.45', '22.46', '22.47', '22.48', '23.49', '23.50', '23.51', '23.52', '24.53', '24.54', '24.55', '24.56', '25.57', '25.58', '25.59', '25.60', '25.61', '25.62', '25.63', '25.64', '25.65', '26.66', '26.67', '26.68', '26.69', '26.70', '26.71', '26.72', '26.73', '26.74', '26.75', '26.76', '26.77', '27.78', '27.79', '27.80', '27.81', '27.82', '27.83', '27.84', '27.85', '27.86', '28.87', '28.88', '28.89', '28.90', '28.91', '28.92', '28.93', '28.94', '28.95', '28.96', '28.97', '28.98', '29.99', '29.100', '29.101', '29.102', '29.103', '29.104', '29.105', '29.106', '29.107', '29.108', '29.109', '29.110', '30.111', '30.112', '30.113', '30.114', '30.115', '30.116', '30.117', '30.118', '30.119', '30.120', '30.121', '30.122', '31.123', '31.124', '31.125', '31.126', '31.127', '31.128', '31.129', '31.130', '31.131', '31.132', '31.133', '31.134', '32.135', '32.136', '32.137', '32.138', '32.139', '32.140', '32.141', '32.142', '32.143', '33.144', '33.145', '33.146', '33.147', '33.148', '33.149', '33.150', '33.151', '33.152', '33.153', '33.154', '33.155', '34.156', '34.157', '34.158', '34.159', '34.160', '34.161', '34.162', '34.163', '34.164', '35.165', '35.166', '35.167', '35.168', '35.169', '35.170', '35.171', '36.172', '36.173', '36.174', '36.175', '36.176', '36.177', '36.178', '36.179', '37.180', '37.181', '37.182', '37.183', '37.184', '37.185', '37.186', '38.187', '38.188', '38.189', '38.190', '38.191', '38.192', '38.193', '38.194', '39.195', '39.196', '39.197', '39.198', '39.199', '39.200', '39.201', '39.202', '40.203', '40.204', '40.205', '40.206', '40.207', '40.208', '40.209', '40.210', '41.211', '41.212', '41.213', '41.214', '41.215', '41.216', '41.217', '41.218', '42.219', '42.220', '42.221', '42.222', '42.223', '43.224', '43.225', '43.226', '43.227', '43.228', '44.229', '44.230', '44.231', '44.232', '44.233', '44.234', '45.235', '45.236', '45.237', '45.238', '45.239', '45.240', '46.241', '46.242', '46.243', '46.244', '46.245', '46.246', '46.247', '46.248', '47.249', '47.250', '47.251', '47.252', '47.253', '47.254', '47.255', '47.256', '48.257', '48.258', '48.259', '48.260', '48.261', '48.262', '48.263', '48.264', '49.265', '49.266', '49.267', '49.268', '49.269', '49.270', '49.271', '49.272', '49.273', '49.274', '49.275', '49.276', '50.277', '50.278', '50.279', '50.280', '50.281', '50.282', '50.283', '50.284', '50.285', '50.286', '50.287', '50.288', '51.289', '51.290', '51.291', '51.292', '51.293', '51.294', '51.295', '51.296', '51.297', '51.298', '51.299', '51.300', '51.301', '51.302', '51.303', '51.304', '52.305', '52.306', '52.307', '52.308', '52.309', '52.310', '52.311', '52.312', '52.313', '52.314', '52.315', '52.316', '52.317', '52.318', '52.319', '52.320', '53.321', '53.322', '53.323', '53.324', '53.325', '53.326', '53.327', '53.328', '53.329', '53.330', '53.331', '53.332', '53.333', '53.334', '53.335', '53.336', '54.337', '54.338', '54.339', '54.340', '54.341', '54.342', '54.343', '54.344', '54.345', '54.346', '54.347', '54.348', '54.349', '54.350', '54.351', '54.352', '55.353', '55.354', '55.355', '55.356', '55.357', '55.358', '55.359', '55.360', '55.361', '55.362', '55.363', '55.364', '56.365', '56.366', '56.367', '56.368', '56.369', '56.370', '56.371', '56.372', '56.373', '56.374', '56.375', '56.376', '57.377', '57.378', '57.379', '57.380', '57.381', '57.382', '57.383', '57.384', '57.385', '57.386', '57.387', '57.388', '57.389', '57.390', '57.391', '57.392', '58.393', '58.394', '58.395', '58.396', '58.397', '58.398', '58.399', '58.400', '58.401', '58.402', '58.403', '58.404', '59.405', '59.406', '59.407', '59.408', '59.409', '59.410', '59.411', '59.412', '59.413', '59.414', '59.415', '59.416', '60.417', '60.418', '60.419', '60.420', '60.421', '60.422', '60.423', '60.424', '60.425', '60.426', '60.427', '60.428', '60.429', '60.430', '60.431', '60.432', '61.433', '61.434', '61.435', '61.436', '61.437', '61.438', '61.439', '61.440', '62.441', '62.442', '62.443', '62.444', '62.445', '62.446', '62.447', '62.448', '62.449', '62.450', '62.451', '62.452', '62.453', '62.454', '62.455', '62.456', '63.457', '63.458', '63.459', '63.460', '63.461', '63.462', '63.463', '63.464', '63.465', '63.466', '63.467', '63.468', '64.469', '64.470', '64.471', '64.472', '64.473', '64.474', '64.475', '64.476', '64.477', '64.478', '64.479', '64.480', '65.481', '65.482', '65.483', '65.484', '65.485', '65.486', '65.487', '65.488', '65.489', '65.490', '66.491', '66.492', '66.493', '66.494', '66.495', '66.496', '66.497', '66.498', '66.499', '66.500', '67.501', '67.502', '67.503', '67.504', '67.505', '67.506', '67.507', '67.508', '67.509', '67.510', '68.511', '68.512', '68.513', '68.514', '68.515', '68.516', '68.517', '68.518', '68.519', '68.520', '69.521', '69.522', '69.523', '69.524', '69.525', '69.526', '70.527', '70.528', '70.529', '70.530', '70.531', '70.532', '71.533', '71.534', '71.535', '71.536', '71.537', '71.538', '72.539', '72.540', '72.541', '72.542', '72.543', '72.544', '72.545', '72.546', '72.547', '73.548', '73.549', '73.550', '73.551', '73.552', '73.553', '74.554', '74.555', '74.556', '74.557', '74.558', '74.559', '74.560', '74.561', '74.562', '75.1', '75.2', '75.3', '75.4', '75.5', '75.6', '76.7', '76.8', '76.9', '76.10', '76.11', '76.12', '77.13', '77.14', '77.15', '77.16', '77.17', '77.18', '78.19', '78.20', '78.21', '78.22', '78.23', '78.24', '79.25', '79.26', '79.27', '79.28', '80.29', '80.30', '80.31', '80.32', '81.33', '81.34', '81.35', '81.36', '81.37', '81.38', '82.39', '82.40', '82.41', '82.42', '83.43', '83.44', '83.45', '83.46', '83.47', '83.48', '83.49', '83.50', '84.51', '84.52', '84.53', '84.54', '84.55', '84.56', '84.57', '84.58', '85.59', '85.60', '85.61', '85.62', '85.63', '85.64', '85.65', '85.66', '86.67', '86.68', '86.69', '86.70', '86.71', '86.72', '86.73', '86.74', '87.75', '87.76', '87.77', '87.78', '87.79', '87.80', '88.81', '88.82', '88.83', '88.84', '88.85', '88.86', '89.87', '89.88', '89.89', '89.90', '89.91', '89.92', '89.93', '89.94', '90.95', '90.96', '90.97', '90.98', '90.99', '90.100', '90.101', '90.102', '91.103', '91.104', '91.105', '91.106', '91.107', '91.108', '91.109', '91.110', '92.111', '92.112', '92.113', '92.114', '92.115', '92.116', '92.117', '92.118', '93.119', '93.120', '93.121', '93.122', '93.123', '93.124', '93.125', '93.126', '94.127', '94.128', '94.129', '94.130', '94.131', '94.132', '94.133', '94.134', '95.135', '95.136', '95.137', '95.138', '95.139', '95.140', '95.141', '95.142', '96.143', '96.144', '96.145', '96.146', '96.147', '96.148', '96.149', '96.150', '97.151', '97.152', '97.153', '97.154', '97.155', '97.156', '98.157', '98.158', '98.159', '98.160', '98.161', '98.162', '99.163', '99.164', '99.165', '99.166', '99.167', '99.168', '99.169', '99.170', '100.171', '100.172', '100.173', '100.174', '100.175', '100.176', '100.177', '100.178', '101.179', '101.180', '101.181', '101.182', '101.183', '101.184', '101.185', '101.186', '102.187', '102.188', '102.189', '102.190', '102.191', '102.192', '102.193', '102.194', '103.195', '103.196', '103.197', '103.198', '103.199', '103.200', '103.201', '103.202', '104.203', '104.204', '104.205', '104.206', '104.207', '104.208', '104.209', '104.210', '105.211', '105.212', '105.213', '105.214', '105.215', '105.216', '105.217', '105.218', '106.219', '106.220', '106.221', '106.222', '106.223', '106.224', '106.225', '106.226', '107.227', '107.228', '107.229', '107.230', '107.231', '107.232', '108.233', '108.234', '108.235', '108.236', '108.237', '108.238', '109.239', '109.240', '109.241', '109.242', '109.243', '109.244', '110.245', '110.246', '110.247', '110.248', '110.249', '110.250', '111.251', '111.252', '111.253', '111.254', '111.255', '111.256', '111.257', '111.258', '112.259', '112.260', '112.261', '112.262', '112.263', '112.264', '112.265', '112.266', '113.267', '113.268', '113.269', '113.270', '113.271', '113.272', '113.273', '113.274', '114.275', '114.276', '114.277', '114.278', '114.279', '114.280', '114.281', '114.282', '115.283', '115.284', '115.285', '115.286', '115.287', '115.288', '115.289', '115.290', '116.291', '116.292', '116.293', '116.294', '116.295', '116.296', '116.297', '116.298', '117.299', '117.300', '117.301', '117.302', '117.303', '117.304', '117.305', '117.306', '118.307', '118.308', '118.309', '118.310', '118.311', '118.312', '118.313', '118.314', '119.315', '119.316', '119.317', '119.318', '119.319', '119.320', '120.321', '120.322', '120.323', '120.324', '120.325', '120.326', '121.327', '121.328', '121.329', '121.330', '121.331', '121.332', '122.333', '122.334', '122.335', '122.336', '122.337', '122.338', '123.339', '123.340', '123.341', '123.342', '123.343', '123.344', '123.345', '123.346', '123.347', '123.348', '123.349', '123.350', '124.351', '124.352', '124.353', '124.354', '124.355', '124.356', '124.357', '124.358', '124.359', '124.360', '124.361', '124.362', '125.363', '125.364', '125.365', '125.366', '125.367', '125.368', '125.369', '125.370', '125.371', '125.372', '125.373', '125.374', '126.375', '126.376', '126.377', '126.378', '126.379', '126.380', '126.381', '126.382', '126.383', '126.384', '126.385', '126.386', '127.387', '127.388', '127.389', '127.390', '127.391', '127.392', '127.393', '127.394', '127.395', '127.396', '127.397', '127.398', '128.399', '128.400', '128.401', '128.402', '128.403', '128.404', '128.405', '128.406', '128.407', '128.408', '128.409', '128.410', '129.411', '129.412', '129.413', '129.414', '129.415', '129.416', '129.417', '129.418', '129.419', '129.420', '129.421', '129.422', '130.423', '130.424', '130.425', '130.426', '130.427', '130.428', '130.429', '130.430', '130.431', '130.432', '130.433', '130.434', '131.435', '131.436', '131.437', '131.438', '131.439', '131.440', '131.441', '131.442', '131.443', '131.444', '131.445', '131.446', '132.447', '132.448', '132.449', '132.450', '132.451', '132.452', '132.453', '132.454', '132.455', '132.456', '132.457', '132.458', '133.459', '133.460', '133.461', '133.462', '133.463', '133.464', '133.465', '133.466', '133.467', '133.468', '133.469', '133.470', '134.471', '134.472', '134.473', '134.474', '134.475', '134.476', '134.477', '134.478', '134.479', '134.480', '134.481', '134.482', '135.483', '135.484', '135.485', '135.486', '135.487', '135.488', '135.489', '135.490', '135.491', '135.492', '135.493', '135.494', '136.495', '136.496', '136.497', '136.498', '136.499', '136.500', '136.501', '136.502', '136.503', '136.504', '136.505', '136.506', '137.507', '137.508', '137.509', '137.510', '137.511', '137.512', '137.513', '137.514', '137.515', '137.516', '137.517', '137.518', '138.519', '138.520', '138.521', '138.522', '138.523', '138.524', '138.525', '138.526', '138.527', '138.528', '138.529', '138.530', '139.531', '139.532', '139.533', '139.534', '139.535', '139.536', '139.537', '139.538', '139.539', '139.540', '140.541', '140.542', '140.543', '140.544', '140.545', '140.546', '140.547', '140.548', '140.549', '140.550', '141.551', '141.552', '141.553', '141.554', '141.555', '141.556', '141.557', '141.558', '141.559', '141.560', '142.561', '142.562', '142.563', '142.564', '142.565', '142.566', '142.567', '142.568', '142.569', '142.570', '143.1', '143.2', '143.3', '144.4', '144.5', '144.6', '145.7', '145.8', '145.9', '146.10', '146.11', '146.12', '147.13', '147.14', '147.15', '147.16', '148.17', '148.18', '148.19', '148.20', '149.21', '149.22', '149.23', '149.24', '150.25', '150.26', '150.27', '150.28', '151.29', '151.30', '151.31', '151.32', '152.33', '152.34', '152.35', '152.36', '153.37', '153.38', '153.39', '153.40', '154.41', '154.42', '154.43', '154.44', '155.45', '155.46', '155.47', '155.48', '156.49', '156.50', '156.51', '156.52', '157.53', '157.54', '157.55', '157.56', '158.57', '158.58', '158.59', '158.60', '159.61', '159.62', '159.63', '159.64', '160.65', '160.66', '160.67', '160.68', '161.69', '161.70', '161.71', '161.72', '162.73', '162.74', '162.75', '162.76', '162.77', '162.78', '163.79', '163.80', '163.81', '163.82', '163.83', '163.84', '164.85', '164.86', '164.87', '164.88', '164.89', '164.90', '165.91', '165.92', '165.93', '165.94', '165.95', '165.96', '166.97', '166.98', '166.99', '166.100', '166.101', '166.102', '167.103', '167.104', '167.105', '167.106', '167.107', '167.108', '168.109', '168.110', '168.111', '168.112', '169.113', '169.114', '169.115', '169.116', '170.117', '170.118', '170.119', '170.120', '171.121', '171.122', '171.123', '171.124', '172.125', '172.126', '172.127', '172.128', '173.129', '173.130', '173.131', '173.132', '174.133', '174.134', '174.135', '174.136', '175.137', '175.138', '175.139', '175.140', '175.141', '175.142', '176.143', '176.144', '176.145', '176.146', '176.147', '176.148', '177.149', '177.150', '177.151', '177.152', '177.153', '177.154', '178.155', '178.156', '178.157', '178.158', '178.159', '178.160', '179.161', '179.162', '179.163', '179.164', '179.165', '179.166', '180.167', '180.168', '180.169', '180.170', '180.171', '180.172', '181.173', '181.174', '181.175', '181.176', '181.177', '181.178', '182.179', '182.180', '182.181', '182.182', '182.183', '182.184', '183.185', '183.186', '183.187', '183.188', '183.189', '183.190', '184.191', '184.192', '184.193', '184.194', '184.195', '184.196', '185.197', '185.198', '185.199', '185.200', '185.201', '185.202', '186.203', '186.204', '186.205', '186.206', '186.207', '186.208', '187.209', '187.210', '187.211', '187.212', '187.213', '187.214', '188.215', '188.216', '188.217', '188.218', '188.219', '188.220', '189.221', '189.222', '189.223', '189.224', '189.225', '189.226', '190.227', '190.228', '190.229', '190.230', '190.231', '190.232', '191.233', '191.234', '191.235', '191.236', '191.237', '191.238', '191.239', '191.240', '191.241', '191.242', '192.243', '192.244', '192.245', '192.246', '192.247', '192.248', '192.249', '192.250', '192.251', '192.252', '193.253', '193.254', '193.255', '193.256', '193.257', '193.258', '193.259', '193.260', '193.261', '193.262', '194.263', '194.264', '194.265', '194.266', '194.267', '194.268', '194.269', '194.270', '194.271', '194.272', '195.1', '195.2', '195.3', '196.4', '196.5', '196.6', '197.7', '197.8', '198.9', '198.10', '198.11', '199.12', '199.13', '200.14', '200.15', '200.16', '200.17', '201.18', '201.19', '201.20', '201.21', '202.22', '202.23', '202.24', '202.25', '203.26', '203.27', '203.28', '203.29', '204.30', '204.31', '204.32', '205.33', '205.34', '205.35', '205.36', '206.37', '206.38', '206.39', '207.40', '207.41', '207.42', '207.43', '208.44', '208.45', '208.46', '208.47', '209.48', '209.49', '209.50', '209.51', '210.52', '210.53', '210.54', '210.55', '211.56', '211.57', '211.58', '212.59', '212.60', '212.61', '212.62', '213.63', '213.64', '213.65', '213.66', '214.67', '214.68', '214.69', '215.70', '215.71', '215.72', '215.73', '216.74', '216.75', '216.76', '216.77', '217.78', '217.79', '217.80', '218.81', '218.82', '218.83', '218.84', '219.85', '219.86', '219.87', '219.88', '220.89', '220.90', '220.91', '221.92', '221.93', '221.94', '221.95', '221.96', '221.97', '222.98', '222.99', '222.100', '222.101', '222.102', '222.103', '223.104', '223.105', '223.106', '223.107', '223.108', '223.109', '224.110', '224.111', '224.112', '224.113', '224.114', '224.115', '225.116', '225.117', '225.118', '225.119', '225.120', '225.121', '226.122', '226.123', '226.124', '226.125', '226.126', '226.127', '227.128', '227.129', '227.130', '227.131', '227.132', '227.133', '228.134', '228.135', '228.136', '228.137', '228.138', '228.139', '229.140', '229.141', '229.142', '229.143', '229.144', '230.145', '230.146', '230.147', '230.148', '230.149']
    msg_BNS_label = ['P1', "P11'", 'P_S1', 'P-1', "P-11'", "P-1'", 'P_S-1', 'P2', "P21'", "P2'", 'P_a2', 'P_b2', 'P_C2', 'P2_1', "P2_11'", "P2_1'", 'P_a2_1', 'P_b2_1', 'P_C2_1', 'C2', "C21'", "C2'", 'C_c2', 'C_a2', 'Pm', "Pm1'", "Pm'", 'P_am', 'P_bm', 'P_Cm', 'Pc', "Pc1'", "Pc'", 'P_ac', 'P_cc', 'P_bc', 'P_Cc', 'P_Ac', 'Cm', "Cm1'", "Cm'", 'C_cm', 'C_am', 'Cc', "Cc1'", "Cc'", 'C_cc', 'C_ac', 'P2/m', "P2/m1'", "P2'/m", "P2/m'", "P2'/m'", 'P_a2/m', 'P_b2/m', 'P_C2/m', 'P2_1/m', "P2_1/m1'", "P2_1'/m", "P2_1/m'", "P2_1'/m'", 'P_a2_1/m', 'P_b2_1/m', 'P_C2_1/m', 'C2/m', "C2/m1'", "C2'/m", "C2/m'", "C2'/m'", 'C_c2/m', 'C_a2/m', 'P2/c', "P2/c1'", "P2'/c", "P2/c'", "P2'/c'", 'P_a2/c', 'P_b2/c', 'P_c2/c', 'P_A2/c', 'P_C2/c', 'P2_1/c', "P2_1/c1'", "P2_1'/c", "P2_1/c'", "P2_1'/c'", 'P_a2_1/c', 'P_b2_1/c', 'P_c2_1/c', 'P_A2_1/c', 'P_C2_1/c', 'C2/c', "C2/c1'", "C2'/c", "C2/c'", "C2'/c'", 'C_c2/c', 'C_a2/c', 'P222', "P2221'", "P2'2'2", 'P_a222', 'P_C222', 'P_I222', 'P222_1', "P222_11'", "P2'2'2_1", "P22'2_1'", 'P_a222_1', 'P_c222_1', 'P_B222_1', 'P_C222_1', 'P_I222_1', 'P2_12_12', "P2_12_121'", "P2_1'2_1'2", "P2_12_1'2'", 'P_b2_12_12', 'P_c2_12_12', 'P_B2_12_12', 'P_C2_12_12', 'P_I2_12_12', 'P2_12_12_1', "P2_12_12_11'", "P2_1'2_1'2_1", 'P_c2_12_12_1', 'P_C2_12_12_1', 'P_I2_12_12_1', 'C222_1', "C222_11'", "C2'2'2_1", "C22'2_1'", 'C_c222_1', 'C_a222_1', 'C_A222_1', 'C222', "C2221'", "C2'2'2", "C22'2'", 'C_c222', 'C_a222', 'C_A222', 'F222', "F2221'", "F2'2'2", 'F_S222', 'I222', "I2221'", "I2'2'2", 'I_c222', 'I2_12_12_1', "I2_12_12_11'", "I2_1'2_1'2_1", 'I_c2_12_12_1', 'Pmm2', "Pmm21'", "Pm'm2'", "Pm'm'2", 'P_cmm2', 'P_amm2', 'P_Cmm2', 'P_Amm2', 'P_Imm2', 'Pmc2_1', "Pmc2_11'", "Pm'c2_1'", "Pmc'2_1'", "Pm'c'2_1", 'P_amc2_1', 'P_bmc2_1', 'P_cmc2_1', 'P_Amc2_1', 'P_Bmc2_1', 'P_Cmc2_1', 'P_Imc2_1', 'Pcc2', "Pcc21'", "Pc'c2'", "Pc'c'2", 'P_ccc2', 'P_acc2', 'P_Ccc2', 'P_Acc2', 'P_Icc2', 'Pma2', "Pma21'", "Pm'a2'", "Pma'2'", "Pm'a'2", 'P_ama2', 'P_bma2', 'P_cma2', 'P_Ama2', 'P_Bma2', 'P_Cma2', 'P_Ima2', 'Pca2_1', "Pca2_11'", "Pc'a2_1'", "Pca'2_1'", "Pc'a'2_1", 'P_aca2_1', 'P_bca2_1', 'P_cca2_1', 'P_Aca2_1', 'P_Bca2_1', 'P_Cca2_1', 'P_Ica2_1', 'Pnc2', "Pnc21'", "Pn'c2'", "Pnc'2'", "Pn'c'2", 'P_anc2', 'P_bnc2', 'P_cnc2', 'P_Anc2', 'P_Bnc2', 'P_Cnc2', 'P_Inc2', 'Pmn2_1', "Pmn2_11'", "Pm'n2_1'", "Pmn'2_1'", "Pm'n'2_1", 'P_amn2_1', 'P_bmn2_1', 'P_cmn2_1', 'P_Amn2_1', 'P_Bmn2_1', 'P_Cmn2_1', 'P_Imn2_1', 'Pba2', "Pba21'", "Pb'a2'", "Pb'a'2", 'P_cba2', 'P_bba2', 'P_Cba2', 'P_Aba2', 'P_Iba2', 'Pna2_1', "Pna2_11'", "Pn'a2_1'", "Pna'2_1'", "Pn'a'2_1", 'P_ana2_1', 'P_bna2_1', 'P_cna2_1', 'P_Ana2_1', 'P_Bna2_1', 'P_Cna2_1', 'P_Ina2_1', 'Pnn2', "Pnn21'", "Pn'n2'", "Pn'n'2", 'P_ann2', 'P_cnn2', 'P_Ann2', 'P_Cnn2', 'P_Inn2', 'Cmm2', "Cmm21'", "Cm'm2'", "Cm'm'2", 'C_cmm2', 'C_amm2', 'C_Amm2', 'Cmc2_1', "Cmc2_11'", "Cm'c2_1'", "Cmc'2_1'", "Cm'c'2_1", 'C_cmc2_1', 'C_amc2_1', 'C_Amc2_1', 'Ccc2', "Ccc21'", "Cc'c2'", "Cc'c'2", 'C_ccc2', 'C_acc2', 'C_Acc2', 'Amm2', "Amm21'", "Am'm2'", "Amm'2'", "Am'm'2", 'A_amm2', 'A_bmm2', 'A_Bmm2', 'Abm2', "Abm21'", "Ab'm2'", "Abm'2'", "Ab'm'2", 'A_abm2', 'A_bbm2', 'A_Bbm2', 'Ama2', "Ama21'", "Am'a2'", "Ama'2'", "Am'a'2", 'A_ama2', 'A_bma2', 'A_Bma2', 'Aba2', "Aba21'", "Ab'a2'", "Aba'2'", "Ab'a'2", 'A_aba2', 'A_bba2', 'A_Bba2', 'Fmm2', "Fmm21'", "Fm'm2'", "Fm'm'2", 'F_Smm2', 'Fdd2', "Fdd21'", "Fd'd2'", "Fd'd'2", 'F_Sdd2', 'Imm2', "Imm21'", "Im'm2'", "Im'm'2", 'I_cmm2', 'I_amm2', 'Iba2', "Iba21'", "Ib'a2'", "Ib'a'2", 'I_cba2', 'I_aba2', 'Ima2', "Ima21'", "Im'a2'", "Ima'2'", "Im'a'2", 'I_cma2', 'I_ama2', 'I_bma2', 'Pmmm', "Pmmm1'", "Pm'mm", "Pm'm'm", "Pm'm'm'", 'P_ammm', 'P_Cmmm', 'P_Immm', 'Pnnn', "Pnnn1'", "Pn'nn", "Pn'n'n", "Pn'n'n'", 'P_cnnn', 'P_Cnnn', 'P_Innn', 'Pccm', "Pccm1'", "Pc'cm", "Pccm'", "Pc'c'm", "Pc'cm'", "Pc'c'm'", 'P_accm', 'P_cccm', 'P_Bccm', 'P_Cccm', 'P_Iccm', 'Pban', "Pban1'", "Pb'an", "Pban'", "Pb'a'n", "Pb'an'", "Pb'a'n'", 'P_aban', 'P_cban', 'P_Aban', 'P_Cban', 'P_Iban', 'Pmma', "Pmma1'", "Pm'ma", "Pmm'a", "Pmma'", "Pm'm'a", "Pmm'a'", "Pm'ma'", "Pm'm'a'", 'P_amma', 'P_bmma', 'P_cmma', 'P_Amma', 'P_Bmma', 'P_Cmma', 'P_Imma', 'Pnna', "Pnna1'", "Pn'na", "Pnn'a", "Pnna'", "Pn'n'a", "Pnn'a'", "Pn'na'", "Pn'n'a'", 'P_anna', 'P_bnna', 'P_cnna', 'P_Anna', 'P_Bnna', 'P_Cnna', 'P_Inna', 'Pmna', "Pmna1'", "Pm'na", "Pmn'a", "Pmna'", "Pm'n'a", "Pmn'a'", "Pm'na'", "Pm'n'a'", 'P_amna', 'P_bmna', 'P_cmna', 'P_Amna', 'P_Bmna', 'P_Cmna', 'P_Imna', 'Pcca', "Pcca1'", "Pc'ca", "Pcc'a", "Pcca'", "Pc'c'a", "Pcc'a'", "Pc'ca'", "Pc'c'a'", 'P_acca', 'P_bcca', 'P_ccca', 'P_Acca', 'P_Bcca', 'P_Ccca', 'P_Icca', 'Pbam', "Pbam1'", "Pb'am", "Pbam'", "Pb'a'm", "Pb'am'", "Pb'a'm'", 'P_abam', 'P_cbam', 'P_Abam', 'P_Cbam', 'P_Ibam', 'Pccn', "Pccn1'", "Pc'cn", "Pccn'", "Pc'c'n", "Pc'cn'", "Pc'c'n'", 'P_bccn', 'P_cccn', 'P_Accn', 'P_Cccn', 'P_Iccn', 'Pbcm', "Pbcm1'", "Pb'cm", "Pbc'm", "Pbcm'", "Pb'c'm", "Pbc'm'", "Pb'cm'", "Pb'c'm'", 'P_abcm', 'P_bbcm', 'P_cbcm', 'P_Abcm', 'P_Bbcm', 'P_Cbcm', 'P_Ibcm', 'Pnnm', "Pnnm1'", "Pn'nm", "Pnnm'", "Pn'n'm", "Pnn'm'", "Pn'n'm'", 'P_annm', 'P_cnnm', 'P_Bnnm', 'P_Cnnm', 'P_Innm', 'Pmmn', "Pmmn1'", "Pm'mn", "Pmmn'", "Pm'm'n", "Pmm'n'", "Pm'm'n'", 'P_bmmn', 'P_cmmn', 'P_Bmmn', 'P_Cmmn', 'P_Immn', 'Pbcn', "Pbcn1'", "Pb'cn", "Pbc'n", "Pbcn'", "Pb'c'n", "Pbc'n'", "Pb'cn'", "Pb'c'n'", 'P_abcn', 'P_bbcn', 'P_cbcn', 'P_Abcn', 'P_Bbcn', 'P_Cbcn', 'P_Ibcn', 'Pbca', "Pbca1'", "Pb'ca", "Pb'c'a", "Pb'c'a'", 'P_abca', 'P_Cbca', 'P_Ibca', 'Pnma', "Pnma1'", "Pn'ma", "Pnm'a", "Pnma'", "Pn'm'a", "Pnm'a'", "Pn'ma'", "Pn'm'a'", 'P_anma', 'P_bnma', 'P_cnma', 'P_Anma', 'P_Bnma', 'P_Cnma', 'P_Inma', 'Cmcm', "Cmcm1'", "Cm'cm", "Cmc'm", "Cmcm'", "Cm'c'm", "Cmc'm'", "Cm'cm'", "Cm'c'm'", 'C_cmcm', 'C_amcm', 'C_Amcm', 'Cmca', "Cmca1'", "Cm'ca", "Cmc'a", "Cmca'", "Cm'c'a", "Cmc'a'", "Cm'ca'", "Cm'c'a'", 'C_cmca', 'C_amca', 'C_Amca', 'Cmmm', "Cmmm1'", "Cm'mm", "Cmmm'", "Cm'm'm", "Cmm'm'", "Cm'm'm'", 'C_cmmm', 'C_ammm', 'C_Ammm', 'Cccm', "Cccm1'", "Cc'cm", "Cccm'", "Cc'c'm", "Ccc'm'", "Cc'c'm'", 'C_cccm', 'C_accm', 'C_Accm', 'Cmma', "Cmma1'", "Cm'ma", "Cmma'", "Cm'm'a", "Cmm'a'", "Cm'm'a'", 'C_cmma', 'C_amma', 'C_Amma', 'Ccca', "Ccca1'", "Cc'ca", "Ccca'", "Cc'c'a", "Ccc'a'", "Cc'c'a'", 'C_ccca', 'C_acca', 'C_Acca', 'Fmmm', "Fmmm1'", "Fm'mm", "Fm'm'm", "Fm'm'm'", 'F_Smmm', 'Fddd', "Fddd1'", "Fd'dd", "Fd'd'd", "Fd'd'd'", 'F_Sddd', 'Immm', "Immm1'", "Im'mm", "Im'm'm", "Im'm'm'", 'I_cmmm', 'Ibam', "Ibam1'", "Ib'am", "Ibam'", "Ib'a'm", "Iba'm'", "Ib'a'm'", 'I_cbam', 'I_bbam', 'Ibca', "Ibca1'", "Ib'ca", "Ib'c'a", "Ib'c'a'", 'I_cbca', 'Imma', "Imma1'", "Im'ma", "Imma'", "Im'm'a", "Imm'a'", "Im'm'a'", 'I_cmma', 'I_bmma', 'P4', "P41'", "P4'", 'P_c4', 'P_C4', 'P_I4', 'P4_1', "P4_11'", "P4_1'", 'P_c4_1', 'P_C4_1', 'P_I4_1', 'P4_2', "P4_21'", "P4_2'", 'P_c4_2', 'P_C4_2', 'P_I4_2', 'P4_3', "P4_31'", "P4_3'", 'P_c4_3', 'P_C4_3', 'P_I4_3', 'I4', "I41'", "I4'", 'I_c4', 'I4_1', "I4_11'", "I4_1'", 'I_c4_1', 'P-4', "P-41'", "P-4'", 'P_c-4', 'P_C-4', 'P_I-4', 'I-4', "I-41'", "I-4'", 'I_c-4', 'P4/m', "P4/m1'", "P4'/m", "P4/m'", "P4'/m'", 'P_c4/m', 'P_C4/m', 'P_I4/m', 'P4_2/m', "P4_2/m1'", "P4_2'/m", "P4_2/m'", "P4_2'/m'", 'P_c4_2/m', 'P_C4_2/m', 'P_I4_2/m', 'P4/n', "P4/n1'", "P4'/n", "P4/n'", "P4'/n'", 'P_c4/n', 'P_C4/n', 'P_I4/n', 'P4_2/n', "P4_2/n1'", "P4_2'/n", "P4_2/n'", "P4_2'/n'", 'P_c4_2/n', 'P_C4_2/n', 'P_I4_2/n', 'I4/m', "I4/m1'", "I4'/m", "I4/m'", "I4'/m'", 'I_c4/m', 'I4_1/a', "I4_1/a1'", "I4_1'/a", "I4_1/a'", "I4_1'/a'", 'I_c4_1/a', 'P422', "P4221'", "P4'22'", "P42'2'", "P4'2'2", 'P_c422', 'P_C422', 'P_I422', 'P42_12', "P42_121'", "P4'2_12'", "P42_1'2'", "P4'2_1'2", 'P_c42_12', 'P_C42_12', 'P_I42_12', 'P4_122', "P4_1221'", "P4_1'22'", "P4_12'2'", "P4_1'2'2", 'P_c4_122', 'P_C4_122', 'P_I4_122', 'P4_12_12', "P4_12_121'", "P4_1'2_12'", "P4_12_1'2'", "P4_1'2_1'2", 'P_c4_12_12', 'P_C4_12_12', 'P_I4_12_12', 'P4_222', "P4_2221'", "P4_2'22'", "P4_22'2'", "P4_2'2'2", 'P_c4_222', 'P_C4_222', 'P_I4_222', 'P4_22_12', "P4_22_121'", "P4_2'2_12'", "P4_22_1'2'", "P4_2'2_1'2", 'P_c4_22_12', 'P_C4_22_12', 'P_I4_22_12', 'P4_322', "P4_3221'", "P4_3'22'", "P4_32'2'", "P4_3'2'2", 'P_c4_322', 'P_C4_322', 'P_I4_322', 'P4_32_12', "P4_32_121'", "P4_3'2_12'", "P4_32_1'2'", "P4_3'2_1'2", 'P_c4_32_12', 'P_C4_32_12', 'P_I4_32_12', 'I422', "I4221'", "I4'22'", "I42'2'", "I4'2'2", 'I_c422', 'I4_122', "I4_1221'", "I4_1'22'", "I4_12'2'", "I4_1'2'2", 'I_c4_122', 'P4mm', "P4mm1'", "P4'm'm", "P4'mm'", "P4m'm'", 'P_c4mm', 'P_C4mm', 'P_I4mm', 'P4bm', "P4bm1'", "P4'b'm", "P4'bm'", "P4b'm'", 'P_c4bm', 'P_C4bm', 'P_I4bm', 'P4_2cm', "P4_2cm1'", "P4_2'c'm", "P4_2'cm'", "P4_2c'm'", 'P_c4_2cm', 'P_C4_2cm', 'P_I4_2cm', 'P4_2nm', "P4_2nm1'", "P4_2'n'm", "P4_2'nm'", "P4_2n'm'", 'P_c4_2nm', 'P_C4_2nm', 'P_I4_2nm', 'P4cc', "P4cc1'", "P4'c'c", "P4'cc'", "P4c'c'", 'P_c4cc', 'P_C4cc', 'P_I4cc', 'P4nc', "P4nc1'", "P4'n'c", "P4'nc'", "P4n'c'", 'P_c4nc', 'P_C4nc', 'P_I4nc', 'P4_2mc', "P4_2mc1'", "P4_2'm'c", "P4_2'mc'", "P4_2m'c'", 'P_c4_2mc', 'P_C4_2mc', 'P_I4_2mc', 'P4_2bc', "P4_2bc1'", "P4_2'b'c", "P4_2'bc'", "P4_2b'c'", 'P_c4_2bc', 'P_C4_2bc', 'P_I4_2bc', 'I4mm', "I4mm1'", "I4'm'm", "I4'mm'", "I4m'm'", 'I_c4mm', 'I4cm', "I4cm1'", "I4'c'm", "I4'cm'", "I4c'm'", 'I_c4cm', 'I4_1md', "I4_1md1'", "I4_1'm'd", "I4_1'md'", "I4_1m'd'", 'I_c4_1md', 'I4_1cd', "I4_1cd1'", "I4_1'c'd", "I4_1'cd'", "I4_1c'd'", 'I_c4_1cd', 'P-42m', "P-42m1'", "P-4'2'm", "P-4'2m'", "P-42'm'", 'P_c-42m', 'P_C-42m', 'P_I-42m', 'P-42c', "P-42c1'", "P-4'2'c", "P-4'2c'", "P-42'c'", 'P_c-42c', 'P_C-42c', 'P_I-42c', 'P-42_1m', "P-42_1m1'", "P-4'2_1'm", "P-4'2_1m'", "P-42_1'm'", 'P_c-42_1m', 'P_C-42_1m', 'P_I-42_1m', 'P-42_1c', "P-42_1c1'", "P-4'2_1'c", "P-4'2_1c'", "P-42_1'c'", 'P_c-42_1c', 'P_C-42_1c', 'P_I-42_1c', 'P-4m2', "P-4m21'", "P-4'm'2", "P-4'm2'", "P-4m'2'", 'P_c-4m2', 'P_C-4m2', 'P_I-4m2', 'P-4c2', "P-4c21'", "P-4'c'2", "P-4'c2'", "P-4c'2'", 'P_c-4c2', 'P_C-4c2', 'P_I-4c2', 'P-4b2', "P-4b21'", "P-4'b'2", "P-4'b2'", "P-4b'2'", 'P_c-4b2', 'P_C-4b2', 'P_I-4b2', 'P-4n2', "P-4n21'", "P-4'n'2", "P-4'n2'", "P-4n'2'", 'P_c-4n2', 'P_C-4n2', 'P_I-4n2', 'I-4m2', "I-4m21'", "I-4'm'2", "I-4'm2'", "I-4m'2'", 'I_c-4m2', 'I-4c2', "I-4c21'", "I-4'c'2", "I-4'c2'", "I-4c'2'", 'I_c-4c2', 'I-42m', "I-42m1'", "I-4'2'm", "I-4'2m'", "I-42'm'", 'I_c-42m', 'I-42d', "I-42d1'", "I-4'2'd", "I-4'2d'", "I-42'd'", 'I_c-42d', 'P4/mmm', "P4/mmm1'", "P4/m'mm", "P4'/mm'm", "P4'/mmm'", "P4'/m'm'm", "P4/mm'm'", "P4'/m'mm'", "P4/m'm'm'", 'P_c4/mmm', 'P_C4/mmm', 'P_I4/mmm', 'P4/mcc', "P4/mcc1'", "P4/m'cc", "P4'/mc'c", "P4'/mcc'", "P4'/m'c'c", "P4/mc'c'", "P4'/m'cc'", "P4/m'c'c'", 'P_c4/mcc', 'P_C4/mcc', 'P_I4/mcc', 'P4/nbm', "P4/nbm1'", "P4/n'bm", "P4'/nb'm", "P4'/nbm'", "P4'/n'b'm", "P4/nb'm'", "P4'/n'bm'", "P4/n'b'm'", 'P_c4/nbm', 'P_C4/nbm', 'P_I4/nbm', 'P4/nnc', "P4/nnc1'", "P4/n'nc", "P4'/nn'c", "P4'/nnc'", "P4'/n'n'c", "P4/nn'c'", "P4'/n'nc'", "P4/n'n'c'", 'P_c4/nnc', 'P_C4/nnc', 'P_I4/nnc', 'P4/mbm', "P4/mbm1'", "P4/m'bm", "P4'/mb'm", "P4'/mbm'", "P4'/m'b'm", "P4/mb'm'", "P4'/m'bm'", "P4/m'b'm'", 'P_c4/mbm', 'P_C4/mbm', 'P_I4/mbm', 'P4/mnc', "P4/mnc1'", "P4/m'nc", "P4'/mn'c", "P4'/mnc'", "P4'/m'n'c", "P4/mn'c'", "P4'/m'nc'", "P4/m'n'c'", 'P_c4/mnc', 'P_C4/mnc', 'P_I4/mnc', 'P4/nmm', "P4/nmm1'", "P4/n'mm", "P4'/nm'm", "P4'/nmm'", "P4'/n'm'm", "P4/nm'm'", "P4'/n'mm'", "P4/n'm'm'", 'P_c4/nmm', 'P_C4/nmm', 'P_I4/nmm', 'P4/ncc', "P4/ncc1'", "P4/n'cc", "P4'/nc'c", "P4'/ncc'", "P4'/n'c'c", "P4/nc'c'", "P4'/n'cc'", "P4/n'c'c'", 'P_c4/ncc', 'P_C4/ncc', 'P_I4/ncc', 'P4_2/mmc', "P4_2/mmc1'", "P4_2/m'mc", "P4_2'/mm'c", "P4_2'/mmc'", "P4_2'/m'm'c", "P4_2/mm'c'", "P4_2'/m'mc'", "P4_2/m'm'c'", 'P_c4_2/mmc', 'P_C4_2/mmc', 'P_I4_2/mmc', 'P4_2/mcm', "P4_2/mcm1'", "P4_2/m'cm", "P4_2'/mc'm", "P4_2'/mcm'", "P4_2'/m'c'm", "P4_2/mc'm'", "P4_2'/m'cm'", "P4_2/m'c'm'", 'P_c4_2/mcm', 'P_C4_2/mcm', 'P_I4_2/mcm', 'P4_2/nbc', "P4_2/nbc1'", "P4_2/n'bc", "P4_2'/nb'c", "P4_2'/nbc'", "P4_2'/n'b'c", "P4_2/nb'c'", "P4_2'/n'bc'", "P4_2/n'b'c'", 'P_c4_2/nbc', 'P_C4_2/nbc', 'P_I4_2/nbc', 'P4_2/nnm', "P4_2/nnm1'", "P4_2/n'nm", "P4_2'/nn'm", "P4_2'/nnm'", "P4_2'/n'n'm", "P4_2/nn'm'", "P4_2'/n'nm'", "P4_2/n'n'm'", 'P_c4_2/nnm', 'P_C4_2/nnm', 'P_I4_2/nnm', 'P4_2/mbc', "P4_2/mbc1'", "P4_2/m'bc", "P4_2'/mb'c", "P4_2'/mbc'", "P4_2'/m'b'c", "P4_2/mb'c'", "P4_2'/m'bc'", "P4_2/m'b'c'", 'P_c4_2/mbc', 'P_C4_2/mbc', 'P_I4_2/mbc', 'P4_2/mnm', "P4_2/mnm1'", "P4_2/m'nm", "P4_2'/mn'm", "P4_2'/mnm'", "P4_2'/m'n'm", "P4_2/mn'm'", "P4_2'/m'nm'", "P4_2/m'n'm'", 'P_c4_2/mnm', 'P_C4_2/mnm', 'P_I4_2/mnm', 'P4_2/nmc', "P4_2/nmc1'", "P4_2/n'mc", "P4_2'/nm'c", "P4_2'/nmc'", "P4_2'/n'm'c", "P4_2/nm'c'", "P4_2'/n'mc'", "P4_2/n'm'c'", 'P_c4_2/nmc', 'P_C4_2/nmc', 'P_I4_2/nmc', 'P4_2/ncm', "P4_2/ncm1'", "P4_2/n'cm", "P4_2'/nc'm", "P4_2'/ncm'", "P4_2'/n'c'm", "P4_2/nc'm'", "P4_2'/n'cm'", "P4_2/n'c'm'", 'P_c4_2/ncm', 'P_C4_2/ncm', 'P_I4_2/ncm', 'I4/mmm', "I4/mmm1'", "I4/m'mm", "I4'/mm'm", "I4'/mmm'", "I4'/m'm'm", "I4/mm'm'", "I4'/m'mm'", "I4/m'm'm'", 'I_c4/mmm', 'I4/mcm', "I4/mcm1'", "I4/m'cm", "I4'/mc'm", "I4'/mcm'", "I4'/m'c'm", "I4/mc'm'", "I4'/m'cm'", "I4/m'c'm'", 'I_c4/mcm', 'I4_1/amd', "I4_1/amd1'", "I4_1/a'md", "I4_1'/am'd", "I4_1'/amd'", "I4_1'/a'm'd", "I4_1/am'd'", "I4_1'/a'md'", "I4_1/a'm'd'", 'I_c4_1/amd', 'I4_1/acd', "I4_1/acd1'", "I4_1/a'cd", "I4_1'/ac'd", "I4_1'/acd'", "I4_1'/a'c'd", "I4_1/ac'd'", "I4_1'/a'cd'", "I4_1/a'c'd'", 'I_c4_1/acd', 'P3', "P31'", 'P_c3', 'P3_1', "P3_11'", 'P_c3_1', 'P3_2', "P3_21'", 'P_c3_2', 'R3', "R31'", 'R_I3', 'P-3', "P-31'", "P-3'", 'P_c-3', 'R-3', "R-31'", "R-3'", 'R_I-3', 'P312', "P3121'", "P312'", 'P_c312', 'P321', "P3211'", "P32'1", 'P_c321', 'P3_112', "P3_1121'", "P3_112'", 'P_c3_112', 'P3_121', "P3_1211'", "P3_12'1", 'P_c3_121', 'P3_212', "P3_2121'", "P3_212'", 'P_c3_212', 'P3_221', "P3_2211'", "P3_22'1", 'P_c3_221', 'R32', "R321'", "R32'", 'R_I32', 'P3m1', "P3m11'", "P3m'1", 'P_c3m1', 'P31m', "P31m1'", "P31m'", 'P_c31m', 'P3c1', "P3c11'", "P3c'1", 'P_c3c1', 'P31c', "P31c1'", "P31c'", 'P_c31c', 'R3m', "R3m1'", "R3m'", 'R_I3m', 'R3c', "R3c1'", "R3c'", 'R_I3c', 'P-31m', "P-31m1'", "P-3'1m", "P-3'1m'", "P-31m'", 'P_c-31m', 'P-31c', "P-31c1'", "P-3'1c", "P-3'1c'", "P-31c'", 'P_c-31c', 'P-3m1', "P-3m11'", "P-3'm1", "P-3'm'1", "P-3m'1", 'P_c-3m1', 'P-3c1', "P-3c11'", "P-3'c1", "P-3'c'1", "P-3c'1", 'P_c-3c1', 'R-3m', "R-3m1'", "R-3'm", "R-3'm'", "R-3m'", 'R_I-3m', 'R-3c', "R-3c1'", "R-3'c", "R-3'c'", "R-3c'", 'R_I-3c', 'P6', "P61'", "P6'", 'P_c6', 'P6_1', "P6_11'", "P6_1'", 'P_c6_1', 'P6_5', "P6_51'", "P6_5'", 'P_c6_5', 'P6_2', "P6_21'", "P6_2'", 'P_c6_2', 'P6_4', "P6_41'", "P6_4'", 'P_c6_4', 'P6_3', "P6_31'", "P6_3'", 'P_c6_3', 'P-6', "P-61'", "P-6'", 'P_c-6', 'P6/m', "P6/m1'", "P6'/m", "P6/m'", "P6'/m'", 'P_c6/m', 'P6_3/m', "P6_3/m1'", "P6_3'/m", "P6_3/m'", "P6_3'/m'", 'P_c6_3/m', 'P622', "P6221'", "P6'2'2", "P6'22'", "P62'2'", 'P_c622', 'P6_122', "P6_1221'", "P6_1'2'2", "P6_1'22'", "P6_12'2'", 'P_c6_122', 'P6_522', "P6_5221'", "P6_5'2'2", "P6_5'22'", "P6_52'2'", 'P_c6_522', 'P6_222', "P6_2221'", "P6_2'2'2", "P6_2'22'", "P6_22'2'", 'P_c6_222', 'P6_422', "P6_4221'", "P6_4'2'2", "P6_4'22'", "P6_42'2'", 'P_c6_422', 'P6_322', "P6_3221'", "P6_3'2'2", "P6_3'22'", "P6_32'2'", 'P_c6_322', 'P6mm', "P6mm1'", "P6'm'm", "P6'mm'", "P6m'm'", 'P_c6mm', 'P6cc', "P6cc1'", "P6'c'c", "P6'cc'", "P6c'c'", 'P_c6cc', 'P6_3cm', "P6_3cm1'", "P6_3'c'm", "P6_3'cm'", "P6_3c'm'", 'P_c6_3cm', 'P6_3mc', "P6_3mc1'", "P6_3'm'c", "P6_3'mc'", "P6_3m'c'", 'P_c6_3mc', 'P-6m2', "P-6m21'", "P-6'm'2", "P-6'm2'", "P-6m'2'", 'P_c-6m2', 'P-6c2', "P-6c21'", "P-6'c'2", "P-6'c2'", "P-6c'2'", 'P_c-6c2', 'P-62m', "P-62m1'", "P-6'2'm", "P-6'2m'", "P-62'm'", 'P_c-62m', 'P-62c', "P-62c1'", "P-6'2'c", "P-6'2c'", "P-62'c'", 'P_c-62c', 'P6/mmm', "P6/mmm1'", "P6/m'mm", "P6'/mm'm", "P6'/mmm'", "P6'/m'm'm", "P6'/m'mm'", "P6/mm'm'", "P6/m'm'm'", 'P_c6/mmm', 'P6/mcc', "P6/mcc1'", "P6/m'cc", "P6'/mc'c", "P6'/mcc'", "P6'/m'c'c", "P6'/m'cc'", "P6/mc'c'", "P6/m'c'c'", 'P_c6/mcc', 'P6_3/mcm', "P6_3/mcm1'", "P6_3/m'cm", "P6_3'/mc'm", "P6_3'/mcm'", "P6_3'/m'c'm", "P6_3'/m'cm'", "P6_3/mc'm'", "P6_3/m'c'm'", 'P_c6_3/mcm', 'P6_3/mmc', "P6_3/mmc1'", "P6_3/m'mc", "P6_3'/mm'c", "P6_3'/mmc'", "P6_3'/m'm'c", "P6_3'/m'mc'", "P6_3/mm'c'", "P6_3/m'm'c'", 'P_c6_3/mmc', 'P23', "P231'", 'P_I23', 'F23', "F231'", 'F_S23', 'I23', "I231'", 'P2_13', "P2_131'", 'P_I2_13', 'I2_13', "I2_131'", 'Pm-3', "Pm-31'", "Pm'-3'", 'P_Im-3', 'Pn-3', "Pn-31'", "Pn'-3'", 'P_In-3', 'Fm-3', "Fm-31'", "Fm'-3'", 'F_Sm-3', 'Fd-3', "Fd-31'", "Fd'-3'", 'F_Sd-3', 'Im-3', "Im-31'", "Im'-3'", 'Pa-3', "Pa-31'", "Pa'-3'", 'P_Ia-3', 'Ia-3', "Ia-31'", "Ia'-3'", 'P432', "P4321'", "P4'32'", 'P_I432', 'P4_232', "P4_2321'", "P4_2'32'", 'P_I4_232', 'F432', "F4321'", "F4'32'", 'F_S432', 'F4_132', "F4_1321'", "F4_1'32'", 'F_S4_132', 'I432', "I4321'", "I4'32'", 'P4_332', "P4_3321'", "P4_3'32'", 'P_I4_332', 'P4_132', "P4_1321'", "P4_1'32'", 'P_I4_132', 'I4_132', "I4_1321'", "I4_1'32'", 'P-43m', "P-43m1'", "P-4'3m'", 'P_I-43m', 'F-43m', "F-43m1'", "F-4'3m'", 'F_S-43m', 'I-43m', "I-43m1'", "I-4'3m'", 'P-43n', "P-43n1'", "P-4'3n'", 'P_I-43n', 'F-43c', "F-43c1'", "F-4'3c'", 'F_S-43c', 'I-43d', "I-43d1'", "I-4'3d'", 'Pm-3m', "Pm-3m1'", "Pm'-3'm", "Pm-3m'", "Pm'-3'm'", 'P_Im-3m', 'Pn-3n', "Pn-3n1'", "Pn'-3'n", "Pn-3n'", "Pn'-3'n'", 'P_In-3n', 'Pm-3n', "Pm-3n1'", "Pm'-3'n", "Pm-3n'", "Pm'-3'n'", 'P_Im-3n', 'Pn-3m', "Pn-3m1'", "Pn'-3'm", "Pn-3m'", "Pn'-3'm'", 'P_In-3m', 'Fm-3m', "Fm-3m1'", "Fm'-3'm", "Fm-3m'", "Fm'-3'm'", 'F_Sm-3m', 'Fm-3c', "Fm-3c1'", "Fm'-3'c", "Fm-3c'", "Fm'-3'c'", 'F_Sm-3c', 'Fd-3m', "Fd-3m1'", "Fd'-3'm", "Fd-3m'", "Fd'-3'm'", 'F_Sd-3m', 'Fd-3c', "Fd-3c1'", "Fd'-3'c", "Fd-3c'", "Fd'-3'c'", 'F_Sd-3c', 'Im-3m', "Im-3m1'", "Im'-3'm", "Im-3m'", "Im'-3'm'", 'Ia-3d', "Ia-3d1'", "Ia'-3'd", "Ia-3d'", "Ia'-3'd'"]
    msg_OG_number = ['1.1.1', '1.2.2', '1.3.3', '2.1.4', '2.2.5', '2.3.6', '2.4.7', '3.1.8', '3.2.9', '3.3.10', '3.4.11', '3.5.12', '5.5.23', '4.1.15', '4.2.16', '4.3.17', '4.4.18', '3.7.14', '5.6.24', '5.1.19', '5.2.20', '5.3.21', '5.4.22', '3.6.13', '6.1.25', '6.2.26', '6.3.27', '6.4.28', '6.5.29', '8.5.42', '7.1.32', '7.2.33', '7.3.34', '7.4.35', '6.7.31', '7.5.36', '9.4.48', '8.7.44', '8.1.38', '8.2.39', '8.3.40', '8.4.41', '6.6.30', '9.1.45', '9.2.46', '9.3.47', '8.6.43', '7.6.37', '10.1.49', '10.2.50', '10.3.51', '10.4.52', '10.5.53', '10.6.54', '10.7.55', '12.7.72', '11.1.59', '11.2.60', '11.3.61', '11.4.62', '11.5.63', '11.6.64', '10.9.57', '12.9.74', '12.1.66', '12.2.67', '12.3.68', '12.4.69', '12.5.70', '12.6.71', '10.8.56', '13.1.77', '13.2.78', '13.3.79', '13.4.80', '13.5.81', '13.6.82', '13.7.83', '10.10.58', '12.10.75', '15.6.97', '14.1.86', '14.2.87', '14.3.88', '14.4.89', '14.5.90', '14.6.91', '13.9.85', '11.7.65', '12.11.76', '15.7.98', '15.1.92', '15.2.93', '15.3.94', '15.4.95', '15.5.96', '12.8.73', '13.8.84', '16.1.99', '16.2.100', '16.3.101', '16.4.102', '21.6.134', '23.4.148', '17.1.106', '17.2.107', '17.3.108', '17.4.109', '17.5.110', '16.7.105', '21.10.138', '20.5.126', '24.5.154', '18.1.113', '18.2.114', '18.3.115', '18.4.116', '17.7.112', '18.5.117', '20.7.128', '21.9.137', '23.5.149', '19.1.119', '19.2.120', '19.3.121', '18.6.118', '20.6.127', '24.4.153', '20.1.122', '20.2.123', '20.3.124', '20.4.125', '21.8.136', '17.6.111', '22.5.144', '21.1.129', '21.2.130', '21.3.131', '21.4.132', '21.5.133', '16.5.103', '22.4.143', '22.1.140', '22.2.141', '22.3.142', '16.6.104', '23.1.145', '23.2.146', '23.3.147', '21.7.135', '24.1.150', '24.2.151', '24.3.152', '21.11.139', '25.1.155', '25.2.156', '25.3.157', '25.4.158', '25.5.159', '25.6.160', '35.6.241', '38.7.271', '44.5.328', '26.1.168', '26.2.169', '26.3.170', '26.4.171', '26.5.172', '26.6.173', '26.7.174', '25.10.164', '38.11.275', '39.10.287', '36.6.254', '46.8.345', '27.1.178', '27.2.179', '27.3.180', '27.4.181', '25.11.165', '27.5.182', '37.5.262', '39.12.289', '45.5.335', '28.1.185', '28.2.186', '28.3.187', '28.4.188', '28.5.189', '25.12.166', '28.6.190', '28.7.191', '40.6.296', '39.7.284', '35.10.245', '46.6.343', '29.1.198', '29.2.199', '29.3.200', '29.4.201', '29.5.202', '26.10.177', '29.6.203', '28.10.194', '41.7.306', '39.11.288', '36.7.255', '45.6.336', '30.1.205', '30.2.206', '30.3.207', '30.4.208', '30.5.209', '30.6.210', '27.7.184', '28.12.196', '38.12.276', '41.9.308', '37.6.263', '46.9.346', '31.1.212', '31.2.213', '31.3.214', '31.4.215', '31.5.216', '26.9.176', '31.6.217', '28.11.195', '40.8.298', '38.10.274', '36.8.256', '44.6.329', '32.1.219', '32.2.220', '32.3.221', '32.4.222', '32.5.223', '28.9.193', '35.11.246', '41.6.305', '45.7.337', '33.1.226', '33.2.227', '33.3.228', '33.4.229', '33.5.230', '31.7.218', '29.7.204', '32.6.224', '40.7.297', '41.8.307', '36.9.257', '46.7.344', '34.1.231', '34.2.232', '34.3.233', '34.4.234', '30.7.211', '32.7.225', '40.9.299', '37.7.264', '44.7.330', '35.1.236', '35.2.237', '35.3.238', '35.4.239', '35.5.240', '25.7.161', '42.5.313', '36.1.249', '36.2.250', '36.3.251', '36.4.252', '36.5.253', '35.8.243', '26.8.175', '42.7.315', '37.1.258', '37.2.259', '37.3.260', '37.4.261', '35.9.244', '27.6.183', '42.8.316', '38.1.265', '38.2.266', '38.3.267', '38.4.268', '38.5.269', '38.6.270', '25.8.162', '42.6.314', '39.1.278', '39.2.279', '39.3.280', '39.4.281', '39.5.282', '39.6.283', '25.13.167', '42.9.317', '40.1.291', '40.2.292', '40.3.293', '40.4.294', '40.5.295', '38.9.273', '28.8.192', '42.10.318', '41.1.300', '41.2.301', '41.3.302', '41.4.303', '41.5.304', '39.9.286', '28.13.197', '42.11.319', '42.1.309', '42.2.310', '42.3.311', '42.4.312', '25.9.163', '43.1.320', '43.2.321', '43.3.322', '43.4.323', '34.5.235', '44.1.324', '44.2.325', '44.3.326', '44.4.327', '35.7.242', '38.8.272', '45.1.331', '45.2.332', '45.3.333', '45.4.334', '35.13.248', '39.13.290', '46.1.338', '46.2.339', '46.3.340', '46.4.341', '46.5.342', '35.12.247', '38.13.277', '39.8.285', '47.1.347', '47.2.348', '47.3.349', '47.4.350', '47.5.351', '47.6.352', '65.9.553', '71.6.626', '48.1.358', '48.2.359', '48.3.360', '48.4.361', '48.5.362', '50.10.386', '66.13.576', '71.9.629', '49.1.364', '49.2.365', '49.3.366', '49.4.367', '49.5.368', '49.6.369', '49.7.370', '49.8.371', '47.10.356', '67.9.585', '66.8.571', '72.8.637', '50.1.377', '50.2.378', '50.3.379', '50.4.380', '50.5.381', '50.6.382', '50.7.383', '49.12.375', '50.8.384', '68.8.601', '65.17.561', '72.13.642', '51.1.387', '51.2.388', '51.3.389', '51.4.390', '51.5.391', '51.6.392', '51.7.393', '51.8.394', '51.9.395', '47.9.355', '51.10.396', '51.11.397', '63.10.520', '65.13.557', '67.14.590', '74.8.657', '52.1.406', '52.2.407', '52.3.408', '52.4.409', '52.5.410', '52.6.411', '52.7.412', '52.8.413', '52.9.414', '53.13.427', '50.9.385', '54.13.440', '66.12.575', '63.17.527', '68.11.604', '74.9.658', '53.1.415', '53.2.416', '53.3.417', '53.4.418', '53.5.419', '53.6.420', '53.7.421', '53.8.422', '53.9.423', '51.15.401', '53.10.424', '49.11.374', '66.9.572', '65.16.560', '64.15.542', '74.10.659', '54.1.428', '54.2.429', '54.3.430', '54.4.431', '54.5.432', '54.6.433', '54.7.434', '54.8.435', '54.9.436', '49.10.373', '54.10.437', '51.18.404', '64.11.538', '67.13.589', '68.9.602', '73.7.649', '55.1.441', '55.2.442', '55.3.443', '55.4.444', '55.5.445', '55.6.446', '55.7.447', '51.16.402', '55.8.448', '64.10.537', '65.15.559', '72.11.640', '56.1.451', '56.2.452', '56.3.453', '56.4.454', '56.5.455', '56.6.456', '56.7.457', '54.12.439', '59.10.487', '64.14.541', '66.10.573', '72.10.639', '57.1.458', '57.2.459', '57.3.460', '57.4.461', '57.5.462', '57.6.463', '57.7.464', '57.8.465', '57.9.466', '57.10.467', '51.17.403', '51.13.399', '67.15.591', '64.13.540', '63.11.521', '72.9.638', '58.1.471', '58.2.472', '58.3.473', '58.4.474', '58.5.475', '58.6.476', '58.7.477', '53.12.426', '55.10.450', '63.15.525', '66.11.574', '71.8.628', '59.1.478', '59.2.479', '59.3.480', '59.4.481', '59.5.482', '59.6.483', '59.7.484', '51.14.400', '59.8.485', '63.12.522', '65.14.558', '71.7.627', '60.1.488', '60.2.489', '60.3.490', '60.4.491', '60.5.492', '60.6.493', '60.7.494', '60.8.495', '60.9.496', '54.11.438', '57.13.470', '53.11.425', '64.17.544', '68.10.603', '63.16.526', '72.12.641', '61.1.497', '61.2.498', '61.3.499', '61.4.500', '61.5.501', '57.12.469', '64.16.543', '73.6.648', '62.1.502', '62.2.503', '62.3.504', '62.4.505', '62.5.506', '62.6.507', '62.7.508', '62.8.509', '62.9.510', '59.9.486', '55.9.449', '57.11.468', '63.13.523', '63.14.524', '64.12.539', '74.11.660', '63.1.511', '63.2.512', '63.3.513', '63.4.514', '63.5.515', '63.6.516', '63.7.517', '63.8.518', '63.9.519', '65.12.556', '51.12.398', '69.7.611', '64.1.528', '64.2.529', '64.3.530', '64.4.531', '64.5.532', '64.6.533', '64.7.534', '64.8.535', '64.9.536', '67.11.587', '51.19.405', '69.10.614', '65.1.545', '65.2.546', '65.3.547', '65.4.548', '65.5.549', '65.6.550', '65.7.551', '65.8.552', '47.7.353', '69.6.610', '66.1.564', '66.2.565', '66.3.566', '66.4.567', '66.5.568', '66.6.569', '66.7.570', '65.11.555', '49.9.372', '69.9.613', '67.1.577', '67.2.578', '67.3.579', '67.4.580', '67.5.581', '67.6.582', '67.7.583', '67.8.584', '47.11.357', '69.8.612', '68.1.594', '68.2.595', '68.3.596', '68.4.597', '68.5.598', '68.6.599', '68.7.600', '67.12.588', '49.13.376', '69.11.615', '69.1.605', '69.2.606', '69.3.607', '69.4.608', '69.5.609', '47.8.354', '70.1.616', '70.2.617', '70.3.618', '70.4.619', '70.5.620', '48.6.363', '71.1.621', '71.2.622', '71.3.623', '71.4.624', '71.5.625', '65.10.554', '72.1.630', '72.2.631', '72.3.632', '72.4.633', '72.5.634', '72.6.635', '72.7.636', '65.19.563', '67.10.586', '73.1.643', '73.2.644', '73.3.645', '73.4.646', '73.5.647', '67.17.593', '74.1.650', '74.2.651', '74.3.652', '74.4.653', '74.5.654', '74.6.655', '74.7.656', '67.16.592', '65.18.562', '75.1.661', '75.2.662', '75.3.663', '75.4.664', '75.5.665', '79.4.686', '76.1.668', '76.2.669', '76.3.670', '77.4.675', '76.4.671', '80.4.691', '77.1.672', '77.2.673', '77.3.674', '75.7.667', '77.5.676', '79.5.687', '78.1.679', '78.2.680', '78.3.681', '77.7.678', '78.4.682', '80.5.692', '79.1.683', '79.2.684', '79.3.685', '75.6.666', '80.1.688', '80.2.689', '80.3.690', '77.6.677', '81.1.693', '81.2.694', '81.3.695', '81.4.696', '81.5.697', '82.4.702', '82.1.699', '82.2.700', '82.3.701', '81.6.698', '83.1.703', '83.2.704', '83.3.705', '83.4.706', '83.5.707', '83.6.708', '83.7.709', '87.6.738', '84.1.713', '84.2.714', '84.3.715', '84.4.716', '84.5.717', '83.9.711', '84.6.718', '87.7.739', '85.1.720', '85.2.721', '85.3.722', '85.4.723', '85.5.724', '85.6.725', '83.10.712', '87.8.740', '86.1.727', '86.2.728', '86.3.729', '86.4.730', '86.5.731', '85.7.726', '84.7.719', '87.9.741', '87.1.733', '87.2.734', '87.3.735', '87.4.736', '87.5.737', '83.8.710', '88.1.742', '88.2.743', '88.3.744', '88.4.745', '88.5.746', '86.6.732', '89.1.747', '89.2.748', '89.3.749', '89.4.750', '89.5.751', '89.6.752', '89.7.753', '97.6.810', '90.1.757', '90.2.758', '90.3.759', '90.4.760', '90.5.761', '90.6.762', '89.10.756', '97.8.812', '91.1.764', '91.2.765', '91.3.766', '91.4.767', '91.5.768', '93.6.781', '91.6.769', '98.6.819', '92.1.771', '92.2.772', '92.3.773', '92.4.774', '92.5.775', '94.6.791', '91.7.770', '98.8.821', '93.1.776', '93.2.777', '93.3.778', '93.4.779', '93.5.780', '89.9.755', '93.7.782', '97.7.811', '94.1.786', '94.2.787', '94.3.788', '94.4.789', '94.5.790', '90.7.763', '93.10.785', '97.9.813', '95.1.793', '95.2.794', '95.3.795', '95.4.796', '95.5.797', '93.9.784', '95.6.798', '98.7.820', '96.1.800', '96.2.801', '96.3.802', '96.4.803', '96.5.804', '94.7.792', '95.7.799', '98.9.822', '97.1.805', '97.2.806', '97.3.807', '97.4.808', '97.5.809', '89.8.754', '98.1.814', '98.2.815', '98.3.816', '98.4.817', '98.5.818', '93.8.783', '99.1.823', '99.2.824', '99.3.825', '99.4.826', '99.5.827', '99.6.828', '99.7.829', '107.6.888', '100.1.836', '100.2.837', '100.3.838', '100.4.839', '100.5.840', '100.6.841', '99.12.834', '108.6.897', '101.1.845', '101.2.846', '101.3.847', '101.4.848', '101.5.849', '99.9.831', '105.6.876', '108.7.898', '102.1.852', '102.2.853', '102.3.854', '102.4.855', '102.5.856', '100.7.842', '105.7.877', '107.7.889', '103.1.859', '103.2.860', '103.3.861', '103.4.862', '103.5.863', '99.11.833', '103.6.864', '108.9.900', '104.1.866', '104.2.867', '104.3.868', '104.4.869', '104.5.870', '100.9.844', '103.7.865', '107.9.891', '105.1.871', '105.2.872', '105.3.873', '105.4.874', '105.5.875', '99.10.832', '101.6.850', '107.8.890', '106.1.878', '106.2.879', '106.3.880', '106.4.881', '106.5.882', '100.8.843', '101.7.851', '108.8.899', '107.1.883', '107.2.884', '107.3.885', '107.4.886', '107.5.887', '99.8.830', '108.1.892', '108.2.893', '108.3.894', '108.4.895', '108.5.896', '99.13.835', '109.1.901', '109.2.902', '109.3.903', '109.4.904', '109.5.905', '102.6.857', '110.1.906', '110.2.907', '110.3.908', '110.4.909', '110.5.910', '102.7.858', '111.1.911', '111.2.912', '111.3.913', '111.4.914', '111.5.915', '111.6.916', '115.7.947', '121.6.990', '112.1.922', '112.2.923', '112.3.924', '112.4.925', '112.5.926', '111.9.919', '116.6.956', '121.8.992', '113.1.929', '113.2.930', '113.3.931', '113.4.932', '113.5.933', '113.6.934', '115.10.950', '121.7.991', '114.1.936', '114.2.937', '114.3.938', '114.4.939', '114.5.940', '113.7.935', '116.7.957', '121.9.993', '115.1.941', '115.2.942', '115.3.943', '115.4.944', '115.5.945', '115.6.946', '111.7.917', '119.6.976', '116.1.951', '116.2.952', '116.3.953', '116.4.954', '116.5.955', '115.9.949', '112.6.927', '120.6.983', '117.1.958', '117.2.959', '117.3.960', '117.4.961', '117.5.962', '117.6.963', '111.10.920', '120.7.984', '118.1.965', '118.2.966', '118.3.967', '118.4.968', '118.5.969', '117.7.964', '112.7.928', '119.7.977', '119.1.971', '119.2.972', '119.3.973', '119.4.974', '119.5.975', '111.8.918', '120.1.978', '120.2.979', '120.3.980', '120.4.981', '120.5.982', '111.11.921', '121.1.985', '121.2.986', '121.3.987', '121.4.988', '121.5.989', '115.8.948', '122.1.994', '122.2.995', '122.3.996', '122.4.997', '122.5.998', '118.6.970', '123.1.999', '123.2.1000', '123.3.1001', '123.4.1002', '123.5.1003', '123.6.1004', '123.7.1005', '123.8.1006', '123.9.1007', '123.10.1008', '123.11.1009', '139.10.1188', '124.1.1018', '124.2.1019', '124.3.1020', '124.4.1021', '124.5.1022', '124.6.1023', '124.7.1024', '124.8.1025', '124.9.1026', '123.15.1013', '124.10.1027', '140.10.1205', '125.1.1031', '125.2.1032', '125.3.1033', '125.4.1034', '125.5.1035', '125.6.1036', '125.7.1037', '125.8.1038', '125.9.1039', '125.10.1040', '123.18.1016', '140.17.1212', '126.1.1044', '126.2.1045', '126.3.1046', '126.4.1047', '126.5.1048', '126.6.1049', '126.7.1050', '126.8.1051', '126.9.1052', '125.13.1043', '124.13.1030', '139.17.1195', '127.1.1053', '127.2.1054', '127.3.1055', '127.4.1056', '127.5.1057', '127.6.1058', '127.7.1059', '127.8.1060', '127.9.1061', '127.10.1062', '123.17.1015', '140.15.1210', '128.1.1066', '128.2.1067', '128.3.1068', '128.4.1069', '128.5.1070', '128.6.1071', '128.7.1072', '128.8.1073', '128.9.1074', '127.13.1065', '124.12.1029', '139.15.1193', '129.1.1075', '129.2.1076', '129.3.1077', '129.4.1078', '129.5.1079', '129.6.1080', '129.7.1081', '129.8.1082', '129.9.1083', '129.10.1084', '123.16.1014', '139.11.1189', '130.1.1088', '130.2.1089', '130.3.1090', '130.4.1091', '130.5.1092', '130.6.1093', '130.7.1094', '130.8.1095', '130.9.1096', '129.13.1087', '124.11.1028', '140.11.1206', '131.1.1097', '131.2.1098', '131.3.1099', '131.4.1100', '131.5.1101', '131.6.1102', '131.7.1103', '131.8.1104', '131.9.1105', '123.14.1012', '132.10.1119', '139.13.1191', '132.1.1110', '132.2.1111', '132.3.1112', '132.4.1113', '132.5.1114', '132.6.1115', '132.7.1116', '132.8.1117', '132.9.1118', '123.13.1011', '131.10.1106', '140.13.1208', '133.1.1123', '133.2.1124', '133.3.1125', '133.4.1126', '133.5.1127', '133.6.1128', '133.7.1129', '133.8.1130', '133.9.1131', '125.12.1042', '132.13.1122', '140.14.1209', '134.1.1132', '134.2.1133', '134.3.1134', '134.4.1135', '134.5.1136', '134.6.1137', '134.7.1138', '134.8.1139', '134.9.1140', '125.11.1041', '131.13.1109', '139.14.1192', '135.1.1143', '135.2.1144', '135.3.1145', '135.4.1146', '135.5.1147', '135.6.1148', '135.7.1149', '135.8.1150', '135.9.1151', '127.12.1064', '132.12.1121', '140.12.1207', '136.1.1152', '136.2.1153', '136.3.1154', '136.4.1155', '136.5.1156', '136.6.1157', '136.7.1158', '136.8.1159', '136.9.1160', '127.11.1063', '131.12.1108', '139.12.1190', '137.1.1161', '137.2.1162', '137.3.1163', '137.4.1164', '137.5.1165', '137.6.1166', '137.7.1167', '137.8.1168', '137.9.1169', '129.12.1086', '132.11.1120', '139.16.1194', '138.1.1170', '138.2.1171', '138.3.1172', '138.4.1173', '138.5.1174', '138.6.1175', '138.7.1176', '138.8.1177', '138.9.1178', '129.11.1085', '131.11.1107', '140.16.1211', '139.1.1179', '139.2.1180', '139.3.1181', '139.4.1182', '139.5.1183', '139.6.1184', '139.7.1185', '139.8.1186', '139.9.1187', '123.12.1010', '140.1.1196', '140.2.1197', '140.3.1198', '140.4.1199', '140.5.1200', '140.6.1201', '140.7.1202', '140.8.1203', '140.9.1204', '123.19.1017', '141.1.1213', '141.2.1214', '141.3.1215', '141.4.1216', '141.5.1217', '141.6.1218', '141.7.1219', '141.8.1220', '141.9.1221', '134.10.1141', '142.1.1222', '142.2.1223', '142.3.1224', '142.4.1225', '142.5.1226', '142.6.1227', '142.7.1228', '142.8.1229', '142.9.1230', '134.11.1142', '143.1.1231', '143.2.1232', '143.3.1233', '144.1.1234', '144.2.1235', '145.3.1239', '145.1.1237', '145.2.1238', '144.3.1236', '146.1.1240', '146.2.1241', '146.3.1242', '147.1.1243', '147.2.1244', '147.3.1245', '147.4.1246', '148.1.1247', '148.2.1248', '148.3.1249', '148.4.1250', '149.1.1251', '149.2.1252', '149.3.1253', '149.4.1254', '150.1.1255', '150.2.1256', '150.3.1257', '150.4.1258', '151.1.1259', '151.2.1260', '151.3.1261', '153.4.1270', '152.1.1263', '152.2.1264', '152.3.1265', '154.4.1274', '153.1.1267', '153.2.1268', '153.3.1269', '151.4.1262', '154.1.1271', '154.2.1272', '154.3.1273', '152.4.1266', '155.1.1275', '155.2.1276', '155.3.1277', '155.4.1278', '156.1.1279', '156.2.1280', '156.3.1281', '156.4.1282', '157.1.1284', '157.2.1285', '157.3.1286', '157.4.1287', '158.1.1289', '158.2.1290', '158.3.1291', '156.5.1283', '159.1.1292', '159.2.1293', '159.3.1294', '157.5.1288', '160.1.1295', '160.2.1296', '160.3.1297', '160.4.1298', '161.1.1300', '161.2.1301', '161.3.1302', '160.5.1299', '162.1.1303', '162.2.1304', '162.3.1305', '162.4.1306', '162.5.1307', '162.6.1308', '163.1.1310', '163.2.1311', '163.3.1312', '163.4.1313', '163.5.1314', '162.7.1309', '164.1.1315', '164.2.1316', '164.3.1317', '164.4.1318', '164.5.1319', '164.6.1320', '165.1.1322', '165.2.1323', '165.3.1324', '165.4.1325', '165.5.1326', '164.7.1321', '166.1.1327', '166.2.1328', '166.3.1329', '166.4.1330', '166.5.1331', '166.6.1332', '167.1.1334', '167.2.1335', '167.3.1336', '167.4.1337', '167.5.1338', '166.7.1333', '168.1.1339', '168.2.1340', '168.3.1341', '168.4.1342', '169.1.1344', '169.2.1345', '169.3.1346', '171.4.1353', '170.1.1347', '170.2.1348', '170.3.1349', '172.5.1359', '171.1.1350', '171.2.1351', '171.3.1352', '172.4.1358', '172.1.1355', '172.2.1356', '172.3.1357', '171.5.1354', '173.1.1360', '173.2.1361', '173.3.1362', '168.5.1343', '174.1.1363', '174.2.1364', '174.3.1365', '174.4.1366', '175.1.1367', '175.2.1368', '175.3.1369', '175.4.1370', '175.5.1371', '175.6.1372', '176.1.1374', '176.2.1375', '176.3.1376', '176.4.1377', '176.5.1378', '175.7.1373', '177.1.1379', '177.2.1380', '177.3.1381', '177.4.1382', '177.5.1383', '177.6.1384', '178.1.1386', '178.2.1387', '178.3.1388', '178.4.1389', '178.5.1390', '180.6.1401', '179.1.1391', '179.2.1392', '179.3.1393', '179.4.1394', '179.5.1395', '181.7.1409', '180.1.1396', '180.2.1397', '180.3.1398', '180.4.1399', '180.5.1400', '181.6.1408', '181.1.1403', '181.2.1404', '181.3.1405', '181.4.1406', '181.5.1407', '180.7.1402', '182.1.1410', '182.2.1411', '182.3.1412', '182.4.1413', '182.5.1414', '177.7.1385', '183.1.1415', '183.2.1416', '183.3.1417', '183.4.1418', '183.5.1419', '183.6.1420', '184.1.1424', '184.2.1425', '184.3.1426', '184.4.1427', '184.5.1428', '183.9.1423', '185.1.1429', '185.2.1430', '185.3.1431', '185.4.1432', '185.5.1433', '183.7.1421', '186.1.1434', '186.2.1435', '186.3.1436', '186.4.1437', '186.5.1438', '183.8.1422', '187.1.1439', '187.2.1440', '187.3.1441', '187.4.1442', '187.5.1443', '187.6.1444', '188.1.1446', '188.2.1447', '188.3.1448', '188.4.1449', '188.5.1450', '187.7.1445', '189.1.1451', '189.2.1452', '189.3.1453', '189.4.1454', '189.5.1455', '189.6.1456', '190.1.1458', '190.2.1459', '190.3.1460', '190.4.1461', '190.5.1462', '189.7.1457', '191.1.1463', '191.2.1464', '191.3.1465', '191.4.1466', '191.5.1467', '191.6.1468', '191.7.1469', '191.8.1470', '191.9.1471', '191.10.1472', '192.1.1476', '192.2.1477', '192.3.1478', '192.4.1479', '192.5.1480', '192.6.1481', '192.7.1482', '192.8.1483', '192.9.1484', '191.13.1475', '193.1.1485', '193.2.1486', '193.3.1487', '193.4.1488', '193.5.1489', '193.6.1490', '193.7.1491', '193.8.1492', '193.9.1493', '191.11.1473', '194.1.1494', '194.2.1495', '194.3.1496', '194.4.1497', '194.5.1498', '194.6.1499', '194.7.1500', '194.8.1501', '194.9.1502', '191.12.1474', '195.1.1503', '195.2.1504', '197.3.1510', '196.1.1506', '196.2.1507', '195.3.1505', '197.1.1508', '197.2.1509', '198.1.1511', '198.2.1512', '199.3.1515', '199.1.1513', '199.2.1514', '200.1.1516', '200.2.1517', '200.3.1518', '204.4.1533', '201.1.1520', '201.2.1521', '201.3.1522', '204.5.1534', '202.1.1524', '202.2.1525', '202.3.1526', '200.4.1519', '203.1.1527', '203.2.1528', '203.3.1529', '201.4.1523', '204.1.1530', '204.2.1531', '204.3.1532', '205.1.1535', '205.2.1536', '205.3.1537', '206.4.1541', '206.1.1538', '206.2.1539', '206.3.1540', '207.1.1542', '207.2.1543', '207.3.1544', '211.4.1559', '208.1.1546', '208.2.1547', '208.3.1548', '211.5.1560', '209.1.1550', '209.2.1551', '209.3.1552', '207.4.1545', '210.1.1553', '210.2.1554', '210.3.1555', '208.4.1549', '211.1.1556', '211.2.1557', '211.3.1558', '212.1.1561', '212.2.1562', '212.3.1563', '214.4.1570', '213.1.1564', '213.2.1565', '213.3.1566', '214.5.1571', '214.1.1567', '214.2.1568', '214.3.1569', '215.1.1572', '215.2.1573', '215.3.1574', '217.4.1583', '216.1.1577', '216.2.1578', '216.3.1579', '215.4.1575', '217.1.1580', '217.2.1581', '217.3.1582', '218.1.1585', '218.2.1586', '218.3.1587', '217.5.1584', '219.1.1588', '219.2.1589', '219.3.1590', '215.5.1576', '220.1.1591', '220.2.1592', '220.3.1593', '221.1.1594', '221.2.1595', '221.3.1596', '221.4.1597', '221.5.1598', '229.6.1643', '222.1.1601', '222.2.1602', '222.3.1603', '222.4.1604', '222.5.1605', '229.9.1646', '223.1.1606', '223.2.1607', '223.3.1608', '223.4.1609', '223.5.1610', '229.8.1645', '224.1.1611', '224.2.1612', '224.3.1613', '224.4.1614', '224.5.1615', '229.7.1644', '225.1.1618', '225.2.1619', '225.3.1620', '225.4.1621', '225.5.1622', '221.6.1599', '226.1.1623', '226.2.1624', '226.3.1625', '226.4.1626', '226.5.1627', '221.7.1600', '227.1.1628', '227.2.1629', '227.3.1630', '227.4.1631', '227.5.1632', '224.6.1616', '228.1.1633', '228.2.1634', '228.3.1635', '228.4.1636', '228.5.1637', '224.7.1617', '229.1.1638', '229.2.1639', '229.3.1640', '229.4.1641', '229.5.1642', '230.1.1647', '230.2.1648', '230.3.1649', '230.4.1650', '230.5.1651']
    msg_OG_label = ['P1', "P11'", 'P_2s1', 'P-1', "P-11'", "P-1'", 'P_2s-1', 'P2', "P21'", "P2'", 'P_2a2', 'P_2b2', 'C_P2', 'P2_1', "P2_11'", "P2_1'", 'P_2a2_1', "P_2b2'", "C_P2'", 'C2', "C21'", "C2'", 'C_2c2', 'P_C2', 'Pm', "Pm1'", "Pm'", 'P_2am', 'P_2bm', 'C_Pm', 'Pc', "Pc1'", "Pc'", 'P_2ac', "P_2cm'", 'P_2bc', 'C_Pc', "C_Pm'", 'Cm', "Cm1'", "Cm'", 'C_2cm', 'P_Cm', 'Cc', "Cc1'", "Cc'", "C_2cm'", 'P_Cc', 'P2/m', "P2/m1'", "P2'/m", "P2/m'", "P2'/m'", 'P_2a2/m', 'P_2b2/m', 'C_P2/m', 'P2_1/m', "P2_1/m1'", "P2_1'/m", "P2_1/m'", "P2_1'/m'", 'P_2a2_1/m', "P_2b2'/m", "C_P2'/m", 'C2/m', "C2/m1'", "C2'/m", "C2/m'", "C2'/m'", 'C_2c2/m', 'P_C2/m', 'P2/c', "P2/c1'", "P2'/c", "P2/c'", "P2'/c'", 'P_2a2/c', 'P_2b2/c', "P_2c2/m'", "C_P2/m'", 'C_P2/c', 'P2_1/c', "P2_1/c1'", "P2_1'/c", "P2_1/c'", "P2_1'/c'", 'P_2a2_1/c', "P_2b2'/c", "P_2c2_1/m'", "C_P2'/m'", "C_P2'/c", 'C2/c', "C2/c1'", "C2'/c", "C2/c'", "C2'/c'", "C_2c2/m'", 'P_C2/c', 'P222', "P2221'", "P2'2'2", 'P_2a222', 'C_P222', 'I_P222', 'P222_1', "P222_11'", "P2'2'2_1", "P22'2_1'", 'P_2a222_1', "P_2c22'2'", "C_P22'2'", 'C_P222_1', "I_P2_1'2_1'2_1", 'P2_12_12', "P2_12_121'", "P2_1'2_1'2", "P2_12_1'2'", "P_2a2'2'2_1", 'P_2c2_12_12', "C_P22'2_1'", "C_P2'2'2", "I_P2'2'2", 'P2_12_12_1', "P2_12_12_11'", "P2_1'2_1'2_1", "P_2c2_12_1'2'", "C_P2'2'2_1", 'I_P2_12_12_1', 'C222_1', "C222_11'", "C2'2'2_1", "C22'2_1'", "C_2c22'2'", 'P_C222_1', "F_C22'2'", 'C222', "C2221'", "C2'2'2", "C22'2'", 'C_2c222', 'P_C222', 'F_C222', 'F222', "F2221'", "F2'2'2", 'P_F222', 'I222', "I2221'", "I2'2'2", 'C_I222', 'I2_12_12_1', "I2_12_12_11'", "I2_1'2_1'2_1", "C_I2'22'", 'Pmm2', "Pmm21'", "Pm'm2'", "Pm'm'2", 'P_2cmm2', 'P_2amm2', 'C_Pmm2', 'A_Pmm2', 'I_Pmm2', 'Pmc2_1', "Pmc2_11'", "Pm'c2_1'", "Pmc'2_1'", "Pm'c'2_1", 'P_2amc2_1', 'P_2bmc2_1', "P_2cmm'2'", "A_Pmm'2'", "A_Pb'm2'", 'C_Pmc2_1', "I_Pma'2'", 'Pcc2', "Pcc21'", "Pc'c2'", "Pc'c'2", "P_2cm'm'2", 'P_2acc2', 'C_Pcc2', "A_Pb'm'2", 'I_Pba2', 'Pma2', "Pma21'", "Pm'a2'", "Pma'2'", "Pm'a'2", "P_2am'm'2", 'P_2bma2', 'P_2cma2', 'A_Pma2', 'A_Pbm2', "C_Pm'm2'", 'I_Pma2', 'Pca2_1', "Pca2_11'", "Pc'a2_1'", "Pca'2_1'", "Pc'a'2_1", "P_2bm'c'2_1", 'P_2bca2_1', "P_2cm'a2'", "A_Pb'a2'", "A_Pbm'2'", "C_Pm'c2_1'", "I_Pba'2'", 'Pnc2', "Pnc21'", "Pn'c2'", "Pnc'2'", "Pn'c'2", 'P_2anc2', "P_2bc'c2'", "P_2cm'a'2", "A_Pm'm'2", "A_Pb'a'2", "C_Pc'c2'", "I_Pm'a'2", 'Pmn2_1', "Pmn2_11'", "Pm'n2_1'", "Pmn'2_1'", "Pm'n'2_1", "P_2amc'2_1'", 'P_2bmn2_1', "P_2cma'2'", "A_Pma'2'", "A_Pm'm2'", "C_Pmc'2_1'", "I_Pmm'2'", 'Pba2', "Pba21'", "Pb'a2'", "Pb'a'2", 'P_2cba2', "P_2bm'a2'", "C_Pm'm'2", 'A_Pba2', "I_Pb'a'2", 'Pna2_1', "Pna2_11'", "Pn'a2_1'", "Pna'2_1'", "Pn'a'2_1", "P_2bm'n2_1'", "P_2bc'a'2_1", "P_2cb'a2'", "A_Pm'a2'", "A_Pba'2'", "C_Pm'c'2_1", "I_Pm'a2'", 'Pnn2', "Pnn21'", "Pn'n2'", "Pn'n'2", "P_2anc'2'", "P_2cb'a'2", "A_Pm'a'2", "C_Pc'c'2", "I_Pm'm'2", 'Cmm2', "Cmm21'", "Cm'm2'", "Cm'm'2", 'C_2cmm2', 'P_Cmm2', 'F_Cmm2', 'Cmc2_1', "Cmc2_11'", "Cm'c2_1'", "Cmc'2_1'", "Cm'c'2_1", "C_2cm'm2'", 'P_Cmc2_1', "F_Cmm'2'", 'Ccc2', "Ccc21'", "Cc'c2'", "Cc'c'2", "C_2cm'm'2", 'P_Ccc2', "F_Cm'm'2", 'Amm2', "Amm21'", "Am'm2'", "Amm'2'", "Am'm'2", 'A_2amm2', 'P_Amm2', 'F_Amm2', 'Abm2', "Abm21'", "Ab'm2'", "Abm'2'", "Ab'm'2", 'A_2abm2', "P_Am'm'2", "F_Am'm2'", 'Ama2', "Ama21'", "Am'a2'", "Ama'2'", "Am'a'2", "A_2amm'2'", 'P_Ama2', "F_Amm'2'", 'Aba2', "Aba21'", "Ab'a2'", "Aba'2'", "Ab'a'2", "A_2ab'm'2", "P_Am'a'2", "F_Am'm'2", 'Fmm2', "Fmm21'", "Fm'm2'", "Fm'm'2", 'P_Fmm2', 'Fdd2', "Fdd21'", "Fd'd2'", "Fd'd'2", 'P_Fnn2', 'Imm2', "Imm21'", "Im'm2'", "Im'm'2", 'C_Imm2', 'A_Imm2', 'Iba2', "Iba21'", "Ib'a2'", "Ib'a'2", "C_Im'm'2", "A_Ib'm'2", 'Ima2', "Ima21'", "Im'a2'", "Ima'2'", "Im'a'2", "C_Im'm2'", "A_Im'm'2", 'A_Ibm2', 'Pmmm', "Pmmm1'", "Pm'mm", "Pm'm'm", "Pm'm'm'", 'P_2ammm', 'C_Pmmm', 'I_Pmmm', 'Pnnn', "Pnnn1'", "Pn'nn", "Pn'n'n", "Pn'n'n'", "P_2cb'a'n", "C_Pc'c'm'", "I_Pm'm'm'", 'Pccm', "Pccm1'", "Pc'cm", "Pccm'", "Pc'c'm", "Pc'cm'", "Pc'c'm'", 'P_2accm', "P_2cm'm'm", 'C_Pmma', 'C_Pccm', 'I_Pbam', 'Pban', "Pban1'", "Pb'an", "Pban'", "Pb'a'n", "Pb'an'", "Pb'a'n'", "P_2ac'c'm'", 'P_2cban', 'C_Pcca', "C_Pm'm'm'", "I_Pb'a'm'", 'Pmma', "Pmma1'", "Pm'ma", "Pmm'a", "Pmma'", "Pm'm'a", "Pmm'a'", "Pm'ma'", "Pm'm'a'", "P_2ammm'", 'P_2bmma', 'P_2cmma', 'C_Pmcm', "C_Pm'mm", "C_Pmm'a", 'I_Pmma', 'Pnna', "Pnna1'", "Pn'na", "Pnn'a", "Pnna'", "Pn'n'a", "Pnn'a'", "Pn'na'", "Pn'n'a'", "P_2bm'na'", "P_2cb'an", "P_2bc'ca'", "C_Pcc'm'", "C_Pm'c'm'", "C_Pcc'a'", "I_Pm'm'a", 'Pmna', "Pmna1'", "Pm'na", "Pmn'a", "Pmna'", "Pm'n'a", "Pmn'a'", "Pm'na'", "Pm'n'a'", "P_2bm'ma'", 'P_2bmna', "P_2ac'c'm", "C_Pc'cm", "C_Pmm'm'", "C_Pmc'a'", "I_Pmm'a'", 'Pcca', "Pcca1'", "Pc'ca", "Pcc'a", "Pcca'", "Pc'c'a", "Pcc'a'", "Pc'ca'", "Pc'c'a'", "P_2accm'", 'P_2bcca', "P_2cm'm'a", "C_Pm'ca", "C_Pm'ma", "C_Pc'ca", "I_Pb'ca", 'Pbam', "Pbam1'", "Pb'am", "Pbam'", "Pb'a'm", "Pb'am'", "Pb'a'm'", "P_2cm'ma", 'P_2cbam', 'C_Pmca', "C_Pm'm'm", "I_Pb'a'm", 'Pccn', "Pccn1'", "Pc'cn", "Pccn'", "Pc'c'n", "Pc'cn'", "Pc'c'n'", "P_2bcca'", "P_2cm'm'n", "C_Pm'c'a", "C_Pccm'", "I_Pbam'", 'Pbcm', "Pbcm1'", "Pb'cm", "Pbc'm", "Pbcm'", "Pb'c'm", "Pbc'm'", "Pb'cm'", "Pb'c'm'", 'P_2abcm', "P_2cmm'a", "P_2bm'ma", "C_Pmma'", "C_Pmca'", "C_Pm'cm", "I_Pb'am", 'Pnnm', "Pnnm1'", "Pn'nm", "Pnnm'", "Pn'n'm", "Pnn'm'", "Pn'n'm'", "P_2bmna'", "P_2cb'a'm", "C_Pmc'm'", "C_Pc'c'm", "I_Pm'm'm", 'Pmmn', "Pmmn1'", "Pm'mn", "Pmmn'", "Pm'm'n", "Pmm'n'", "Pm'm'n'", "P_2bmma'", 'P_2cmmn', "C_Pmc'm", "C_Pmmm'", "I_Pm'mm", 'Pbcn', "Pbcn1'", "Pb'cn", "Pbc'n", "Pbcn'", "Pb'c'n", "Pbc'n'", "Pb'cn'", "Pb'c'n'", "P_2bc'ca", "P_2abc'm'", "P_2bm'na", "C_Pm'c'a'", "C_Pcca'", "C_Pm'cm'", "I_Pb'am'", 'Pbca', "Pbca1'", "Pb'ca", "Pb'c'a", "Pb'c'a'", "P_2abcm'", "C_Pm'ca'", 'I_Pbca', 'Pnma', "Pnma1'", "Pn'ma", "Pnm'a", "Pnma'", "Pn'm'a", "Pnm'a'", "Pn'ma'", "Pn'm'a'", "P_2cm'mn", "P_2cb'am", "P_2abc'm", "C_Pmcm'", "C_Pm'c'm", "C_Pmc'a", "I_Pm'ma'", 'Cmcm', "Cmcm1'", "Cm'cm", "Cmc'm", "Cmcm'", "Cm'c'm", "Cmc'm'", "Cm'cm'", "Cm'c'm'", "C_2cmm'm'", 'P_Amma', "F_Cm'mm", 'Cmca', "Cmca1'", "Cm'ca", "Cmc'a", "Cmca'", "Cm'c'a", "Cmc'a'", "Cm'ca'", "Cm'c'a'", "C_2cm'ma", "P_Am'ma", "F_Cmm'm'", 'Cmmm', "Cmmm1'", "Cm'mm", "Cmmm'", "Cm'm'm", "Cmm'm'", "Cm'm'm'", 'C_2cmmm', 'P_Cmmm', 'F_Cmmm', 'Cccm', "Cccm1'", "Cc'cm", "Cccm'", "Cc'c'm", "Ccc'm'", "Cc'c'm'", "C_2cm'm'm", 'P_Cccm', "F_Cm'm'm", 'Cmma', "Cmma1'", "Cm'ma", "Cmma'", "Cm'm'a", "Cmm'a'", "Cm'm'a'", 'C_2cmma', "P_Cmmm'", "F_Cmmm'", 'Ccca', "Ccca1'", "Cc'ca", "Ccca'", "Cc'c'a", "Ccc'a'", "Cc'c'a'", "C_2cm'm'a", "P_Cccm'", "F_Cm'm'm'", 'Fmmm', "Fmmm1'", "Fm'mm", "Fm'm'm", "Fm'm'm'", 'P_Fmmm', 'Fddd', "Fddd1'", "Fd'dd", "Fd'd'd", "Fd'd'd'", 'P_Fnnn', 'Immm', "Immm1'", "Im'mm", "Im'm'm", "Im'm'm'", 'C_Immm', 'Ibam', "Ibam1'", "Ib'am", "Ibam'", "Ib'a'm", "Iba'm'", "Ib'a'm'", "C_Im'm'm", 'C_Imma', 'Ibca', "Ibca1'", "Ib'ca", "Ib'c'a", "Ib'c'a'", "C_Im'ma'", 'Imma', "Imma1'", "Im'ma", "Imma'", "Im'm'a", "Imm'a'", "Im'm'a'", "C_Imm'a", "C_Im'mm", 'P4', "P41'", "P4'", 'P_2c4', 'P_P4', 'I_P4', 'P4_1', "P4_11'", "P4_1'", 'P_2c4_2', 'P_P4_1', 'I_P4_1', 'P4_2', "P4_21'", "P4_2'", "P_2c4'", 'P_P4_2', "I_P4'", 'P4_3', "P4_31'", "P4_3'", "P_2c4_2'", 'P_P4_3', "I_P4_1'", 'I4', "I41'", "I4'", 'P_I4', 'I4_1', "I4_11'", "I4_1'", 'P_I4_2', 'P-4', "P-41'", "P-4'", 'P_2c-4', 'P_P-4', 'I_P-4', 'I-4', "I-41'", "I-4'", 'P_I-4', 'P4/m', "P4/m1'", "P4'/m", "P4/m'", "P4'/m'", 'P_2c4/m', 'P_P4/m', 'I_P4/m', 'P4_2/m', "P4_2/m1'", "P4_2'/m", "P4_2/m'", "P4_2'/m'", "P_2c4'/m", 'P_P4_2/m', "I_P4'/m", 'P4/n', "P4/n1'", "P4'/n", "P4/n'", "P4'/n'", 'P_2c4/n', "P_P4/m'", "I_P4/m'", 'P4_2/n', "P4_2/n1'", "P4_2'/n", "P4_2/n'", "P4_2'/n'", "P_2c4'/n", "P_P4_2/m'", "I_P4'/m'", 'I4/m', "I4/m1'", "I4'/m", "I4/m'", "I4'/m'", 'P_I4/m', 'I4_1/a', "I4_1/a1'", "I4_1'/a", "I4_1/a'", "I4_1'/a'", 'P_I4_2/n', 'P422', "P4221'", "P4'22'", "P42'2'", "P4'2'2", 'P_2c422', 'P_P422', 'I_P422', 'P42_12', "P42_121'", "P4'2_12'", "P42_1'2'", "P4'2_1'2", 'P_2c42_12', "P_P4'22'", "I_P42'2'", 'P4_122', "P4_1221'", "P4_1'22'", "P4_12'2'", "P4_1'2'2", "P_2c4_222'", 'P_P4_122', 'I_P4_122', 'P4_12_12', "P4_12_121'", "P4_1'2_12'", "P4_12_1'2'", "P4_1'2_1'2", 'P_2c4_22_12', "P_P4_1'22'", "I_P4_12'2'", 'P4_222', "P4_2221'", "P4_2'22'", "P4_22'2'", "P4_2'2'2", "P_2c4'22'", 'P_P4_222', "I_P4'22'", 'P4_22_12', "P4_22_121'", "P4_2'2_12'", "P4_22_1'2'", "P4_2'2_1'2", "P_2c4'2_1'2", "P_P4_2'22'", "I_P4'2'2", 'P4_322', "P4_3221'", "P4_3'22'", "P4_32'2'", "P4_3'2'2", "P_2c4_2'22", 'P_P4_322', "I_P4_1'22'", 'P4_32_12', "P4_32_121'", "P4_3'2_12'", "P4_32_1'2'", "P4_3'2_1'2", "P_2c4_2'2_1'2", "P_P4_3'22'", "I_P4_1'2'2", 'I422', "I4221'", "I4'22'", "I42'2'", "I4'2'2", 'P_I422', 'I4_122', "I4_1221'", "I4_1'22'", "I4_12'2'", "I4_1'2'2", "P_I4_222'", 'P4mm', "P4mm1'", "P4'm'm", "P4'mm'", "P4m'm'", 'P_2c4mm', 'P_P4mm', 'I_P4mm', 'P4bm', "P4bm1'", "P4'b'm", "P4'bm'", "P4b'm'", 'P_2c4bm', "P_P4'mm'", 'I_P4cm', 'P4_2cm', "P4_2cm1'", "P4_2'c'm", "P4_2'cm'", "P4_2c'm'", "P_2c4'm'm", 'P_P4_2mc', "I_P4'c'm", 'P4_2nm', "P4_2nm1'", "P4_2'n'm", "P4_2'nm'", "P4_2n'm'", "P_2c4'b'm", "P_P4_2'mc'", "I_P4'm'm", 'P4cc', "P4cc1'", "P4'c'c", "P4'cc'", "P4c'c'", "P_2c4m'm'", 'P_P4cc', "I_P4c'm'", 'P4nc', "P4nc1'", "P4'n'c", "P4'nc'", "P4n'c'", "P_2c4b'm'", "P_P4'cc'", "I_P4m'm'", 'P4_2mc', "P4_2mc1'", "P4_2'm'c", "P4_2'mc'", "P4_2m'c'", "P_2c4'mm'", 'P_P4_2cm', "I_P4'mm'", 'P4_2bc', "P4_2bc1'", "P4_2'b'c", "P4_2'bc'", "P4_2b'c'", "P_2c4'bm'", "P_P4_2'cm'", "I_P4'cm'", 'I4mm', "I4mm1'", "I4'm'm", "I4'mm'", "I4m'm'", 'P_I4mm', 'I4cm', "I4cm1'", "I4'c'm", "I4'cm'", "I4c'm'", "P_I4m'm'", 'I4_1md', "I4_1md1'", "I4_1'm'd", "I4_1'md'", "I4_1m'd'", 'P_I4_2nm', 'I4_1cd', "I4_1cd1'", "I4_1'c'd", "I4_1'cd'", "I4_1c'd'", "P_I4_2n'm'", 'P-42m', "P-42m1'", "P-4'2'm", "P-4'2m'", "P-42'm'", 'P_2c-42m', 'P_P-4m2', 'I_P-42m', 'P-42c', "P-42c1'", "P-4'2'c", "P-4'2c'", "P-42'c'", "P_2c-42'm'", 'P_P-4c2', "I_P-4'2m'", 'P-42_1m', "P-42_1m1'", "P-4'2_1'm", "P-4'2_1m'", "P-42_1'm'", 'P_2c-42_1m', "P_P-4'm2'", "I_P-4'2'm", 'P-42_1c', "P-42_1c1'", "P-4'2_1'c", "P-4'2_1c'", "P-42_1'c'", "P_2c-4'2_1m'", "P_P-4'c2'", "I_P-42'm'", 'P-4m2', "P-4m21'", "P-4'm'2", "P-4'm2'", "P-4m'2'", 'P_2c-4m2', 'P_P-42m', 'I_P-4m2', 'P-4c2', "P-4c21'", "P-4'c'2", "P-4'c2'", "P-4c'2'", "P_2c-4'm'2", 'P_P-42c', 'I_P-4c2', 'P-4b2', "P-4b21'", "P-4'b'2", "P-4'b2'", "P-4b'2'", 'P_2c-4b2', "P_P-4'2m'", "I_P-4c'2'", 'P-4n2', "P-4n21'", "P-4'n'2", "P-4'n2'", "P-4n'2'", "P_2c-4'b'2", "P_P-4'2c'", "I_P-4'm'2", 'I-4m2', "I-4m21'", "I-4'm'2", "I-4'm2'", "I-4m'2'", 'P_I-42m', 'I-4c2', "I-4c21'", "I-4'c'2", "I-4'c2'", "I-4c'2'", "P_I-4'2m'", 'I-42m', "I-42m1'", "I-4'2'm", "I-4'2m'", "I-42'm'", 'P_I-4m2', 'I-42d', "I-42d1'", "I-4'2'd", "I-4'2d'", "I-42'd'", 'P_I-4n2', 'P4/mmm', "P4/mmm1'", "P4/m'mm", "P4'/mm'm", "P4'/mmm'", "P4'/m'm'm", "P4/mm'm'", "P4'/m'mm'", "P4/m'm'm'", 'P_2c4/mmm', 'P_P4/mmm', 'I_P4/mmm', 'P4/mcc', "P4/mcc1'", "P4/m'cc", "P4'/mc'c", "P4'/mcc'", "P4'/m'c'c", "P4/mc'c'", "P4'/m'cc'", "P4/m'c'c'", "P_2c4/mm'm'", 'P_P4/mcc', 'I_P4/mcm', 'P4/nbm', "P4/nbm1'", "P4/n'bm", "P4'/nb'm", "P4'/nbm'", "P4'/n'b'm", "P4/nb'm'", "P4'/n'bm'", "P4/n'b'm'", 'P_2c4/nbm', "P_P4'/m'mm'", "I_P4/m'c'm'", 'P4/nnc', "P4/nnc1'", "P4/n'nc", "P4'/nn'c", "P4'/nnc'", "P4'/n'n'c", "P4/nn'c'", "P4'/n'nc'", "P4/n'n'c'", "P_2c4/nb'm'", "P_P4'/m'cc'", "I_P4/m'm'm'", 'P4/mbm', "P4/mbm1'", "P4/m'bm", "P4'/mb'm", "P4'/mbm'", "P4'/m'b'm", "P4/mb'm'", "P4'/m'bm'", "P4/m'b'm'", 'P_2c4/mbm', "P_P4'/mmm'", "I_P4/mc'm'", 'P4/mnc', "P4/mnc1'", "P4/m'nc", "P4'/mn'c", "P4'/mnc'", "P4'/m'n'c", "P4/mn'c'", "P4'/m'nc'", "P4/m'n'c'", "P_2c4/mb'm'", "P_P4'/mcc'", "I_P4/mm'm'", 'P4/nmm', "P4/nmm1'", "P4/n'mm", "P4'/nm'm", "P4'/nmm'", "P4'/n'm'm", "P4/nm'm'", "P4'/n'mm'", "P4/n'm'm'", 'P_2c4/nmm', "P_P4/m'mm", "I_P4/m'mm", 'P4/ncc', "P4/ncc1'", "P4/n'cc", "P4'/nc'c", "P4'/ncc'", "P4'/n'c'c", "P4/nc'c'", "P4'/n'cc'", "P4/n'c'c'", "P_2c4/nm'm'", "P_P4/m'cc", "I_P4/m'cm", 'P4_2/mmc', "P4_2/mmc1'", "P4_2/m'mc", "P4_2'/mm'c", "P4_2'/mmc'", "P4_2'/m'm'c", "P4_2/mm'c'", "P4_2'/m'mc'", "P4_2/m'm'c'", "P_2c4'/mmm'", 'P_P4_2/mcm', "I_P4'/mmm'", 'P4_2/mcm', "P4_2/mcm1'", "P4_2/m'cm", "P4_2'/mc'm", "P4_2'/mcm'", "P4_2'/m'c'm", "P4_2/mc'm'", "P4_2'/m'cm'", "P4_2/m'c'm'", "P_2c4'/mm'm", 'P_P4_2/mmc', "I_P4'/mcm'", 'P4_2/nbc', "P4_2/nbc1'", "P4_2/n'bc", "P4_2'/nb'c", "P4_2'/nbc'", "P4_2'/n'b'c", "P4_2/nb'c'", "P4_2'/n'bc'", "P4_2/n'b'c'", "P_2c4'/nbm'", "P_P4_2'/m'cm'", "I_P4'/m'c'm", 'P4_2/nnm', "P4_2/nnm1'", "P4_2/n'nm", "P4_2'/nn'm", "P4_2'/nnm'", "P4_2'/n'n'm", "P4_2/nn'm'", "P4_2'/n'nm'", "P4_2/n'n'm'", "P_2c4'/nb'm", "P_P4_2'/m'mc'", "I_P4'/m'm'm", 'P4_2/mbc', "P4_2/mbc1'", "P4_2/m'bc", "P4_2'/mb'c", "P4_2'/mbc'", "P4_2'/m'b'c", "P4_2/mb'c'", "P4_2'/m'bc'", "P4_2/m'b'c'", "P_2c4'/mbm'", "P_P4_2'/mcm'", "I_P4'/mc'm", 'P4_2/mnm', "P4_2/mnm1'", "P4_2/m'nm", "P4_2'/mn'm", "P4_2'/mnm'", "P4_2'/m'n'm", "P4_2/mn'm'", "P4_2'/m'nm'", "P4_2/m'n'm'", "P_2c4'/mb'm", "P_P4_2/mm'c'", "I_P4'/mm'm", 'P4_2/nmc', "P4_2/nmc1'", "P4_2/n'mc", "P4_2'/nm'c", "P4_2'/nmc'", "P4_2'/n'm'c", "P4_2/nm'c'", "P4_2'/n'mc'", "P4_2/n'm'c'", "P_2c4'/nmm'", "P_P4_2/m'cm", "I_P4'/m'mm'", 'P4_2/ncm', "P4_2/ncm1'", "P4_2/n'cm", "P4_2'/nc'm", "P4_2'/ncm'", "P4_2'/n'c'm", "P4_2/nc'm'", "P4_2'/n'cm'", "P4_2/n'c'm'", "P_2c4'/nm'm", "P_P4_2/m'mc", "I_P4'/m'cm'", 'I4/mmm', "I4/mmm1'", "I4/m'mm", "I4'/mm'm", "I4'/mmm'", "I4'/m'm'm", "I4/mm'm'", "I4'/m'mm'", "I4/m'm'm'", 'P_I4/mmm', 'I4/mcm', "I4/mcm1'", "I4/m'cm", "I4'/mc'm", "I4'/mcm'", "I4'/m'c'm", "I4/mc'm'", "I4'/m'cm'", "I4/m'c'm'", "P_I4/mm'm'", 'I4_1/amd', "I4_1/amd1'", "I4_1/a'md", "I4_1'/am'd", "I4_1'/amd'", "I4_1'/a'm'd", "I4_1/am'd'", "I4_1'/a'md'", "I4_1/a'm'd'", 'P_I4_2/nnm', 'I4_1/acd', "I4_1/acd1'", "I4_1/a'cd", "I4_1'/ac'd", "I4_1'/acd'", "I4_1'/a'c'd", "I4_1/ac'd'", "I4_1'/a'cd'", "I4_1/a'c'd'", "P_I4_2/nn'm'", 'P3', "P31'", 'P_2c3', 'P3_1', "P3_11'", 'P_2c3_1', 'P3_2', "P3_21'", 'P_2c3_2', 'R3', "R31'", 'R_R3', 'P-3', "P-31'", "P-3'", 'P_2c-3', 'R-3', "R-31'", "R-3'", 'R_R-3', 'P312', "P3121'", "P312'", 'P_2c312', 'P321', "P3211'", "P32'1", 'P_2c321', 'P3_112', "P3_1121'", "P3_112'", 'P_2c3_112', 'P3_121', "P3_1211'", "P3_12'1", 'P_2c3_121', 'P3_212', "P3_2121'", "P3_212'", 'P_2c3_212', 'P3_221', "P3_2211'", "P3_22'1", 'P_2c3_221', 'R32', "R321'", "R32'", 'R_R32', 'P3m1', "P3m11'", "P3m'1", 'P_2c3m1', 'P31m', "P31m1'", "P31m'", 'P_2c31m', 'P3c1', "P3c11'", "P3c'1", "P_2c3m'1", 'P31c', "P31c1'", "P31c'", "P_2c31m'", 'R3m', "R3m1'", "R3m'", 'R_R3m', 'R3c', "R3c1'", "R3c'", "R_R3m'", 'P-31m', "P-31m1'", "P-3'1m", "P-3'1m'", "P-31m'", 'P_2c-31m', 'P-31c', "P-31c1'", "P-3'1c", "P-3'1c'", "P-31c'", "P_2c-31m'", 'P-3m1', "P-3m11'", "P-3'm1", "P-3'm'1", "P-3m'1", 'P_2c-3m1', 'P-3c1', "P-3c11'", "P-3'c1", "P-3'c'1", "P-3c'1", "P_2c-3m'1", 'R-3m', "R-3m1'", "R-3'm", "R-3'm'", "R-3m'", 'R_R-3m', 'R-3c', "R-3c1'", "R-3'c", "R-3'c'", "R-3c'", "R_R-3m'", 'P6', "P61'", "P6'", 'P_2c6', 'P6_1', "P6_11'", "P6_1'", 'P_2c6_2', 'P6_5', "P6_51'", "P6_5'", "P_2c6_4'", 'P6_2', "P6_21'", "P6_2'", 'P_2c6_4', 'P6_4', "P6_41'", "P6_4'", "P_2c6_2'", 'P6_3', "P6_31'", "P6_3'", "P_2c6'", 'P-6', "P-61'", "P-6'", 'P_2c-6', 'P6/m', "P6/m1'", "P6'/m", "P6/m'", "P6'/m'", 'P_2c6/m', 'P6_3/m', "P6_3/m1'", "P6_3'/m", "P6_3/m'", "P6_3'/m'", "P_2c6'/m", 'P622', "P6221'", "P6'2'2", "P6'22'", "P62'2'", 'P_2c622', 'P6_122', "P6_1221'", "P6_1'2'2", "P6_1'22'", "P6_12'2'", "P_2c6_222'", 'P6_522', "P6_5221'", "P6_5'2'2", "P6_5'22'", "P6_52'2'", "P_2c6_4'2'2'", 'P6_222', "P6_2221'", "P6_2'2'2", "P6_2'22'", "P6_22'2'", "P_2c6_422'", 'P6_422', "P6_4221'", "P6_4'2'2", "P6_4'22'", "P6_42'2'", "P_2c6_2'22", 'P6_322', "P6_3221'", "P6_3'2'2", "P6_3'22'", "P6_32'2'", "P_2c6'22'", 'P6mm', "P6mm1'", "P6'm'm", "P6'mm'", "P6m'm'", 'P_2c6mm', 'P6cc', "P6cc1'", "P6'c'c", "P6'cc'", "P6c'c'", "P_2c6m'm'", 'P6_3cm', "P6_3cm1'", "P6_3'c'm", "P6_3'cm'", "P6_3c'm'", "P_2c6'm'm", 'P6_3mc', "P6_3mc1'", "P6_3'm'c", "P6_3'mc'", "P6_3m'c'", "P_2c6'mm'", 'P-6m2', "P-6m21'", "P-6'm'2", "P-6'm2'", "P-6m'2'", 'P_2c-6m2', 'P-6c2', "P-6c21'", "P-6'c'2", "P-6'c2'", "P-6c'2'", "P_2c-6'm'2", 'P-62m', "P-62m1'", "P-6'2'm", "P-6'2m'", "P-62'm'", 'P_2c-62m', 'P-62c', "P-62c1'", "P-6'2'c", "P-6'2c'", "P-62'c'", "P_2c-6'2m'", 'P6/mmm', "P6/mmm1'", "P6/m'mm", "P6'/mm'm", "P6'/mmm'", "P6'/m'm'm", "P6'/m'mm'", "P6/mm'm'", "P6/m'm'm'", 'P_2c6/mmm', 'P6/mcc', "P6/mcc1'", "P6/m'cc", "P6'/mc'c", "P6'/mcc'", "P6'/m'c'c", "P6'/m'cc'", "P6/mc'c'", "P6/m'c'c'", "P_2c6/mm'm'", 'P6_3/mcm', "P6_3/mcm1'", "P6_3/m'cm", "P6_3'/mc'm", "P6_3'/mcm'", "P6_3'/m'c'm", "P6_3'/m'cm'", "P6_3/mc'm'", "P6_3/m'c'm'", "P_2c6'/mm'm", 'P6_3/mmc', "P6_3/mmc1'", "P6_3/m'mc", "P6_3'/mm'c", "P6_3'/mmc'", "P6_3'/m'm'c", "P6_3'/m'mc'", "P6_3/mm'c'", "P6_3/m'm'c'", "P_2c6'/mmm'", 'P23', "P231'", 'I_P23', 'F23', "F231'", 'P_F23', 'I23', "I231'", 'P2_13', "P2_131'", 'I_P2_13', 'I2_13', "I2_131'", 'Pm-3', "Pm-31'", "Pm'-3'", 'I_Pm-3', 'Pn-3', "Pn-31'", "Pn'-3'", "I_Pm'-3'", 'Fm-3', "Fm-31'", "Fm'-3'", 'P_Fm-3', 'Fd-3', "Fd-31'", "Fd'-3'", 'P_Fn-3', 'Im-3', "Im-31'", "Im'-3'", 'Pa-3', "Pa-31'", "Pa'-3'", "I_Pa-3'", 'Ia-3', "Ia-31'", "Ia'-3'", 'P432', "P4321'", "P4'32'", 'I_P432', 'P4_232', "P4_2321'", "P4_2'32'", "I_P4'32'", 'F432', "F4321'", "F4'32'", 'P_F432', 'F4_132', "F4_1321'", "F4_1'32'", 'P_F4_232', 'I432', "I4321'", "I4'32'", 'P4_332', "P4_3321'", "P4_3'32'", 'I_P4_132', 'P4_132', "P4_1321'", "P4_1'32'", "I_P4_1'32'", 'I4_132', "I4_1321'", "I4_1'32'", 'P-43m', "P-43m1'", "P-4'3m'", 'I_P-43m', 'F-43m', "F-43m1'", "F-4'3m'", 'P_F-43m', 'I-43m', "I-43m1'", "I-4'3m'", 'P-43n', "P-43n1'", "P-4'3n'", "I_P-4'3m'", 'F-43c', "F-43c1'", "F-4'3c'", "P_F-4'3m'", 'I-43d', "I-43d1'", "I-4'3d'", 'Pm-3m', "Pm-3m1'", "Pm'-3'm", "Pm-3m'", "Pm'-3'm'", 'I_Pm-3m', 'Pn-3n', "Pn-3n1'", "Pn'-3'n", "Pn-3n'", "Pn'-3'n'", "I_Pm'-3'm'", 'Pm-3n', "Pm-3n1'", "Pm'-3'n", "Pm-3n'", "Pm'-3'n'", "I_Pm-3m'", 'Pn-3m', "Pn-3m1'", "Pn'-3'm", "Pn-3m'", "Pn'-3'm'", "I_Pm'-3'm", 'Fm-3m', "Fm-3m1'", "Fm'-3'm", "Fm-3m'", "Fm'-3'm'", 'P_Fm-3m', 'Fm-3c', "Fm-3c1'", "Fm'-3'c", "Fm-3c'", "Fm'-3'c'", "P_Fm-3m'", 'Fd-3m', "Fd-3m1'", "Fd'-3'm", "Fd-3m'", "Fd'-3'm'", 'P_Fn-3m', 'Fd-3c', "Fd-3c1'", "Fd'-3'c", "Fd-3c'", "Fd'-3'c'", "P_Fn-3m'", 'Im-3m', "Im-3m1'", "Im'-3'm", "Im-3m'", "Im'-3'm'", 'Ia-3d', "Ia-3d1'", "Ia'-3'd", "Ia-3d'", "Ia'-3'd'"]
    msg_BNS_to_OG = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 23, 15, 16, 17, 18, 14, 24, 19, 20, 21, 22, 13, 25, 26, 27, 28, 29, 42, 32, 33, 34, 35, 31, 36, 48, 44, 38, 39, 40, 41, 30, 45, 46, 47, 43, 37, 49, 50, 51, 52, 53, 54, 55, 72, 59, 60, 61, 62, 63, 64, 57, 74, 66, 67, 68, 69, 70, 71, 56, 77, 78, 79, 80, 81, 82, 83, 58, 75, 97, 86, 87, 88, 89, 90, 91, 85, 65, 76, 98, 92, 93, 94, 95, 96, 73, 84, 99, 100, 101, 102, 134, 148, 106, 107, 108, 109, 110, 105, 138, 126, 154, 113, 114, 115, 116, 112, 117, 128, 137, 149, 119, 120, 121, 118, 127, 153, 122, 123, 124, 125, 136, 111, 144, 129, 130, 131, 132, 133, 103, 143, 140, 141, 142, 104, 145, 146, 147, 135, 150, 151, 152, 139, 155, 156, 157, 158, 159, 160, 241, 271, 328, 168, 169, 170, 171, 172, 173, 174, 164, 275, 287, 254, 345, 178, 179, 180, 181, 165, 182, 262, 289, 335, 185, 186, 187, 188, 189, 166, 190, 191, 296, 284, 245, 343, 198, 199, 200, 201, 202, 177, 203, 194, 306, 288, 255, 336, 205, 206, 207, 208, 209, 210, 184, 196, 276, 308, 263, 346, 212, 213, 214, 215, 216, 176, 217, 195, 298, 274, 256, 329, 219, 220, 221, 222, 223, 193, 246, 305, 337, 226, 227, 228, 229, 230, 218, 204, 224, 297, 307, 257, 344, 231, 232, 233, 234, 211, 225, 299, 264, 330, 236, 237, 238, 239, 240, 161, 313, 249, 250, 251, 252, 253, 243, 175, 315, 258, 259, 260, 261, 244, 183, 316, 265, 266, 267, 268, 269, 270, 162, 314, 278, 279, 280, 281, 282, 283, 167, 317, 291, 292, 293, 294, 295, 273, 192, 318, 300, 301, 302, 303, 304, 286, 197, 319, 309, 310, 311, 312, 163, 320, 321, 322, 323, 235, 324, 325, 326, 327, 242, 272, 331, 332, 333, 334, 248, 290, 338, 339, 340, 341, 342, 247, 277, 285, 347, 348, 349, 350, 351, 352, 553, 626, 358, 359, 360, 361, 362, 386, 576, 629, 364, 365, 366, 367, 368, 369, 370, 371, 356, 585, 571, 637, 377, 378, 379, 380, 381, 382, 383, 375, 384, 601, 561, 642, 387, 388, 389, 390, 391, 392, 393, 394, 395, 355, 396, 397, 520, 557, 590, 657, 406, 407, 408, 409, 410, 411, 412, 413, 414, 427, 385, 440, 575, 527, 604, 658, 415, 416, 417, 418, 419, 420, 421, 422, 423, 401, 424, 374, 572, 560, 542, 659, 428, 429, 430, 431, 432, 433, 434, 435, 436, 373, 437, 404, 538, 589, 602, 649, 441, 442, 443, 444, 445, 446, 447, 402, 448, 537, 559, 640, 451, 452, 453, 454, 455, 456, 457, 439, 487, 541, 573, 639, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 403, 399, 591, 540, 521, 638, 471, 472, 473, 474, 475, 476, 477, 426, 450, 525, 574, 628, 478, 479, 480, 481, 482, 483, 484, 400, 485, 522, 558, 627, 488, 489, 490, 491, 492, 493, 494, 495, 496, 438, 470, 425, 544, 603, 526, 641, 497, 498, 499, 500, 501, 469, 543, 648, 502, 503, 504, 505, 506, 507, 508, 509, 510, 486, 449, 468, 523, 524, 539, 660, 511, 512, 513, 514, 515, 516, 517, 518, 519, 556, 398, 611, 528, 529, 530, 531, 532, 533, 534, 535, 536, 587, 405, 614, 545, 546, 547, 548, 549, 550, 551, 552, 353, 610, 564, 565, 566, 567, 568, 569, 570, 555, 372, 613, 577, 578, 579, 580, 581, 582, 583, 584, 357, 612, 594, 595, 596, 597, 598, 599, 600, 588, 376, 615, 605, 606, 607, 608, 609, 354, 616, 617, 618, 619, 620, 363, 621, 622, 623, 624, 625, 554, 630, 631, 632, 633, 634, 635, 636, 563, 586, 643, 644, 645, 646, 647, 593, 650, 651, 652, 653, 654, 655, 656, 592, 562, 661, 662, 663, 664, 665, 686, 668, 669, 670, 675, 671, 691, 672, 673, 674, 667, 676, 687, 679, 680, 681, 678, 682, 692, 683, 684, 685, 666, 688, 689, 690, 677, 693, 694, 695, 696, 697, 702, 699, 700, 701, 698, 703, 704, 705, 706, 707, 708, 709, 738, 713, 714, 715, 716, 717, 711, 718, 739, 720, 721, 722, 723, 724, 725, 712, 740, 727, 728, 729, 730, 731, 726, 719, 741, 733, 734, 735, 736, 737, 710, 742, 743, 744, 745, 746, 732, 747, 748, 749, 750, 751, 752, 753, 810, 757, 758, 759, 760, 761, 762, 756, 812, 764, 765, 766, 767, 768, 781, 769, 819, 771, 772, 773, 774, 775, 791, 770, 821, 776, 777, 778, 779, 780, 755, 782, 811, 786, 787, 788, 789, 790, 763, 785, 813, 793, 794, 795, 796, 797, 784, 798, 820, 800, 801, 802, 803, 804, 792, 799, 822, 805, 806, 807, 808, 809, 754, 814, 815, 816, 817, 818, 783, 823, 824, 825, 826, 827, 828, 829, 888, 836, 837, 838, 839, 840, 841, 834, 897, 845, 846, 847, 848, 849, 831, 876, 898, 852, 853, 854, 855, 856, 842, 877, 889, 859, 860, 861, 862, 863, 833, 864, 900, 866, 867, 868, 869, 870, 844, 865, 891, 871, 872, 873, 874, 875, 832, 850, 890, 878, 879, 880, 881, 882, 843, 851, 899, 883, 884, 885, 886, 887, 830, 892, 893, 894, 895, 896, 835, 901, 902, 903, 904, 905, 857, 906, 907, 908, 909, 910, 858, 911, 912, 913, 914, 915, 916, 947, 990, 922, 923, 924, 925, 926, 919, 956, 992, 929, 930, 931, 932, 933, 934, 950, 991, 936, 937, 938, 939, 940, 935, 957, 993, 941, 942, 943, 944, 945, 946, 917, 976, 951, 952, 953, 954, 955, 949, 927, 983, 958, 959, 960, 961, 962, 963, 920, 984, 965, 966, 967, 968, 969, 964, 928, 977, 971, 972, 973, 974, 975, 918, 978, 979, 980, 981, 982, 921, 985, 986, 987, 988, 989, 948, 994, 995, 996, 997, 998, 970, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1188, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1013, 1027, 1205, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1016, 1212, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1043, 1030, 1195, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1015, 1210, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1065, 1029, 1193, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1014, 1189, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1087, 1028, 1206, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1012, 1119, 1191, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1011, 1106, 1208, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1042, 1122, 1209, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1041, 1109, 1192, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1064, 1121, 1207, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1063, 1108, 1190, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1086, 1120, 1194, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1085, 1107, 1211, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1010, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1017, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1141, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1142, 1231, 1232, 1233, 1234, 1235, 1239, 1237, 1238, 1236, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1270, 1263, 1264, 1265, 1274, 1267, 1268, 1269, 1262, 1271, 1272, 1273, 1266, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1284, 1285, 1286, 1287, 1289, 1290, 1291, 1283, 1292, 1293, 1294, 1288, 1295, 1296, 1297, 1298, 1300, 1301, 1302, 1299, 1303, 1304, 1305, 1306, 1307, 1308, 1310, 1311, 1312, 1313, 1314, 1309, 1315, 1316, 1317, 1318, 1319, 1320, 1322, 1323, 1324, 1325, 1326, 1321, 1327, 1328, 1329, 1330, 1331, 1332, 1334, 1335, 1336, 1337, 1338, 1333, 1339, 1340, 1341, 1342, 1344, 1345, 1346, 1353, 1347, 1348, 1349, 1359, 1350, 1351, 1352, 1358, 1355, 1356, 1357, 1354, 1360, 1361, 1362, 1343, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1374, 1375, 1376, 1377, 1378, 1373, 1379, 1380, 1381, 1382, 1383, 1384, 1386, 1387, 1388, 1389, 1390, 1401, 1391, 1392, 1393, 1394, 1395, 1409, 1396, 1397, 1398, 1399, 1400, 1408, 1403, 1404, 1405, 1406, 1407, 1402, 1410, 1411, 1412, 1413, 1414, 1385, 1415, 1416, 1417, 1418, 1419, 1420, 1424, 1425, 1426, 1427, 1428, 1423, 1429, 1430, 1431, 1432, 1433, 1421, 1434, 1435, 1436, 1437, 1438, 1422, 1439, 1440, 1441, 1442, 1443, 1444, 1446, 1447, 1448, 1449, 1450, 1445, 1451, 1452, 1453, 1454, 1455, 1456, 1458, 1459, 1460, 1461, 1462, 1457, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1475, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1473, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1474, 1503, 1504, 1510, 1506, 1507, 1505, 1508, 1509, 1511, 1512, 1515, 1513, 1514, 1516, 1517, 1518, 1533, 1520, 1521, 1522, 1534, 1524, 1525, 1526, 1519, 1527, 1528, 1529, 1523, 1530, 1531, 1532, 1535, 1536, 1537, 1541, 1538, 1539, 1540, 1542, 1543, 1544, 1559, 1546, 1547, 1548, 1560, 1550, 1551, 1552, 1545, 1553, 1554, 1555, 1549, 1556, 1557, 1558, 1561, 1562, 1563, 1570, 1564, 1565, 1566, 1571, 1567, 1568, 1569, 1572, 1573, 1574, 1583, 1577, 1578, 1579, 1575, 1580, 1581, 1582, 1585, 1586, 1587, 1584, 1588, 1589, 1590, 1576, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1643, 1601, 1602, 1603, 1604, 1605, 1646, 1606, 1607, 1608, 1609, 1610, 1645, 1611, 1612, 1613, 1614, 1615, 1644, 1618, 1619, 1620, 1621, 1622, 1599, 1623, 1624, 1625, 1626, 1627, 1600, 1628, 1629, 1630, 1631, 1632, 1616, 1633, 1634, 1635, 1636, 1637, 1617, 1638, 1639, 1640, 1641, 1642, 1647, 1648, 1649, 1650, 1651]

    mpg_label = ['1', "1'", '-1', "-11'", "-1'", '2', "21'", "2'", 'm', "m1'", "m'", '2/m', "2/m1'", "2'/m", "2/m'", "2'/m'", '222', "2221'", "2'2'2", 'mm2', "mm21'", "m'm2'", "m'm'2", 'mmm', "mmm1'", "mmm'", "m'm'm", "m'm'm'", '4', "41'", "4'", '-4', "-41'", "-4'", '4/m', "4/m1'", "4'/m", "4/m'", "4'/m'", '422', "4221'", "4'22'", "42'2'", '4mm', "4mm1'", "4'm'm", "4m'm'", '-42m', "-42m1'", "-4'2'm", "-4'2m'", "-42'm'", '4/mmm', "4/mmm1'", "4/m'mm", "4'/mm'm", "4'/m'm'm", "4/mm'm'", "4/m'm'm'", '3', "31'", '-3', "-31'", "-3'", '312', "31'2", "312'", '3m1', "3m1'", "3m'1", '-31m', "-31'm", "-3'1m", "-3'1m'", "-31m'", '6', "61'", "6'", '-6', "-61'", "-6'", '6/m', "6/m1'", "6'/m", "6/m'", "6'/m'", '622', "6221'", "6'2'2", "62'2'", '6mm', "6mm1'", "6'm'm", "6m'm'", '-6m2', "-6m21'", "-6'm'2", "-6'm2'", "-6m'2'", '6/mmm', "6/mmm1'", "6/m'mm", "6'/mm'm", "6'/m'm'm", "6/mm'm'", "6/m'm'm'", '23', "231'", 'm-3', "m-31'", "m'-3'", '432', "4321'", "4'32'", '-43m', "-43m1'", "-4'3m'", 'm-3m', "m-3m1'", "m'-3'm", "m-3m'", "m'-3'm'"]
    mpg_order = [1, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 4, 8, 4, 4, 4, 4, 8, 4, 4, 8, 4, 4, 8, 16, 8, 8, 8, 4, 8, 4, 4, 8, 4, 8, 16, 8, 8, 8, 8, 16, 8, 8, 8, 16, 8, 8, 8, 16, 8, 8, 8, 16, 32, 16, 16, 16, 16, 16, 3, 6, 6, 12, 6, 6, 12, 6, 6, 12, 6, 12, 24, 12, 12, 12, 6, 12, 6, 6, 12, 6, 12, 24, 12, 12, 12, 12, 24, 12, 12, 12, 24, 12, 12, 12, 24, 12, 12, 12, 24, 48, 24, 24, 24, 24, 24, 12, 24, 24, 48, 24, 24, 48, 24, 24, 48, 24, 48, 96, 48, 48, 48]
    mpg_type = [1, 2, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 3, 1, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 3, 3, 1, 2, 3, 3, 1, 2, 3, 3, 1, 2, 3, 3, 3, 1, 2, 3, 3, 3, 3, 3, 1, 2, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 3, 3, 1, 2, 3, 3, 1, 2, 3, 3, 1, 2, 3, 3, 3, 1, 2, 3, 3, 3, 3, 3, 1, 2, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 3, 3]

    msp_to_mpg = [1, 2, 2, 3, 4, 5, 4, 6, 7, 8, 7, 7, 7, 6, 7, 8, 7, 7, 7, 6, 7, 8, 7, 7, 9, 10, 11, 10, 10, 10, 9, 10, 11, 10, 10, 10, 10, 10, 9, 10, 11, 10, 10, 9, 10, 11, 10, 10, 12, 13, 14, 15, 16, 13, 13, 13, 12, 13, 14, 15, 16, 13, 13, 13, 12, 13, 14, 15, 16, 13, 13, 12, 13, 14, 15, 16, 13, 13, 13, 13, 13, 12, 13, 14, 15, 16, 13, 13, 13, 13, 13, 12, 13, 14, 15, 16, 13, 13, 17, 18, 19, 18, 18, 18, 17, 18, 19, 19, 18, 18, 18, 18, 18, 17, 18, 19, 19, 18, 18, 18, 18, 18, 17, 18, 19, 18, 18, 18, 17, 18, 19, 19, 18, 18, 18, 17, 18, 19, 19, 18, 18, 18, 17, 18, 19, 18, 17, 18, 19, 18, 17, 18, 19, 18, 20, 21, 22, 23, 21, 21, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 21, 21, 21, 21, 20, 21, 22, 23, 21, 21, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 21, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 21, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 21, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 21, 21, 21, 21, 20, 21, 22, 23, 21, 21, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 21, 21, 21, 21, 20, 21, 22, 23, 21, 21, 21, 21, 21, 20, 21, 22, 23, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 20, 21, 22, 23, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 20, 21, 22, 23, 21, 20, 21, 22, 23, 21, 20, 21, 22, 23, 21, 21, 20, 21, 22, 23, 21, 21, 20, 21, 22, 22, 23, 21, 21, 21, 24, 25, 26, 27, 28, 25, 25, 25, 24, 25, 26, 27, 28, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 25, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 25, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 25, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 25, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 25, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 25, 25, 25, 25, 24, 25, 26, 27, 28, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 25, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 24, 25, 26, 26, 26, 27, 27, 27, 28, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 25, 24, 25, 26, 27, 28, 25, 24, 25, 26, 27, 28, 25, 24, 25, 26, 27, 28, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 24, 25, 26, 27, 28, 25, 24, 25, 26, 26, 27, 27, 28, 25, 25, 29, 30, 31, 30, 30, 30, 29, 30, 31, 30, 30, 30, 29, 30, 31, 30, 30, 30, 29, 30, 31, 30, 30, 30, 29, 30, 31, 30, 29, 30, 31, 30, 32, 33, 34, 33, 33, 33, 32, 33, 34, 33, 35, 36, 37, 38, 39, 36, 36, 36, 35, 36, 37, 38, 39, 36, 36, 36, 35, 36, 37, 38, 39, 36, 36, 36, 35, 36, 37, 38, 39, 36, 36, 36, 35, 36, 37, 38, 39, 36, 35, 36, 37, 38, 39, 36, 40, 41, 42, 43, 42, 41, 41, 41, 40, 41, 42, 43, 42, 41, 41, 41, 40, 41, 42, 43, 42, 41, 41, 41, 40, 41, 42, 43, 42, 41, 41, 41, 40, 41, 42, 43, 42, 41, 41, 41, 40, 41, 42, 43, 42, 41, 41, 41, 40, 41, 42, 43, 42, 41, 41, 41, 40, 41, 42, 43, 42, 41, 41, 41, 40, 41, 42, 43, 42, 41, 40, 41, 42, 43, 42, 41, 44, 45, 46, 46, 47, 45, 45, 45, 44, 45, 46, 46, 47, 45, 45, 45, 44, 45, 46, 46, 47, 45, 45, 45, 44, 45, 46, 46, 47, 45, 45, 45, 44, 45, 46, 46, 47, 45, 45, 45, 44, 45, 46, 46, 47, 45, 45, 45, 44, 45, 46, 46, 47, 45, 45, 45, 44, 45, 46, 46, 47, 45, 45, 45, 44, 45, 46, 46, 47, 45, 44, 45, 46, 46, 47, 45, 44, 45, 46, 46, 47, 45, 44, 45, 46, 46, 47, 45, 48, 49, 50, 51, 52, 49, 49, 49, 48, 49, 50, 51, 52, 49, 49, 49, 48, 49, 50, 51, 52, 49, 49, 49, 48, 49, 50, 51, 52, 49, 49, 49, 48, 49, 51, 50, 52, 49, 49, 49, 48, 49, 51, 50, 52, 49, 49, 49, 48, 49, 51, 50, 52, 49, 49, 49, 48, 49, 51, 50, 52, 49, 49, 49, 48, 49, 51, 50, 52, 49, 48, 49, 51, 50, 52, 49, 48, 49, 50, 51, 52, 49, 48, 49, 50, 51, 52, 49, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 54, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 53, 54, 55, 56, 56, 57, 58, 57, 59, 54, 60, 61, 61, 60, 61, 61, 60, 61, 61, 60, 61, 61, 62, 63, 64, 63, 62, 63, 64, 63, 65, 66, 67, 66, 65, 66, 67, 66, 65, 66, 67, 66, 65, 66, 67, 66, 65, 66, 67, 66, 65, 66, 67, 66, 65, 66, 67, 66, 68, 69, 70, 69, 68, 69, 70, 69, 68, 69, 70, 69, 68, 69, 70, 69, 68, 69, 70, 69, 68, 69, 70, 69, 71, 72, 73, 74, 75, 72, 71, 72, 73, 74, 75, 72, 71, 72, 73, 74, 75, 72, 71, 72, 73, 74, 75, 72, 71, 72, 73, 74, 75, 72, 71, 72, 73, 74, 75, 72, 76, 77, 78, 77, 76, 77, 78, 77, 76, 77, 78, 77, 76, 77, 78, 77, 76, 77, 78, 77, 76, 77, 78, 77, 79, 80, 81, 80, 82, 83, 84, 85, 86, 83, 82, 83, 84, 85, 86, 83, 87, 88, 89, 89, 90, 88, 87, 88, 89, 89, 90, 88, 87, 88, 89, 89, 90, 88, 87, 88, 89, 89, 90, 88, 87, 88, 89, 89, 90, 88, 87, 88, 89, 89, 90, 88, 91, 92, 93, 93, 94, 92, 91, 92, 93, 93, 94, 92, 91, 92, 93, 93, 94, 92, 91, 92, 93, 93, 94, 92, 95, 96, 97, 98, 99, 96, 95, 96, 97, 98, 99, 96, 95, 96, 98, 97, 99, 96, 95, 96, 98, 97, 99, 96, 100, 101, 102, 103, 103, 104, 104, 105, 106, 101, 100, 101, 102, 103, 103, 104, 104, 105, 106, 101, 100, 101, 102, 103, 103, 104, 104, 105, 106, 101, 100, 101, 102, 103, 103, 104, 104, 105, 106, 101, 107, 108, 108, 107, 108, 108, 107, 108, 107, 108, 108, 107, 108, 109, 110, 111, 110, 109, 110, 111, 110, 109, 110, 111, 110, 109, 110, 111, 110, 109, 110, 111, 109, 110, 111, 110, 109, 110, 111, 112, 113, 114, 113, 112, 113, 114, 113, 112, 113, 114, 113, 112, 113, 114, 113, 112, 113, 114, 112, 113, 114, 113, 112, 113, 114, 113, 112, 113, 114, 115, 116, 117, 116, 115, 116, 117, 116, 115, 116, 117, 115, 116, 117, 116, 115, 116, 117, 116, 115, 116, 117, 118, 119, 120, 121, 122, 119, 118, 119, 120, 121, 122, 119, 118, 119, 120, 121, 122, 119, 118, 119, 120, 121, 122, 119, 118, 119, 120, 121, 122, 119, 118, 119, 120, 121, 122, 119, 118, 119, 120, 121, 122, 119, 118, 119, 120, 121, 122, 119, 118, 119, 120, 121, 122, 118, 119, 120, 121, 122]

def read_magmoms(filename, num_atoms):
    magmoms = np.zeros([num_atoms, 3], dtype='float64')
    i = 0
    with open(filename, 'r') as f:
        for i in range(num_atoms):
            magmoms[i] = np.array(f.readline().split('#')[0].split(), dtype='float64')
            # print(magmoms[i])
    return magmoms

def get_ntheta_from_rotmatrix(TR, tau, rot_car, atol=1e-5):
    det = LA.det(rot_car)
    u, v = LA.eig(det * rot_car)

    axis = np.real(v.T[np.argwhere(np.isclose(u, 1))[0,0]])
    _theta = np.arccos(np.clip((np.trace(det * rot_car) - 1)/2, -1, 1)) # [0, pi]
    nx, ny, nz = axis
    taux, tauy, tauz = tau

    symmop = None
    for theta in [_theta, 2*np.pi-_theta]:
        rot_car_test = det * scipy_rot.from_rotvec(theta * axis).as_matrix()
        rot_car_test[np.abs(rot_car_test) < 1e-10] = 0
        if np.isclose(rot_car, rot_car_test, atol=atol).all():
            symmop = [TR, det, theta, nx, ny, nz, taux, tauy, tauz]
            break

    # if symmop is None:
    #     print('error in get_ntheta_from_rotmatrix', det, theta/np.pi*180, axis)
    # else:
    #     print('get_ntheta_from_rotmatrix', det, theta/np.pi*180, axis)
    # print(symmop)

    return symmop

def print_spg(cell_nonmag, latt, symprec=1e-5):
    spg_symbol = spglib.get_spacegroup(cell_nonmag, symprec=symprec, angle_tolerance=-1.0, symbol_type=0)
    info_spg = spglib.get_symmetry(cell_nonmag, symprec=symprec, angle_tolerance=-1.0, mag_symprec=-1.0)
    info_spg_dataset = spglib.get_symmetry_dataset(cell_nonmag, symprec=symprec)
    info_standard_spg = spglib.get_symmetry_from_database(info_spg_dataset.hall_number)

    pointgroup = info_spg_dataset.pointgroup
    rot = info_spg_dataset.rotations
    tau = info_spg_dataset.translations
    tau[np.abs(tau) < 1e-5] = 0
    n_operations = rot.shape[0]
    symmops = [get_ntheta_from_rotmatrix(0, tau[i], latt @ rot[i] @ LA.inv(latt), atol=symprec) for i in range(n_operations)]

    # # debug
    # for i in range(n_operations):
    #     print(tau[i], '\n', rot[i])
    #     print(symmops[i])
    #     print('\n')

    print('-' * 100)
    # print('  Space group')
    print('  pointgroup: ', pointgroup)
    print('  spacegroup: ', spg_symbol)
    print('  n_operations: ', n_operations)
    print('')

    print('In axis-angle form:\n')
    print('  det      alpha   alpha(deg)         nx        ny         nz       taux       tauy       tauz')
    for i in range(n_operations):
        _, _det, _theta, _nx, _ny, _nz, _taux, _tauy, _tauz = symmops[i]
        print('{:>5d}{:11.6f} ({:6.0f} deg){:11.6f}{:11.6f}{:11.6f}{:11.6f}{:11.6f}{:11.6f}'.format(
            int(np.rint(_det)), _theta, _theta/np.pi*180, _nx, _ny, _nz, _taux, _tauy, _tauz
        ))
    print('')

    print('In rotation matrix form (fractional coordinates):')
    for i in range(0, n_operations, 3):
        num_print = 3 if (n_operations - i) // 3 else n_operations % 3
        # print(i, num_print)

        print('')
        for j in range(num_print):
            print('   {:10.6f}{:10.6f}{:10.6f}'.format(tau[i + j, 0], tau[i + j, 1], tau[i + j, 2]),
                  end='')
        print('')
        for a in range(3):
            for j in range(num_print):
                print('   {:10.6f}{:10.6f}{:10.6f}'.format(
                    rot[i + j, a, 0], rot[i + j, a, 1], rot[i + j, a, 2]
                ), end='')
            print('')
    print('-' * 100)

def print_msg(cell_mag, latt, symprec=1e-5):
    info_mag = spglib.get_magnetic_symmetry(cell_mag, symprec=symprec, angle_tolerance=-1.0, mag_symprec=-1.0)
    info_mag_dataset = spglib.get_magnetic_symmetry_dataset(cell_mag, symprec=symprec)
    msg_symbol = spglib.get_magnetic_spacegroup_type(info_mag_dataset.uni_number)
    info_standard_msg = spglib.get_magnetic_symmetry_from_database(info_mag_dataset.uni_number)

    n_operations = info_mag_dataset.n_operations
    msg_type = info_mag_dataset.msg_type
    bns_number = msg_symbol.bns_number
    rot = info_mag_dataset.rotations
    tau = info_mag_dataset.translations
    tau[np.abs(tau) < 1e-5] = 0
    TR = info_mag_dataset.time_reversals
    symmops = [get_ntheta_from_rotmatrix(int(TR[i]), tau[i], latt @ rot[i] @ LA.inv(latt), atol=symprec) for i in range(n_operations)]

    index_msg = db_msg.msg_BNS_number.index(bns_number)
    index_msg_OG = db_msg.msg_BNS_to_OG[index_msg]
    bns_label = db_msg.msg_BNS_label[index_msg]
    og_number = db_msg.msg_OG_number[index_msg_OG]
    og_label = db_msg.msg_OG_label[index_msg_OG]
    index_mpg = db_msg.msp_to_mpg[index_msg] - 1
    mpg_type = db_msg.mpg_type[index_mpg]
    mpg_order = db_msg.mpg_order[index_mpg]
    mpg_label = db_msg.mpg_label[index_mpg]

    print('-' * 100)
    # print('  Magnetic space group')
    print('  BNS setting:  \t\t {} ({})'.format(bns_number, bns_label))
    print('  OG setting:  \t\t\t {} ({})'.format(og_number, og_label))
    print('  magnetic space group type: \t', msg_type)
    print('  n_operations of msp: \t\t', n_operations)
    print()
    print('  magnetic point group: \t', mpg_label)
    print('  n_operations of mpg: \t\t', mpg_order)
    print('  magnetic point group type: \t', mpg_type)
    print('')

    print('In axis-angle form:\n')
    print('   TR  det      alpha   alpha(deg)         nx        ny         nz       taux       tauy       tauz')
    for i in range(n_operations):
        _TR, _det, _theta, _nx, _ny, _nz, _taux, _tauy, _tauz = symmops[i]
        print('{:>5d}{:>5d}{:11.6f} ({:6.0f} deg){:11.6f}{:11.6f}{:11.6f}{:11.6f}{:11.6f}{:11.6f}'.format(
            int(_TR), int(np.rint(_det)), _theta, _theta/np.pi*180, _nx, _ny, _nz, _taux, _tauy, _tauz
        ))
    print('')

    print('In rotation matrix form (fractional coordinates):')
    for i in range(0, n_operations, 3):
        num_print = 3 if (n_operations - i) // 3 else n_operations % 3
        # print(i, num_print)

        # print('-' * 100)
        print('')
        for j in range(num_print):
            print('{:>3d}{:10.6f}{:10.6f}{:10.6f}'.format(TR[i + j], tau[i + j, 0], tau[i + j, 1], tau[i + j, 2]),
                  end='')
        print('')
        for a in range(3):
            for j in range(num_print):
                print('   {:10.6f}{:10.6f}{:10.6f}'.format(
                    rot[i + j, a, 0], rot[i + j, a, 1], rot[i + j, a, 2]
                ), end='')
            print('')
    print('-' * 100)


if __name__ == "__main__":
    description = 'Find magnetic point group from POSCAR and magmoms (optional) files with a given threshold.'
    parser = argparse.ArgumentParser(description=description)
    parser.add_argument('poscar', type=str, help='Input POSCAR file (e.g., POSCAR)')
    parser.add_argument('-m', '--magmoms', type=str, help='Input magmoms file (e.g., magmoms)')
    parser.add_argument('-t', '--threshold', type=float, default=1e-5, help='Threshold value (default: 1e-5)')
    parser.add_argument('-f', '--fracmag', action='store_true', dest='is_frac_magmoms', help='if the magmoms in fractional coordinates, default is in cartesian coordinates')
    args = parser.parse_args()
    fname_poscar, fname_magmoms = args.poscar, args.magmoms
    symprec = args.threshold
    is_frac_magmoms = args.is_frac_magmoms
    print('\n- Symmetry search tolerance in the unit of length is: {:10.7f} Angstrom. '.format(symprec))

    unitcell, optional_structure_info = read_crystal_structure(fname_poscar)
    num_atoms = len(unitcell.numbers)
    # latt = unitcell.get_cell().T
    latt = unitcell.cell.T

    cell_nonmag = (
        unitcell.cell,
        # unitcell.get_positions(),
        unitcell.scaled_positions,
        unitcell.numbers,
        np.zeros_like(unitcell.numbers),
    )

    if fname_magmoms is not None:
        magmoms = read_magmoms(fname_magmoms, num_atoms)
        # magmoms should be seted in cartesian coordinates,
        # see https://spglib.readthedocs.io/en/latest/python-spglib.html#crystal-structure-cell
        if is_frac_magmoms:
            magmoms = (latt @ magmoms.T).T
        unitcell.magnetic_moments = magmoms
        cell_mag = (
            unitcell.cell,
            # unitcell.get_positions(),
            unitcell.scaled_positions,
            unitcell.numbers,
            unitcell.magnetic_moments,
        )
        print(f'\nFound magnetic moments in "{fname_magmoms}" file:')
        print('-'*65)
        print('  cartesian coordinates            fractional coordinates   ')
        print('-'*65)
        for i in range(num_atoms):
            _magmoms_car = magmoms[i]
            _magmoms_fra = LA.inv(latt) @ _magmoms_car
            print('{}{:10.6f}{:10.6f}{:10.6f}   {}{:10.6f}{:10.6f}{:10.6f}'.format(
                periodic_table_inv[unitcell.numbers[i]], _magmoms_car[0], _magmoms_car[1], _magmoms_car[2],
                periodic_table_inv[unitcell.numbers[i]], _magmoms_fra[0], _magmoms_fra[1], _magmoms_fra[2],
            ))
        # for _magmoms_car in magmoms:
        #     print('{:10.6f}{:10.6f}{:10.6f}   {:10.6f}{:10.6f}{:10.6f}'.format(periodic_table[], _magmoms_car[0], _magmoms_car[1], _magmoms_car[2],
        #                                                                        periodic_table[], _magmoms_fra[0], _magmoms_fra[1], _magmoms_fra[2]))
        print('-'*65)

    print('\n\nSpace group for non-magnetic structure (symprec:{:10.7f} Angstrom)'.format(symprec))
    print_spg(cell_nonmag, latt, symprec=symprec)

    if fname_magmoms is not None:
        print('\n\nMagnetic space group for magnetic structure (symprec:{:10.7f} Angstrom)'.format(symprec))
        print_msg(cell_mag, latt, symprec=symprec)
        print('\n* TR = 0 (without TR) or TR = 1 (with TR)')


# ''' debug '''
# if __name__ == "__main__":
#     os.chdir('/Users/jincao/Downloads/temp')
#     fname_poscar = 'POSCAR'
#     fname_magmoms = 'magmoms'
#     symprec = 0.1
#
#     unitcell, optional_structure_info = read_crystal_structure(fname_poscar)
#     num_atoms = unitcell.get_number_of_atoms()
#     latt = unitcell.get_cell().T
#
#     cell_nonmag = (
#         unitcell.get_cell(),
#         # unitcell.get_positions(),
#         unitcell.get_scaled_positions(),
#         unitcell.get_atomic_numbers(),
#         np.zeros_like(unitcell.get_atomic_numbers()),
#     )
#
#     if fname_magmoms is not None:
#         magmoms = read_magmoms(fname_magmoms, num_atoms)
#         unitcell.set_magnetic_moments(magmoms)
#         cell_mag = (
#             unitcell.get_cell(),
#             # unitcell.get_positions(),
#             unitcell.get_scaled_positions(),
#             unitcell.get_atomic_numbers(),
#             unitcell.get_magnetic_moments(),
#         )
#
#     primitive_cell = spglib.find_primitive(cell_mag, symprec=symprec)


