-- ==============================================================
-- SCRIPT DE CREATION ET PEUPLEMENT : BASE DE DONNEES HOPITAL
-- ==============================================================
-- Note : Les contraintes (PK, FK, UNIQUE, CHECK) ont ete omises
-- pour permettre aux etudiants
-- de les ajouter eux-memes via les requetes ALTER TABLE des exercices.
-- Autheur: Pr. K.BOUKHDIR
CREATE DATABASE Hospital
DROP TABLE IF EXISTS AFFECTATION;
DROP TABLE IF EXISTS CONSULTATION;
DROP TABLE IF EXISTS SERVICE;
DROP TABLE IF EXISTS MEDECIN;
DROP TABLE IF EXISTS PATIENT;
-- 1. CREATION DES TABLES (Sans contraintes)
CREATE TABLE PATIENT (
Id_patient INT,
Nom VARCHAR(50),
Prenom VARCHAR(50),
Ville VARCHAR(50),
Date_naissance DATE
);
CREATE TABLE MEDECIN (
Id_medecin INT,
Nom VARCHAR(50),
Specialite VARCHAR(50),
Salaire DECIMAL(10,2)
);
CREATE TABLE SERVICE (
Id_service INT,
Nom_service VARCHAR(50),
Batiment VARCHAR(50),
Budget DECIMAL(15,2)
);
CREATE TABLE CONSULTATION (
Id_consult INT,
Id_patient INT,
Id_medecin INT,
Date_consultation DATE,
Tarif DECIMAL(10,2)
);
CREATE TABLE AFFECTATION (
Id_affect INT,
Id_medecin INT,
Id_service INT,
Annee INT
);
-- 2. INSERTION DES DONNEES (au moins 20 lignes par table)
-- Table: PATIENT
INSERT INTO PATIENT (Id_patient, Nom, Prenom, Ville, Date_naissance) VALUES
(1, 'Alaoui', 'Sara', 'Casablanca', '1990-05-14'),
(2, 'Bennani', 'Omar', 'Rabat', '1985-08-22'),
(3, 'Tazi', 'Imane', 'Fes', '1992-11-03'),
(4, 'Idrissi', 'Youssef', 'Marrakech', '1978-02-15'),
(5, 'Amrani', 'Salma', 'Casablanca', '1995-07-30'),
(6, 'Chraibi', 'Hassan', 'Tanger', '1980-12-10'),
(7, 'El Fassi', 'Nour', 'Casablanca', '2000-01-25'),
(8, 'Zidane', 'Ali', 'Agadir', '1988-04-18'),
(9, 'Mansouri', 'Kenza', 'Rabat', '1993-09-05'),
(10, 'Radi', 'Hamza', 'Fes', '1982-06-20'),
(11, 'Bourkia', 'Leila', 'Oujda', '1997-03-12'),
(12, 'Tahiri', 'Mehdi', 'Casablanca', '1991-10-08'),
(13, 'Benjelloun', 'Amina', 'Rabat', '1986-05-27'),
(14, 'Filali', 'Rachid', 'Meknes', '1975-08-14'),
(15, 'Jabri', 'Fatima', 'Casablanca', '1999-12-02'),
(16, 'Qadiri', 'Samir', 'Fes', '1989-07-11'),
(17, 'Lahlou', 'Yassine', 'Marrakech', '1994-02-28'),
(18, 'Mernissi', 'Zineb', 'Tanger', '1983-11-19'),
(19, 'Kettani', 'Reda', 'Casablanca', '1996-06-04'),
(20, 'Oufkir', 'Meryem', 'Rabat', '1998-09-21'),
(21, 'PatientFantome', 'SansConsult', 'Casablanca', '2002-01-01');
-- Table: MEDECIN
INSERT INTO MEDECIN (Id_medecin, Nom, Specialite, Salaire) VALUES
(1, 'Naciri', 'Cardiologie', 15000.00),
(2, 'Karim', 'Pediatrie', 12000.00),
(3, 'Berrada', 'Cardiologie', 16000.00),
(4, 'El Amrani', 'Neurologie', 18000.00),
(5, 'Daoudi', 'Dermatologie', 11000.00),
(6, 'Slimani', 'Cardiologie', 14500.00),
(7, 'Fahmi', 'Chirurgie', 25000.00),
(8, 'Ghazali', 'Ophtalmologie', 13000.00),
(9, 'Haddad', 'Radiologie', 14000.00),
(10, 'Iraqi', 'Neurologie', 17500.00),
(11, 'Jalil', 'Pediatrie', 11500.00),
(12, 'Kabbaj', 'Pneumologie', 13500.00),
(13, 'Loukili', 'Gastro-enterologie', 14200.00),
(14, 'Moutaouakil', 'Chirurgie', 24000.00),
(15, 'Nabil', 'Dermatologie', 10500.00),
(16, 'Ouazzani', 'Cardiologie', 15500.00),
(17, 'Qabbal', 'Ophtalmologie', 13200.00),
(18, 'Rami', 'Psychiatrie', 12500.00),
(19, 'Sbai', 'Radiologie', 14800.00),
(20, 'MedSansConsult', 'Generaliste', 9000.00);
-- Table: SERVICE
INSERT INTO SERVICE (Id_service, Nom_service, Batiment, Budget) VALUES
(1, 'Urgences', 'A', 500000.00),
(2, 'Reanimation', 'A', 800000.00),
(3, 'Consultations Externes', 'B', 40000.00),
(4, 'Imagerie Medicale', 'C', 1200000.00),
(5, 'Laboratoire', 'C', 300000.00),
(6, 'Chirurgie Bloc 1', 'A', 950000.00),
(7, 'Maternite', 'B', 450000.00),
(8, 'Pediatrie A', 'B', 150000.00),
(9, 'Cardiologie Soins Intensifs', 'A', 600000.00),
(10, 'Neurologie Clinique', 'D', 200000.00),
(11, 'Oncologie', 'D', 1500000.00),
(12, 'Orthopedie', 'B', 250000.00),
(13, 'Dermatologie', 'C', 80000.00),
(14, 'Ophtalmologie', 'C', 90000.00),
(15, 'Gastro-enterologie', 'B', 120000.00),
(16, 'Psychiatrie', 'E', 180000.00),
(17, 'Pneumologie', 'D', 210000.00),
(18, 'Pharmacie Centrale', 'E', 750000.00),
(19, 'Dietetique', 'E', 30000.00),
(20, 'ServiceVide', 'F', 20000.00);
-- Table: CONSULTATION
INSERT INTO CONSULTATION (Id_consult, Id_patient, Id_medecin, Date_consultation, Tarif) VALUES
(1, 1, 1, '2025-01-10', 250.00),
(2, 2, 1, '2025-01-11', 250.00),
(3, 3, 2, '2025-02-15', 150.00),
(4, 4, 3, '2025-03-20', 300.00),
(5, 5, 4, '2025-04-05', 400.00),
(6, 1, 5, '2025-05-12', 80.00),
(7, 6, 6, '2025-06-18', 200.00),
(8, 7, 7, '2025-07-22', 1000.00),
(9, 8, 8, '2025-08-30', NULL),
(10, 9, 9, '2025-09-14', 250.00),
(11, 1, 10, '2025-10-01', 350.00),
(12, 1, 2, '2025-10-15', 150.00),
(13, 10, 11, '2025-11-05', 150.00),
(14, 11, 12, '2025-12-12', 200.00),
(15, 12, 13, '2026-01-20', 250.00),
(16, 13, 14, '2026-02-14', 90.00),
(17, 14, 15, '2026-03-08', 150.00),
(18, 15, 16, '2026-04-18', 300.00),
(19, 16, 17, '2026-05-22', NULL),
(20, 17, 18, '2026-06-11', 200.00),
(21, 18, 19, '2026-07-09', 180.00),
(22, 19, 1, '2026-08-15', 250.00),
(23, 20, 2, '2026-09-02', 150.00),
(24, 7, 1, '2026-09-10', 250.00),
(25, 2, 1, '2026-09-11', 250.00),
(26, 3, 1, '2026-09-12', 250.00),
(27, 4, 1, '2026-09-13', 250.00),
(28, 5, 1, '2026-09-14', 250.00),
(29, 6, 1, '2026-09-15', 250.00),
(30, 8, 1, '2026-09-16', 250.00),
(31, 9, 1, '2026-09-17', 250.00),
(32, 10, 1, '2026-09-18', 250.00);
-- Table: AFFECTATION
INSERT INTO AFFECTATION (Id_affect, Id_medecin, Id_service, Annee) VALUES
(1, 1, 9, 2025),
(2, 1, 9, 2026),
(3, 2, 8, 2026),
(4, 3, 9, 2026),
(5, 4, 10, 2026),
(6, 5, 13, 2026),
(7, 6, 9, 2026),
(8, 7, 6, 2026),
(9, 8, 14, 2026),
(10, 9, 4, 2026),
(11, 10, 10, 2026),
(12, 11, 8, 2026),
(13, 12, 17, 2026),
(14, 13, 15, 2026),
(15, 14, 6, 2026),
(16, 15, 13, 2025),
(17, 16, 9, 2026),
(18, 17, 14, 2026),
(19, 18, 16, 2026),
(20, 19, 4, 2026),
(21, 20, 3, 2026);
LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0gU0NSSVBUIERFIENSRUFUSU9OIEVUIFBFVVBMRU1FTlQgOiBCQVNFIERFIERPTk5FRVMgSE9QSVRBTAotLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLSBOb3RlIDogTGVzIGNvbnRyYWludGVzIChQSywgRkssIFVOSVFVRSwgQ0hFQ0spIG9udCBldGUgb21pc2VzCi0tIHBvdXIgcGVybWV0dHJlIGF1eCBldHVkaWFudHMKLS0gZGUgbGVzIGFqb3V0ZXIgZXV4LW1lbWVzIHZpYSBsZXMgcmVxdWV0ZXMgQUxURVIgVEFCTEUgZGVzIGV4ZXJjaWNlcy4KLS0gQXV0aGV1cjogUHIuIEsuQk9VS0hESVIKCkNSRUFURSBEQVRBQkFTRSBIb3NwaXRhbAoKRFJPUCBUQUJMRSBJRiBFWElTVFMgQUZGRUNUQVRJT047CkRST1AgVEFCTEUgSUYgRVhJU1RTIENPTlNVTFRBVElPTjsKRFJPUCBUQUJMRSBJRiBFWElTVFMgU0VSVklDRTsKRFJPUCBUQUJMRSBJRiBFWElTVFMgTUVERUNJTjsKRFJPUCBUQUJMRSBJRiBFWElTVFMgUEFUSUVOVDsKCi0tIDEuIENSRUFUSU9OIERFUyBUQUJMRVMgKFNhbnMgY29udHJhaW50ZXMpCgpDUkVBVEUgVEFCTEUgUEFUSUVOVCAoCiAgICBJZF9wYXRpZW50IElOVCwKICAgIE5vbSBWQVJDSEFSKDUwKSwKICAgIFByZW5vbSBWQVJDSEFSKDUwKSwKICAgIFZpbGxlIFZBUkNIQVIoNTApLAogICAgRGF0ZV9uYWlzc2FuY2UgREFURQopOwoKQ1JFQVRFIFRBQkxFIE1FREVDSU4gKAogICAgSWRfbWVkZWNpbiBJTlQsCiAgICBOb20gVkFSQ0hBUig1MCksCiAgICBTcGVjaWFsaXRlIFZBUkNIQVIoNTApLAogICAgU2FsYWlyZSBERUNJTUFMKDEwLDIpCik7CgpDUkVBVEUgVEFCTEUgU0VSVklDRSAoCiAgICBJZF9zZXJ2aWNlIElOVCwKICAgIE5vbV9zZXJ2aWNlIFZBUkNIQVIoNTApLAogICAgQmF0aW1lbnQgVkFSQ0hBUig1MCksCiAgICBCdWRnZXQgREVDSU1BTCgxNSwyKQopOwoKQ1JFQVRFIFRBQkxFIENPTlNVTFRBVElPTiAoCiAgICBJZF9jb25zdWx0IElOVCwKICAgIElkX3BhdGllbnQgSU5ULAogICAgSWRfbWVkZWNpbiBJTlQsCiAgICBEYXRlX2NvbnN1bHRhdGlvbiBEQVRFLAogICAgVGFyaWYgREVDSU1BTCgxMCwyKQopOwoKQ1JFQVRFIFRBQkxFIEFGRkVDVEFUSU9OICgKICAgIElkX2FmZmVjdCBJTlQsCiAgICBJZF9tZWRlY2luIElOVCwKICAgIElkX3NlcnZpY2UgSU5ULAogICAgQW5uZWUgSU5UCik7CgotLSAyLiBJTlNFUlRJT04gREVTIERPTk5FRVMgKGF1IG1vaW5zIDIwIGxpZ25lcyBwYXIgdGFibGUpCgotLSBUYWJsZTogUEFUSUVOVApJTlNFUlQgSU5UTyBQQVRJRU5UIChJZF9wYXRpZW50LCBOb20sIFByZW5vbSwgVmlsbGUsIERhdGVfbmFpc3NhbmNlKSBWQUxVRVMKKDEsICdBbGFvdWknLCAnU2FyYScsICdDYXNhYmxhbmNhJywgJzE5OTAtMDUtMTQnKSwKKDIsICdCZW5uYW5pJywgJ09tYXInLCAnUmFiYXQnLCAnMTk4NS0wOC0yMicpLAooMywgJ1RhemknLCAnSW1hbmUnLCAnRmVzJywgJzE5OTItMTEtMDMnKSwKKDQsICdJZHJpc3NpJywgJ1lvdXNzZWYnLCAnTWFycmFrZWNoJywgJzE5NzgtMDItMTUnKSwKKDUsICdBbXJhbmknLCAnU2FsbWEnLCAnQ2FzYWJsYW5jYScsICcxOTk1LTA3LTMwJyksCig2LCAnQ2hyYWliaScsICdIYXNzYW4nLCAnVGFuZ2VyJywgJzE5ODAtMTItMTAnKSwKKDcsICdFbCBGYXNzaScsICdOb3VyJywgJ0Nhc2FibGFuY2EnLCAnMjAwMC0wMS0yNScpLAooOCwgJ1ppZGFuZScsICdBbGknLCAnQWdhZGlyJywgJzE5ODgtMDQtMTgnKSwKKDksICdNYW5zb3VyaScsICdLZW56YScsICdSYWJhdCcsICcxOTkzLTA5LTA1JyksCigxMCwgJ1JhZGknLCAnSGFtemEnLCAnRmVzJywgJzE5ODItMDYtMjAnKSwKKDExLCAnQm91cmtpYScsICdMZWlsYScsICdPdWpkYScsICcxOTk3LTAzLTEyJyksCigxMiwgJ1RhaGlyaScsICdNZWhkaScsICdDYXNhYmxhbmNhJywgJzE5OTEtMTAtMDgnKSwKKDEzLCAnQmVuamVsbG91bicsICdBbWluYScsICdSYWJhdCcsICcxOTg2LTA1LTI3JyksCigxNCwgJ0ZpbGFsaScsICdSYWNoaWQnLCAnTWVrbmVzJywgJzE5NzUtMDgtMTQnKSwKKDE1LCAnSmFicmknLCAnRmF0aW1hJywgJ0Nhc2FibGFuY2EnLCAnMTk5OS0xMi0wMicpLAooMTYsICdRYWRpcmknLCAnU2FtaXInLCAnRmVzJywgJzE5ODktMDctMTEnKSwKKDE3LCAnTGFobG91JywgJ1lhc3NpbmUnLCAnTWFycmFrZWNoJywgJzE5OTQtMDItMjgnKSwKKDE4LCAnTWVybmlzc2knLCAnWmluZWInLCAnVGFuZ2VyJywgJzE5ODMtMTEtMTknKSwKKDE5LCAnS2V0dGFuaScsICdSZWRhJywgJ0Nhc2FibGFuY2EnLCAnMTk5Ni0wNi0wNCcpLAooMjAsICdPdWZraXInLCAnTWVyeWVtJywgJ1JhYmF0JywgJzE5OTgtMDktMjEnKSwKKDIxLCAnUGF0aWVudEZhbnRvbWUnLCAnU2Fuc0NvbnN1bHQnLCAnQ2FzYWJsYW5jYScsICcyMDAyLTAxLTAxJyk7CgotLSBUYWJsZTogTUVERUNJTgpJTlNFUlQgSU5UTyBNRURFQ0lOIChJZF9tZWRlY2luLCBOb20sIFNwZWNpYWxpdGUsIFNhbGFpcmUpIFZBTFVFUwooMSwgJ05hY2lyaScsICdDYXJkaW9sb2dpZScsIDE1MDAwLjAwKSwKKDIsICdLYXJpbScsICdQZWRpYXRyaWUnLCAxMjAwMC4wMCksCigzLCAnQmVycmFkYScsICdDYXJkaW9sb2dpZScsIDE2MDAwLjAwKSwKKDQsICdFbCBBbXJhbmknLCAnTmV1cm9sb2dpZScsIDE4MDAwLjAwKSwKKDUsICdEYW91ZGknLCAnRGVybWF0b2xvZ2llJywgMTEwMDAuMDApLAooNiwgJ1NsaW1hbmknLCAnQ2FyZGlvbG9naWUnLCAxNDUwMC4wMCksCig3LCAnRmFobWknLCAnQ2hpcnVyZ2llJywgMjUwMDAuMDApLAooOCwgJ0doYXphbGknLCAnT3BodGFsbW9sb2dpZScsIDEzMDAwLjAwKSwKKDksICdIYWRkYWQnLCAnUmFkaW9sb2dpZScsIDE0MDAwLjAwKSwKKDEwLCAnSXJhcWknLCAnTmV1cm9sb2dpZScsIDE3NTAwLjAwKSwKKDExLCAnSmFsaWwnLCAnUGVkaWF0cmllJywgMTE1MDAuMDApLAooMTIsICdLYWJiYWonLCAnUG5ldW1vbG9naWUnLCAxMzUwMC4wMCksCigxMywgJ0xvdWtpbGknLCAnR2FzdHJvLWVudGVyb2xvZ2llJywgMTQyMDAuMDApLAooMTQsICdNb3V0YW91YWtpbCcsICdDaGlydXJnaWUnLCAyNDAwMC4wMCksCigxNSwgJ05hYmlsJywgJ0Rlcm1hdG9sb2dpZScsIDEwNTAwLjAwKSwKKDE2LCAnT3VhenphbmknLCAnQ2FyZGlvbG9naWUnLCAxNTUwMC4wMCksCigxNywgJ1FhYmJhbCcsICdPcGh0YWxtb2xvZ2llJywgMTMyMDAuMDApLAooMTgsICdSYW1pJywgJ1BzeWNoaWF0cmllJywgMTI1MDAuMDApLAooMTksICdTYmFpJywgJ1JhZGlvbG9naWUnLCAxNDgwMC4wMCksCigyMCwgJ01lZFNhbnNDb25zdWx0JywgJ0dlbmVyYWxpc3RlJywgOTAwMC4wMCk7CgotLSBUYWJsZTogU0VSVklDRQpJTlNFUlQgSU5UTyBTRVJWSUNFIChJZF9zZXJ2aWNlLCBOb21fc2VydmljZSwgQmF0aW1lbnQsIEJ1ZGdldCkgVkFMVUVTCigxLCAnVXJnZW5jZXMnLCAnQScsIDUwMDAwMC4wMCksCigyLCAnUmVhbmltYXRpb24nLCAnQScsIDgwMDAwMC4wMCksCigzLCAnQ29uc3VsdGF0aW9ucyBFeHRlcm5lcycsICdCJywgNDAwMDAuMDApLAooNCwgJ0ltYWdlcmllIE1lZGljYWxlJywgJ0MnLCAxMjAwMDAwLjAwKSwKKDUsICdMYWJvcmF0b2lyZScsICdDJywgMzAwMDAwLjAwKSwKKDYsICdDaGlydXJnaWUgQmxvYyAxJywgJ0EnLCA5NTAwMDAuMDApLAooNywgJ01hdGVybml0ZScsICdCJywgNDUwMDAwLjAwKSwKKDgsICdQZWRpYXRyaWUgQScsICdCJywgMTUwMDAwLjAwKSwKKDksICdDYXJkaW9sb2dpZSBTb2lucyBJbnRlbnNpZnMnLCAnQScsIDYwMDAwMC4wMCksCigxMCwgJ05ldXJvbG9naWUgQ2xpbmlxdWUnLCAnRCcsIDIwMDAwMC4wMCksCigxMSwgJ09uY29sb2dpZScsICdEJywgMTUwMDAwMC4wMCksCigxMiwgJ09ydGhvcGVkaWUnLCAnQicsIDI1MDAwMC4wMCksCigxMywgJ0Rlcm1hdG9sb2dpZScsICdDJywgODAwMDAuMDApLAooMTQsICdPcGh0YWxtb2xvZ2llJywgJ0MnLCA5MDAwMC4wMCksCigxNSwgJ0dhc3Ryby1lbnRlcm9sb2dpZScsICdCJywgMTIwMDAwLjAwKSwKKDE2LCAnUHN5Y2hpYXRyaWUnLCAnRScsIDE4MDAwMC4wMCksCigxNywgJ1BuZXVtb2xvZ2llJywgJ0QnLCAyMTAwMDAuMDApLAooMTgsICdQaGFybWFjaWUgQ2VudHJhbGUnLCAnRScsIDc1MDAwMC4wMCksCigxOSwgJ0RpZXRldGlxdWUnLCAnRScsIDMwMDAwLjAwKSwKKDIwLCAnU2VydmljZVZpZGUnLCAnRicsIDIwMDAwLjAwKTsKCi0tIFRhYmxlOiBDT05TVUxUQVRJT04KSU5TRVJUIElOVE8gQ09OU1VMVEFUSU9OIChJZF9jb25zdWx0LCBJZF9wYXRpZW50LCBJZF9tZWRlY2luLCBEYXRlX2NvbnN1bHRhdGlvbiwgVGFyaWYpIFZBTFVFUwooMSwgMSwgMSwgJzIwMjUtMDEtMTAnLCAyNTAuMDApLAooMiwgMiwgMSwgJzIwMjUtMDEtMTEnLCAyNTAuMDApLAooMywgMywgMiwgJzIwMjUtMDItMTUnLCAxNTAuMDApLAooNCwgNCwgMywgJzIwMjUtMDMtMjAnLCAzMDAuMDApLAooNSwgNSwgNCwgJzIwMjUtMDQtMDUnLCA0MDAuMDApLAooNiwgMSwgNSwgJzIwMjUtMDUtMTInLCA4MC4wMCksCig3LCA2LCA2LCAnMjAyNS0wNi0xOCcsIDIwMC4wMCksCig4LCA3LCA3LCAnMjAyNS0wNy0yMicsIDEwMDAuMDApLAooOSwgOCwgOCwgJzIwMjUtMDgtMzAnLCBOVUxMKSwKKDEwLCA5LCA5LCAnMjAyNS0wOS0xNCcsIDI1MC4wMCksCigxMSwgMSwgMTAsICcyMDI1LTEwLTAxJywgMzUwLjAwKSwKKDEyLCAxLCAyLCAnMjAyNS0xMC0xNScsIDE1MC4wMCksCigxMywgMTAsIDExLCAnMjAyNS0xMS0wNScsIDE1MC4wMCksCigxNCwgMTEsIDEyLCAnMjAyNS0xMi0xMicsIDIwMC4wMCksCigxNSwgMTIsIDEzLCAnMjAyNi0wMS0yMCcsIDI1MC4wMCksCigxNiwgMTMsIDE0LCAnMjAyNi0wMi0xNCcsIDkwLjAwKSwKKDE3LCAxNCwgMTUsICcyMDI2LTAzLTA4JywgMTUwLjAwKSwKKDE4LCAxNSwgMTYsICcyMDI2LTA0LTE4JywgMzAwLjAwKSwKKDE5LCAxNiwgMTcsICcyMDI2LTA1LTIyJywgTlVMTCksCigyMCwgMTcsIDE4LCAnMjAyNi0wNi0xMScsIDIwMC4wMCksCigyMSwgMTgsIDE5LCAnMjAyNi0wNy0wOScsIDE4MC4wMCksCigyMiwgMTksIDEsICcyMDI2LTA4LTE1JywgMjUwLjAwKSwKKDIzLCAyMCwgMiwgJzIwMjYtMDktMDInLCAxNTAuMDApLAooMjQsIDcsIDEsICcyMDI2LTA5LTEwJywgMjUwLjAwKSwKKDI1LCAyLCAxLCAnMjAyNi0wOS0xMScsIDI1MC4wMCksCigyNiwgMywgMSwgJzIwMjYtMDktMTInLCAyNTAuMDApLAooMjcsIDQsIDEsICcyMDI2LTA5LTEzJywgMjUwLjAwKSwKKDI4LCA1LCAxLCAnMjAyNi0wOS0xNCcsIDI1MC4wMCksCigyOSwgNiwgMSwgJzIwMjYtMDktMTUnLCAyNTAuMDApLAooMzAsIDgsIDEsICcyMDI2LTA5LTE2JywgMjUwLjAwKSwKKDMxLCA5LCAxLCAnMjAyNi0wOS0xNycsIDI1MC4wMCksCigzMiwgMTAsIDEsICcyMDI2LTA5LTE4JywgMjUwLjAwKTsKCi0tIFRhYmxlOiBBRkZFQ1RBVElPTgpJTlNFUlQgSU5UTyBBRkZFQ1RBVElPTiAoSWRfYWZmZWN0LCBJZF9tZWRlY2luLCBJZF9zZXJ2aWNlLCBBbm5lZSkgVkFMVUVTCigxLCAxLCA5LCAyMDI1KSwKKDIsIDEsIDksIDIwMjYpLAooMywgMiwgOCwgMjAyNiksCig0LCAzLCA5LCAyMDI2KSwKKDUsIDQsIDEwLCAyMDI2KSwKKDYsIDUsIDEzLCAyMDI2KSwKKDcsIDYsIDksIDIwMjYpLAooOCwgNywgNiwgMjAyNiksCig5LCA4LCAxNCwgMjAyNiksCigxMCwgOSwgNCwgMjAyNiksCigxMSwgMTAsIDEwLCAyMDI2KSwKKDEyLCAxMSwgOCwgMjAyNiksCigxMywgMTIsIDE3LCAyMDI2KSwKKDE0LCAxMywgMTUsIDIwMjYpLAooMTUsIDE0LCA2LCAyMDI2KSwKKDE2LCAxNSwgMTMsIDIwMjUpLAooMTcsIDE2LCA5LCAyMDI2KSwKKDE4LCAxNywgMTQsIDIwMjYpLAooMTksIDE4LCAxNiwgMjAyNiksCigyMCwgMTksIDQsIDIwMjYpLAooMjEsIDIwLCAzLCAyMDI2KTsK