#
tokens: 43246/50000 4/77 files (page 3/7)
lines: off (toggle) GitHub
raw markdown copy
This is page 3 of 7. Use http://codebase.md/bytebase/dbhub?page={x} to view the full context.

# Directory Structure

```
├── .dockerignore
├── .env.example
├── .github
│   ├── CODEOWNERS
│   ├── copilot-instructions.md
│   └── workflows
│       ├── docker-publish.yml
│       ├── npm-publish.yml
│       └── run-tests.yml
├── .gitignore
├── .husky
│   └── pre-commit
├── .npmrc
├── .prettierrc.json
├── bun.lock
├── CLAUDE.md
├── Dockerfile
├── LICENSE
├── llms-full.txt
├── package.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── README.md
├── resources
│   ├── employee-sqlite
│   │   ├── employee.sql
│   │   ├── load_department.sql
│   │   ├── load_dept_emp.sql
│   │   ├── load_dept_manager.sql
│   │   ├── load_employee.sql
│   │   ├── load_salary1.sql
│   │   ├── load_title.sql
│   │   ├── object.sql
│   │   ├── show_elapsed.sql
│   │   └── test_employee_md5.sql
│   └── images
│       ├── claude-desktop.webp
│       ├── cursor.webp
│       ├── logo-full.svg
│       ├── logo-full.webp
│       ├── logo-icon-only.svg
│       ├── logo-text-only.svg
│       └── mcp-inspector.webp
├── scripts
│   └── setup-husky.sh
├── src
│   ├── __tests__
│   │   └── json-rpc-integration.test.ts
│   ├── config
│   │   ├── __tests__
│   │   │   ├── env.test.ts
│   │   │   └── ssh-config-integration.test.ts
│   │   ├── demo-loader.ts
│   │   └── env.ts
│   ├── connectors
│   │   ├── __tests__
│   │   │   ├── mariadb.integration.test.ts
│   │   │   ├── mysql.integration.test.ts
│   │   │   ├── postgres-ssh.integration.test.ts
│   │   │   ├── postgres.integration.test.ts
│   │   │   ├── shared
│   │   │   │   └── integration-test-base.ts
│   │   │   ├── sqlite.integration.test.ts
│   │   │   └── sqlserver.integration.test.ts
│   │   ├── interface.ts
│   │   ├── manager.ts
│   │   ├── mariadb
│   │   │   └── index.ts
│   │   ├── mysql
│   │   │   └── index.ts
│   │   ├── postgres
│   │   │   └── index.ts
│   │   ├── sqlite
│   │   │   └── index.ts
│   │   └── sqlserver
│   │       └── index.ts
│   ├── index.ts
│   ├── prompts
│   │   ├── db-explainer.ts
│   │   ├── index.ts
│   │   └── sql-generator.ts
│   ├── resources
│   │   ├── index.ts
│   │   ├── indexes.ts
│   │   ├── procedures.ts
│   │   ├── schema.ts
│   │   ├── schemas.ts
│   │   └── tables.ts
│   ├── server.ts
│   ├── tools
│   │   ├── __tests__
│   │   │   └── execute-sql.test.ts
│   │   ├── execute-sql.ts
│   │   └── index.ts
│   ├── types
│   │   ├── sql.ts
│   │   └── ssh.ts
│   └── utils
│       ├── __tests__
│       │   ├── safe-url.test.ts
│       │   ├── ssh-config-parser.test.ts
│       │   └── ssh-tunnel.test.ts
│       ├── allowed-keywords.ts
│       ├── dsn-obfuscate.ts
│       ├── response-formatter.ts
│       ├── safe-url.ts
│       ├── sql-row-limiter.ts
│       ├── ssh-config-parser.ts
│       └── ssh-tunnel.ts
├── tsconfig.json
├── tsup.config.ts
└── vitest.config.ts
```

# Files

--------------------------------------------------------------------------------
/src/connectors/__tests__/postgres.integration.test.ts:
--------------------------------------------------------------------------------

```typescript
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import { PostgreSqlContainer, StartedPostgreSqlContainer } from '@testcontainers/postgresql';
import { PostgresConnector } from '../postgres/index.js';
import { IntegrationTestBase, type TestContainer, type DatabaseTestConfig } from './shared/integration-test-base.js';
import type { Connector } from '../interface.js';

class PostgreSQLTestContainer implements TestContainer {
  constructor(private container: StartedPostgreSqlContainer) {}
  
  getConnectionUri(): string {
    return this.container.getConnectionUri();
  }
  
  async stop(): Promise<void> {
    await this.container.stop();
  }
}

class PostgreSQLIntegrationTest extends IntegrationTestBase<PostgreSQLTestContainer> {
  constructor() {
    const config: DatabaseTestConfig = {
      expectedSchemas: ['public', 'test_schema'],
      expectedTables: ['users', 'orders'],
      expectedTestSchemaTable: 'products',
      testSchema: 'test_schema',
      supportsStoredProcedures: true,
      expectedStoredProcedures: ['get_user_count', 'calculate_total_age']
    };
    super(config);
  }

  async createContainer(): Promise<PostgreSQLTestContainer> {
    const container = await new PostgreSqlContainer('postgres:15-alpine')
      .withDatabase('testdb')
      .withUsername('testuser')
      .withPassword('testpass')
      .start();
    
    return new PostgreSQLTestContainer(container);
  }

  createConnector(): Connector {
    return new PostgresConnector();
  }

  createSSLTests(): void {
    describe('SSL Connection Tests', () => {
      it('should handle SSL mode disable connection', async () => {
        const baseUri = this.connectionString;
        const sslDisabledUri = baseUri.includes('?') ? 
          `${baseUri}&sslmode=disable` : 
          `${baseUri}?sslmode=disable`;
        
        const sslDisabledConnector = new PostgresConnector();
        
        // Should connect successfully with sslmode=disable
        await expect(sslDisabledConnector.connect(sslDisabledUri)).resolves.not.toThrow();
        
        // Check SSL status - should be disabled (false)
        const result = await sslDisabledConnector.executeSQL('SELECT ssl FROM pg_stat_ssl WHERE pid = pg_backend_pid()', {});
        expect(result.rows).toHaveLength(1);
        expect(result.rows[0].ssl).toBe(false);
        
        await sslDisabledConnector.disconnect();
      });

      it('should handle SSL mode require connection', async () => {
        const baseUri = this.connectionString;
        const sslRequiredUri = baseUri.includes('?') ? 
          `${baseUri}&sslmode=require` : 
          `${baseUri}?sslmode=require`;
        
        const sslRequiredConnector = new PostgresConnector();
        
        // In test containers, SSL may not be supported, so we expect either success or SSL not supported error
        try {
          await sslRequiredConnector.connect(sslRequiredUri);
          
          // If connection succeeds, check SSL status - should be enabled (true)
          const result = await sslRequiredConnector.executeSQL('SELECT ssl FROM pg_stat_ssl WHERE pid = pg_backend_pid()', {});
          expect(result.rows).toHaveLength(1);
          expect(result.rows[0].ssl).toBe(true);
          
          await sslRequiredConnector.disconnect();
        } catch (error) {
          // If SSL is not supported by the test container, that's expected
          expect(error instanceof Error).toBe(true);
          expect((error as Error).message).toMatch(/SSL|does not support SSL/);
        }
      });
    });
  }

  async setupTestData(connector: Connector): Promise<void> {
    // Create test schema
    await connector.executeSQL('CREATE SCHEMA IF NOT EXISTS test_schema', {});
    
    // Create users table
    await connector.executeSQL(`
      CREATE TABLE IF NOT EXISTS users (
        id SERIAL PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        email VARCHAR(100) UNIQUE NOT NULL,
        age INTEGER
      )
    `, {});

    // Create orders table
    await connector.executeSQL(`
      CREATE TABLE IF NOT EXISTS orders (
        id SERIAL PRIMARY KEY,
        user_id INTEGER REFERENCES users(id),
        total DECIMAL(10,2),
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
      )
    `, {});

    // Create products table in test_schema
    await connector.executeSQL(`
      CREATE TABLE IF NOT EXISTS test_schema.products (
        id SERIAL PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        price DECIMAL(10,2)
      )
    `, {});

    // Insert test data
    await connector.executeSQL(`
      INSERT INTO users (name, email, age) VALUES 
      ('John Doe', '[email protected]', 30),
      ('Jane Smith', '[email protected]', 25),
      ('Bob Johnson', '[email protected]', 35)
      ON CONFLICT (email) DO NOTHING
    `, {});

    await connector.executeSQL(`
      INSERT INTO orders (user_id, total) VALUES 
      (1, 99.99),
      (1, 149.50),
      (2, 75.25)
      ON CONFLICT DO NOTHING
    `, {});

    await connector.executeSQL(`
      INSERT INTO test_schema.products (name, price) VALUES 
      ('Widget A', 19.99),
      ('Widget B', 29.99)
      ON CONFLICT DO NOTHING
    `, {});

    // Create test stored procedures using SQL language to avoid dollar quoting
    await connector.executeSQL(`
      CREATE OR REPLACE FUNCTION get_user_count()
      RETURNS INTEGER
      LANGUAGE SQL
      AS 'SELECT COUNT(*)::INTEGER FROM users'
    `, {});

    await connector.executeSQL(`
      CREATE OR REPLACE FUNCTION calculate_total_age()
      RETURNS INTEGER
      LANGUAGE SQL  
      AS 'SELECT COALESCE(SUM(age), 0)::INTEGER FROM users WHERE age IS NOT NULL'
    `, {});
  }
}

// Create the test suite
const postgresTest = new PostgreSQLIntegrationTest();

describe('PostgreSQL Connector Integration Tests', () => {
  beforeAll(async () => {
    await postgresTest.setup();
  }, 120000);

  afterAll(async () => {
    await postgresTest.cleanup();
  });

  // Include all common tests
  postgresTest.createConnectionTests();
  postgresTest.createSchemaTests();
  postgresTest.createTableTests();
  postgresTest.createSQLExecutionTests();
  if (postgresTest.config.supportsStoredProcedures) {
    postgresTest.createStoredProcedureTests();
  }
  postgresTest.createErrorHandlingTests();
  postgresTest.createSSLTests();
  describe('PostgreSQL-specific Features', () => {
    it('should execute multiple statements with transaction support', async () => {
      const result = await postgresTest.connector.executeSQL(`
        INSERT INTO users (name, email, age) VALUES ('Multi User 1', '[email protected]', 30);
        INSERT INTO users (name, email, age) VALUES ('Multi User 2', '[email protected]', 35);
        SELECT COUNT(*) as total FROM users WHERE email LIKE 'multi%';
      `, {});
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].total).toBe('2');
    });

    it('should handle PostgreSQL-specific data types', async () => {
      await postgresTest.connector.executeSQL(`
        CREATE TABLE IF NOT EXISTS postgres_types_test (
          id SERIAL PRIMARY KEY,
          json_data JSONB,
          uuid_val UUID DEFAULT gen_random_uuid(),
          array_val INTEGER[],
          timestamp_val TIMESTAMP WITH TIME ZONE DEFAULT NOW()
        )
      `, {});

      await postgresTest.connector.executeSQL(`
        INSERT INTO postgres_types_test (json_data, array_val) 
        VALUES ('{"key": "value"}', ARRAY[1,2,3,4,5])
      `, {});

      const result = await postgresTest.connector.executeSQL(
        'SELECT * FROM postgres_types_test ORDER BY id DESC LIMIT 1',
        {}
      );
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].json_data).toBeDefined();
      expect(result.rows[0].uuid_val).toBeDefined();
      expect(result.rows[0].array_val).toBeDefined();
    });

    it('should handle PostgreSQL returning clause', async () => {
      const result = await postgresTest.connector.executeSQL(
        "INSERT INTO users (name, email, age) VALUES ('Returning Test', '[email protected]', 40) RETURNING id, name",
        {}
      );
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].id).toBeDefined();
      expect(result.rows[0].name).toBe('Returning Test');
    });

    it('should work with PostgreSQL-specific functions', async () => {
      const result = await postgresTest.connector.executeSQL(`
        SELECT 
          version() as postgres_version,
          current_database() as current_db,
          current_user as current_user,
          now() as current_time,
          gen_random_uuid() as random_uuid
      `, {});
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].postgres_version).toContain('PostgreSQL');
      expect(result.rows[0].current_db).toBe('testdb');
      expect(result.rows[0].current_user).toBeDefined();
      expect(result.rows[0].current_time).toBeDefined();
      expect(result.rows[0].random_uuid).toBeDefined();
    });

    it('should handle PostgreSQL transactions correctly', async () => {
      // Test rollback on error
      await expect(
        postgresTest.connector.executeSQL(`
          BEGIN;
          INSERT INTO users (name, email, age) VALUES ('Transaction Test', '[email protected]', 40);
          INSERT INTO users (name, email, age) VALUES ('Transaction Test', '[email protected]', 40); -- This should fail due to unique constraint
          COMMIT;
        `, {})
      ).rejects.toThrow();
      
      // Verify rollback worked
      const result = await postgresTest.connector.executeSQL(
        "SELECT COUNT(*) as count FROM users WHERE email = '[email protected]'",
        {}
      );
      expect(result.rows[0].count).toBe('0');
    });

    it('should handle PostgreSQL window functions', async () => {
      const result = await postgresTest.connector.executeSQL(`
        SELECT 
          name,
          age,
          ROW_NUMBER() OVER (ORDER BY age DESC) as age_rank,
          AVG(age) OVER () as avg_age
        FROM users
        WHERE age IS NOT NULL
        ORDER BY age DESC
      `, {});
      
      expect(result.rows.length).toBeGreaterThan(0);
      expect(result.rows[0]).toHaveProperty('age_rank');
      expect(result.rows[0]).toHaveProperty('avg_age');
    });

    it('should handle PostgreSQL arrays and JSON operations', async () => {
      await postgresTest.connector.executeSQL(`
        CREATE TABLE IF NOT EXISTS json_test (
          id SERIAL PRIMARY KEY,
          data JSONB
        )
      `, {});

      await postgresTest.connector.executeSQL(`
        INSERT INTO json_test (data) VALUES 
        ('{"name": "John", "tags": ["admin", "user"], "settings": {"theme": "dark"}}'),
        ('{"name": "Jane", "tags": ["user"], "settings": {"theme": "light"}}')
      `, {});

      const result = await postgresTest.connector.executeSQL(`
        SELECT 
          data->>'name' as name,
          data->'tags' as tags,
          data#>>'{settings,theme}' as theme
        FROM json_test
        WHERE data @> '{"tags": ["admin"]}'
      `, {});
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].name).toBe('John');
      expect(result.rows[0].theme).toBe('dark');
    });

    it('should respect maxRows limit for SELECT queries', async () => {
      // Test basic SELECT with maxRows limit
      const result = await postgresTest.connector.executeSQL(
        'SELECT * FROM users ORDER BY id',
        { maxRows: 2 }
      );
      
      expect(result.rows).toHaveLength(2);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[1]).toHaveProperty('name');
    });

    it('should respect existing LIMIT clause when lower than maxRows', async () => {
      // Test when existing LIMIT is lower than maxRows
      const result = await postgresTest.connector.executeSQL(
        'SELECT * FROM users ORDER BY id LIMIT 1',
        { maxRows: 3 }
      );
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0]).toHaveProperty('name');
    });

    it('should use maxRows when existing LIMIT is higher', async () => {
      // Test when existing LIMIT is higher than maxRows
      const result = await postgresTest.connector.executeSQL(
        'SELECT * FROM users ORDER BY id LIMIT 10',
        { maxRows: 2 }
      );
      
      expect(result.rows).toHaveLength(2);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[1]).toHaveProperty('name');
    });

    it('should not affect non-SELECT queries', async () => {
      // Test that maxRows doesn't affect INSERT/UPDATE/DELETE
      const insertResult = await postgresTest.connector.executeSQL(
        "INSERT INTO users (name, email, age) VALUES ('MaxRows Test', '[email protected]', 25)",
        { maxRows: 1 }
      );
      
      expect(insertResult.rows).toHaveLength(0); // INSERTs don't return rows by default
      
      // Verify the insert worked
      const selectResult = await postgresTest.connector.executeSQL(
        "SELECT * FROM users WHERE email = '[email protected]'",
        {}
      );
      expect(selectResult.rows).toHaveLength(1);
      expect(selectResult.rows[0].name).toBe('MaxRows Test');
    });

    it('should handle maxRows with RETURNING clause', async () => {
      // Test maxRows with INSERT...RETURNING (note: maxRows doesn't apply to INSERT/UPDATE/DELETE statements)
      const insertResult = await postgresTest.connector.executeSQL(
        "INSERT INTO users (name, email, age) VALUES ('Returning Test 1', '[email protected]', 30), ('Returning Test 2', '[email protected]', 35) RETURNING id, name",
        { maxRows: 1 }
      );
      
      // INSERT...RETURNING returns all inserted rows regardless of maxRows setting
      expect(insertResult.rows).toHaveLength(2);
      expect(insertResult.rows[0]).toHaveProperty('id');
      expect(insertResult.rows[0]).toHaveProperty('name');
      expect(insertResult.rows[1]).toHaveProperty('id');
      expect(insertResult.rows[1]).toHaveProperty('name');
    });

    it('should handle maxRows with complex queries', async () => {
      // Test maxRows with JOIN queries
      const result = await postgresTest.connector.executeSQL(`
        SELECT u.name, o.total 
        FROM users u 
        JOIN orders o ON u.id = o.user_id 
        ORDER BY o.total DESC
      `, { maxRows: 2 });
      
      expect(result.rows.length).toBeLessThanOrEqual(2);
      expect(result.rows.length).toBeGreaterThan(0);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[0]).toHaveProperty('total');
    });

    it('should not apply maxRows to CTE queries (WITH clause)', async () => {
      // Test that maxRows is not applied to CTE queries (WITH clause)
      const result = await postgresTest.connector.executeSQL(`
        WITH user_summary AS (
          SELECT name, age FROM users WHERE age IS NOT NULL
        )
        SELECT * FROM user_summary ORDER BY age
      `, { maxRows: 2 });
      
      // Should return all rows since WITH queries are not limited anymore
      expect(result.rows.length).toBeGreaterThan(2);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[0]).toHaveProperty('age');
    });

    it('should handle maxRows in multi-statement execution with transactions', async () => {
      // Test maxRows with multiple statements where some are SELECT
      const result = await postgresTest.connector.executeSQL(`
        INSERT INTO users (name, email, age) VALUES ('Multi Test 1', '[email protected]', 30);
        SELECT name FROM users WHERE email LIKE '%@test.com' ORDER BY name;
        INSERT INTO users (name, email, age) VALUES ('Multi Test 2', '[email protected]', 35);
      `, { maxRows: 1 });
      
      // Should return only 1 row from the SELECT statement
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0]).toHaveProperty('name');
    });

    it('should handle maxRows with PostgreSQL window functions', async () => {
      // Test maxRows with window functions
      const result = await postgresTest.connector.executeSQL(`
        SELECT 
          name,
          age,
          ROW_NUMBER() OVER (ORDER BY age DESC) as age_rank,
          AVG(age::numeric) OVER () as avg_age
        FROM users
        WHERE age IS NOT NULL
        ORDER BY age DESC
      `, { maxRows: 2 });
      
      expect(result.rows.length).toBeLessThanOrEqual(2);
      expect(result.rows.length).toBeGreaterThan(0);
      expect(result.rows[0]).toHaveProperty('age_rank');
      expect(result.rows[0]).toHaveProperty('avg_age');
    });

    it('should ignore maxRows when not specified', async () => {
      // Test without maxRows - should return all rows (at least 3)
      const result = await postgresTest.connector.executeSQL(
        'SELECT * FROM users ORDER BY id',
        {}
      );
      
      // Should return at least the original 3 users plus any added in previous tests
      expect(result.rows.length).toBeGreaterThanOrEqual(3);
    });

  });
});
```

--------------------------------------------------------------------------------
/src/connectors/__tests__/sqlserver.integration.test.ts:
--------------------------------------------------------------------------------

```typescript
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import { MSSQLServerContainer, StartedMSSQLServerContainer } from '@testcontainers/mssqlserver';
import { SQLServerConnector } from '../sqlserver/index.js';
import { IntegrationTestBase, type TestContainer, type DatabaseTestConfig } from './shared/integration-test-base.js';
import type { Connector } from '../interface.js';

class SQLServerTestContainer implements TestContainer {
  constructor(private container: StartedMSSQLServerContainer) {}
  
  getConnectionUri(): string {
    // Get the container's connection details
    const host = this.container.getHost();
    const port = this.container.getMappedPort(1433);
    
    // Convert to our expected DSN format: sqlserver://username:password@host:port/database
    // Use sslmode=disable for test containers to avoid certificate issues
    return `sqlserver://sa:Password123!@${host}:${port}/master?sslmode=disable`;
  }
  
  getHost(): string {
    return this.container.getHost();
  }
  
  getMappedPort(port: number): number {
    return this.container.getMappedPort(port);
  }
  
  async stop(): Promise<void> {
    await this.container.stop();
  }
}

class SQLServerIntegrationTest extends IntegrationTestBase<SQLServerTestContainer> {
  constructor() {
    const config: DatabaseTestConfig = {
      expectedSchemas: ['dbo', 'INFORMATION_SCHEMA'],
      expectedTables: ['users', 'orders', 'products'],
      supportsStoredProcedures: true,
      expectedStoredProcedures: ['GetUserCount', 'CalculateTotalAge']
    };
    super(config);
  }

  async createContainer(): Promise<SQLServerTestContainer> {
    const container = await new MSSQLServerContainer('mcr.microsoft.com/mssql/server:2019-latest')
      .acceptLicense() // Required for SQL Server containers
      .withPassword('Password123!')
      .start();
    
    return new SQLServerTestContainer(container);
  }

  createConnector(): Connector {
    return new SQLServerConnector();
  }

  async setupTestData(connector: Connector): Promise<void> {
    // Create users table
    await connector.executeSQL(`
      CREATE TABLE users (
        id INT IDENTITY(1,1) PRIMARY KEY,
        name NVARCHAR(100) NOT NULL,
        email NVARCHAR(100) UNIQUE NOT NULL,
        age INT
      )
    `, {});

    // Create orders table
    await connector.executeSQL(`
      CREATE TABLE orders (
        id INT IDENTITY(1,1) PRIMARY KEY,
        user_id INT,
        total DECIMAL(10,2),
        created_at DATETIME2 DEFAULT GETDATE(),
        FOREIGN KEY (user_id) REFERENCES users(id)
      )
    `, {});

    // Create products table
    await connector.executeSQL(`
      CREATE TABLE products (
        id INT IDENTITY(1,1) PRIMARY KEY,
        name NVARCHAR(100) NOT NULL,
        price DECIMAL(10,2)
      )
    `, {});

    // Insert test data
    await connector.executeSQL(`
      INSERT INTO users (name, email, age) VALUES 
      ('John Doe', '[email protected]', 30),
      ('Jane Smith', '[email protected]', 25),
      ('Bob Johnson', '[email protected]', 35)
    `, {});

    await connector.executeSQL(`
      INSERT INTO orders (user_id, total) VALUES 
      (1, 99.99),
      (1, 149.50),
      (2, 75.25)
    `, {});

    await connector.executeSQL(`
      INSERT INTO products (name, price) VALUES 
      ('Widget A', 19.99),
      ('Widget B', 29.99)
    `, {});

    // Create test stored functions/procedures
    await connector.executeSQL(`
      CREATE FUNCTION GetUserCount()
      RETURNS INT
      AS
      BEGIN
        DECLARE @count INT
        SELECT @count = COUNT(*) FROM users
        RETURN @count
      END
    `, {});

    await connector.executeSQL(`
      CREATE FUNCTION CalculateTotalAge()
      RETURNS INT
      AS
      BEGIN
        DECLARE @total INT
        SELECT @total = ISNULL(SUM(age), 0) FROM users WHERE age IS NOT NULL
        RETURN @total
      END
    `, {});
  }
}

// Create the test suite
const sqlServerTest = new SQLServerIntegrationTest();

// NOTE: SQL Server containers may take several minutes to start due to licensing requirements
// and initialization time. If tests time out, consider increasing timeout or running with
// more Docker resources allocated.
describe('SQL Server Connector Integration Tests', () => {
  beforeAll(async () => {
    await sqlServerTest.setup();
  }, 300000); // 5 minutes timeout for SQL Server container

  afterAll(async () => {
    await sqlServerTest.cleanup();
  });

  // Include all common tests
  sqlServerTest.createConnectionTests();
  sqlServerTest.createSchemaTests();
  sqlServerTest.createTableTests();
  sqlServerTest.createSQLExecutionTests();
  if (sqlServerTest.config.supportsStoredProcedures) {
    sqlServerTest.createStoredProcedureTests();
  }
  sqlServerTest.createErrorHandlingTests();

  describe('SQL Server SSL/TLS Configuration', () => {
    it('should parse sslmode=disable correctly', async () => {
      const parser = new SQLServerConnector().dsnParser;
      const config = await parser.parse('sqlserver://user:pass@localhost:1433/db?sslmode=disable');
      
      expect(config.options?.encrypt).toBe(false);
      expect(config.options?.trustServerCertificate).toBe(false);
    });

    it('should parse sslmode=require correctly', async () => {
      const parser = new SQLServerConnector().dsnParser;
      const config = await parser.parse('sqlserver://user:pass@localhost:1433/db?sslmode=require');
      
      expect(config.options?.encrypt).toBe(true);
      expect(config.options?.trustServerCertificate).toBe(true);
    });

    it('should default to unencrypted when no sslmode specified', async () => {
      const parser = new SQLServerConnector().dsnParser;
      const config = await parser.parse('sqlserver://user:pass@localhost:1433/db');
      
      expect(config.options?.encrypt).toBe(false);
      expect(config.options?.trustServerCertificate).toBe(false);
    });

    it('should connect successfully with sslmode=disable (unencrypted)', async () => {
      const connector = new SQLServerConnector();
      const host = (sqlServerTest as any).container.getHost();
      const port = (sqlServerTest as any).container.getMappedPort(1433);
      const dsn = `sqlserver://sa:Password123!@${host}:${port}/master?sslmode=disable`;
      
      await connector.connect(dsn);
      
      // Verify this is an unencrypted connection by checking connection properties
      const encryptionResult = await connector.executeSQL(`
        SELECT 
          CAST(CONNECTIONPROPERTY('protocol_type') AS NVARCHAR(100)) as protocol_type,
          CASE 
            WHEN CAST(CONNECTIONPROPERTY('protocol_type') AS NVARCHAR(100)) LIKE '%TLS%' 
              OR CAST(CONNECTIONPROPERTY('protocol_type') AS NVARCHAR(100)) LIKE '%SSL%' 
            THEN 'Encrypted' 
            ELSE 'Unencrypted' 
          END as encryption_status
      `, {});
      
      expect(encryptionResult.rows[0].encryption_status).toBe('Unencrypted');
      expect(encryptionResult.rows[0].protocol_type).not.toMatch(/TLS|SSL/i);
      
      await connector.disconnect();
    });
  });

  describe('SQL Server-specific Features', () => {
    it('should handle SQL Server IDENTITY columns', async () => {
      await sqlServerTest.connector.executeSQL(`
        CREATE TABLE identity_test (
          id INT IDENTITY(1,1) PRIMARY KEY,
          name NVARCHAR(50)
        )
      `, {});

      await sqlServerTest.connector.executeSQL(`
        INSERT INTO identity_test (name) VALUES ('Test 1'), ('Test 2')
      `, {});

      const result = await sqlServerTest.connector.executeSQL(
        'SELECT * FROM identity_test ORDER BY id',
        {}
      );
      
      expect(result.rows).toHaveLength(2);
      expect(result.rows[0].id).toBe(1);
      expect(result.rows[1].id).toBe(2);
      expect(result.rows[0].name).toBe('Test 1');
    });

    it('should handle SQL Server-specific data types', async () => {
      await sqlServerTest.connector.executeSQL(`
        CREATE TABLE sqlserver_types_test (
          id INT IDENTITY(1,1) PRIMARY KEY,
          unicode_text NVARCHAR(MAX),
          datetime_val DATETIME2,
          unique_id UNIQUEIDENTIFIER DEFAULT NEWID(),
          xml_data XML,
          binary_data VARBINARY(100)
        )
      `, {});

      await sqlServerTest.connector.executeSQL(`
        INSERT INTO sqlserver_types_test (unicode_text, datetime_val, xml_data, binary_data) 
        VALUES (N'Unicode Text 测试', GETDATE(), '<root><item>test</item></root>', 0x48656C6C6F)
      `, {});

      const result = await sqlServerTest.connector.executeSQL(
        'SELECT * FROM sqlserver_types_test',
        {}
      );
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].unicode_text).toBe('Unicode Text 测试');
      expect(result.rows[0].unique_id).toBeDefined();
      expect(result.rows[0].xml_data).toBeDefined();
    });

    it('should work with SQL Server-specific functions', async () => {
      const result = await sqlServerTest.connector.executeSQL(`
        SELECT 
          @@VERSION as sql_version,
          DB_NAME() as current_db,
          SUSER_NAME() as current_user_name,
          GETDATE() as current_datetime,
          NEWID() as new_guid
      `, {});
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].sql_version).toContain('Microsoft SQL Server');
      expect(result.rows[0].current_db).toBeDefined();
      expect(result.rows[0].current_user_name).toBeDefined();
      expect(result.rows[0].current_datetime).toBeDefined();
      expect(result.rows[0].new_guid).toBeDefined();
    });

    it('should handle SQL Server transactions correctly', async () => {
      // Test explicit transaction
      await sqlServerTest.connector.executeSQL(`
        BEGIN TRANSACTION;
        INSERT INTO users (name, email, age) VALUES ('Transaction Test 1', '[email protected]', 45);
        INSERT INTO users (name, email, age) VALUES ('Transaction Test 2', '[email protected]', 50);
        COMMIT TRANSACTION;
      `, {});
      
      const result = await sqlServerTest.connector.executeSQL(
        "SELECT COUNT(*) as count FROM users WHERE email LIKE 'trans%@example.com'",
        {}
      );
      expect(Number(result.rows[0].count)).toBe(2);
    });

    it('should handle SQL Server rollback correctly', async () => {
      // Get initial count
      const beforeResult = await sqlServerTest.connector.executeSQL(
        "SELECT COUNT(*) as count FROM users WHERE email = '[email protected]'",
        {}
      );
      const beforeCount = Number(beforeResult.rows[0].count);
      
      // Test rollback
      await sqlServerTest.connector.executeSQL(`
        BEGIN TRANSACTION;
        INSERT INTO users (name, email, age) VALUES ('Rollback Test', '[email protected]', 55);
        ROLLBACK TRANSACTION;
      `, {});
      
      const afterResult = await sqlServerTest.connector.executeSQL(
        "SELECT COUNT(*) as count FROM users WHERE email = '[email protected]'",
        {}
      );
      const afterCount = Number(afterResult.rows[0].count);
      
      expect(afterCount).toBe(beforeCount);
    });

    it('should handle SQL Server OUTPUT clause', async () => {
      const result = await sqlServerTest.connector.executeSQL(`
        INSERT INTO users (name, email, age) 
        OUTPUT INSERTED.id, INSERTED.name
        VALUES ('Output Test', '[email protected]', 40)
      `, {});
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].id).toBeDefined();
      expect(result.rows[0].name).toBe('Output Test');
    });

    it('should handle SQL Server window functions', async () => {
      const result = await sqlServerTest.connector.executeSQL(`
        SELECT 
          name,
          age,
          ROW_NUMBER() OVER (ORDER BY age DESC) as age_rank,
          AVG(CAST(age AS FLOAT)) OVER () as avg_age
        FROM users
        WHERE age IS NOT NULL
        ORDER BY age DESC
      `, {});
      
      expect(result.rows.length).toBeGreaterThan(0);
      expect(result.rows[0]).toHaveProperty('age_rank');
      expect(result.rows[0]).toHaveProperty('avg_age');
    });

    it('should handle SQL Server CTEs (Common Table Expressions)', async () => {
      const result = await sqlServerTest.connector.executeSQL(`
        WITH UserOrderSummary AS (
          SELECT 
            u.name,
            COUNT(o.id) as order_count,
            SUM(o.total) as total_spent
          FROM users u
          LEFT JOIN orders o ON u.id = o.user_id
          GROUP BY u.id, u.name
        )
        SELECT * FROM UserOrderSummary 
        WHERE order_count > 0
        ORDER BY total_spent DESC
      `, {});
      
      expect(result.rows.length).toBeGreaterThan(0);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[0]).toHaveProperty('order_count');
      expect(result.rows[0]).toHaveProperty('total_spent');
    });

    it('should handle SQL Server JSON functions (SQL Server 2016+)', async () => {
      await sqlServerTest.connector.executeSQL(`
        CREATE TABLE json_test (
          id INT IDENTITY(1,1) PRIMARY KEY,
          data NVARCHAR(MAX)
        )
      `, {});

      await sqlServerTest.connector.executeSQL(`
        INSERT INTO json_test (data) VALUES 
        (N'{"name": "John", "tags": ["admin", "user"], "settings": {"theme": "dark"}}'),
        (N'{"name": "Jane", "tags": ["user"], "settings": {"theme": "light"}}')
      `, {});

      const result = await sqlServerTest.connector.executeSQL(`
        SELECT 
          JSON_VALUE(data, '$.name') as name,
          JSON_VALUE(data, '$.settings.theme') as theme,
          JSON_QUERY(data, '$.tags') as tags
        FROM json_test
        WHERE JSON_VALUE(data, '$.name') = 'John'
      `, {});
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0].name).toBe('John');
      expect(result.rows[0].theme).toBe('dark');
      expect(result.rows[0].tags).toBeDefined();
    });

    it('should handle SQL Server MERGE statement', async () => {
      // Create a staging table
      await sqlServerTest.connector.executeSQL(`
        CREATE TABLE users_staging (
          id INT,
          name NVARCHAR(100),
          email NVARCHAR(100),
          age INT
        )
      `, {});

      await sqlServerTest.connector.executeSQL(`
        INSERT INTO users_staging (id, name, email, age) VALUES 
        (1, 'John Doe Updated', '[email protected]', 31),
        (999, 'New User', '[email protected]', 25)
      `, {});

      const result = await sqlServerTest.connector.executeSQL(`
        MERGE users AS target
        USING users_staging AS source
        ON target.id = source.id
        WHEN MATCHED THEN
          UPDATE SET name = source.name, age = source.age
        WHEN NOT MATCHED THEN
          INSERT (name, email, age) VALUES (source.name, source.email, source.age)
        OUTPUT $action, INSERTED.name;
      `, {});
      
      expect(result.rows.length).toBeGreaterThan(0);
      // Should have both UPDATE and INSERT actions
      const actions = result.rows.map(row => row.$action);
      expect(actions).toContain('UPDATE');
      expect(actions).toContain('INSERT');
    });

    it('should respect maxRows limit for SELECT queries', async () => {
      // Test basic SELECT with maxRows limit
      const result = await sqlServerTest.connector.executeSQL(
        'SELECT * FROM users ORDER BY id',
        { maxRows: 2 }
      );
      
      expect(result.rows).toHaveLength(2);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[1]).toHaveProperty('name');
    });

    it('should respect existing TOP clause when lower than maxRows', async () => {
      // Test when existing TOP is lower than maxRows
      const result = await sqlServerTest.connector.executeSQL(
        'SELECT TOP 1 * FROM users ORDER BY id',
        { maxRows: 3 }
      );
      
      expect(result.rows).toHaveLength(1);
      expect(result.rows[0]).toHaveProperty('name');
    });

    it('should use maxRows when existing TOP is higher', async () => {
      // Test when existing TOP is higher than maxRows
      const result = await sqlServerTest.connector.executeSQL(
        'SELECT TOP 10 * FROM users ORDER BY id',
        { maxRows: 2 }
      );
      
      expect(result.rows).toHaveLength(2);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[1]).toHaveProperty('name');
    });

    it('should not affect non-SELECT queries', async () => {
      // Test that maxRows doesn't affect INSERT/UPDATE/DELETE
      const insertResult = await sqlServerTest.connector.executeSQL(
        "INSERT INTO users (name, email, age) VALUES ('MaxRows Test', '[email protected]', 25)",
        { maxRows: 1 }
      );
      
      expect(insertResult.rows).toHaveLength(0); // INSERTs without OUTPUT don't return rows by default
      
      // Verify the insert worked
      const selectResult = await sqlServerTest.connector.executeSQL(
        "SELECT * FROM users WHERE email = '[email protected]'",
        {}
      );
      expect(selectResult.rows).toHaveLength(1);
      expect(selectResult.rows[0].name).toBe('MaxRows Test');
    });

    it('should handle maxRows with complex queries', async () => {
      // Test maxRows with JOIN queries
      const result = await sqlServerTest.connector.executeSQL(`
        SELECT u.name, o.total 
        FROM users u 
        INNER JOIN orders o ON u.id = o.user_id 
        ORDER BY o.total DESC
      `, { maxRows: 2 });
      
      expect(result.rows.length).toBeLessThanOrEqual(2);
      expect(result.rows.length).toBeGreaterThan(0);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[0]).toHaveProperty('total');
    });

    it('should handle maxRows with window functions', async () => {
      // Test maxRows with window function queries
      const result = await sqlServerTest.connector.executeSQL(`
        SELECT 
          name,
          age,
          ROW_NUMBER() OVER (ORDER BY age DESC) as age_rank
        FROM users
        WHERE age IS NOT NULL
        ORDER BY age DESC
      `, { maxRows: 2 });
      
      expect(result.rows.length).toBeLessThanOrEqual(2);
      expect(result.rows.length).toBeGreaterThan(0);
      expect(result.rows[0]).toHaveProperty('name');
      expect(result.rows[0]).toHaveProperty('age_rank');
    });

    it('should ignore maxRows when not specified', async () => {
      // Test without maxRows - should return all rows
      const result = await sqlServerTest.connector.executeSQL(
        'SELECT * FROM users ORDER BY id',
        {}
      );
      
      // Should return all users (at least the original 3 plus any added in previous tests)
      expect(result.rows.length).toBeGreaterThanOrEqual(3);
    });
  });
});
```

--------------------------------------------------------------------------------
/resources/images/logo-full.svg:
--------------------------------------------------------------------------------

```
<svg width="6353" height="1726" viewBox="0 0 6353 1726" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M932.758 194.086C990.644 187.641 994.506 253.599 1004.52 293.669L1071.19 557.635C1086.66 617.755 1112.76 664.055 1183.11 671.28C1201.83 673.205 1220.9 670.424 1239.54 668.567L1464.68 644.319C1509.6 638.987 1554.72 632.773 1599.81 629.069C1655.86 624.465 1686.69 687.137 1643.32 725.678C1631.49 736.2 1614.3 743.483 1600.46 751.187L1536.7 787.454C1456.53 833.891 1369.28 894.793 1296.52 951.419C1205.32 1022.39 1217.56 1046.43 1259.85 1154.31C1290.73 1233.08 1324.17 1310.97 1358.13 1388.48C1373.93 1424.55 1408.1 1476.68 1375.83 1513.33C1332 1563.11 1280.32 1497.95 1249.88 1469.63C1189.97 1413.88 1015.5 1234.22 942.868 1237.89C897.236 1219.17 819.244 1298.6 789.485 1324.29C725.644 1379.41 662.929 1435.7 601.74 1493.73C591.612 1503.34 581.273 1514.47 569.298 1521.73C533.005 1543.74 482.837 1516.61 488.323 1472.69C489.793 1460.9 496.739 1449.17 501.309 1438.33L558.244 1304.05C576.41 1260.99 594.656 1218.06 611.914 1174.61L634.828 1115.6C653.59 1066.04 660.445 1028.05 621.324 981.757C572.81 924.35 336.476 783.403 270.362 746.027C245.458 731.947 217.523 721.385 213.041 689.22C209.027 660.405 230.841 632.129 259.715 628.425C277.545 626.14 325.21 634.171 345.677 636.581L611.742 666.717C686.001 674.998 747.604 678.58 792.798 602.755C805.008 582.268 808.533 560.419 813.619 537.579L871.313 290.051C880.692 249.709 882.006 200.198 932.758 194.086Z" fill="black"/>
<path d="M509.67 1479.01C513.593 1465.08 520.95 1451.58 526.558 1438.2L586.392 1298.36C612.703 1235.75 643.102 1165.9 664.944 1101.72C679.796 1058.08 671.836 1011.99 645.41 974.599C604.877 917.242 377.749 781.071 316.074 745.812C300.702 737.023 245.524 708.076 239.503 694.899C232.039 678.564 239.854 654.561 259.091 651.218C272.513 648.886 329.481 658.235 346.42 660.361L613.239 690.912C694.831 699.492 767.984 696.048 814.323 612.323C827.622 588.297 832.411 561.069 838.545 534.61L854.371 465.188C867.474 407.218 880.328 349.065 894.675 291.398C901.773 262.887 903.926 199.735 952.868 220.17C974.979 234.281 975.394 272.886 981.814 297.914L1044.24 546.035C1050.8 572.235 1055.87 598.879 1069.46 622.595C1108.34 690.46 1170.84 698.461 1239.67 691.188L1542.81 659.492C1559.88 657.766 1604.9 650.13 1618.61 653.533C1638.02 658.356 1645.2 684.135 1635.04 700.069C1627.1 712.542 1574.64 738.239 1559.9 746.793C1498.83 782.237 1267.91 924.916 1228.16 981.417C1183.18 1045.36 1215.48 1104.54 1240.34 1167.2C1269.55 1240.79 1300.12 1313.83 1331.8 1386.38L1355.64 1440.76C1365.76 1463.95 1381.17 1500.73 1339.64 1507.9C1321.39 1511.06 1298.01 1482.64 1286.26 1471.77L1180.79 1373.89C1128.81 1325.51 1075.35 1276.11 1015.27 1237.89C962.742 1210.83 914.047 1199.14 863.39 1234.26C827.174 1259.37 787.055 1296.88 753.364 1326.51C706.481 1367.75 659.296 1408.27 613.727 1450.98C589.223 1473.94 532.328 1546.58 509.67 1479.01Z" fill="#FD8D31"/>
<path d="M509.67 1479.01C513.593 1465.08 520.95 1451.58 526.558 1438.2L586.392 1298.36C612.703 1235.75 643.102 1165.9 664.944 1101.72C679.796 1058.08 671.836 1011.99 645.41 974.599C604.877 917.242 377.749 781.071 316.074 745.812C300.702 737.023 245.524 708.076 239.503 694.899C232.039 678.564 239.854 654.561 259.091 651.218C272.513 648.886 329.481 658.235 346.42 660.361L613.239 690.912C694.831 699.492 767.984 696.048 814.323 612.323C827.622 588.297 832.411 561.069 838.545 534.61L854.371 465.188C867.474 407.218 880.328 349.065 894.675 291.398C901.772 262.887 903.926 199.735 952.868 220.17C947.843 244.851 936.832 293.381 935.262 317.307C903.798 327.652 901.065 360.268 924.545 379.542C920.844 387.738 909.645 427.415 912.719 434.54C894.476 449.224 891.025 465.323 898.113 486.875C894.038 494.185 877.126 580.333 874.164 593.993C861.61 651.879 851.709 703.375 789.145 725.443C734.602 744.683 634.767 722.969 577.545 713.034C567.088 711.217 487.845 694.006 482.928 703.698C503.681 716.222 508.73 741.68 493.261 760.991C496.594 765.339 523.703 778.263 529.635 777.289L530.424 776.157C537.777 814.81 574.044 826.78 604.16 800.227C608.871 805.363 653.165 829.362 658.898 827.279C670.761 848.269 677.1 845.336 694.248 852.441C697.021 862.528 712.982 871.711 720.117 879.355C760.431 922.534 775.32 981.326 752.72 1036.81C735.205 1079.81 702.585 1116.83 682.327 1159.13C677.457 1169.3 637.285 1261.12 641.541 1268.9C632.85 1280.65 629.004 1291.01 631.778 1305.43C625.176 1311.56 620.242 1335.48 612.052 1345.79L612.09 1346.86L616.528 1347.74C631.134 1350.54 639.796 1355.38 646.108 1368.74C658.049 1359.53 674.101 1340.23 686.476 1329C696.809 1319.63 708.716 1311.98 719.372 1302.91C787.372 1245.1 861.759 1160.82 959.905 1201.04C974.892 1207.17 1008.99 1222.89 1015.27 1237.89C962.742 1210.83 914.047 1199.14 863.39 1234.26C827.174 1259.37 787.055 1296.88 753.364 1326.51C706.481 1367.75 659.296 1408.27 613.727 1450.98C589.223 1473.94 532.328 1546.58 509.67 1479.01Z" fill="#F55E24"/>
<path d="M493.261 760.991C481.067 771.449 464.48 777.357 448.818 770.889C404.161 752.445 433.369 678.348 482.928 703.698C503.681 716.222 508.73 741.68 493.261 760.991Z" fill="black"/>
<path d="M458.791 713.778C490.12 711.241 496.388 746.115 469.151 757.213C437.906 759.943 432.382 725.129 458.791 713.778Z" fill="#7BBCDE"/>
<path d="M616.528 1347.74C631.134 1350.54 639.796 1355.38 646.108 1368.74C650.092 1400.08 623.619 1430.3 596.169 1409.4C572.187 1391.14 584.495 1349.89 616.528 1347.74Z" fill="black"/>
<path d="M616.528 1363.26C640.274 1364.05 635.212 1392.9 618.058 1400.16C594.389 1404.15 595.363 1370.16 616.528 1363.26Z" fill="#7BBCDE"/>
<path d="M349.765 674.142C394.422 672.393 404.258 727.317 362.056 739.493C317.443 749.024 308.014 684.795 349.765 674.142Z" fill="black"/>
<path d="M352.581 689.267C377.944 688.482 380.472 717.213 359.099 725.655C333.554 727.354 331.195 697.359 352.581 689.267Z" fill="#7BBCDE"/>
<path d="M658.898 827.279C644.106 781.832 683.268 748.286 721.745 768.783C765.594 792.142 743.105 855.642 694.248 852.441C677.1 845.336 670.761 848.268 658.898 827.279Z" fill="black"/>
<path d="M694.248 779.281C733.291 772.153 741.258 828.206 704.891 837.437C665.665 839.698 656.343 788.401 694.248 779.281Z" fill="#7BBCDE"/>
<path d="M530.424 776.157C529.072 699.384 652.218 730.976 604.16 800.227C574.044 826.78 537.777 814.809 530.424 776.157Z" fill="black"/>
<path d="M570.542 745.782C607.432 745.748 608.642 790.251 574.994 800.227C540.005 798.99 535.567 754.254 570.542 745.782Z" fill="#7BBCDE"/>
<path d="M912.719 434.54C951.786 414.366 991.49 445.941 976.998 483.609C963.322 519.154 916.355 515.693 898.113 486.875C891.025 465.323 894.476 449.223 912.719 434.54Z" fill="black"/>
<path d="M930.682 443.356C966.702 439.672 977.83 482.288 942.868 494.124C909.055 498.108 897.108 454.879 930.682 443.356Z" fill="#7BBCDE"/>
<path d="M641.541 1268.9C704.419 1219.76 723.966 1342.46 657.027 1328.41C644.521 1325.78 636.918 1316.37 631.778 1305.43C629.004 1291.01 632.85 1280.65 641.541 1268.9Z" fill="black"/>
<path d="M667.323 1274.9C689.974 1275.16 694.558 1306.58 667.323 1315.49C639.914 1315.1 637.231 1282.31 667.323 1274.9Z" fill="#7BBCDE"/>
<path d="M935.262 317.307C1001.04 304.568 987.247 411.676 924.545 379.542C901.065 360.268 903.798 327.652 935.262 317.307Z" fill="black"/>
<path d="M942.868 332.246C956.7 333.063 960.191 338.881 963.632 351.95C960.481 362.145 956.935 367.379 945.75 369.819C919.466 370.324 917.464 336.352 942.868 332.246Z" fill="#7BBCDE"/>
<path d="M818.573 815.874C866.544 797.702 905.254 890.861 832.654 910.832C760.06 913.511 759.821 820.326 818.573 815.874Z" fill="black"/>
<path d="M818.573 831.701C858.516 819.305 874.919 880.271 832.654 894.844C786.078 902.882 775.037 839.044 818.573 831.701Z" fill="#7BBCDE"/>
<path d="M932.758 701.073C940.125 695.981 953.565 700.278 960.69 703.995C1001.46 725.267 991.628 781.532 945.75 794.791C879.55 804.982 867.528 700.958 932.758 701.073Z" fill="black"/>
<path d="M932.758 713.778C976.752 711.969 984.874 767.883 942.868 779.281C898.291 784.559 890.459 724.307 932.758 713.778Z" fill="#7BBCDE"/>
<path d="M1042.28 815.874C1102.21 809.309 1116.81 897.5 1054.33 910.832C985.417 913.495 978.515 825.176 1042.28 815.874Z" fill="black"/>
<path d="M1042.28 831.701C1083.01 827.343 1093.96 881.549 1054.33 894.844C1010.24 901.51 997.378 843.267 1042.28 831.701Z" fill="#7BBCDE"/>
<path d="M849.37 961.577C922.186 968.772 912.513 1045.51 861.27 1055.53C801.921 1059.63 782.826 983.948 849.37 961.577Z" fill="black"/>
<path d="M849.37 979.206C891.028 976.507 898.979 1026.45 861.27 1039.82C818.846 1045.67 807.411 989.438 849.37 979.206Z" fill="#7BBCDE"/>
<path d="M1013.64 961.577C1071.79 957.448 1086.56 1037.33 1026.99 1052.12C963.42 1060.89 949.663 970.919 1013.64 961.577Z" fill="black"/>
<path d="M1013.64 976.652C1053.23 974.023 1063.29 1021.42 1026.99 1036.68C982.363 1041.13 972.384 989.041 1013.64 976.652Z" fill="#7BBCDE"/>
<path d="M1173.18 776.157C1180.77 772.706 1194.27 780.11 1200.05 784.724C1233.72 811.564 1212.7 860.546 1173.18 863.909C1110.36 863.279 1110.49 776.983 1173.18 776.157Z" fill="black"/>
<path d="M1167.42 791.276C1206.56 787.373 1211.39 837.582 1177.43 848.231C1138.6 854.891 1127.46 802.34 1167.42 791.276Z" fill="#7BBCDE"/>
<path d="M932.758 552.051C993.323 547.589 1004.05 623 948.682 637.97C890.435 646.436 874.255 567.833 932.758 552.051Z" fill="black"/>
<path d="M935.262 567.156C972.967 565.171 981.261 613.084 945.75 622.831C906.447 626.026 897.509 577.724 935.262 567.156Z" fill="#7BBCDE"/>
<path d="M778.006 1076.25C831.986 1079.46 832.01 1155.12 778.006 1158.76C723.137 1158.52 715.85 1081.27 778.006 1076.25Z" fill="black"/>
<path d="M770.498 1090.47C805.605 1087.64 817.481 1130.75 781.441 1143.73C744.689 1147.4 737.079 1103.12 770.498 1090.47Z" fill="#7BBCDE"/>
<path d="M1095.79 1076.25C1148.86 1072.31 1160.49 1146.1 1104.56 1158.76C1048.38 1158.89 1040.01 1084.54 1095.79 1076.25Z" fill="black"/>
<path d="M1098.45 1090.47C1132.89 1092.04 1136.8 1133.44 1104.56 1143.73C1066.58 1142.62 1063.21 1097.22 1098.45 1090.47Z" fill="#7BBCDE"/>
<path d="M932.758 879.048C985.643 875.607 996.933 946.836 942.868 961.577C886.971 965.237 876.574 886.473 932.758 879.048Z" fill="black"/>
<path d="M935.262 894.844C965.89 890.473 973.463 936.769 940.947 946.196C904.93 946.701 898.406 901.116 935.262 894.844Z" fill="#7BBCDE"/>
<path d="M1268 745.781C1313.63 737.437 1336.48 809.508 1276.12 827.279C1216.74 822.827 1217.34 750.449 1268 745.781Z" fill="black"/>
<path d="M1268 760.991C1301.83 758.069 1308.34 803.128 1276.12 810.304C1242.56 813.04 1234.7 772.595 1268 760.991Z" fill="#7BBCDE"/>
<path d="M1154.48 1168.76C1207.69 1164.86 1216.01 1233.59 1167.42 1245.16C1118.08 1253.19 1103.67 1180.75 1154.48 1168.76Z" fill="black"/>
<path d="M1157.49 1184.79C1190.67 1183.95 1193.11 1221.81 1164.21 1230.52C1133 1232.21 1128.12 1192.03 1157.49 1184.79Z" fill="#7BBCDE"/>
<path d="M714.398 1165.44C757.095 1160.23 774.926 1225.46 723.841 1240.51C674.731 1248.01 658.531 1174.46 714.398 1165.44Z" fill="black"/>
<path d="M714.398 1180.6C742.643 1180.85 749.876 1214.04 723.841 1225.79C690.362 1231.21 683.81 1187.78 714.398 1180.6Z" fill="#7BBCDE"/>
<path d="M1363.21 720.515C1415.14 717.516 1424.96 776.609 1378.26 794.791C1327.45 798.309 1315.87 735.051 1363.21 720.515Z" fill="black"/>
<path d="M1368.08 734.896C1398.75 737.292 1400.18 771.284 1372.85 779.281C1343.62 780.083 1340.66 741.218 1368.08 734.896Z" fill="#7BBCDE"/>
<path d="M1208.33 1264.86C1253.48 1260.84 1259.18 1319.62 1216.78 1329.55C1171.31 1333.06 1163.43 1273.71 1208.33 1264.86Z" fill="black"/>
<path d="M1208.33 1279.91C1232.36 1276.45 1235.45 1305.57 1216.78 1315.49C1192.66 1317.39 1184.73 1289.45 1208.33 1279.91Z" fill="#7BBCDE"/>
<path d="M1456.09 703.698C1496.86 700.84 1506.15 753.192 1467.14 765.062C1424.78 770.967 1414.48 713.62 1456.09 703.698Z" fill="black"/>
<path d="M1459.01 720.515C1480.03 718.83 1483.05 743.365 1463.44 750.51C1442.23 751.096 1437.43 724.489 1459.01 720.515Z" fill="#7BBCDE"/>
<path d="M1260.65 1350.7C1301.43 1348.06 1311.32 1401.4 1271.82 1411.92C1227.4 1415.1 1221.51 1360.72 1260.65 1350.7Z" fill="black"/>
<path d="M1263.28 1365.79C1284.62 1365.03 1286.29 1390.44 1268 1397.03C1245.87 1397.95 1245.09 1373.9 1263.28 1365.79Z" fill="#7BBCDE"/>
<path d="M1534.43 686.136C1569.01 679.878 1582.81 727.02 1544.94 739.493C1509.15 740.059 1495.56 693.257 1534.43 686.136Z" fill="black"/>
<path d="M1534.43 701.073C1550.92 699.657 1558.5 713.974 1544.94 725.655C1529.73 724.287 1518.5 710.233 1534.43 701.073Z" fill="#7BBCDE"/>
<path d="M2184.9 1399.9L2000.1 1383.4L2040.8 627.7C2021.73 632.1 2004.13 637.233 1988 643.1L1955 456.1C1993.87 448.033 2041.9 439.6 2099.1 430.8C2156.3 422 2215.33 417.6 2276.2 417.6C2323.13 417.6 2370.8 422.733 2419.2 433C2467.6 442.533 2513.8 458.667 2557.8 481.4C2602.53 503.4 2642.13 533.1 2676.6 570.5C2711.8 607.9 2739.3 653.733 2759.1 708C2779.63 762.267 2789.9 826.433 2789.9 900.5C2789.9 1004.63 2773.03 1093.73 2739.3 1167.8C2706.3 1241.13 2657.9 1297.23 2594.1 1336.1C2531.03 1374.97 2454.77 1394.4 2365.3 1394.4C2305.9 1394.4 2247.23 1383.4 2189.3 1361.4C2187.83 1376.07 2186.37 1388.9 2184.9 1399.9ZM2268.5 602.4C2258.23 602.4 2247.6 602.4 2236.6 602.4C2229.27 738.8 2222.67 855.033 2216.8 951.1C2210.93 1046.43 2205.8 1126 2201.4 1189.8C2223.4 1197.13 2247.6 1203.73 2274 1209.6C2301.13 1214.73 2329.37 1217.3 2358.7 1217.3C2418.1 1217.3 2465.77 1202.27 2501.7 1172.2C2538.37 1142.13 2564.77 1102.53 2580.9 1053.4C2597.03 1003.53 2605.1 949.633 2605.1 891.7C2605.1 845.5 2598.13 806.267 2584.2 774C2570.27 741.733 2551.93 714.967 2529.2 693.7C2507.2 672.433 2483 655.933 2456.6 644.2C2430.2 631.733 2404.17 622.567 2378.5 616.7C2353.57 610.833 2331.2 607.167 2311.4 605.7C2291.6 603.5 2277.3 602.4 2268.5 602.4ZM2926.16 1388.9C2925.43 1380.83 2925.06 1372.03 2925.06 1362.5C2925.06 1352.97 2925.06 1341.97 2925.06 1329.5C2925.06 1297.97 2925.8 1260.57 2927.26 1217.3C2928.73 1173.3 2930.93 1126.73 2933.86 1077.6C2936.8 1027.73 2939.73 977.867 2942.66 928C2945.6 877.4 2948.53 829 2951.46 782.8C2955.13 736.6 2958.43 695.167 2961.36 658.5C2945.23 663.633 2930.93 668.4 2918.46 672.8L2889.86 488C2972.73 464.533 3049.73 446.933 3120.86 435.2C3192.73 423.467 3257.63 417.6 3315.56 417.6C3433.63 417.6 3523.83 439.967 3586.16 484.7C3648.5 529.433 3679.66 594.333 3679.66 679.4C3679.66 727.8 3669.03 768.5 3647.76 801.5C3626.5 833.767 3596.43 860.533 3557.56 881.8C3652.9 930.2 3700.56 1009.03 3700.56 1118.3C3700.56 1166.7 3691.4 1207.4 3673.06 1240.4C3655.46 1272.67 3632.73 1298.7 3604.86 1318.5C3577 1338.3 3547.3 1352.97 3515.76 1362.5C3484.96 1372.77 3455.63 1379.37 3427.76 1382.3C3400.63 1385.97 3379.36 1387.8 3363.96 1387.8C3325.83 1387.8 3285.13 1384.13 3241.86 1376.8C3198.6 1369.47 3156.43 1358.47 3115.36 1343.8C3115.36 1358.47 3115.36 1372.4 3115.36 1385.6L2926.16 1388.9ZM3319.96 601.3C3293.56 601.3 3265.7 602.767 3236.36 605.7C3207.76 607.9 3179.16 611.567 3150.56 616.7C3146.16 670.233 3141.76 732.567 3137.36 803.7C3146.9 804.433 3156.43 804.8 3165.96 804.8C3176.23 804.8 3186.5 804.8 3196.76 804.8C3390.36 804.8 3487.16 765.2 3487.16 686C3487.16 659.6 3472.13 639.067 3442.06 624.4C3412.73 609 3372.03 601.3 3319.96 601.3ZM3222.06 978.6C3206.66 978.6 3190.9 978.6 3174.76 978.6C3159.36 978.6 3143.6 978.967 3127.46 979.7C3126 1011.97 3124.53 1044.23 3123.06 1076.5C3122.33 1108.77 3121.23 1140.67 3119.76 1172.2C3160.83 1184.67 3201.16 1193.83 3240.76 1199.7C3280.36 1204.83 3314.46 1207.4 3343.06 1207.4C3403.93 1207.4 3447.56 1200.07 3473.96 1185.4C3500.36 1170 3513.56 1145.07 3513.56 1110.6C3513.56 1068.07 3488.26 1035.43 3437.66 1012.7C3387.8 989.967 3315.93 978.6 3222.06 978.6ZM3844.67 1392.2C3838.07 1351.13 3833.3 1300.9 3830.37 1241.5C3827.44 1182.1 3825.97 1117.93 3825.97 1049C3825.97 977.867 3827.07 904.9 3829.27 830.1C3832.2 755.3 3835.5 683.433 3839.17 614.5C3843.57 544.833 3848.34 483.233 3853.47 429.7L4044.87 433C4036.8 484.333 4030.2 541.533 4025.07 604.6C4020.67 666.933 4017 731.833 4014.07 799.3C4066.14 791.967 4122.6 786.467 4183.47 782.8C4244.34 779.133 4303 777.3 4359.47 777.3C4386.6 777.3 4412.64 778.033 4437.57 779.5C4436.84 724.5 4435.74 673.167 4434.27 625.5C4432.8 577.833 4430.97 537.5 4428.77 504.5C4426.57 471.5 4424 448.767 4421.07 436.3L4610.27 424.2C4616.87 485.8 4622 559.5 4625.67 645.3C4630.07 731.1 4632.27 822.033 4632.27 918.1C4632.27 995.833 4630.8 1075.03 4627.87 1155.7C4624.94 1235.63 4619.8 1312.63 4612.47 1386.7H4428.77C4431.7 1363.23 4433.9 1331.33 4435.37 1291C4436.84 1249.93 4437.94 1203.73 4438.67 1152.4C4439.4 1100.33 4439.77 1046.07 4439.77 989.6C4439.77 979.333 4439.77 968.7 4439.77 957.7C4425.84 957.7 4411.54 957.7 4396.87 957.7C4382.94 956.967 4368.64 956.6 4353.97 956.6C4296.04 956.6 4237.37 958.8 4177.97 963.2C4119.3 966.867 4063.2 972.367 4009.67 979.7C4009.67 1003.17 4009.67 1026.63 4009.67 1050.1C4009.67 1114.63 4010.04 1175.13 4010.77 1231.6C4012.24 1288.07 4014.44 1339.4 4017.37 1385.6L3844.67 1392.2ZM5007.37 1403.2C4960.44 1403.2 4921.57 1394.77 4890.77 1377.9C4860.7 1361.77 4836.5 1339.4 4818.17 1310.8C4800.57 1282.2 4787.37 1250.3 4778.57 1215.1C4770.5 1179.17 4765 1142.13 4762.07 1104C4759.87 1065.13 4758.77 1027.73 4758.77 991.8C4758.77 950.733 4759.87 908.933 4762.07 866.4C4765 823.867 4767.94 777.3 4770.87 726.7L4972.17 714.6C4969.97 730 4966.67 753.1 4962.27 783.9C4957.87 814.7 4953.84 849.9 4950.17 889.5C4946.5 929.1 4944.67 970.533 4944.67 1013.8C4944.67 1084.93 4950.9 1137.73 4963.37 1172.2C4975.84 1205.93 4994.54 1222.8 5019.47 1222.8C5069.34 1222.8 5106 1186.5 5129.47 1113.9C5152.94 1041.3 5164.67 926.533 5164.67 769.6V719L5258.17 716.8L5371.47 714.6C5361.2 783.533 5353.5 846.967 5348.37 904.9C5343.24 962.833 5339.94 1011.6 5338.47 1051.2C5337 1090.07 5336.27 1116.1 5336.27 1129.3C5336.27 1163.03 5339.2 1187.23 5345.07 1201.9C5350.94 1215.83 5361.2 1222.8 5375.87 1222.8C5383.2 1222.8 5391.27 1221.33 5400.07 1218.4C5408.87 1215.47 5419.14 1210.33 5430.87 1203L5423.17 1392.2C5395.3 1396.6 5371.1 1398.8 5350.57 1398.8C5315.37 1398.8 5286.4 1392.2 5263.67 1379C5241.67 1365.8 5224.07 1348.2 5210.87 1326.2C5188.14 1350.4 5159.9 1369.1 5126.17 1382.3C5093.17 1396.23 5053.57 1403.2 5007.37 1403.2ZM5531.47 1392.2C5531.47 1332.07 5532.57 1267.53 5534.77 1198.6C5536.97 1129.67 5539.9 1059.63 5543.57 988.5C5547.24 917.367 5550.9 847.7 5554.57 779.5C5558.97 711.3 5563.37 647.133 5567.77 587C5572.17 526.133 5575.84 472.233 5578.77 425.3L5762.47 427.5C5758.07 469.3 5753.67 516.233 5749.27 568.3C5745.6 620.367 5741.94 675.733 5738.27 734.4C5759.54 725.6 5782.27 719 5806.47 714.6C5831.4 709.467 5858.17 706.9 5886.77 706.9C5925.64 706.9 5962.67 713.5 5997.87 726.7C6033.8 739.167 6066.07 758.6 6094.67 785C6123.27 811.4 6145.64 845.5 6161.77 887.3C6178.64 929.1 6187.07 979.333 6187.07 1038C6187.07 1100.33 6178.27 1154.23 6160.67 1199.7C6143.07 1245.17 6119.24 1282.57 6089.17 1311.9C6059.1 1341.23 6025 1362.87 5986.87 1376.8C5949.47 1391.47 5910.97 1398.8 5871.37 1398.8C5841.3 1398.8 5813.07 1394.77 5786.67 1386.7C5761 1378.63 5737.17 1368 5715.17 1354.8C5715.17 1366.53 5715.17 1378.27 5715.17 1390L5531.47 1392.2ZM5861.47 891.7C5806.47 891.7 5761.74 907.833 5727.27 940.1C5724.34 1007.57 5721.77 1073.57 5719.57 1138.1C5755.5 1185.77 5805.74 1209.6 5870.27 1209.6C5891.54 1209.6 5912.8 1204.83 5934.07 1195.3C5956.07 1185.03 5974.4 1167.8 5989.07 1143.6C6003.74 1119.4 6011.07 1085.67 6011.07 1042.4C6011.07 993.267 5998.24 955.867 5972.57 930.2C5947.64 904.533 5910.6 891.7 5861.47 891.7Z" fill="black"/>
</svg>

```

--------------------------------------------------------------------------------
/resources/employee-sqlite/load_dept_emp.sql:
--------------------------------------------------------------------------------

```sql
INSERT INTO dept_emp VALUES (10001,'d005','1986-06-26','9999-01-01'),
(10002,'d007','1996-08-03','9999-01-01'),
(10003,'d004','1995-12-03','9999-01-01'),
(10004,'d004','1986-12-01','9999-01-01'),
(10005,'d003','1989-09-12','9999-01-01'),
(10006,'d005','1990-08-05','9999-01-01'),
(10007,'d008','1989-02-10','9999-01-01'),
(10008,'d005','1998-03-11','2000-07-31'),
(10009,'d006','1985-02-18','9999-01-01'),
(10010,'d004','1996-11-24','2000-06-26'),
(10010,'d006','2000-06-26','9999-01-01'),
(10011,'d009','1990-01-22','1996-11-09'),
(10012,'d005','1992-12-18','9999-01-01'),
(10013,'d003','1985-10-20','9999-01-01'),
(10014,'d005','1993-12-29','9999-01-01'),
(10015,'d008','1992-09-19','1993-08-22'),
(10016,'d007','1998-02-11','9999-01-01'),
(10017,'d001','1993-08-03','9999-01-01'),
(10018,'d004','1992-07-29','9999-01-01'),
(10018,'d005','1987-04-03','1992-07-29'),
(10019,'d008','1999-04-30','9999-01-01'),
(10020,'d004','1997-12-30','9999-01-01'),
(10021,'d005','1988-02-10','2002-07-15'),
(10022,'d005','1999-09-03','9999-01-01'),
(10023,'d005','1999-09-27','9999-01-01'),
(10024,'d004','1998-06-14','9999-01-01'),
(10025,'d005','1987-08-17','1997-10-15'),
(10026,'d004','1995-03-20','9999-01-01'),
(10027,'d005','1995-04-02','9999-01-01'),
(10028,'d005','1991-10-22','1998-04-06'),
(10029,'d004','1991-09-18','1999-07-08'),
(10029,'d006','1999-07-08','9999-01-01'),
(10030,'d004','1994-02-17','9999-01-01'),
(10031,'d005','1991-09-01','9999-01-01'),
(10032,'d004','1990-06-20','9999-01-01'),
(10033,'d006','1987-03-18','1993-03-24'),
(10034,'d007','1995-04-12','1999-10-31'),
(10035,'d004','1988-09-05','9999-01-01'),
(10036,'d003','1992-04-28','9999-01-01'),
(10037,'d005','1990-12-05','9999-01-01'),
(10038,'d009','1989-09-20','9999-01-01'),
(10039,'d003','1988-01-19','9999-01-01'),
(10040,'d005','1993-02-14','2002-01-22'),
(10040,'d008','2002-01-22','9999-01-01'),
(10041,'d007','1989-11-12','9999-01-01'),
(10042,'d002','1993-03-21','2000-08-10'),
(10043,'d005','1990-10-20','9999-01-01'),
(10044,'d004','1994-05-21','9999-01-01'),
(10045,'d004','1996-11-16','9999-01-01'),
(10046,'d008','1992-06-20','9999-01-01'),
(10047,'d004','1989-03-31','9999-01-01'),
(10048,'d005','1985-02-24','1987-01-27'),
(10049,'d009','1992-05-04','9999-01-01'),
(10050,'d002','1990-12-25','1992-11-05'),
(10050,'d007','1992-11-05','9999-01-01'),
(10051,'d004','1992-10-15','9999-01-01'),
(10052,'d008','1997-01-31','9999-01-01'),
(10053,'d007','1994-11-13','9999-01-01'),
(10054,'d003','1995-07-29','9999-01-01'),
(10055,'d001','1992-04-27','1995-07-22'),
(10056,'d005','1990-02-01','9999-01-01'),
(10057,'d005','1992-01-15','9999-01-01'),
(10058,'d001','1988-04-25','9999-01-01'),
(10059,'d002','1991-06-26','9999-01-01'),
(10060,'d007','1989-05-28','1992-11-11'),
(10060,'d009','1992-11-11','9999-01-01'),
(10061,'d007','1989-12-02','9999-01-01'),
(10062,'d005','1991-08-30','9999-01-01'),
(10063,'d004','1989-04-08','9999-01-01'),
(10064,'d008','1985-11-20','1992-03-02'),
(10065,'d005','1998-05-24','9999-01-01'),
(10066,'d005','1986-02-26','9999-01-01'),
(10067,'d006','1987-03-04','9999-01-01'),
(10068,'d007','1987-08-07','9999-01-01'),
(10069,'d004','1992-06-14','9999-01-01'),
(10070,'d005','1985-10-14','1995-10-18'),
(10070,'d008','1995-10-18','9999-01-01'),
(10071,'d003','1995-08-05','9999-01-01'),
(10072,'d005','1989-05-21','9999-01-01'),
(10073,'d006','1998-02-02','1998-02-22'),
(10074,'d005','1990-08-13','9999-01-01'),
(10075,'d005','1988-05-17','2001-01-15'),
(10076,'d005','1996-07-15','9999-01-01'),
(10077,'d003','1994-12-23','9999-01-01'),
(10078,'d005','1994-09-29','9999-01-01'),
(10079,'d005','1995-12-13','9999-01-01'),
(10080,'d002','1994-09-28','1997-07-09'),
(10080,'d003','1997-07-09','9999-01-01'),
(10081,'d004','1986-10-30','9999-01-01'),
(10082,'d008','1990-01-03','1990-01-15'),
(10083,'d004','1987-03-31','9999-01-01'),
(10084,'d004','1995-12-15','9999-01-01'),
(10085,'d004','1994-04-09','9999-01-01'),
(10086,'d003','1992-02-19','9999-01-01'),
(10087,'d007','1997-05-08','2001-01-09'),
(10088,'d007','1988-09-02','1992-03-21'),
(10088,'d009','1992-03-21','9999-01-01'),
(10089,'d007','1989-01-10','9999-01-01'),
(10090,'d005','1986-03-14','1999-05-07'),
(10091,'d005','1992-11-18','9999-01-01'),
(10092,'d005','1996-04-22','9999-01-01'),
(10093,'d007','1997-06-08','9999-01-01'),
(10094,'d008','1987-04-18','1997-11-08'),
(10095,'d007','1994-03-10','9999-01-01'),
(10096,'d004','1999-01-23','9999-01-01'),
(10097,'d008','1990-09-15','9999-01-01'),
(10098,'d004','1985-05-13','1989-06-29'),
(10098,'d009','1989-06-29','1992-12-11'),
(10099,'d007','1988-10-18','9999-01-01'),
(10100,'d003','1987-09-21','9999-01-01'),
(10101,'d007','1998-10-14','2000-09-23'),
(10102,'d004','1995-01-02','9999-01-01'),
(10103,'d005','1998-01-12','9999-01-01'),
(10104,'d008','1987-04-16','9999-01-01'),
(10105,'d003','1999-05-17','2001-06-11'),
(10106,'d004','1991-10-27','9999-01-01'),
(10107,'d007','1999-03-30','9999-01-01'),
(10108,'d001','1999-12-06','2001-10-20'),
(10108,'d003','1999-03-20','1999-12-06'),
(10109,'d004','1993-06-16','9999-01-01'),
(10110,'d003','1986-08-22','9999-01-01'),
(10111,'d006','1988-12-19','9999-01-01'),
(10112,'d009','1998-05-01','9999-01-01'),
(10113,'d004','1998-09-14','9999-01-01'),
(10114,'d008','1992-07-17','9999-01-01'),
(10115,'d009','1988-03-03','1992-05-24'),
(10116,'d005','1994-02-27','1995-12-03'),
(10116,'d008','1995-12-03','1998-11-01'),
(10117,'d004','1992-03-19','9999-01-01'),
(10118,'d005','1992-02-02','9999-01-01'),
(10119,'d004','1993-12-09','1997-10-30'),
(10120,'d004','1996-07-06','9999-01-01'),
(10121,'d005','1989-05-03','9999-01-01'),
(10122,'d005','1998-08-06','9999-01-01'),
(10123,'d004','1993-01-15','9999-01-01'),
(10124,'d004','1991-09-05','1999-06-06'),
(10124,'d006','1999-06-06','9999-01-01'),
(10125,'d007','1990-10-26','1996-03-25'),
(10126,'d009','1985-09-08','9999-01-01'),
(10127,'d005','1991-05-17','9999-01-01'),
(10128,'d009','1988-06-06','9999-01-01'),
(10129,'d005','1996-01-16','9999-01-01'),
(10130,'d004','1988-06-21','9999-01-01'),
(10131,'d004','1999-09-17','1999-12-06'),
(10132,'d002','1997-06-18','9999-01-01'),
(10133,'d004','1985-12-15','9999-01-01'),
(10134,'d004','1993-12-02','9999-01-01'),
(10134,'d005','1987-12-12','1993-12-02'),
(10135,'d004','1990-01-04','9999-01-01'),
(10136,'d007','1988-06-13','1999-09-20'),
(10137,'d009','1985-02-18','9999-01-01'),
(10138,'d006','1992-03-03','9999-01-01'),
(10139,'d005','1998-03-15','9999-01-01'),
(10140,'d001','1991-03-14','9999-01-01'),
(10141,'d008','1998-07-23','9999-01-01'),
(10142,'d005','1993-10-28','9999-01-01'),
(10143,'d005','1988-09-30','9999-01-01'),
(10144,'d002','1985-10-14','1988-09-02'),
(10144,'d003','1988-09-02','1993-08-10'),
(10145,'d005','1999-11-03','9999-01-01'),
(10146,'d002','1988-06-28','1990-09-07'),
(10147,'d002','1987-12-18','9999-01-01'),
(10148,'d007','1996-07-15','9999-01-01'),
(10149,'d007','1994-01-28','1996-08-27'),
(10150,'d005','1986-11-16','9999-01-01'),
(10151,'d007','1992-12-12','9999-01-01'),
(10152,'d006','1986-01-27','1987-08-03'),
(10153,'d005','2000-01-08','9999-01-01'),
(10154,'d009','1996-10-23','9999-01-01'),
(10155,'d004','1990-07-12','9999-01-01'),
(10155,'d008','1990-01-05','1990-07-12'),
(10156,'d006','1993-05-14','9999-01-01'),
(10157,'d005','1997-12-10','9999-01-01'),
(10158,'d004','1987-06-04','9999-01-01'),
(10159,'d006','1996-06-12','9999-01-01'),
(10160,'d007','1993-12-06','9999-01-01'),
(10161,'d004','1991-06-09','1994-01-05'),
(10162,'d004','1998-05-27','9999-01-01'),
(10163,'d003','1992-02-02','9999-01-01'),
(10164,'d004','1990-10-19','2000-05-31'),
(10164,'d009','2000-05-31','9999-01-01'),
(10165,'d002','1988-05-17','9999-01-01'),
(10166,'d005','1996-09-02','9999-01-01'),
(10167,'d004','1992-04-04','9999-01-01'),
(10168,'d008','1986-12-06','9999-01-01'),
(10169,'d005','1998-06-28','9999-01-01'),
(10170,'d004','1986-01-02','1989-02-06'),
(10171,'d004','1996-08-05','9999-01-01'),
(10172,'d005','1998-02-04','1998-10-01'),
(10172,'d008','1998-10-01','9999-01-01'),
(10173,'d002','1992-03-21','9999-01-01'),
(10174,'d004','1987-06-01','9999-01-01'),
(10175,'d001','1988-09-24','1995-05-24'),
(10176,'d009','1994-12-22','9999-01-01'),
(10177,'d002','1993-02-06','1994-03-17'),
(10178,'d007','1994-03-21','9999-01-01'),
(10179,'d005','2000-01-25','9999-01-01'),
(10180,'d002','1994-07-01','9999-01-01'),
(10181,'d005','1988-06-22','9999-01-01'),
(10182,'d005','1990-09-02','1999-01-05'),
(10182,'d008','1999-01-05','9999-01-01'),
(10183,'d009','1996-08-11','9999-01-01'),
(10184,'d009','1997-12-26','9999-01-01'),
(10185,'d007','1986-03-01','9999-01-01'),
(10186,'d002','1996-12-25','1997-08-16'),
(10187,'d002','1991-06-01','9999-01-01'),
(10188,'d004','1987-08-27','9999-01-01'),
(10189,'d005','1992-09-13','1993-06-29'),
(10190,'d004','1986-06-23','9999-01-01'),
(10191,'d005','1986-04-10','9999-01-01'),
(10192,'d004','1999-08-09','9999-01-01'),
(10192,'d006','1988-06-13','1999-08-09'),
(10193,'d005','1996-09-21','9999-01-01'),
(10194,'d002','1997-02-14','9999-01-01'),
(10195,'d004','1985-02-15','2001-04-14'),
(10196,'d002','1999-01-31','9999-01-01'),
(10197,'d005','1994-06-28','9999-01-01'),
(10198,'d005','1985-08-31','9999-01-01'),
(10199,'d007','1998-02-07','9999-01-01'),
(10200,'d004','1994-02-17','2000-10-03'),
(10200,'d006','2000-10-03','9999-01-01'),
(10201,'d005','1992-11-10','9999-01-01'),
(10202,'d005','1991-10-06','9999-01-01'),
(10203,'d008','1989-04-06','9999-01-01'),
(10204,'d005','1998-12-18','1999-03-08'),
(10205,'d004','1993-08-23','9999-01-01'),
(10206,'d005','1988-04-19','9999-01-01'),
(10207,'d005','1992-10-11','9999-01-01'),
(10208,'d001','1995-02-05','1999-05-15'),
(10209,'d002','1991-11-23','1999-08-07'),
(10209,'d007','1999-08-07','9999-01-01'),
(10210,'d009','1996-02-24','9999-01-01'),
(10211,'d005','1991-11-22','9999-01-01'),
(10212,'d005','1996-01-28','9999-01-01'),
(10213,'d009','1994-10-06','9999-01-01'),
(10214,'d007','1988-02-29','9999-01-01'),
(10215,'d007','1991-11-23','9999-01-01'),
(10216,'d008','1987-10-30','9999-01-01'),
(10217,'d004','1986-05-12','1993-08-05'),
(10218,'d004','1997-01-31','9999-01-01'),
(10219,'d005','1994-10-23','9999-01-01'),
(10219,'d009','1993-03-31','1994-10-23'),
(10220,'d002','1997-09-16','9999-01-01'),
(10221,'d004','1988-06-08','2000-10-04'),
(10222,'d004','1986-06-08','9999-01-01'),
(10223,'d005','1998-04-01','9999-01-01'),
(10224,'d004','1988-01-09','9999-01-01'),
(10225,'d009','1995-12-14','9999-01-01'),
(10226,'d007','1996-01-29','9999-01-01'),
(10227,'d005','1994-11-01','9999-01-01'),
(10228,'d001','1993-01-28','9999-01-01'),
(10228,'d007','1992-12-22','1993-01-28'),
(10229,'d006','1996-02-20','2000-06-30'),
(10230,'d008','1996-06-16','9999-01-01'),
(10231,'d009','1998-09-09','9999-01-01'),
(10232,'d007','1992-06-04','9999-01-01'),
(10233,'d003','1994-04-29','9999-01-01'),
(10234,'d007','1990-11-19','1999-08-06'),
(10235,'d004','1995-04-06','9999-01-01'),
(10236,'d007','1996-08-30','9999-01-01'),
(10237,'d007','1989-08-11','2000-02-21'),
(10238,'d005','1995-03-31','1996-05-25'),
(10238,'d008','1996-05-25','9999-01-01'),
(10239,'d001','1996-05-04','9999-01-01'),
(10240,'d006','1998-10-06','9999-01-01'),
(10241,'d002','1988-06-12','9999-01-01'),
(10242,'d004','1988-01-18','9999-01-01'),
(10243,'d007','1986-06-07','9999-01-01'),
(10244,'d005','1999-09-16','9999-01-01'),
(10245,'d008','1994-04-21','1995-02-20'),
(10246,'d004','1991-02-01','9999-01-01'),
(10247,'d004','1992-08-14','9999-01-01'),
(10248,'d007','1991-08-13','9999-01-01'),
(10249,'d005','1991-12-08','1998-04-13'),
(10249,'d008','1998-04-13','9999-01-01'),
(10250,'d006','1992-08-30','9999-01-01'),
(10251,'d008','1992-06-25','9999-01-01'),
(10252,'d004','1990-11-08','9999-01-01'),
(10253,'d007','1985-02-21','1994-03-20'),
(10254,'d007','1990-06-14','9999-01-01'),
(10255,'d004','1993-05-12','1999-11-14'),
(10256,'d007','1985-10-12','9999-01-01'),
(10257,'d004','1997-07-16','9999-01-01'),
(10258,'d005','1985-05-17','9999-01-01'),
(10259,'d001','1987-07-25','1994-08-15'),
(10259,'d009','1994-08-15','1999-01-06'),
(10260,'d004','1993-02-01','9999-01-01'),
(10261,'d005','1996-09-11','1999-02-23'),
(10262,'d007','1996-01-22','9999-01-01'),
(10263,'d002','1996-12-21','9999-01-01'),
(10264,'d005','1997-07-16','9999-01-01'),
(10265,'d006','1997-09-12','9999-01-01'),
(10266,'d004','1990-05-25','9999-01-01'),
(10267,'d004','1997-04-26','9999-01-01'),
(10268,'d004','1988-04-15','1990-08-17'),
(10268,'d005','1986-12-17','1988-04-15'),
(10269,'d004','1988-07-24','9999-01-01'),
(10270,'d007','1991-09-26','9999-01-01'),
(10271,'d005','1986-05-23','9999-01-01'),
(10272,'d002','1997-10-23','9999-01-01'),
(10273,'d007','1985-11-06','9999-01-01'),
(10274,'d005','1997-02-02','9999-01-01'),
(10275,'d005','1987-09-08','9999-01-01'),
(10276,'d005','1986-10-19','2000-02-04'),
(10277,'d007','1985-06-16','9999-01-01'),
(10278,'d005','1993-07-02','1997-02-14'),
(10279,'d004','1995-04-26','1999-07-11'),
(10279,'d009','1999-07-11','9999-01-01'),
(10280,'d003','1995-01-27','9999-01-01'),
(10281,'d006','1994-12-03','9999-01-01'),
(10282,'d004','1996-05-02','9999-01-01'),
(10283,'d005','1988-05-25','9999-01-01'),
(10284,'d004','1999-07-06','9999-01-01'),
(10285,'d008','1995-05-25','9999-01-01'),
(10286,'d009','1994-12-24','1999-01-24'),
(10287,'d005','1997-09-05','9999-01-01'),
(10287,'d008','1992-12-28','1997-09-05'),
(10288,'d004','1994-08-29','9999-01-01'),
(10289,'d005','1993-03-12','2002-01-31'),
(10290,'d005','1991-09-18','9999-01-01'),
(10291,'d007','1987-03-30','9999-01-01'),
(10292,'d007','1989-06-05','9999-01-01'),
(10293,'d004','1992-12-12','9999-01-01'),
(10294,'d005','1999-01-30','1999-05-04'),
(10295,'d002','1995-06-19','9999-01-01'),
(10296,'d007','1989-09-16','9999-01-01'),
(10297,'d004','1986-05-28','9999-01-01'),
(10298,'d004','2002-05-05','9999-01-01'),
(10298,'d008','1999-04-27','2002-05-05'),
(10299,'d007','1990-01-10','9999-01-01'),
(10300,'d004','1991-05-17','9999-01-01'),
(10301,'d002','1988-05-23','9999-01-01'),
(10302,'d007','1986-07-22','1999-11-09'),
(10303,'d004','1990-02-05','2000-11-15'),
(10304,'d007','1992-11-16','2002-05-08'),
(10305,'d005','1988-10-31','1992-06-02'),
(10306,'d007','1993-09-06','9999-01-01'),
(10307,'d004','1999-10-16','2000-01-21'),
(10307,'d006','2000-01-21','9999-01-01'),
(10308,'d007','1992-12-29','9999-01-01'),
(10309,'d005','1997-05-02','9999-01-01'),
(10310,'d004','1990-10-24','2001-07-26'),
(10311,'d005','1998-11-04','9999-01-01'),
(10312,'d004','1986-08-28','9999-01-01'),
(10313,'d008','1994-10-10','9999-01-01'),
(10314,'d007','1986-01-16','9999-01-01'),
(10315,'d005','1987-08-28','9999-01-01'),
(10316,'d006','1990-12-18','1991-01-02'),
(10317,'d004','2000-07-05','9999-01-01'),
(10317,'d008','1999-01-24','2000-07-05'),
(10318,'d005','1987-03-23','9999-01-01'),
(10319,'d007','1994-06-18','9999-01-01'),
(10320,'d007','1988-11-03','2001-12-23'),
(10321,'d007','1995-07-24','1999-08-14'),
(10322,'d005','1990-01-29','9999-01-01'),
(10323,'d004','1991-06-06','9999-01-01'),
(10324,'d005','1999-07-19','9999-01-01'),
(10325,'d003','1990-09-20','9999-01-01'),
(10326,'d008','1998-09-02','9999-01-01'),
(10327,'d005','1987-09-18','1988-05-10'),
(10327,'d008','1988-05-10','1993-05-22'),
(10328,'d005','1998-07-17','9999-01-01'),
(10329,'d004','1986-01-20','9999-01-01'),
(10330,'d007','1993-10-08','9999-01-01'),
(10331,'d007','1986-10-29','9999-01-01'),
(10332,'d004','1988-10-20','1997-03-07'),
(10333,'d005','1993-01-16','9999-01-01'),
(10334,'d009','1998-02-15','9999-01-01'),
(10335,'d007','1992-04-06','1999-11-07'),
(10335,'d009','1999-11-07','9999-01-01'),
(10336,'d008','1996-09-27','9999-01-01'),
(10337,'d004','1998-04-25','9999-01-01'),
(10338,'d009','1999-12-29','9999-01-01'),
(10339,'d004','1989-11-30','9999-01-01'),
(10340,'d001','1988-03-30','9999-01-01'),
(10341,'d004','1987-04-29','1998-11-11'),
(10342,'d005','1987-07-25','9999-01-01'),
(10343,'d006','1997-10-03','9999-01-01'),
(10344,'d004','1999-04-19','2001-11-11'),
(10344,'d006','2001-11-11','9999-01-01'),
(10345,'d005','1993-11-08','9999-01-01'),
(10346,'d007','1992-01-17','1996-04-20'),
(10347,'d008','1998-02-20','9999-01-01'),
(10348,'d004','1995-10-22','9999-01-01'),
(10349,'d009','1991-09-28','9999-01-01'),
(10350,'d004','1991-05-11','1998-01-16'),
(10351,'d002','1995-05-01','9999-01-01'),
(10352,'d005','1998-12-16','9999-01-01'),
(10353,'d001','1989-08-24','9999-01-01'),
(10354,'d002','1999-03-03','2000-03-03'),
(10354,'d003','2000-03-03','2002-01-01'),
(10355,'d007','1996-01-26','9999-01-01'),
(10356,'d008','1995-06-26','9999-01-01'),
(10357,'d006','1994-04-04','9999-01-01'),
(10358,'d005','1991-02-19','9999-01-01'),
(10359,'d005','1998-07-20','9999-01-01'),
(10360,'d003','1996-09-04','9999-01-01'),
(10361,'d007','1986-10-23','9999-01-01'),
(10362,'d003','1990-11-02','1997-07-16'),
(10363,'d004','1985-09-11','1987-05-18'),
(10363,'d006','1987-05-18','1993-02-12'),
(10364,'d004','1985-11-14','9999-01-01'),
(10365,'d008','1987-10-22','1992-04-04'),
(10366,'d005','1997-08-15','9999-01-01'),
(10367,'d001','1991-06-24','9999-01-01'),
(10368,'d004','1996-05-16','9999-01-01'),
(10369,'d007','1994-09-05','9999-01-01'),
(10370,'d007','1992-04-18','9999-01-01'),
(10371,'d004','1989-11-28','9999-01-01'),
(10372,'d004','1985-07-30','9999-01-01'),
(10373,'d005','1997-04-26','9999-01-01'),
(10374,'d007','1993-12-08','1995-04-25'),
(10374,'d009','1995-04-25','1996-03-29'),
(10375,'d007','1994-05-29','9999-01-01'),
(10376,'d004','1990-12-08','9999-01-01'),
(10377,'d004','1996-08-24','9999-01-01'),
(10378,'d007','1992-08-31','9999-01-01'),
(10379,'d005','1996-07-15','9999-01-01'),
(10380,'d007','1985-03-19','9999-01-01'),
(10381,'d004','1991-12-04','9999-01-01'),
(10382,'d004','1998-07-01','1999-05-07'),
(10382,'d009','1999-05-07','2000-10-27'),
(10383,'d004','1991-06-19','9999-01-01'),
(10384,'d001','1986-01-16','9999-01-01'),
(10385,'d004','1992-12-20','1998-01-23'),
(10386,'d005','1985-08-02','9999-01-01'),
(10387,'d009','1994-01-07','9999-01-01'),
(10388,'d007','1999-05-28','9999-01-01'),
(10389,'d005','1999-05-13','9999-01-01'),
(10390,'d006','1989-05-17','9999-01-01'),
(10391,'d005','1993-01-28','9999-01-01'),
(10392,'d004','1992-03-01','1997-08-09'),
(10392,'d006','1997-08-09','9999-01-01'),
(10393,'d004','1989-06-23','9999-01-01'),
(10394,'d005','1991-03-14','1991-08-25'),
(10395,'d005','1998-08-10','2001-08-13'),
(10396,'d005','1986-01-11','9999-01-01'),
(10397,'d004','1993-05-21','9999-01-01'),
(10398,'d007','1990-10-12','9999-01-01'),
(10399,'d007','2000-01-26','9999-01-01'),
(10400,'d007','1993-10-17','9999-01-01'),
(10401,'d006','1999-10-25','2001-04-25'),
(10402,'d006','1987-01-02','9999-01-01'),
(10403,'d002','1991-09-13','1995-03-07'),
(10403,'d007','1995-03-07','2001-06-15'),
(10404,'d005','1988-08-28','9999-01-01'),
(10405,'d006','1998-09-26','2000-12-05'),
(10406,'d006','1996-01-26','9999-01-01'),
(10407,'d007','1999-10-30','9999-01-01'),
(10408,'d007','1998-10-07','9999-01-01'),
(10409,'d005','1997-09-26','9999-01-01'),
(10410,'d007','1993-10-16','1996-07-21'),
(10411,'d007','1989-09-02','9999-01-01'),
(10412,'d004','1991-11-21','2000-05-19'),
(10412,'d009','2000-05-19','9999-01-01'),
(10413,'d003','1991-12-27','9999-01-01'),
(10414,'d005','1990-05-30','1994-12-02'),
(10415,'d005','1993-10-25','9999-01-01'),
(10416,'d002','1989-03-24','9999-01-01'),
(10417,'d007','1999-06-27','9999-01-01'),
(10418,'d001','1996-10-04','9999-01-01'),
(10419,'d008','1992-04-25','2002-07-06'),
(10420,'d008','1988-01-17','2000-07-09'),
(10421,'d009','1990-04-07','9999-01-01'),
(10422,'d004','1995-01-03','1997-09-30'),
(10422,'d006','1997-09-30','9999-01-01'),
(10423,'d008','1999-05-27','9999-01-01'),
(10424,'d005','1989-08-07','9999-01-01'),
(10425,'d004','1995-05-07','2002-05-06'),
(10426,'d005','1985-07-06','9999-01-01'),
(10427,'d007','1994-10-03','9999-01-01'),
(10428,'d003','1992-06-04','9999-01-01'),
(10429,'d005','1988-09-23','9999-01-01'),
(10430,'d004','1998-07-05','1999-07-17'),
(10430,'d009','1999-07-17','9999-01-01'),
(10431,'d007','1987-10-08','9999-01-01'),
(10432,'d009','1990-08-13','9999-01-01'),
(10433,'d006','1992-11-26','9999-01-01'),
(10434,'d004','1995-06-27','2002-06-22'),
(10435,'d005','1996-06-08','9999-01-01'),
(10436,'d003','1988-01-30','9999-01-01'),
(10437,'d006','1996-04-12','9999-01-01'),
(10438,'d004','1990-01-19','9999-01-01'),
(10439,'d005','1993-05-01','9999-01-01'),
(10440,'d005','1997-04-04','2000-01-30'),
(10440,'d008','2000-01-30','9999-01-01'),
(10441,'d004','1988-07-12','9999-01-01'),
(10442,'d007','1992-02-12','2001-03-13'),
(10443,'d005','1989-08-01','2002-07-06'),
(10444,'d007','1994-10-23','9999-01-01'),
(10445,'d005','1987-11-04','9999-01-01'),
(10446,'d005','1996-12-25','9999-01-01'),
(10447,'d006','1988-12-29','2000-11-15'),
(10448,'d007','1992-03-12','9999-01-01'),
(10449,'d001','1996-03-12','9999-01-01'),
(10449,'d007','1987-03-28','1996-03-12'),
(10450,'d005','1997-08-24','9999-01-01'),
(10451,'d004','1988-03-12','9999-01-01'),
(10452,'d005','1995-11-12','2001-10-11'),
(10453,'d009','1985-04-02','9999-01-01'),
(10454,'d007','1989-04-16','9999-01-01'),
(10455,'d007','1995-02-19','9999-01-01'),
(10456,'d002','2000-01-06','9999-01-01'),
(10457,'d006','1999-10-23','9999-01-01'),
(10458,'d007','1994-07-05','9999-01-01'),
(10459,'d002','1998-06-14','9999-01-01'),
(10459,'d003','1997-06-28','1998-06-14'),
(10460,'d005','1999-06-30','2001-04-15'),
(10461,'d007','1987-08-03','9999-01-01'),
(10462,'d004','1996-03-25','9999-01-01'),
(10463,'d007','1994-02-17','9999-01-01'),
(10464,'d003','1991-05-21','9999-01-01'),
(10465,'d009','1994-12-11','9999-01-01'),
(10466,'d009','1997-08-22','2000-08-15'),
(10467,'d003','1992-05-22','1999-11-01'),
(10468,'d007','1991-05-28','9999-01-01'),
(10469,'d005','1985-06-05','1992-12-26'),
(10469,'d008','1992-12-26','9999-01-01'),
(10470,'d004','1989-09-19','9999-01-01'),
(10471,'d006','1990-11-18','9999-01-01'),
(10472,'d007','1999-12-01','2002-01-02'),
(10473,'d004','1997-09-23','9999-01-01'),
(10474,'d004','1987-02-21','9999-01-01'),
(10475,'d004','1992-05-13','1994-12-30'),
(10476,'d008','1987-09-20','9999-01-01'),
(10477,'d005','1997-05-26','9999-01-01'),
(10478,'d005','1993-02-10','9999-01-01'),
(10478,'d009','1992-06-09','1993-02-10'),
(10479,'d004','1993-07-24','9999-01-01'),
(10480,'d002','1988-05-18','1989-06-03'),
(10481,'d004','1989-10-03','9999-01-01'),
(10482,'d005','1996-02-26','9999-01-01'),
(10483,'d006','1993-11-10','9999-01-01'),
(10484,'d003','1996-12-20','9999-01-01'),
(10485,'d005','1996-01-21','9999-01-01'),
(10486,'d006','1987-10-08','9999-01-01'),
(10487,'d004','1992-08-14','9999-01-01'),
(10488,'d005','1994-07-09','1996-11-18'),
(10488,'d008','1996-11-18','9999-01-01'),
(10489,'d005','1989-09-10','1989-10-06'),
(10490,'d007','1992-11-22','9999-01-01'),
(10491,'d001','1990-01-17','9999-01-01'),
(10492,'d005','1988-04-29','9999-01-01'),
(10493,'d007','1998-10-29','9999-01-01'),
(10494,'d004','1991-12-18','9999-01-01'),
(10495,'d004','1989-09-24','9999-01-01'),
(10496,'d002','1995-08-29','1999-01-26'),
(10497,'d004','1992-01-22','9999-01-01'),
(10498,'d004','1994-03-09','9999-01-01'),
(10499,'d001','1996-07-31','1998-03-16'),
(10499,'d007','1998-03-16','9999-01-01'),
(10500,'d005','1996-12-16','9999-01-01'),
(10501,'d005','1988-09-08','9999-01-01'),
(10502,'d006','1993-03-04','9999-01-01'),
(10503,'d004','1997-03-13','9999-01-01'),
(10504,'d007','1999-10-19','9999-01-01'),
(10505,'d007','1985-07-23','1998-03-26'),
(10506,'d005','1996-12-01','9999-01-01'),
(10507,'d003','1990-09-30','9999-01-01'),
(10508,'d004','1991-05-01','9999-01-01'),
(10509,'d007','1992-10-06','9999-01-01'),
(10510,'d007','1990-04-20','1992-09-21'),
(10510,'d009','1992-09-21','9999-01-01'),
(10511,'d004','1992-01-27','9999-01-01'),
(10512,'d003','1989-11-28','9999-01-01'),
(10513,'d002','1991-04-02','9999-01-01'),
(10514,'d008','1992-04-29','1995-04-02'),
(10515,'d007','1990-01-06','1998-07-21'),
(10516,'d005','1985-10-19','9999-01-01'),
(10517,'d007','1990-12-25','9999-01-01'),
(10518,'d005','1993-09-03','9999-01-01'),
(10519,'d005','1994-02-09','2001-10-13'),
(10519,'d008','1992-12-05','1994-02-09'),
(10520,'d004','1996-09-05','9999-01-01'),
(10521,'d007','1989-05-11','9999-01-01'),
(10522,'d003','1986-12-12','9999-01-01'),
(10523,'d004','1989-12-23','9999-01-01'),
(10524,'d004','1985-10-09','9999-01-01'),
(10525,'d007','1990-07-08','1995-12-20'),
(10526,'d004','1988-02-27','9999-01-01'),
(10527,'d005','1996-01-25','9999-01-01'),
(10528,'d005','1993-10-28','9999-01-01'),
(10529,'d004','1999-06-12','9999-01-01'),
(10529,'d005','1997-07-04','1999-06-12'),
(10530,'d005','1987-09-23','9999-01-01'),
(10531,'d003','1995-03-16','9999-01-01'),
(10532,'d007','1986-05-18','9999-01-01'),
(10533,'d007','1990-08-17','9999-01-01'),
(10534,'d008','1998-01-26','2001-03-03'),
(10535,'d009','1991-08-22','9999-01-01'),
(10536,'d007','1988-10-07','9999-01-01'),
(10537,'d007','1996-09-25','9999-01-01'),
(10538,'d004','1991-09-22','1998-12-13'),
(10538,'d005','1987-07-23','1991-09-22'),
(10539,'d007','1990-06-05','9999-01-01'),
(10540,'d004','1994-05-03','9999-01-01'),
(10541,'d007','1986-02-28','1986-10-01'),
(10542,'d005','1992-02-07','9999-01-01'),
(10543,'d002','1998-11-24','9999-01-01'),
(10544,'d008','1995-04-29','9999-01-01'),
(10545,'d004','1990-06-30','9999-01-01'),
(10546,'d008','1991-04-14','9999-01-01'),
(10547,'d005','1988-02-14','1989-06-19'),
(10548,'d001','1991-10-04','9999-01-01'),
(10548,'d007','1986-07-04','1991-10-04'),
(10549,'d005','1996-10-11','9999-01-01'),
(10550,'d006','1985-02-03','9999-01-01'),
(10551,'d006','1988-08-06','9999-01-01'),
(10552,'d004','1998-08-31','9999-01-01'),
(10553,'d005','1990-07-22','9999-01-01'),
(10554,'d005','1990-11-28','9999-01-01'),
(10555,'d007','1992-05-22','1993-01-19'),
(10556,'d002','1992-04-15','9999-01-01'),
(10557,'d005','1992-09-18','1994-08-25'),
(10557,'d008','1994-08-25','9999-01-01'),
(10558,'d004','1992-04-22','9999-01-01'),
(10559,'d007','1999-04-05','9999-01-01'),
(10560,'d005','1996-09-03','9999-01-01'),
(10561,'d007','1997-06-30','9999-01-01'),
(10562,'d005','1997-07-24','9999-01-01'),
(10563,'d005','1992-09-29','2002-01-01'),
(10564,'d004','1995-11-23','9999-01-01'),
(10565,'d004','1996-08-05','9999-01-01'),
(10566,'d005','1990-08-23','1997-10-26'),
(10567,'d001','1997-02-17','9999-01-01'),
(10567,'d007','1992-10-18','1997-02-17'),
(10568,'d007','1995-07-08','9999-01-01'),
(10569,'d008','1987-03-13','9999-01-01'),
(10570,'d007','1986-06-16','2000-03-25'),
(10571,'d005','1985-02-24','9999-01-01'),
(10572,'d004','1988-02-16','9999-01-01'),
(10573,'d007','1999-08-20','9999-01-01'),
(10574,'d003','1999-11-15','9999-01-01'),
(10575,'d004','1988-10-04','2000-11-22'),
(10576,'d002','1991-01-03','9999-01-01'),
(10577,'d004','2001-08-01','9999-01-01'),
(10577,'d008','1993-07-02','2001-08-01'),
(10578,'d005','1989-11-24','9999-01-01'),
(10579,'d005','1991-06-02','9999-01-01'),
(10580,'d009','1991-03-02','9999-01-01'),
(10581,'d004','1994-04-13','9999-01-01'),
(10582,'d005','1995-11-06','9999-01-01'),
(10583,'d004','1985-02-14','1998-05-29'),
(10584,'d005','1986-02-17','9999-01-01'),
(10585,'d005','1991-01-09','1994-08-24'),
(10585,'d008','1994-08-24','9999-01-01'),
(10586,'d004','1992-02-04','9999-01-01'),
(10587,'d005','1991-11-20','9999-01-01'),
(10588,'d004','1988-07-25','9999-01-01'),
(10589,'d002','1994-01-26','9999-01-01'),
(10590,'d008','1986-04-09','9999-01-01'),
(10591,'d001','1987-06-18','1988-09-20'),
(10592,'d007','1993-09-27','9999-01-01'),
(10593,'d004','2000-03-29','9999-01-01'),
(10593,'d005','1990-09-12','2000-03-29'),
(10594,'d005','1988-04-02','9999-01-01'),
(10595,'d004','1989-11-24','9999-01-01'),
(10596,'d007','1996-05-23','9999-01-01'),
(10597,'d007','1990-04-01','9999-01-01'),
(10598,'d004','1998-06-22','2000-09-27'),
(10599,'d005','1991-11-17','9999-01-01'),
(10600,'d007','1992-04-27','9999-01-01'),
(10601,'d009','1999-07-24','2002-05-09'),
(10602,'d001','1989-04-23','1993-11-06'),
(10603,'d007','1995-07-20','9999-01-01'),
(10604,'d004','2002-07-29','9999-01-01'),
(10604,'d005','1990-04-07','2002-07-29'),
(10605,'d006','1993-07-01','9999-01-01'),
(10606,'d005','1987-05-02','9999-01-01'),
(10607,'d005','1996-01-13','9999-01-01'),
(10608,'d004','1986-05-25','1991-06-02'),
(10609,'d005','1994-12-03','9999-01-01'),
(10610,'d005','1997-03-30','9999-01-01'),
(10611,'d005','1989-09-16','9999-01-01'),
(10612,'d004','1991-09-02','9999-01-01'),
(10613,'d003','1997-10-13','9999-01-01'),
(10614,'d004','1990-03-03','1997-02-27'),
(10614,'d009','1997-02-27','9999-01-01'),
(10615,'d002','1996-03-10','9999-01-01'),
(10616,'d007','1996-11-07','9999-01-01'),
(10617,'d009','1991-10-30','2001-10-03'),
(10618,'d004','1994-10-07','9999-01-01'),
(10619,'d007','1993-04-09','9999-01-01'),
(10620,'d005','1990-11-10','9999-01-01'),
(10621,'d005','1992-02-10','9999-01-01'),
(10622,'d004','1989-05-15','9999-01-01'),
(10623,'d005','1992-01-15','1996-02-11'),
(10623,'d008','1996-02-11','9999-01-01'),
(10624,'d004','1990-05-07','9999-01-01'),
(10625,'d005','1986-07-15','1995-01-13'),
(10626,'d003','1996-12-03','9999-01-01'),
(10627,'d003','1995-03-13','9999-01-01'),
(10628,'d005','1987-03-14','9999-01-01'),
(10629,'d007','1999-10-20','2001-12-07'),
(10630,'d004','1997-01-13','9999-01-01'),
(10631,'d005','1994-10-18','9999-01-01'),
(10632,'d005','1985-07-25','1987-11-20'),
(10633,'d007','1997-05-16','9999-01-01'),
(10634,'d005','1990-11-11','1994-04-02'),
(10634,'d008','1994-04-02','9999-01-01'),
(10635,'d004','1991-09-22','1999-12-20'),
(10636,'d003','1996-09-25','9999-01-01'),
(10637,'d007','1993-07-11','2000-01-19'),
(10638,'d007','1994-11-10','9999-01-01'),
(10639,'d005','1992-10-25','9999-01-01'),
(10640,'d007','1992-12-04','9999-01-01'),
(10641,'d005','1993-03-21','9999-01-01'),
(10642,'d005','1998-10-05','9999-01-01'),
(10643,'d005','1987-11-11','9999-01-01'),
(10644,'d002','1985-05-29','1995-07-19'),
(10644,'d007','1995-07-19','1995-08-25'),
(10645,'d004','1988-03-01','9999-01-01'),
(10646,'d009','1996-01-31','9999-01-01'),
(10647,'d004','1997-09-03','9999-01-01'),
(10648,'d005','1988-02-16','9999-01-01'),
(10649,'d009','1998-06-23','9999-01-01'),
(10650,'d005','1992-10-04','9999-01-01'),
(10651,'d008','1996-01-08','9999-01-01'),
(10652,'d008','1990-02-12','1992-01-13'),
(10653,'d005','1987-04-30','9999-01-01'),
(10654,'d004','1990-03-25','9999-01-01'),
(10655,'d002','1997-07-04','2000-11-22'),
(10655,'d007','2000-11-22','9999-01-01'),
(10656,'d004','1988-06-21','9999-01-01'),
(10657,'d002','1992-03-26','9999-01-01'),
(10658,'d001','1994-04-29','9999-01-01'),
(10659,'d005','1995-06-01','9999-01-01'),
(10660,'d005','1988-08-12','1991-07-12'),
(10661,'d001','1988-01-12','9999-01-01'),
(10662,'d004','1999-12-17','9999-01-01'),
(10663,'d004','1999-02-12','9999-01-01'),
(10663,'d005','1993-01-23','1999-02-12'),
(10664,'d004','1989-12-24','9999-01-01'),
(10665,'d005','1988-01-23','2000-07-13'),
(10666,'d002','1989-05-20','9999-01-01'),
(10667,'d009','1999-07-28','9999-01-01'),
(10668,'d002','1997-11-28','1999-09-03'),
(10669,'d009','1996-11-17','9999-01-01'),
(10670,'d007','1988-03-23','9999-01-01'),
(10671,'d003','1995-09-14','9999-01-01'),
(10672,'d004','1991-09-29','1996-04-19'),
(10673,'d005','1994-07-29','1997-11-18'),
(10673,'d008','1997-11-18','1998-01-14'),
(10674,'d005','1999-03-17','9999-01-01'),
(10675,'d002','1993-02-02','9999-01-01'),
(10676,'d005','1999-09-04','9999-01-01'),
(10677,'d005','1999-10-13','9999-01-01'),
(10678,'d005','1987-08-02','9999-01-01'),
(10679,'d003','1990-05-13','9999-01-01'),
(10680,'d005','1992-11-21','1998-12-08'),
(10681,'d001','2002-01-08','9999-01-01'),
(10681,'d007','1995-10-02','2002-01-08'),
(10682,'d009','1990-11-09','9999-01-01'),
(10683,'d004','1997-06-23','9999-01-01'),
(10684,'d004','1999-10-28','9999-01-01'),
(10685,'d002','1995-12-27','1996-10-20'),
(10686,'d005','1987-05-17','9999-01-01'),
(10687,'d008','1990-03-13','9999-01-01'),
(10688,'d002','1986-04-13','9999-01-01'),
(10689,'d003','1988-08-05','9999-01-01'),
(10690,'d004','1995-10-04','9999-01-01'),
(10690,'d005','1989-08-22','1995-10-04'),
(10691,'d005','1989-09-17','9999-01-01'),
(10692,'d007','1993-03-22','9999-01-01'),
(10693,'d009','1986-01-08','9999-01-01'),
(10694,'d001','1988-01-26','2001-07-11'),
(10695,'d004','1998-05-19','9999-01-01'),
(10696,'d005','1991-09-09','9999-01-01'),
(10697,'d009','1999-08-29','9999-01-01'),
(10698,'d005','1994-12-08','9999-01-01'),
(10699,'d006','1985-11-17','9999-01-01'),
(10700,'d005','1998-04-14','2002-06-27'),
(10701,'d007','1986-10-27','1989-10-07'),
(10701,'d009','1989-10-07','9999-01-01'),
(10702,'d005','1991-01-14','9999-01-01'),
(10703,'d004','1996-05-12','9999-01-01'),
(10704,'d008','1995-02-17','9999-01-01'),
(10705,'d007','1990-07-18','9999-01-01'),
(10706,'d004','1994-05-03','2001-04-08'),
(10707,'d005','1990-12-24','9999-01-01'),
(10708,'d008','1999-11-09','9999-01-01'),
(10709,'d005','1986-02-02','1988-02-21'),
(10709,'d008','1988-02-21','9999-01-01'),
(10710,'d007','1995-07-09','9999-01-01'),
(10711,'d005','1991-06-21','9999-01-01'),
(10712,'d005','1994-08-18','9999-01-01'),
(10713,'d008','1986-04-26','2001-02-21'),
(10714,'d005','1999-11-24','9999-01-01'),
(10715,'d004','1999-10-28','9999-01-01'),
(10716,'d005','1987-08-12','9999-01-01'),
(10717,'d003','1991-09-13','9999-01-01'),
(10718,'d005','1988-07-21','9999-01-01'),
(10719,'d005','1995-09-05','1999-07-31'),
(10720,'d004','2001-08-05','9999-01-01'),
(10720,'d008','1996-06-26','2001-08-05'),
(10721,'d009','1999-07-15','9999-01-01'),
(10722,'d001','1989-01-17','2000-04-14'),
(10723,'d004','1997-07-14','9999-01-01'),
(10724,'d004','1995-12-07','9999-01-01'),
(10725,'d007','1990-09-08','9999-01-01'),
(10726,'d005','1992-02-25','9999-01-01'),
(10727,'d002','1991-01-08','2000-06-06'),
(10728,'d006','1989-12-09','9999-01-01'),
(10729,'d004','1986-04-20','9999-01-01'),
(10730,'d004','1996-05-27','1998-06-07'),
(10730,'d005','1996-05-14','1996-05-27'),
(10731,'d002','1987-02-20','2000-10-09'),
(10732,'d004','1994-12-21','9999-01-01'),
(10733,'d009','1996-02-20','9999-01-01'),
(10734,'d004','1995-12-19','9999-01-01'),
(10735,'d009','1985-10-29','9999-01-01'),
(10736,'d006','1991-09-26','9999-01-01'),
(10737,'d004','1999-06-22','9999-01-01'),
(10738,'d005','1991-04-30','1992-01-06'),
(10738,'d008','1992-01-06','9999-01-01'),
(10739,'d005','1985-03-30','9999-01-01'),
(10740,'d005','1996-04-30','2002-03-17'),
(10741,'d001','1989-01-06','9999-01-01'),
(10742,'d005','1997-04-03','9999-01-01'),
(10743,'d002','1999-11-05','9999-01-01'),
(10744,'d007','1985-12-29','1992-06-03'),
(10745,'d004','1988-01-23','9999-01-01'),
(10746,'d005','1990-08-31','9999-01-01'),
(10747,'d004','1990-10-08','1999-09-20'),
(10748,'d002','1990-08-14','1992-04-04'),
(10748,'d003','1992-04-04','9999-01-01'),
(10749,'d004','1985-09-26','9999-01-01'),
(10750,'d005','1998-11-06','9999-01-01'),
(10751,'d005','1999-12-14','2000-12-05'),
(10752,'d006','1993-05-28','9999-01-01'),
(10753,'d004','1985-05-17','1999-08-25'),
(10754,'d007','1988-01-11','9999-01-01'),
(10755,'d005','1995-04-01','2001-11-13'),
(10756,'d004','2000-12-16','9999-01-01'),
(10756,'d005','1997-10-07','2000-12-16'),
(10757,'d005','1986-01-06','1991-10-18'),
(10758,'d004','1999-07-01','9999-01-01'),
(10759,'d004','1991-12-04','9999-01-01'),
(10760,'d002','1997-08-22','9999-01-01'),
(10761,'d002','1992-05-30','1999-01-04'),
(10762,'d008','1992-01-21','9999-01-01'),
(10763,'d004','1987-02-23','9999-01-01'),
(10764,'d005','1989-11-27','9999-01-01'),
(10765,'d001','1994-05-08','1994-05-11'),
(10765,'d007','1994-05-07','1994-05-08'),
(10766,'d003','1999-09-18','9999-01-01'),
(10767,'d007','1997-07-15','9999-01-01'),
(10768,'d004','1985-07-04','9999-01-01'),
(10769,'d005','1991-08-30','9999-01-01'),
(10770,'d007','1987-12-25','1989-02-27'),
(10771,'d009','1996-04-01','9999-01-01'),
(10772,'d005','1990-02-22','9999-01-01'),
(10773,'d009','1997-02-09','1997-11-29'),
(10774,'d004','1990-01-26','9999-01-01'),
(10775,'d004','1994-12-30','1999-03-17'),
(10775,'d009','1999-03-17','9999-01-01'),
(10776,'d005','1986-03-16','9999-01-01'),
(10777,'d004','1990-03-17','2001-03-27'),
(10778,'d001','1986-07-04','9999-01-01'),
(10779,'d009','1988-01-11','9999-01-01'),
(10780,'d004','1994-08-01','1996-08-18'),
(10781,'d009','1991-02-04','9999-01-01'),
(10782,'d008','1997-07-06','2002-03-30'),
(10783,'d003','1994-05-15','9999-01-01'),
(10784,'d005','1998-10-14','9999-01-01'),
(10785,'d006','1994-11-11','9999-01-01'),
(10786,'d004','1997-06-06','2001-12-10'),
(10786,'d006','2001-12-10','9999-01-01'),
(10787,'d001','1991-07-19','2002-07-27'),
(10788,'d007','1998-05-29','9999-01-01'),
(10789,'d009','1998-01-26','9999-01-01'),
(10790,'d004','1999-03-02','9999-01-01'),
(10791,'d005','1988-07-30','9999-01-01'),
(10792,'d005','1985-08-10','1993-12-20'),
(10793,'d005','1990-09-18','9999-01-01'),
(10794,'d008','1994-05-24','9999-01-01'),
(10795,'d007','1993-05-03','9999-01-01'),
(10796,'d006','1990-11-08','9999-01-01'),
(10797,'d004','1997-06-02','9999-01-01'),
(10797,'d005','1988-08-21','1997-06-02'),
(10798,'d004','1996-09-21','9999-01-01'),
(10799,'d005','1989-03-01','9999-01-01'),
(10800,'d004','1993-05-20','9999-01-01'),
(10801,'d004','1998-04-07','2001-01-15'),
(10802,'d004','1985-08-24','9999-01-01'),
(10803,'d006','1988-04-20','2002-04-02'),
(10804,'d007','1997-06-09','9999-01-01'),
(10805,'d008','1987-05-26','9999-01-01'),
(10806,'d002','1993-04-25','1994-04-08'),
(10806,'d003','1994-04-08','9999-01-01'),
(10807,'d007','1999-10-19','9999-01-01'),
(10808,'d005','1987-03-07','9999-01-01'),
(10809,'d005','1988-02-25','9999-01-01'),
(10810,'d007','1994-09-07','9999-01-01'),
(10811,'d004','1997-07-08','9999-01-01'),
(10812,'d004','1996-09-20','1997-10-06'),
(10813,'d007','1990-04-27','9999-01-01'),
(10814,'d007','1993-07-17','9999-01-01'),
(10815,'d003','1994-04-19','9999-01-01'),
(10816,'d009','1991-05-22','9999-01-01'),
(10817,'d007','1990-12-26','2000-01-24'),
(10817,'d009','2000-01-24','9999-01-01'),
(10818,'d003','1998-04-09','9999-01-01'),
(10819,'d004','1986-08-02','1999-12-28'),
(10820,'d001','1992-06-26','9999-01-01'),
(10821,'d005','1988-10-06','1990-04-17'),
(10822,'d005','1986-01-11','9999-01-01'),
(10823,'d003','1999-08-19','9999-01-01'),
(10824,'d001','1995-08-01','9999-01-01'),
(10825,'d004','2000-06-03','9999-01-01'),
(10825,'d005','1993-12-04','2000-06-03'),
(10826,'d005','1993-01-22','9999-01-01'),
(10827,'d002','1996-11-07','9999-01-01'),
(10828,'d007','1986-02-14','1990-03-30'),
(10829,'d003','1993-07-21','1993-11-29'),
(10830,'d001','1991-08-24','9999-01-01'),
(10831,'d005','1998-02-22','9999-01-01'),
(10832,'d007','1986-10-11','9999-01-01'),
(10833,'d006','1998-12-23','9999-01-01'),
(10834,'d004','1990-11-24','9999-01-01'),
(10835,'d004','1995-08-22','9999-01-01'),
(10836,'d007','1987-08-10','1991-07-01'),
(10836,'d009','1991-07-01','9999-01-01'),
(10837,'d007','1986-01-14','2002-02-22'),
(10838,'d006','1994-04-26','9999-01-01'),
(10839,'d004','1996-12-30','9999-01-01'),
(10840,'d004','1993-06-04','9999-01-01'),
(10841,'d009','1992-01-22','9999-01-01'),
(10842,'d005','1986-07-14','1998-06-27'),
(10843,'d005','1990-04-26','9999-01-01'),
(10844,'d005','1997-04-25','9999-01-01'),
(10845,'d005','1997-01-25','9999-01-01'),
(10846,'d005','1995-01-17','1997-04-03'),
(10846,'d008','1997-04-03','9999-01-01'),
(10847,'d008','1986-07-25','9999-01-01'),
(10848,'d004','1985-04-20','9999-01-01'),
(10849,'d005','1995-06-25','9999-01-01'),
(10850,'d002','1990-04-22','1995-05-11'),
(10851,'d008','1994-11-21','9999-01-01'),
(10852,'d004','1999-08-21','9999-01-01'),
(10853,'d006','1993-05-03','9999-01-01'),
(10854,'d005','1998-07-13','9999-01-01'),
(10855,'d002','1993-03-29','1997-03-02'),
(10855,'d007','1997-03-02','9999-01-01'),
(10856,'d009','1986-12-31','1990-06-18'),
(10857,'d007','1990-04-04','9999-01-01'),
(10858,'d005','1997-01-01','9999-01-01'),
(10859,'d001','1996-05-21','9999-01-01'),
(10860,'d006','1998-01-22','9999-01-01'),
(10861,'d005','1989-06-10','1992-04-12'),
(10862,'d007','1985-07-23','9999-01-01'),
(10863,'d004','1985-12-25','9999-01-01'),
(10864,'d007','1986-09-25','9999-01-01'),
(10865,'d007','1993-05-29','1993-07-03'),
(10865,'d009','1993-07-03','1993-09-19'),
(10866,'d002','1990-12-27','9999-01-01'),
(10867,'d004','1997-03-23','2002-03-22'),
(10868,'d004','1990-03-20','9999-01-01'),
(10869,'d009','1997-09-04','1998-10-15'),
(10870,'d004','1988-01-13','9999-01-01'),
(10871,'d009','1999-06-16','9999-01-01'),
(10872,'d002','1990-09-06','9999-01-01'),
(10873,'d002','1994-03-23','9999-01-01'),
(10874,'d004','1986-04-22','1997-12-28'),
(10874,'d006','1997-12-28','9999-01-01'),
(10875,'d006','1988-05-19','9999-01-01'),
(10876,'d007','1995-01-29','1999-09-14'),
(10877,'d001','1986-06-06','9999-01-01'),
(10878,'d007','1997-04-25','9999-01-01'),
(10879,'d005','1985-08-15','9999-01-01'),
(10880,'d004','1992-01-11','9999-01-01'),
(10881,'d004','1997-02-18','1998-10-25'),
(10882,'d005','1999-04-29','9999-01-01'),
(10883,'d004','1996-12-28','9999-01-01'),
(10884,'d005','1993-04-15','9999-01-01'),
(10885,'d001','1997-09-29','9999-01-01'),
(10885,'d007','1991-08-19','1997-09-29'),
(10886,'d005','1995-03-26','9999-01-01'),
(10887,'d005','1989-03-17','9999-01-01'),
(10888,'d005','1987-06-28','1989-09-11'),
(10889,'d007','1987-08-11','9999-01-01'),
(10890,'d007','1990-03-10','9999-01-01'),
(10891,'d005','1995-10-06','9999-01-01'),
(10892,'d003','1990-04-11','9999-01-01'),
(10893,'d001','1989-08-23','9999-01-01'),
(10894,'d004','1995-12-05','9999-01-01'),
(10895,'d007','1986-04-26','1986-12-25'),
(10895,'d009','1986-12-25','1987-04-13'),
(10896,'d004','1997-11-27','9999-01-01'),
(10897,'d007','1986-04-09','9999-01-01'),
(10898,'d004','1993-01-08','9999-01-01'),
(10899,'d001','1990-04-05','9999-01-01'),
(10900,'d005','1995-09-07','9999-01-01'),
(10901,'d002','1998-08-05','9999-01-01'),
(10902,'d005','1990-06-11','1990-09-25'),
(10903,'d009','1989-02-14','9999-01-01'),
(10904,'d005','1993-04-16','9999-01-01'),
(10905,'d004','1985-02-28','1986-03-07'),
(10906,'d002','1998-10-18','2001-04-25'),
(10906,'d007','2001-04-25','9999-01-01'),
(10907,'d003','1988-12-25','9999-01-01'),
(10908,'d003','1986-04-05','9999-01-01'),
(10909,'d005','1993-12-26','9999-01-01'),
(10910,'d009','1989-09-02','9999-01-01'),
(10911,'d004','1988-06-25','9999-01-01'),
(10912,'d002','1986-04-23','1999-09-26'),
(10913,'d002','1998-10-25','9999-01-01'),
(10914,'d007','1998-03-24','1998-09-01'),
(10915,'d004','1999-10-28','9999-01-01'),
(10916,'d004','1998-10-02','9999-01-01'),
(10916,'d005','1998-03-12','1998-10-02'),
(10917,'d005','1993-01-30','9999-01-01'),
(10918,'d002','1990-01-29','1990-10-10'),
(10919,'d001','1999-10-30','9999-01-01'),
(10920,'d003','1992-02-24','9999-01-01'),
(10921,'d004','1986-07-27','9999-01-01'),
(10922,'d007','1996-02-02','1999-01-16'),
(10923,'d007','1990-04-09','9999-01-01'),
(10924,'d007','1988-08-14','9999-01-01'),
(10925,'d004','1991-06-11','9999-01-01'),
(10926,'d004','1990-04-30','1992-11-04'),
(10926,'d009','1992-11-04','9999-01-01'),
(10927,'d001','1986-09-12','9999-01-01'),
(10928,'d001','1991-04-07','9999-01-01'),
(10929,'d001','1991-04-15','9999-01-01'),
(10930,'d004','1991-11-22','9999-01-01'),
(10931,'d004','1992-06-14','1999-09-19'),
(10932,'d005','1994-09-09','9999-01-01'),
(10933,'d004','1993-08-02','9999-01-01'),
(10934,'d002','1995-09-17','9999-01-01'),
(10935,'d002','1994-10-17','9999-01-01'),
(10936,'d003','1990-05-09','9999-01-01'),
(10937,'d004','1991-05-03','9999-01-01'),
(10937,'d005','1988-06-16','1991-05-03'),
(10938,'d001','1985-09-24','9999-01-01'),
(10939,'d006','1997-12-11','9999-01-01'),
(10940,'d005','1997-06-30','1999-12-02'),
(10941,'d001','1993-08-22','9999-01-01'),
(10942,'d005','1996-01-21','9999-01-01'),
(10943,'d005','1993-05-22','9999-01-01'),
(10944,'d004','1995-09-07','9999-01-01'),
(10945,'d004','1993-04-04','9999-01-01'),
(10946,'d009','1996-10-26','9999-01-01'),
(10947,'d009','1995-11-16','9999-01-01'),
(10948,'d005','1996-09-30','1997-04-29'),
(10948,'d008','1997-04-29','1997-06-23'),
(10949,'d002','1990-06-29','9999-01-01'),
(10950,'d004','1996-06-08','1998-01-13'),
(10951,'d002','1989-07-06','9999-01-01'),
(10952,'d005','1986-07-22','1988-04-26'),
(10953,'d007','1987-02-12','9999-01-01'),
(10954,'d009','1995-12-14','9999-01-01'),
(10955,'d007','1986-09-27','9999-01-01'),
(10956,'d004','1997-02-10','9999-01-01'),
(10956,'d005','1995-12-02','1997-02-10'),
(10957,'d007','1990-10-01','9999-01-01'),
(10958,'d005','1988-11-27','9999-01-01'),
(10959,'d007','1994-03-01','1996-04-12'),
(10960,'d007','1995-07-07','9999-01-01'),
(10961,'d005','1993-11-04','9999-01-01'),
(10962,'d007','1986-12-16','9999-01-01'),
(10963,'d005','1988-01-14','1995-04-10'),
(10964,'d002','1991-05-05','9999-01-01'),
(10965,'d007','1986-07-29','9999-01-01'),
(10966,'d004','1999-11-12','9999-01-01'),
(10966,'d008','1997-02-05','1999-11-12'),
(10967,'d005','1993-08-01','9999-01-01'),
(10968,'d007','1985-08-11','9999-01-01'),
(10969,'d005','1994-05-12','9999-01-01'),
(10970,'d004','1995-11-14','9999-01-01'),
(10971,'d005','1991-07-30','1998-10-24'),
(10972,'d005','1987-06-06','9999-01-01'),
(10973,'d005','1989-03-05','9999-01-01'),
(10974,'d005','1999-05-17','9999-01-01'),
(10975,'d004','1992-03-30','1997-01-14'),
(10975,'d009','1997-01-14','9999-01-01'),
(10976,'d004','1998-10-31','9999-01-01'),
(10977,'d007','1987-08-10','1987-10-01'),
(10978,'d004','1985-05-18','9999-01-01'),
(10979,'d004','1986-01-27','9999-01-01'),
(10980,'d005','1989-01-04','9999-01-01'),
(10981,'d007','1992-07-07','9999-01-01'),
(10982,'d008','1989-11-11','9999-01-01'),
(10983,'d004','1988-02-22','9999-01-01'),
(10984,'d004','1988-07-09','1993-05-14'),
(10985,'d005','1999-02-11','1999-02-27'),
(10985,'d008','1999-02-27','1999-03-10'),
(10986,'d005','1985-10-11','9999-01-01'),
(10987,'d005','1997-05-21','9999-01-01'),
(10988,'d005','1985-06-19','9999-01-01'),
(10989,'d002','1985-07-20','9999-01-01'),
(10990,'d005','1990-08-06','9999-01-01'),
(10991,'d005','1999-07-13','9999-01-01'),
(10992,'d005','1997-04-27','9999-01-01'),
(10993,'d006','1992-05-29','9999-01-01'),
(10994,'d004','1987-11-13','1989-05-24'),
(10994,'d005','1987-06-29','1987-11-13'),
(10995,'d001','1997-07-19','9999-01-01'),
(10996,'d007','1990-02-07','9999-01-01'),
(10997,'d004','2000-01-04','9999-01-01'),
(10998,'d007','1996-08-07','9999-01-01'),
(10999,'d005','1996-03-05','1997-04-19'),
(11000,'d005','1996-01-28','9999-01-01');
```
Page 3/7FirstPrevNextLast