MediaWiki master
Database.php
Go to the documentation of this file.
1<?php
20namespace Wikimedia\Rdbms;
21
22use InvalidArgumentException;
23use LogicException;
24use Psr\Log\LoggerAwareInterface;
25use Psr\Log\LoggerInterface;
26use Psr\Log\NullLogger;
27use RuntimeException;
28use Stringable;
29use Throwable;
30use Wikimedia\AtEase\AtEase;
34use Wikimedia\RequestTimeout\CriticalSectionProvider;
35use Wikimedia\RequestTimeout\CriticalSectionScope;
36use Wikimedia\ScopedCallback;
37
44abstract class Database implements Stringable, IDatabaseForOwner, IMaintainableDatabase, LoggerAwareInterface {
46 protected $csProvider;
48 protected $logger;
50 protected $errorLogger;
54 protected $profiler;
56 private $transactionManager;
57
59 protected $currentDomain;
61 protected $flagsHolder;
62
63 // phpcs:ignore MediaWiki.Commenting.PropertyDocumentation.ObjectTypeHintVar
65 protected $conn;
66
68 protected $serverName;
70 protected $cliMode;
72 protected $connectTimeout;
74 protected $receiveTimeout;
76 protected $agent;
83
85 protected $ssl;
87 protected $strictWarnings;
89 protected $lbInfo = [];
91 protected $delimiter = ';';
92
94 private $htmlErrors;
95
97 protected $sessionNamedLocks = [];
99 protected $sessionTempTables = [];
100
102 protected $lastQueryAffectedRows = 0;
104 protected $lastQueryInsertId;
105
107 protected $lastEmulatedAffectedRows;
109 protected $lastEmulatedInsertId;
110
112 protected $lastConnectError = '';
113
115 private $lastPing = 0.0;
117 private $lastWriteTime = false;
119 private $lastPhpError = false;
120
122 private $csmId;
124 private $csmFname;
126 private $csmError;
127
129 public const ATTR_DB_IS_FILE = 'db-is-file';
131 public const ATTR_DB_LEVEL_LOCKING = 'db-level-locking';
133 public const ATTR_SCHEMAS_AS_TABLE_GROUPS = 'supports-schemas';
134
136 public const NEW_UNCONNECTED = 0;
138 public const NEW_CONNECTED = 1;
139
141 protected const ERR_NONE = 0;
143 protected const ERR_RETRY_QUERY = 1;
145 protected const ERR_ABORT_QUERY = 2;
147 protected const ERR_ABORT_TRX = 4;
149 protected const ERR_ABORT_SESSION = 8;
150
152 protected const DROPPED_CONN_BLAME_THRESHOLD_SEC = 3.0;
153
155 private const NOT_APPLICABLE = 'n/a';
156
158 private const PING_TTL = 1.0;
160 private const PING_QUERY = 'SELECT 1 AS ping';
161
163 protected const CONN_HOST = 'host';
165 protected const CONN_USER = 'user';
167 protected const CONN_PASSWORD = 'password';
169 protected const CONN_INITIAL_DB = 'dbname';
171 protected const CONN_INITIAL_SCHEMA = 'schema';
173 protected const CONN_INITIAL_TABLE_PREFIX = 'tablePrefix';
174
176 protected $platform;
177
179 protected $replicationReporter;
180
185 public function __construct( array $params ) {
186 $this->logger = $params['logger'] ?? new NullLogger();
188 $this->logger,
189 $params['trxProfiler']
190 );
192 self::CONN_HOST => ( isset( $params['host'] ) && $params['host'] !== '' )
193 ? $params['host']
194 : null,
195 self::CONN_USER => ( isset( $params['user'] ) && $params['user'] !== '' )
196 ? $params['user']
197 : null,
198 self::CONN_INITIAL_DB => ( isset( $params['dbname'] ) && $params['dbname'] !== '' )
199 ? $params['dbname']
200 : null,
201 self::CONN_INITIAL_SCHEMA => ( isset( $params['schema'] ) && $params['schema'] !== '' )
202 ? $params['schema']
203 : null,
204 self::CONN_PASSWORD => is_string( $params['password'] ) ? $params['password'] : null,
205 self::CONN_INITIAL_TABLE_PREFIX => (string)$params['tablePrefix']
206 ];
207
208 $this->lbInfo = $params['lbInfo'] ?? [];
209 $this->connectionVariables = $params['variables'] ?? [];
210 // Set SQL mode, default is turning them all off, can be overridden or skipped with null
211 if ( is_string( $params['sqlMode'] ?? null ) ) {
212 $this->connectionVariables['sql_mode'] = $params['sqlMode'];
213 }
214 $flags = (int)$params['flags'];
215 $this->flagsHolder = new DatabaseFlags( $flags );
216 $this->ssl = $params['ssl'] ?? (bool)( $flags & self::DBO_SSL );
217 $this->connectTimeout = $params['connectTimeout'] ?? null;
218 $this->receiveTimeout = $params['receiveTimeout'] ?? null;
219 $this->cliMode = (bool)$params['cliMode'];
220 $this->agent = (string)$params['agent'];
221 $this->serverName = $params['serverName'];
222 $this->nonNativeInsertSelectBatchSize = $params['nonNativeInsertSelectBatchSize'] ?? 10000;
223 $this->strictWarnings = !empty( $params['strictWarnings'] );
224
225 $this->profiler = is_callable( $params['profiler'] ) ? $params['profiler'] : null;
226 $this->errorLogger = $params['errorLogger'];
227 $this->deprecationLogger = $params['deprecationLogger'];
228
229 $this->csProvider = $params['criticalSectionProvider'] ?? null;
230
231 // Set initial dummy domain until open() sets the final DB/prefix
233 $params['dbname'] != '' ? $params['dbname'] : null,
234 $params['schema'] != '' ? $params['schema'] : null,
235 $params['tablePrefix']
236 );
237 $this->platform = new SQLPlatform(
238 $this,
239 $this->logger,
240 $this->currentDomain,
241 $this->errorLogger
242 );
243 // Children classes must set $this->replicationReporter.
244 }
245
254 final public function initConnection() {
255 if ( $this->isOpen() ) {
256 throw new LogicException( __METHOD__ . ': already connected' );
257 }
258 // Establish the connection
259 $this->open(
260 $this->connectionParams[self::CONN_HOST],
261 $this->connectionParams[self::CONN_USER],
262 $this->connectionParams[self::CONN_PASSWORD],
263 $this->connectionParams[self::CONN_INITIAL_DB],
264 $this->connectionParams[self::CONN_INITIAL_SCHEMA],
265 $this->connectionParams[self::CONN_INITIAL_TABLE_PREFIX]
266 );
267 $this->lastPing = microtime( true );
268 }
269
281 abstract protected function open( $server, $user, $password, $db, $schema, $tablePrefix );
282
287 public static function getAttributes() {
288 return [];
289 }
290
296 public function setLogger( LoggerInterface $logger ) {
297 $this->logger = $logger;
298 }
299
300 public function getServerInfo() {
301 return $this->getServerVersion();
302 }
303
304 public function tablePrefix( $prefix = null ) {
305 $old = $this->currentDomain->getTablePrefix();
306
307 if ( $prefix !== null ) {
308 $this->currentDomain = new DatabaseDomain(
309 $this->currentDomain->getDatabase(),
310 $this->currentDomain->getSchema(),
311 $prefix
312 );
313 $this->platform->setCurrentDomain( $this->currentDomain );
314 }
315
316 return $old;
317 }
318
319 public function dbSchema( $schema = null ) {
320 $old = $this->currentDomain->getSchema();
321
322 if ( $schema !== null ) {
323 if ( $schema !== '' && $this->getDBname() === null ) {
324 throw new DBUnexpectedError(
325 $this,
326 "Cannot set schema to '$schema'; no database set"
327 );
328 }
329
330 $this->currentDomain = new DatabaseDomain(
331 $this->currentDomain->getDatabase(),
332 // DatabaseDomain uses null for unspecified schemas
333 ( $schema !== '' ) ? $schema : null,
334 $this->currentDomain->getTablePrefix()
335 );
336 $this->platform->setCurrentDomain( $this->currentDomain );
337 }
338
339 return (string)$old;
340 }
341
342 public function getLBInfo( $name = null ) {
343 if ( $name === null ) {
344 return $this->lbInfo;
345 }
346
347 if ( array_key_exists( $name, $this->lbInfo ) ) {
348 return $this->lbInfo[$name];
349 }
350
351 return null;
352 }
353
354 public function setLBInfo( $nameOrArray, $value = null ) {
355 if ( is_array( $nameOrArray ) ) {
356 $this->lbInfo = $nameOrArray;
357 } elseif ( is_string( $nameOrArray ) ) {
358 if ( $value !== null ) {
359 $this->lbInfo[$nameOrArray] = $value;
360 } else {
361 unset( $this->lbInfo[$nameOrArray] );
362 }
363 } else {
364 throw new InvalidArgumentException( "Got non-string key" );
365 }
366 }
367
368 public function lastDoneWrites() {
369 return $this->lastWriteTime ?: false;
370 }
371
377 public function sessionLocksPending() {
378 return (bool)$this->sessionNamedLocks;
379 }
380
384 final protected function getTransactionRoundId() {
385 if ( $this->flagsHolder->hasImplicitTrxFlag() ) {
386 // LoadBalancer transaction round participation is enabled for this DB handle;
387 // get the ID of the active explicit transaction round (if any)
388 $id = $this->getLBInfo( self::LB_TRX_ROUND_ID );
389
390 return is_string( $id ) ? $id : null;
391 }
392
393 return null;
394 }
395
396 public function isOpen() {
397 return (bool)$this->conn;
398 }
399
400 public function getDomainID() {
401 return $this->currentDomain->getId();
402 }
403
410 abstract public function strencode( $s );
411
415 protected function installErrorHandler() {
416 $this->lastPhpError = false;
417 $this->htmlErrors = ini_set( 'html_errors', '0' );
418 set_error_handler( [ $this, 'connectionErrorLogger' ] );
419 }
420
426 protected function restoreErrorHandler() {
427 restore_error_handler();
428 if ( $this->htmlErrors !== false ) {
429 ini_set( 'html_errors', $this->htmlErrors );
430 }
431
432 return $this->getLastPHPError();
433 }
434
438 protected function getLastPHPError() {
439 if ( $this->lastPhpError ) {
440 $error = preg_replace( '!\[<a.*</a>\]!', '', $this->lastPhpError );
441 $error = preg_replace( '!^.*?:\s?(.*)$!', '$1', $error );
442
443 return $error;
444 }
445
446 return false;
447 }
448
457 public function connectionErrorLogger( $errno, $errstr ) {
458 $this->lastPhpError = $errstr;
459 }
460
467 protected function getLogContext( array $extras = [] ) {
468 return array_merge(
469 [
470 'db_server' => $this->getServerName(),
471 'db_name' => $this->getDBname(),
472 'db_user' => $this->connectionParams[self::CONN_USER] ?? null,
473 ],
474 $extras
475 );
476 }
477
478 final public function close( $fname = __METHOD__ ) {
479 $error = null; // error to throw after disconnecting
480
481 $wasOpen = (bool)$this->conn;
482 // This should mostly do nothing if the connection is already closed
483 if ( $this->conn ) {
484 // Roll back any dangling transaction first
485 if ( $this->trxLevel() ) {
486 $error = $this->transactionManager->trxCheckBeforeClose( $this, $fname );
487 // Rollback the changes and run any callbacks as needed
488 $this->rollback( __METHOD__, self::FLUSHING_INTERNAL );
489 $this->runTransactionPostRollbackCallbacks();
490 }
491
492 // Close the actual connection in the binding handle
493 $closed = $this->closeConnection();
494 } else {
495 $closed = true; // already closed; nothing to do
496 }
497
498 $this->conn = null;
499
500 // Log any unexpected errors after having disconnected
501 if ( $error !== null ) {
502 // T217819, T231443: this is probably just LoadBalancer trying to recover from
503 // errors and shutdown. Log any problems and move on since the request has to
504 // end one way or another. Throwing errors is not very useful at some point.
505 $this->logger->error( $error, [ 'db_log_category' => 'query' ] );
506 }
507
508 // Note that various subclasses call close() at the start of open(), which itself is
509 // called by replaceLostConnection(). In that case, just because onTransactionResolution()
510 // callbacks are pending does not mean that an exception should be thrown. Rather, they
511 // will be executed after the reconnection step.
512 if ( $wasOpen ) {
513 // Double check that no callbacks are dangling
514 $fnames = $this->pendingWriteAndCallbackCallers();
515 if ( $fnames ) {
516 throw new RuntimeException(
517 "Transaction callbacks are still pending: " . implode( ', ', $fnames )
518 );
519 }
520 }
521
522 return $closed;
523 }
524
533 final protected function assertHasConnectionHandle() {
534 if ( !$this->isOpen() ) {
535 throw new DBUnexpectedError( $this, "DB connection was already closed" );
536 }
537 }
538
544 abstract protected function closeConnection();
545
573 abstract protected function doSingleStatementQuery( string $sql ): QueryStatus;
574
582 private function hasPermanentTable( Query $query ) {
583 if ( $query->getVerb() === 'CREATE TEMPORARY' ) {
584 // Temporary table creation is allowed
585 return false;
586 }
587 $table = $query->getWriteTable();
588 if ( $table === null ) {
589 // Parse error? Assume permanent.
590 return true;
591 }
592 [ $db, $pt ] = $this->platform->getDatabaseAndTableIdentifier( $table );
593 $tempInfo = $this->sessionTempTables[$db][$pt] ?? null;
594 return !$tempInfo || $tempInfo->pseudoPermanent;
595 }
596
602 protected function registerTempTables( Query $query ) {
603 $table = $query->getWriteTable();
604 if ( $table === null ) {
605 return;
606 }
607 switch ( $query->getVerb() ) {
608 case 'CREATE TEMPORARY':
609 [ $db, $pt ] = $this->platform->getDatabaseAndTableIdentifier( $table );
610 $this->sessionTempTables[$db][$pt] = new TempTableInfo(
611 $this->transactionManager->getTrxId(),
612 (bool)( $query->getFlags() & self::QUERY_PSEUDO_PERMANENT )
613 );
614 break;
615
616 case 'DROP':
617 [ $db, $pt ] = $this->platform->getDatabaseAndTableIdentifier( $table );
618 unset( $this->sessionTempTables[$db][$pt] );
619 }
620 }
621
622 public function query( $sql, $fname = __METHOD__, $flags = 0 ) {
623 if ( !( $sql instanceof Query ) ) {
624 $flags = (int)$flags; // b/c; this field used to be a bool
625 $sql = QueryBuilderFromRawSql::buildQuery( $sql, $flags, $this->currentDomain->getTablePrefix() );
626 } else {
627 $flags = $sql->getFlags();
628 }
629
630 // Make sure that this caller is allowed to issue this query statement
631 $this->assertQueryIsCurrentlyAllowed( $sql->getVerb(), $fname );
632
633 // Send the query to the server and fetch any corresponding errors
634 $status = $this->executeQuery( $sql, $fname, $flags );
635 if ( $status->res === false ) {
636 // An error occurred; log, and, if needed, report an exception.
637 // Errors that corrupt the transaction/session state cannot be silenced.
638 $ignore = (
639 $this->flagsHolder::contains( $flags, self::QUERY_SILENCE_ERRORS ) &&
640 !$this->flagsHolder::contains( $status->flags, self::ERR_ABORT_SESSION ) &&
641 !$this->flagsHolder::contains( $status->flags, self::ERR_ABORT_TRX )
642 );
643 $this->reportQueryError( $status->message, $status->code, $sql->getSQL(), $fname, $ignore );
644 }
645
646 return $status->res;
647 }
648
665 final protected function executeQuery( $sql, $fname, $flags ) {
667
668 $isPermWrite = false;
669 $isWrite = $sql->isWriteQuery();
670 if ( $isWrite ) {
672 // Permit temporary table writes on replica connections, but require a writable
673 // master connection for writes to persistent tables.
674 if ( $this->hasPermanentTable( $sql ) ) {
675 $isPermWrite = true;
676 $info = $this->getReadOnlyReason();
677 if ( $info ) {
678 [ $reason, $source ] = $info;
679 if ( $source === 'role' ) {
680 throw new DBReadOnlyRoleError( $this, "Database is read-only: $reason" );
681 } else {
682 throw new DBReadOnlyError( $this, "Database is read-only: $reason" );
683 }
684 }
685 // DBConnRef uses QUERY_REPLICA_ROLE to enforce replica roles during query()
686 if ( $this->flagsHolder::contains( $sql->getFlags(), self::QUERY_REPLICA_ROLE ) ) {
687 throw new DBReadOnlyRoleError(
688 $this,
689 "Cannot write; target role is DB_REPLICA"
690 );
691 }
692 }
693 }
694
695 // Whether a silent retry attempt is left for recoverable connection loss errors
696 $retryLeft = !$this->flagsHolder::contains( $flags, self::QUERY_NO_RETRY );
697
698 $cs = $this->commenceCriticalSection( __METHOD__ );
699
700 do {
701 // Start a DBO_TRX wrapper transaction as needed (throw an error on failure)
702 if ( $this->beginIfImplied( $sql, $fname, $flags ) ) {
703 // Since begin() was called, any connection loss was already handled
704 $retryLeft = false;
705 }
706 // Send the query statement to the server and fetch any results.
707 $status = $this->attemptQuery( $sql, $fname, $isPermWrite );
708 } while (
709 // An error occurred that can be recovered from via query retry
710 $this->flagsHolder::contains( $status->flags, self::ERR_RETRY_QUERY ) &&
711 // The retry has not been exhausted (consume it now)
712 $retryLeft && !( $retryLeft = false )
713 );
714
715 // Register creation and dropping of temporary tables
716 if ( $status->res ) {
717 $this->registerTempTables( $sql );
718 }
719 $this->completeCriticalSection( __METHOD__, $cs );
720
721 return $status;
722 }
723
745 private function attemptQuery(
746 $sql,
747 string $fname,
748 bool $isPermWrite
749 ) {
750 // Transaction attributes before issuing this query
751 $priorSessInfo = new CriticalSessionInfo(
752 $this->transactionManager->getTrxId(),
753 $this->transactionManager->explicitTrxActive(),
754 $this->transactionManager->pendingWriteCallers(),
755 $this->transactionManager->pendingPreCommitCallbackCallers(),
756 $this->sessionNamedLocks,
757 $this->sessionTempTables
758 );
759 // Get the transaction-aware SQL string used for profiling
760 $prefix = (
761 $this->replicationReporter->getTopologyRole() === self::ROLE_STREAMING_MASTER
762 ) ? 'role-primary: ' : '';
763
764 // Start profile section
765 if ( $sql->getCleanedSql() ) {
766 $generalizedSql = $sql;
767 $ps = $this->profiler ? ( $this->profiler )( $sql->getCleanedSql() ) : null;
768 } else {
769 $generalizedSql = new GeneralizedSql( $sql->getSQL(), $prefix );
770 $ps = $this->profiler ? ( $this->profiler )( $generalizedSql->stringify() ) : null;
771 }
772 // Add agent and calling method comments to the SQL
773 $cStatement = $this->makeCommentedSql( $sql->getSQL(), $fname );
774 $startTime = microtime( true );
775
776 // Clear any overrides from a prior "query method". Note that this does not affect
777 // any such methods that are currently invoking query() itself since those query
778 // methods set these fields before returning.
779 $this->lastEmulatedAffectedRows = null;
780 $this->lastEmulatedInsertId = null;
781
782 $status = $this->doSingleStatementQuery( $cStatement );
783
784 // End profile section
785 $endTime = microtime( true );
786 $queryRuntime = max( $endTime - $startTime, 0.0 );
787 unset( $ps );
788
789 if ( $status->res !== false ) {
790 $this->lastPing = $endTime;
791 }
792
793 $affectedRowCount = $status->rowsAffected;
794 $returnedRowCount = $status->rowsReturned;
795 $this->lastQueryAffectedRows = $affectedRowCount;
796
797 if ( $status->res !== false ) {
798 if ( $isPermWrite ) {
799 $this->lastWriteTime = $startTime;
800 if ( $this->trxLevel() ) {
801 $this->transactionManager->transactionWritingIn(
802 $this->getServerName(),
803 $this->getDomainID(),
804 $startTime
805 );
806 $this->transactionManager->updateTrxWriteQueryReport(
807 $sql->getSQL(),
808 $queryRuntime,
809 $affectedRowCount,
810 $fname
811 );
812 }
813 }
814 }
815
816 $this->transactionManager->recordQueryCompletion(
817 $generalizedSql,
818 $startTime,
819 $isPermWrite,
820 $isPermWrite ? $affectedRowCount : $returnedRowCount,
821 $this->getServerName()
822 );
823
824 // Check if the query failed...
825 $status->flags = $this->handleErroredQuery( $status, $sql, $fname, $queryRuntime, $priorSessInfo );
826 // Avoid the overhead of logging calls unless debug mode is enabled
827 if ( $this->flagsHolder->getFlag( self::DBO_DEBUG ) ) {
828 $this->logger->debug(
829 "{method} [{runtime_ms}ms] {db_server}: {sql}",
830 $this->getLogContext( [
831 'method' => $fname,
832 'sql' => $sql->getSQL(),
833 'domain' => $this->getDomainID(),
834 'runtime_ms' => round( $queryRuntime * 1000, 3 ),
835 'db_log_category' => 'query'
836 ] )
837 );
838 }
839
840 return $status;
841 }
842
843 private function handleErroredQuery( QueryStatus $status, $sql, $fname, $queryRuntime, $priorSessInfo ) {
844 $errflags = self::ERR_NONE;
845 $error = $status->message;
846 $errno = $status->code;
847 if ( $status->res !== false ) {
848 // Statement succeeded
849 return $errflags;
850 }
851 if ( $this->isConnectionError( $errno ) ) {
852 // Connection lost before or during the query...
853 // Determine how to proceed given the lost session state
854 $connLossFlag = $this->assessConnectionLoss(
855 $sql->getVerb(),
856 $queryRuntime,
857 $priorSessInfo
858 );
859 // Update session state tracking and try to reestablish a connection
860 $reconnected = $this->replaceLostConnection( $errno, __METHOD__ );
861 // Check if important server-side session-level state was lost
862 if ( $connLossFlag >= self::ERR_ABORT_SESSION ) {
863 $ex = $this->getQueryException( $error, $errno, $sql->getSQL(), $fname );
864 $this->transactionManager->setSessionError( $ex );
865 }
866 // Check if important server-side transaction-level state was lost
867 if ( $connLossFlag >= self::ERR_ABORT_TRX ) {
868 $ex = $this->getQueryException( $error, $errno, $sql->getSQL(), $fname );
869 $this->transactionManager->setTransactionError( $ex );
870 }
871 // Check if the query should be retried (having made the reconnection attempt)
872 if ( $connLossFlag === self::ERR_RETRY_QUERY ) {
873 $errflags |= ( $reconnected ? self::ERR_RETRY_QUERY : self::ERR_ABORT_QUERY );
874 } else {
875 $errflags |= $connLossFlag;
876 }
877 } elseif ( $this->isKnownStatementRollbackError( $errno ) ) {
878 // Query error triggered a server-side statement-only rollback...
879 $errflags |= self::ERR_ABORT_QUERY;
880 if ( $this->trxLevel() ) {
881 // Allow legacy callers to ignore such errors via QUERY_IGNORE_DBO_TRX and
882 // try/catch. However, a deprecation notice will be logged on the next query.
883 $cause = [ $error, $errno, $fname ];
884 $this->transactionManager->setTrxStatusIgnoredCause( $cause );
885 }
886 } elseif ( $this->trxLevel() ) {
887 // Some other error occurred during the query, within a transaction...
888 // Server-side handling of errors during transactions varies widely depending on
889 // the RDBMS type and configuration. There are several possible results: (a) the
890 // whole transaction is rolled back, (b) only the queries after BEGIN are rolled
891 // back, (c) the transaction is marked as "aborted" and a ROLLBACK is required
892 // before other queries are permitted. For compatibility reasons, pessimistically
893 // require a ROLLBACK query (not using SAVEPOINT) before allowing other queries.
894 $ex = $this->getQueryException( $error, $errno, $sql->getSQL(), $fname );
895 $this->transactionManager->setTransactionError( $ex );
896 $errflags |= self::ERR_ABORT_TRX;
897 } else {
898 // Some other error occurred during the query, without a transaction...
899 $errflags |= self::ERR_ABORT_QUERY;
900 }
901
902 return $errflags;
903 }
904
910 private function makeCommentedSql( $sql, $fname ): string {
911 // Add trace comment to the begin of the sql string, right after the operator.
912 // Or, for one-word queries (like "BEGIN" or COMMIT") add it to the end (T44598).
913 // NOTE: Don't add varying ids such as request id or session id to the comment.
914 // It would break aggregation of similar queries in analysis tools (see T193050#7512149)
915 $encName = preg_replace( '/[\x00-\x1F\/]/', '-', "$fname {$this->agent}" );
916 return preg_replace( '/\s|$/', " /* $encName */ ", $sql, 1 );
917 }
918
928 private function beginIfImplied( $sql, $fname, $flags ) {
929 if ( !$this->trxLevel() && $this->flagsHolder->hasApplicableImplicitTrxFlag( $flags ) ) {
930 if ( $this->platform->isTransactableQuery( $sql ) ) {
931 $this->begin( __METHOD__ . " ($fname)", self::TRANSACTION_INTERNAL );
932 $this->transactionManager->turnOnAutomatic();
933
934 return true;
935 }
936 }
937
938 return false;
939 }
940
957 private function assertQueryIsCurrentlyAllowed( string $verb, string $fname ) {
958 if ( $verb === 'USE' ) {
959 throw new DBUnexpectedError( $this, "Got USE query; use selectDomain() instead" );
960 }
961
962 if ( $verb === 'ROLLBACK' ) {
963 // Whole transaction rollback is used for recovery
964 // @TODO: T269161; prevent "BEGIN"/"COMMIT"/"ROLLBACK" from outside callers
965 return;
966 }
967
968 if ( $this->csmError ) {
969 throw new DBTransactionStateError(
970 $this,
971 "Cannot execute query from $fname while session state is out of sync",
972 [],
973 $this->csmError
974 );
975 }
976
977 $this->transactionManager->assertSessionStatus( $this, $fname );
978
979 if ( $verb !== 'ROLLBACK TO SAVEPOINT' ) {
980 $this->transactionManager->assertTransactionStatus(
981 $this,
982 $this->deprecationLogger,
983 $fname
984 );
985 }
986 }
987
1007 private function assessConnectionLoss(
1008 string $verb,
1009 float $walltime,
1010 CriticalSessionInfo $priorSessInfo
1011 ) {
1012 if ( $walltime < self::DROPPED_CONN_BLAME_THRESHOLD_SEC ) {
1013 // Query failed quickly; the connection was probably lost before the query was sent
1014 $res = self::ERR_RETRY_QUERY;
1015 } else {
1016 // Query took a long time; the connection was probably lost during query execution
1017 $res = self::ERR_ABORT_QUERY;
1018 }
1019
1020 // List of problems causing session/transaction state corruption
1021 $blockers = [];
1022 // Loss of named locks breaks future callers relying on those locks for critical sections
1023 foreach ( $priorSessInfo->namedLocks as $lockName => $lockInfo ) {
1024 if ( $lockInfo['trxId'] && $lockInfo['trxId'] === $priorSessInfo->trxId ) {
1025 // Treat lost locks acquired during the lost transaction as a transaction state
1026 // problem. Connection loss on ROLLBACK (non-SAVEPOINT) is tolerable since
1027 // rollback automatically triggered server-side.
1028 if ( $verb !== 'ROLLBACK' ) {
1029 $res = max( $res, self::ERR_ABORT_TRX );
1030 $blockers[] = "named lock '$lockName'";
1031 }
1032 } else {
1033 // Treat lost locks acquired either during prior transactions or during no
1034 // transaction as a session state problem.
1035 $res = max( $res, self::ERR_ABORT_SESSION );
1036 $blockers[] = "named lock '$lockName'";
1037 }
1038 }
1039 // Loss of temp tables breaks future callers relying on those tables for queries
1040 foreach ( $priorSessInfo->tempTables as $domainTempTables ) {
1041 foreach ( $domainTempTables as $tableName => $tableInfo ) {
1042 if ( $tableInfo->trxId && $tableInfo->trxId === $priorSessInfo->trxId ) {
1043 // Treat lost temp tables created during the lost transaction as a
1044 // transaction state problem. Connection loss on ROLLBACK (non-SAVEPOINT)
1045 // is tolerable since rollback automatically triggered server-side.
1046 if ( $verb !== 'ROLLBACK' ) {
1047 $res = max( $res, self::ERR_ABORT_TRX );
1048 $blockers[] = "temp table '$tableName'";
1049 }
1050 } else {
1051 // Treat lost temp tables created either during prior transactions or during
1052 // no transaction as a session state problem.
1053 $res = max( $res, self::ERR_ABORT_SESSION );
1054 $blockers[] = "temp table '$tableName'";
1055 }
1056 }
1057 }
1058 // Loss of transaction writes breaks future callers and DBO_TRX logic relying on those
1059 // writes to be atomic and still pending. Connection loss on ROLLBACK (non-SAVEPOINT) is
1060 // tolerable since rollback automatically triggered server-side.
1061 if ( $priorSessInfo->trxWriteCallers && $verb !== 'ROLLBACK' ) {
1062 $res = max( $res, self::ERR_ABORT_TRX );
1063 $blockers[] = 'uncommitted writes';
1064 }
1065 if ( $priorSessInfo->trxPreCommitCbCallers && $verb !== 'ROLLBACK' ) {
1066 $res = max( $res, self::ERR_ABORT_TRX );
1067 $blockers[] = 'pre-commit callbacks';
1068 }
1069 if ( $priorSessInfo->trxExplicit && $verb !== 'ROLLBACK' && $verb !== 'COMMIT' ) {
1070 // Transaction automatically rolled back, breaking the expectations of callers
1071 // relying on that transaction to provide atomic writes, serializability, or use
1072 // one point-in-time snapshot for all reads. Assume that connection loss is OK
1073 // with ROLLBACK (non-SAVEPOINT). Likewise for COMMIT (T127428).
1074 $res = max( $res, self::ERR_ABORT_TRX );
1075 $blockers[] = 'explicit transaction';
1076 }
1077
1078 if ( $blockers ) {
1079 $this->logger->warning(
1080 "cannot reconnect to {db_server} silently: {error}",
1081 $this->getLogContext( [
1082 'error' => 'session state loss (' . implode( ', ', $blockers ) . ')',
1083 'exception' => new RuntimeException(),
1084 'db_log_category' => 'connection'
1085 ] )
1086 );
1087 }
1088
1089 return $res;
1090 }
1091
1095 private function handleSessionLossPreconnect() {
1096 // Clean up tracking of session-level things...
1097 // https://mariadb.com/kb/en/create-table/#create-temporary-table
1098 // https://www.postgresql.org/docs/9.2/static/sql-createtable.html (ignoring ON COMMIT)
1099 $this->sessionTempTables = [];
1100 // https://mariadb.com/kb/en/get_lock/
1101 // https://www.postgresql.org/docs/9.4/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
1102 $this->sessionNamedLocks = [];
1103 // Session loss implies transaction loss (T67263)
1104 $this->transactionManager->clearPreEndCallbacks();
1105 // Clear additional subclass fields
1106 $oldTrxId = $this->transactionManager->consumeTrxId();
1107 $this->doHandleSessionLossPreconnect();
1108 $this->transactionManager->transactionWritingOut( $this, (string)$oldTrxId );
1109 }
1110
1114 protected function doHandleSessionLossPreconnect() {
1115 // no-op
1116 }
1117
1128 protected function isQueryTimeoutError( $errno ) {
1129 return false;
1130 }
1131
1145 public function reportQueryError( $error, $errno, $sql, $fname, $ignore = false ) {
1146 if ( $ignore ) {
1147 $this->logger->debug(
1148 "SQL ERROR (ignored): $error",
1149 [ 'db_log_category' => 'query' ]
1150 );
1151 } else {
1152 throw $this->getQueryExceptionAndLog( $error, $errno, $sql, $fname );
1153 }
1154 }
1155
1163 private function getQueryExceptionAndLog( $error, $errno, $sql, $fname ) {
1164 // Information that instances of the same problem have in common should
1165 // not be normalized (T255202).
1166 $this->logger->error(
1167 "Error $errno from $fname, {error} {sql1line} {db_server}",
1168 $this->getLogContext( [
1169 'method' => __METHOD__,
1170 'errno' => $errno,
1171 'error' => $error,
1172 'sql1line' => mb_substr( str_replace( "\n", "\\n", $sql ), 0, 5 * 1024 ),
1173 'fname' => $fname,
1174 'db_log_category' => 'query',
1175 'exception' => new RuntimeException()
1176 ] )
1177 );
1178 return $this->getQueryException( $error, $errno, $sql, $fname );
1179 }
1180
1188 private function getQueryException( $error, $errno, $sql, $fname ) {
1189 if ( $this->isQueryTimeoutError( $errno ) ) {
1190 return new DBQueryTimeoutError( $this, $error, $errno, $sql, $fname );
1191 } elseif ( $this->isConnectionError( $errno ) ) {
1192 return new DBQueryDisconnectedError( $this, $error, $errno, $sql, $fname );
1193 } else {
1194 return new DBQueryError( $this, $error, $errno, $sql, $fname );
1195 }
1196 }
1197
1202 final protected function newExceptionAfterConnectError( $error ) {
1203 // Connection was not fully initialized and is not safe for use.
1204 // Stash any error associated with the handle before destroying it.
1205 $this->lastConnectError = $error;
1206 $this->conn = null;
1207
1208 $this->logger->error(
1209 "Error connecting to {db_server} as user {db_user}: {error}",
1210 $this->getLogContext( [
1211 'error' => $error,
1212 'exception' => new RuntimeException(),
1213 'db_log_category' => 'connection',
1214 ] )
1215 );
1216
1217 return new DBConnectionError( $this, $error );
1218 }
1219
1227 return new SelectQueryBuilder( $this );
1228 }
1229
1237 return new UnionQueryBuilder( $this );
1238 }
1239
1247 return new UpdateQueryBuilder( $this );
1248 }
1249
1257 return new DeleteQueryBuilder( $this );
1258 }
1259
1267 return new InsertQueryBuilder( $this );
1268 }
1269
1277 return new ReplaceQueryBuilder( $this );
1278 }
1279
1280 public function selectField(
1281 $tables, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
1282 ) {
1283 if ( $var === '*' ) {
1284 throw new DBUnexpectedError( $this, "Cannot use a * field" );
1285 } elseif ( is_array( $var ) && count( $var ) !== 1 ) {
1286 throw new DBUnexpectedError( $this, 'Cannot use more than one field' );
1287 }
1288
1289 $options = $this->platform->normalizeOptions( $options );
1290 $options['LIMIT'] = 1;
1291
1292 $res = $this->select( $tables, $var, $cond, $fname, $options, $join_conds );
1293 if ( $res === false ) {
1294 throw new DBUnexpectedError( $this, "Got false from select()" );
1295 }
1296
1297 $row = $res->fetchRow();
1298 if ( $row === false ) {
1299 return false;
1300 }
1301
1302 return reset( $row );
1303 }
1304
1305 public function selectFieldValues(
1306 $tables, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
1307 ): array {
1308 if ( $var === '*' ) {
1309 throw new DBUnexpectedError( $this, "Cannot use a * field" );
1310 } elseif ( !is_string( $var ) ) {
1311 throw new DBUnexpectedError( $this, "Cannot use an array of fields" );
1312 }
1313
1314 $options = $this->platform->normalizeOptions( $options );
1315 $res = $this->select( $tables, [ 'value' => $var ], $cond, $fname, $options, $join_conds );
1316 if ( $res === false ) {
1317 throw new DBUnexpectedError( $this, "Got false from select()" );
1318 }
1319
1320 $values = [];
1321 foreach ( $res as $row ) {
1322 $values[] = $row->value;
1323 }
1324
1325 return $values;
1326 }
1327
1328 public function select(
1329 $tables, $vars, $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
1330 ) {
1331 $options = (array)$options;
1332 // Don't turn this into using platform directly, DatabaseMySQL overrides this.
1333 $sql = $this->selectSQLText( $tables, $vars, $conds, $fname, $options, $join_conds );
1334 // Treat SELECT queries with FOR UPDATE as writes. This matches
1335 // how MySQL enforces read_only (FOR SHARE and LOCK IN SHADE MODE are allowed).
1336 $flags = in_array( 'FOR UPDATE', $options, true )
1337 ? self::QUERY_CHANGE_ROWS
1338 : self::QUERY_CHANGE_NONE;
1339
1340 $query = new Query( $sql, $flags, 'SELECT' );
1341 return $this->query( $query, $fname );
1342 }
1343
1344 public function selectRow( $tables, $vars, $conds, $fname = __METHOD__,
1345 $options = [], $join_conds = []
1346 ) {
1347 $options = (array)$options;
1348 $options['LIMIT'] = 1;
1349
1350 $res = $this->select( $tables, $vars, $conds, $fname, $options, $join_conds );
1351 if ( $res === false ) {
1352 throw new DBUnexpectedError( $this, "Got false from select()" );
1353 }
1354
1355 if ( !$res->numRows() ) {
1356 return false;
1357 }
1358
1359 return $res->fetchObject();
1360 }
1361
1365 public function estimateRowCount(
1366 $tables, $var = '*', $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
1367 ): int {
1368 $conds = $this->platform->normalizeConditions( $conds, $fname );
1369 $column = $this->platform->extractSingleFieldFromList( $var );
1370 if ( is_string( $column ) && !in_array( $column, [ '*', '1' ] ) ) {
1371 $conds[] = "$column IS NOT NULL";
1372 }
1373
1374 $res = $this->select(
1375 $tables, [ 'rowcount' => 'COUNT(*)' ], $conds, $fname, $options, $join_conds
1376 );
1377 $row = $res ? $res->fetchRow() : [];
1378
1379 return isset( $row['rowcount'] ) ? (int)$row['rowcount'] : 0;
1380 }
1381
1382 public function selectRowCount(
1383 $tables, $var = '*', $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
1384 ): int {
1385 $conds = $this->platform->normalizeConditions( $conds, $fname );
1386 $column = $this->platform->extractSingleFieldFromList( $var );
1387 if ( is_string( $column ) && !in_array( $column, [ '*', '1' ] ) ) {
1388 $conds[] = "$column IS NOT NULL";
1389 }
1390 if ( in_array( 'DISTINCT', (array)$options ) ) {
1391 if ( $column === null ) {
1392 throw new DBUnexpectedError( $this,
1393 '$var cannot be empty when the DISTINCT option is given' );
1394 }
1395 $innerVar = $column;
1396 } else {
1397 $innerVar = '1';
1398 }
1399
1400 $res = $this->select(
1401 [
1402 'tmp_count' => $this->platform->buildSelectSubquery(
1403 $tables,
1404 $innerVar,
1405 $conds,
1406 $fname,
1407 $options,
1408 $join_conds
1409 )
1410 ],
1411 [ 'rowcount' => 'COUNT(*)' ],
1412 [],
1413 $fname
1414 );
1415 $row = $res ? $res->fetchRow() : [];
1416
1417 return isset( $row['rowcount'] ) ? (int)$row['rowcount'] : 0;
1418 }
1419
1420 public function lockForUpdate(
1421 $table, $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
1422 ) {
1423 if ( !$this->trxLevel() && !$this->flagsHolder->hasImplicitTrxFlag() ) {
1424 throw new DBUnexpectedError(
1425 $this,
1426 __METHOD__ . ': no transaction is active nor is DBO_TRX set'
1427 );
1428 }
1429
1430 $options = (array)$options;
1431 $options[] = 'FOR UPDATE';
1432
1433 return $this->selectRowCount( $table, '*', $conds, $fname, $options, $join_conds );
1434 }
1435
1436 public function fieldExists( $table, $field, $fname = __METHOD__ ) {
1437 $info = $this->fieldInfo( $table, $field );
1438
1439 return (bool)$info;
1440 }
1441
1442 abstract public function tableExists( $table, $fname = __METHOD__ );
1443
1444 public function indexExists( $table, $index, $fname = __METHOD__ ) {
1445 $info = $this->indexInfo( $table, $index, $fname );
1446
1447 return (bool)$info;
1448 }
1449
1450 public function indexUnique( $table, $index, $fname = __METHOD__ ) {
1451 $info = $this->indexInfo( $table, $index, $fname );
1452
1453 return $info ? $info['unique'] : null;
1454 }
1455
1465 abstract public function indexInfo( $table, $index, $fname = __METHOD__ );
1466
1467 public function insert( $table, $rows, $fname = __METHOD__, $options = [] ) {
1468 $query = $this->platform->dispatchingInsertSqlText( $table, $rows, $options );
1469 if ( !$query ) {
1470 return true;
1471 }
1472 $this->query( $query, $fname );
1473 if ( $this->strictWarnings ) {
1474 $this->checkInsertWarnings( $query, $fname );
1475 }
1476 return true;
1477 }
1478
1487 protected function checkInsertWarnings( Query $query, $fname ) {
1488 }
1489
1490 public function update( $table, $set, $conds, $fname = __METHOD__, $options = [] ) {
1491 $query = $this->platform->updateSqlText( $table, $set, $conds, $options );
1492 $this->query( $query, $fname );
1493
1494 return true;
1495 }
1496
1497 public function databasesAreIndependent() {
1498 return false;
1499 }
1500
1501 final public function selectDomain( $domain ) {
1502 $cs = $this->commenceCriticalSection( __METHOD__ );
1503
1504 try {
1505 $this->doSelectDomain( DatabaseDomain::newFromId( $domain ) );
1506 } catch ( DBError $e ) {
1507 $this->completeCriticalSection( __METHOD__, $cs );
1508 throw $e;
1509 }
1510
1511 $this->completeCriticalSection( __METHOD__, $cs );
1512 }
1513
1520 protected function doSelectDomain( DatabaseDomain $domain ) {
1521 $this->currentDomain = $domain;
1522 $this->platform->setCurrentDomain( $this->currentDomain );
1523 }
1524
1525 public function getDBname() {
1526 return $this->currentDomain->getDatabase();
1527 }
1528
1529 public function getServer() {
1530 return $this->connectionParams[self::CONN_HOST] ?? null;
1531 }
1532
1533 public function getServerName() {
1534 return $this->serverName ?? $this->getServer() ?? 'unknown';
1535 }
1536
1537 public function addQuotes( $s ) {
1538 if ( $s instanceof RawSQLValue ) {
1539 return $s->toSql();
1540 }
1541 if ( $s instanceof Blob ) {
1542 $s = $s->fetch();
1543 }
1544 if ( $s === null ) {
1545 return 'NULL';
1546 } elseif ( is_bool( $s ) ) {
1547 return (string)(int)$s;
1548 } elseif ( is_int( $s ) ) {
1549 return (string)$s;
1550 } else {
1551 return "'" . $this->strencode( $s ) . "'";
1552 }
1553 }
1554
1555 public function expr( string $field, string $op, $value ): Expression {
1556 return new Expression( $field, $op, $value );
1557 }
1558
1559 public function andExpr( array $conds ): AndExpressionGroup {
1560 return AndExpressionGroup::newFromArray( $conds );
1561 }
1562
1563 public function orExpr( array $conds ): OrExpressionGroup {
1564 return OrExpressionGroup::newFromArray( $conds );
1565 }
1566
1567 public function replace( $table, $uniqueKeys, $rows, $fname = __METHOD__ ) {
1568 $uniqueKey = $this->platform->normalizeUpsertParams( $uniqueKeys, $rows );
1569 if ( !$rows ) {
1570 return;
1571 }
1572 $affectedRowCount = 0;
1573 $insertId = null;
1574 $this->startAtomic( $fname, self::ATOMIC_CANCELABLE );
1575 try {
1576 foreach ( $rows as $row ) {
1577 // Delete any conflicting rows (including ones inserted from $rows)
1578 $query = $this->platform->deleteSqlText(
1579 $table,
1580 [ $this->platform->makeKeyCollisionCondition( [ $row ], $uniqueKey ) ]
1581 );
1582 $this->query( $query, $fname );
1583 // Insert the new row
1584 $query = $this->platform->dispatchingInsertSqlText( $table, $row, [] );
1585 $this->query( $query, $fname );
1586 $affectedRowCount += $this->lastQueryAffectedRows;
1587 $insertId = $insertId ?: $this->lastQueryInsertId;
1588 }
1589 $this->endAtomic( $fname );
1590 } catch ( DBError $e ) {
1591 $this->cancelAtomic( $fname );
1592 throw $e;
1593 }
1594 $this->lastEmulatedAffectedRows = $affectedRowCount;
1595 $this->lastEmulatedInsertId = $insertId;
1596 }
1597
1598 public function upsert( $table, array $rows, $uniqueKeys, array $set, $fname = __METHOD__ ) {
1599 $uniqueKey = $this->platform->normalizeUpsertParams( $uniqueKeys, $rows );
1600 if ( !$rows ) {
1601 return true;
1602 }
1603 $this->platform->assertValidUpsertSetArray( $set, $uniqueKey, $rows );
1604
1605 $encTable = $this->tableName( $table );
1606 $sqlColumnAssignments = $this->makeList( $set, self::LIST_SET );
1607 // Get any AUTO_INCREMENT/SERIAL column for this table so we can set insertId()
1608 $autoIncrementColumn = $this->getInsertIdColumnForUpsert( $table );
1609 // Check if there is a SQL assignment expression in $set (as generated by SQLPlatform::buildExcludedValue)
1610 $useWith = (bool)array_filter(
1611 $set,
1612 static function ( $v, $k ) {
1613 return $v instanceof RawSQLValue || is_int( $k );
1614 },
1615 ARRAY_FILTER_USE_BOTH
1616 );
1617 // Subclasses might need explicit type casting within "WITH...AS (VALUES ...)"
1618 // so that these CTE rows can be referenced within the SET clause assigments.
1619 $typeByColumn = $useWith ? $this->getValueTypesForWithClause( $table ) : [];
1620
1621 $first = true;
1622 $affectedRowCount = 0;
1623 $insertId = null;
1624 $this->startAtomic( $fname, self::ATOMIC_CANCELABLE );
1625 try {
1626 foreach ( $rows as $row ) {
1627 // Update any existing conflicting row (including ones inserted from $rows)
1628 [ $sqlColumns, $sqlTuples, $sqlVals ] = $this->platform->makeInsertLists(
1629 [ $row ],
1630 '__',
1631 $typeByColumn
1632 );
1633 $sqlConditions = $this->platform->makeKeyCollisionCondition(
1634 [ $row ],
1635 $uniqueKey
1636 );
1637 $query = new Query(
1638 ( $useWith ? "WITH __VALS ($sqlVals) AS (VALUES $sqlTuples) " : "" ) .
1639 "UPDATE $encTable SET $sqlColumnAssignments " .
1640 "WHERE ($sqlConditions)",
1641 self::QUERY_CHANGE_ROWS,
1642 'UPDATE',
1643 $table
1644 );
1645 $this->query( $query, $fname );
1646 $rowsUpdated = $this->lastQueryAffectedRows;
1647 $affectedRowCount += $rowsUpdated;
1648 if ( $rowsUpdated > 0 ) {
1649 // Conflicting row found and updated
1650 if ( $first && $autoIncrementColumn !== null ) {
1651 // @TODO: use "RETURNING" instead (when supported by SQLite)
1652 $query = new Query(
1653 "SELECT $autoIncrementColumn AS id FROM $encTable " .
1654 "WHERE ($sqlConditions)",
1655 self::QUERY_CHANGE_NONE,
1656 'SELECT'
1657 );
1658 $sRes = $this->query( $query, $fname, self::QUERY_CHANGE_ROWS );
1659 $insertId = (int)$sRes->fetchRow()['id'];
1660 }
1661 } else {
1662 // No conflicting row found
1663 $query = new Query(
1664 "INSERT INTO $encTable ($sqlColumns) VALUES $sqlTuples",
1665 self::QUERY_CHANGE_ROWS,
1666 'INSERT',
1667 $table
1668 );
1669 $this->query( $query, $fname );
1670 $affectedRowCount += $this->lastQueryAffectedRows;
1671 }
1672 $first = false;
1673 }
1674 $this->endAtomic( $fname );
1675 } catch ( DBError $e ) {
1676 $this->cancelAtomic( $fname );
1677 throw $e;
1678 }
1679 $this->lastEmulatedAffectedRows = $affectedRowCount;
1680 $this->lastEmulatedInsertId = $insertId;
1681 return true;
1682 }
1683
1688 protected function getInsertIdColumnForUpsert( $table ) {
1689 return null;
1690 }
1691
1696 protected function getValueTypesForWithClause( $table ) {
1697 return [];
1698 }
1699
1700 public function deleteJoin(
1701 $delTable,
1702 $joinTable,
1703 $delVar,
1704 $joinVar,
1705 $conds,
1706 $fname = __METHOD__
1707 ) {
1708 $sql = $this->platform->deleteJoinSqlText( $delTable, $joinTable, $delVar, $joinVar, $conds );
1709 $query = new Query( $sql, self::QUERY_CHANGE_ROWS, 'DELETE', $delTable );
1710 $this->query( $query, $fname );
1711 }
1712
1713 public function delete( $table, $conds, $fname = __METHOD__ ) {
1714 $this->query( $this->platform->deleteSqlText( $table, $conds ), $fname );
1715
1716 return true;
1717 }
1718
1719 final public function insertSelect(
1720 $destTable,
1721 $srcTable,
1722 $varMap,
1723 $conds,
1724 $fname = __METHOD__,
1725 $insertOptions = [],
1726 $selectOptions = [],
1727 $selectJoinConds = []
1728 ) {
1729 static $hints = [ 'NO_AUTO_COLUMNS' ];
1730
1731 $insertOptions = $this->platform->normalizeOptions( $insertOptions );
1732 $selectOptions = $this->platform->normalizeOptions( $selectOptions );
1733
1734 if ( $this->cliMode && $this->isInsertSelectSafe( $insertOptions, $selectOptions, $fname ) ) {
1735 // For massive migrations with downtime, we don't want to select everything
1736 // into memory and OOM, so do all this native on the server side if possible.
1737 $this->doInsertSelectNative(
1738 $destTable,
1739 $srcTable,
1740 $varMap,
1741 $conds,
1742 $fname,
1743 array_diff( $insertOptions, $hints ),
1744 $selectOptions,
1745 $selectJoinConds
1746 );
1747 } else {
1748 $this->doInsertSelectGeneric(
1749 $destTable,
1750 $srcTable,
1751 $varMap,
1752 $conds,
1753 $fname,
1754 array_diff( $insertOptions, $hints ),
1755 $selectOptions,
1756 $selectJoinConds
1757 );
1758 }
1759
1760 return true;
1761 }
1762
1770 protected function isInsertSelectSafe( array $insertOptions, array $selectOptions, $fname = __METHOD__ ) {
1771 return true;
1772 }
1773
1788 private function doInsertSelectGeneric(
1789 $destTable,
1790 $srcTable,
1791 array $varMap,
1792 $conds,
1793 $fname,
1794 array $insertOptions,
1795 array $selectOptions,
1796 $selectJoinConds
1797 ) {
1798 // For web requests, do a locking SELECT and then INSERT. This puts the SELECT burden
1799 // on only the primary DB (without needing row-based-replication). It also makes it easy to
1800 // know how big the INSERT is going to be.
1801 $fields = [];
1802 foreach ( $varMap as $dstColumn => $sourceColumnOrSql ) {
1803 $fields[] = $this->platform->fieldNameWithAlias( $sourceColumnOrSql, $dstColumn );
1804 }
1805 $res = $this->select(
1806 $srcTable,
1807 implode( ',', $fields ),
1808 $conds,
1809 $fname,
1810 array_merge( $selectOptions, [ 'FOR UPDATE' ] ),
1811 $selectJoinConds
1812 );
1813
1814 $affectedRowCount = 0;
1815 $insertId = null;
1816 if ( $res ) {
1817 $this->startAtomic( $fname, self::ATOMIC_CANCELABLE );
1818 try {
1819 $rows = [];
1820 foreach ( $res as $row ) {
1821 $rows[] = (array)$row;
1822 }
1823 // Avoid inserts that are too huge
1824 $rowBatches = array_chunk( $rows, $this->nonNativeInsertSelectBatchSize );
1825 foreach ( $rowBatches as $rows ) {
1826 $query = $this->platform->dispatchingInsertSqlText( $destTable, $rows, $insertOptions );
1827 $this->query( $query, $fname );
1828 $affectedRowCount += $this->lastQueryAffectedRows;
1829 $insertId = $insertId ?: $this->lastQueryInsertId;
1830 }
1831 $this->endAtomic( $fname );
1832 } catch ( DBError $e ) {
1833 $this->cancelAtomic( $fname );
1834 throw $e;
1835 }
1836 }
1837 $this->lastEmulatedAffectedRows = $affectedRowCount;
1838 $this->lastEmulatedInsertId = $insertId;
1839 }
1840
1856 protected function doInsertSelectNative(
1857 $destTable,
1858 $srcTable,
1859 array $varMap,
1860 $conds,
1861 $fname,
1862 array $insertOptions,
1863 array $selectOptions,
1864 $selectJoinConds
1865 ) {
1866 $sql = $this->platform->insertSelectNativeSqlText(
1867 $destTable,
1868 $srcTable,
1869 $varMap,
1870 $conds,
1871 $fname,
1872 $insertOptions,
1873 $selectOptions,
1874 $selectJoinConds
1875 );
1876 $query = new Query(
1877 $sql,
1878 self::QUERY_CHANGE_ROWS,
1879 'INSERT',
1880 $destTable
1881 );
1882 $this->query( $query, $fname );
1883 }
1884
1892 protected function isConnectionError( $errno ) {
1893 return false;
1894 }
1895
1903 protected function isKnownStatementRollbackError( $errno ) {
1904 return false; // don't know; it could have caused a transaction rollback
1905 }
1906
1910 public function serverIsReadOnly() {
1911 return false;
1912 }
1913
1914 final public function onTransactionResolution( callable $callback, $fname = __METHOD__ ) {
1915 $this->transactionManager->onTransactionResolution( $this, $callback, $fname );
1916 }
1917
1918 final public function onTransactionCommitOrIdle( callable $callback, $fname = __METHOD__ ) {
1919 if ( !$this->trxLevel() && $this->getTransactionRoundId() ) {
1920 // This DB handle is set to participate in LoadBalancer transaction rounds and
1921 // an explicit transaction round is active. Start an implicit transaction on this
1922 // DB handle (setting trxAutomatic) similar to how query() does in such situations.
1923 $this->begin( __METHOD__, self::TRANSACTION_INTERNAL );
1924 }
1925
1926 $this->transactionManager->addPostCommitOrIdleCallback( $callback, $fname );
1927 if ( !$this->trxLevel() ) {
1928 $dbErrors = [];
1929 $this->runOnTransactionIdleCallbacks( self::TRIGGER_IDLE, $dbErrors );
1930 if ( $dbErrors ) {
1931 throw $dbErrors[0];
1932 }
1933 }
1934 }
1935
1936 final public function onTransactionPreCommitOrIdle( callable $callback, $fname = __METHOD__ ) {
1937 if ( !$this->trxLevel() && $this->getTransactionRoundId() ) {
1938 // This DB handle is set to participate in LoadBalancer transaction rounds and
1939 // an explicit transaction round is active. Start an implicit transaction on this
1940 // DB handle (setting trxAutomatic) similar to how query() does in such situations.
1941 $this->begin( __METHOD__, self::TRANSACTION_INTERNAL );
1942 }
1943
1944 if ( $this->trxLevel() ) {
1945 $this->transactionManager->addPreCommitOrIdleCallback(
1946 $callback,
1947 $fname
1948 );
1949 } else {
1950 // No transaction is active nor will start implicitly, so make one for this callback
1951 $this->startAtomic( __METHOD__, self::ATOMIC_CANCELABLE );
1952 try {
1953 $callback( $this );
1954 } catch ( Throwable $e ) {
1955 // Avoid confusing error reporting during critical section errors
1956 if ( !$this->csmError ) {
1957 $this->cancelAtomic( __METHOD__ );
1958 }
1959 throw $e;
1960 }
1961 $this->endAtomic( __METHOD__ );
1962 }
1963 }
1964
1965 final public function onAtomicSectionCancel( callable $callback, $fname = __METHOD__ ) {
1966 $this->transactionManager->onAtomicSectionCancel( $this, $callback, $fname );
1967 }
1968
1969 final public function setTransactionListener( $name, callable $callback = null ) {
1970 $this->transactionManager->setTransactionListener( $name, $callback );
1971 }
1972
1981 final public function setTrxEndCallbackSuppression( $suppress ) {
1982 $this->transactionManager->setTrxEndCallbackSuppression( $suppress );
1983 }
1984
1997 public function runOnTransactionIdleCallbacks( $trigger, array &$errors = [] ) {
1998 if ( $this->trxLevel() ) {
1999 throw new DBUnexpectedError( $this, __METHOD__ . ': a transaction is still open' );
2000 }
2001
2002 if ( $this->transactionManager->isEndCallbacksSuppressed() ) {
2003 // Execution deferred by LoadBalancer for explicit execution later
2004 return 0;
2005 }
2006
2007 $cs = $this->commenceCriticalSection( __METHOD__ );
2008
2009 $count = 0;
2010 $autoTrx = $this->flagsHolder->hasImplicitTrxFlag(); // automatic begin() enabled?
2011 // Drain the queues of transaction "idle" and "end" callbacks until they are empty
2012 do {
2013 $callbackEntries = $this->transactionManager->consumeEndCallbacks( $trigger );
2014 $count += count( $callbackEntries );
2015 foreach ( $callbackEntries as $entry ) {
2016 $this->flagsHolder->clearFlag( self::DBO_TRX ); // make each query its own transaction
2017 try {
2018 $entry[0]( $trigger, $this );
2019 } catch ( DBError $ex ) {
2020 call_user_func( $this->errorLogger, $ex );
2021 $errors[] = $ex;
2022 // Some callbacks may use startAtomic/endAtomic, so make sure
2023 // their transactions are ended so other callbacks don't fail
2024 if ( $this->trxLevel() ) {
2025 $this->rollback( __METHOD__, self::FLUSHING_INTERNAL );
2026 }
2027 } finally {
2028 if ( $autoTrx ) {
2029 $this->flagsHolder->setFlag( self::DBO_TRX ); // restore automatic begin()
2030 } else {
2031 $this->flagsHolder->clearFlag( self::DBO_TRX ); // restore auto-commit
2032 }
2033 }
2034 }
2035 } while ( $this->transactionManager->countPostCommitOrIdleCallbacks() );
2036
2037 $this->completeCriticalSection( __METHOD__, $cs );
2038
2039 return $count;
2040 }
2041
2052 public function runTransactionListenerCallbacks( $trigger, array &$errors = [] ) {
2053 if ( $this->transactionManager->isEndCallbacksSuppressed() ) {
2054 // Execution deferred by LoadBalancer for explicit execution later
2055 return;
2056 }
2057
2058 // These callbacks should only be registered in setup, thus no iteration is needed
2059 foreach ( $this->transactionManager->getRecurringCallbacks() as $callback ) {
2060 try {
2061 $callback( $trigger, $this );
2062 } catch ( DBError $ex ) {
2063 ( $this->errorLogger )( $ex );
2064 $errors[] = $ex;
2065 }
2066 }
2067 }
2068
2075 private function runTransactionPostCommitCallbacks() {
2076 $dbErrors = [];
2077 $this->runOnTransactionIdleCallbacks( self::TRIGGER_COMMIT, $dbErrors );
2078 $this->runTransactionListenerCallbacks( self::TRIGGER_COMMIT, $dbErrors );
2079 $this->lastEmulatedAffectedRows = 0; // for the sake of consistency
2080 if ( $dbErrors ) {
2081 throw $dbErrors[0];
2082 }
2083 }
2084
2092 private function runTransactionPostRollbackCallbacks() {
2093 $this->runOnTransactionIdleCallbacks( self::TRIGGER_ROLLBACK );
2094 $this->runTransactionListenerCallbacks( self::TRIGGER_ROLLBACK );
2095 $this->lastEmulatedAffectedRows = 0; // for the sake of consistency
2096 }
2097
2098 final public function startAtomic(
2099 $fname = __METHOD__,
2100 $cancelable = self::ATOMIC_NOT_CANCELABLE
2101 ) {
2102 $cs = $this->commenceCriticalSection( __METHOD__ );
2103
2104 if ( $this->trxLevel() ) {
2105 // This atomic section is only one part of a larger transaction
2106 $sectionOwnsTrx = false;
2107 } else {
2108 // Start an implicit transaction (sets trxAutomatic)
2109 try {
2110 $this->begin( $fname, self::TRANSACTION_INTERNAL );
2111 } catch ( DBError $e ) {
2112 $this->completeCriticalSection( __METHOD__, $cs );
2113 throw $e;
2114 }
2115 if ( $this->flagsHolder->hasImplicitTrxFlag() ) {
2116 // This DB handle participates in LoadBalancer transaction rounds; all atomic
2117 // sections should be buffered into one transaction (e.g. to keep web requests
2118 // transactional). Note that an implicit transaction round is considered to be
2119 // active when no there is no explicit transaction round.
2120 $sectionOwnsTrx = false;
2121 } else {
2122 // This DB handle does not participate in LoadBalancer transaction rounds;
2123 // each topmost atomic section will use its own transaction.
2124 $sectionOwnsTrx = true;
2125 }
2126 $this->transactionManager->setAutomaticAtomic( $sectionOwnsTrx );
2127 }
2128
2129 if ( $cancelable === self::ATOMIC_CANCELABLE ) {
2130 if ( $sectionOwnsTrx ) {
2131 // This atomic section is synonymous with the whole transaction; just
2132 // use full COMMIT/ROLLBACK in endAtomic()/cancelAtomic(), respectively
2133 $savepointId = self::NOT_APPLICABLE;
2134 } else {
2135 // This atomic section is only part of the whole transaction; use a SAVEPOINT
2136 // query so that its changes can be cancelled without losing the rest of the
2137 // transaction (e.g. changes from other sections or from outside of sections)
2138 try {
2139 $savepointId = $this->transactionManager->nextSavePointId( $this, $fname );
2140 $sql = $this->platform->savepointSqlText( $savepointId );
2141 $query = new Query( $sql, self::QUERY_CHANGE_TRX, 'SAVEPOINT' );
2142 $this->query( $query, $fname );
2143 } catch ( DBError $e ) {
2144 $this->completeCriticalSection( __METHOD__, $cs, $e );
2145 throw $e;
2146 }
2147 }
2148 } else {
2149 $savepointId = null;
2150 }
2151
2152 $sectionId = new AtomicSectionIdentifier;
2153 $this->transactionManager->addToAtomicLevels( $fname, $sectionId, $savepointId );
2154
2155 $this->completeCriticalSection( __METHOD__, $cs );
2156
2157 return $sectionId;
2158 }
2159
2160 final public function endAtomic( $fname = __METHOD__ ) {
2161 [ $savepointId, $sectionId ] = $this->transactionManager->onEndAtomic( $this, $fname );
2162
2163 $runPostCommitCallbacks = false;
2164
2165 $cs = $this->commenceCriticalSection( __METHOD__ );
2166
2167 // Remove the last section (no need to re-index the array)
2168 $this->transactionManager->popAtomicLevel();
2169
2170 try {
2171 if ( $this->transactionManager->isClean() ) {
2172 $this->commit( $fname, self::FLUSHING_INTERNAL );
2173 $runPostCommitCallbacks = true;
2174 } elseif ( $savepointId !== null && $savepointId !== self::NOT_APPLICABLE ) {
2175 $sql = $this->platform->releaseSavepointSqlText( $savepointId );
2176 $query = new Query( $sql, self::QUERY_CHANGE_TRX, 'RELEASE SAVEPOINT' );
2177 $this->query( $query, $fname );
2178 }
2179 } catch ( DBError $e ) {
2180 $this->completeCriticalSection( __METHOD__, $cs, $e );
2181 throw $e;
2182 }
2183
2184 $this->transactionManager->onEndAtomicInCriticalSection( $sectionId );
2185
2186 $this->completeCriticalSection( __METHOD__, $cs );
2187
2188 if ( $runPostCommitCallbacks ) {
2189 $this->runTransactionPostCommitCallbacks();
2190 }
2191 }
2192
2193 final public function cancelAtomic(
2194 $fname = __METHOD__,
2195 AtomicSectionIdentifier $sectionId = null
2196 ) {
2197 $this->transactionManager->onCancelAtomicBeforeCriticalSection( $this, $fname );
2198 $pos = $this->transactionManager->getPositionFromSectionId( $sectionId );
2199 if ( $pos < 0 ) {
2200 throw new DBUnexpectedError( $this, "Atomic section not found (for $fname)" );
2201 }
2202
2203 $cs = $this->commenceCriticalSection( __METHOD__ );
2204 $runPostRollbackCallbacks = false;
2205 [ $savedFname, $excisedSectionIds, $newTopSectionId, $savedSectionId, $savepointId ] =
2206 $this->transactionManager->cancelAtomic( $pos );
2207
2208 try {
2209 if ( $savedFname !== $fname ) {
2210 $e = new DBUnexpectedError(
2211 $this,
2212 "Invalid atomic section ended (got $fname but expected $savedFname)"
2213 );
2214 $this->completeCriticalSection( __METHOD__, $cs, $e );
2215 throw $e;
2216 }
2217
2218 // Remove the last section (no need to re-index the array)
2219 $this->transactionManager->popAtomicLevel();
2220 $excisedSectionIds[] = $savedSectionId;
2221 $newTopSectionId = $this->transactionManager->currentAtomicSectionId();
2222
2223 if ( $savepointId !== null ) {
2224 // Rollback the transaction changes proposed within this atomic section
2225 if ( $savepointId === self::NOT_APPLICABLE ) {
2226 // Atomic section started the transaction; rollback the whole transaction
2227 // and trigger cancellation callbacks for all active atomic sections
2228 $this->rollback( $fname, self::FLUSHING_INTERNAL );
2229 $runPostRollbackCallbacks = true;
2230 } else {
2231 // Atomic section nested within the transaction; rollback the transaction
2232 // to the state prior to this section and trigger its cancellation callbacks
2233 $sql = $this->platform->rollbackToSavepointSqlText( $savepointId );
2234 $query = new Query( $sql, self::QUERY_CHANGE_TRX, 'ROLLBACK TO SAVEPOINT' );
2235 $this->query( $query, $fname );
2236 $this->transactionManager->setTrxStatusToOk(); // no exception; recovered
2237 $this->transactionManager->runOnAtomicSectionCancelCallbacks(
2238 $this,
2239 self::TRIGGER_CANCEL,
2240 $excisedSectionIds
2241 );
2242 }
2243 } else {
2244 // Put the transaction into an error state if it's not already in one
2245 $trxError = new DBUnexpectedError(
2246 $this,
2247 "Uncancelable atomic section canceled (got $fname)"
2248 );
2249 $this->transactionManager->setTransactionError( $trxError );
2250 }
2251 } finally {
2252 // Fix up callbacks owned by the sections that were just cancelled.
2253 // All callbacks should have an owner that is present in trxAtomicLevels.
2254 $this->transactionManager->modifyCallbacksForCancel(
2255 $excisedSectionIds,
2256 $newTopSectionId
2257 );
2258 }
2259
2260 $this->lastEmulatedAffectedRows = 0; // for the sake of consistency
2261
2262 $this->completeCriticalSection( __METHOD__, $cs );
2263
2264 if ( $runPostRollbackCallbacks ) {
2265 $this->runTransactionPostRollbackCallbacks();
2266 }
2267 }
2268
2269 final public function doAtomicSection(
2270 $fname,
2271 callable $callback,
2272 $cancelable = self::ATOMIC_NOT_CANCELABLE
2273 ) {
2274 $sectionId = $this->startAtomic( $fname, $cancelable );
2275 try {
2276 $res = $callback( $this, $fname );
2277 } catch ( Throwable $e ) {
2278 // Avoid confusing error reporting during critical section errors
2279 if ( !$this->csmError ) {
2280 $this->cancelAtomic( $fname, $sectionId );
2281 }
2282
2283 throw $e;
2284 }
2285 $this->endAtomic( $fname );
2286
2287 return $res;
2288 }
2289
2290 final public function begin( $fname = __METHOD__, $mode = self::TRANSACTION_EXPLICIT ) {
2291 static $modes = [ self::TRANSACTION_EXPLICIT, self::TRANSACTION_INTERNAL ];
2292 if ( !in_array( $mode, $modes, true ) ) {
2293 throw new DBUnexpectedError( $this, "$fname: invalid mode parameter '$mode'" );
2294 }
2295
2296 // Protect against mismatched atomic section, transaction nesting, and snapshot loss
2297 if ( $this->trxLevel() ) {
2298 $this->transactionManager->onBeginTransaction( $this, $fname );
2299 } elseif ( $this->flagsHolder->hasImplicitTrxFlag() && $mode !== self::TRANSACTION_INTERNAL ) {
2300 $msg = "$fname: implicit transaction expected (DBO_TRX set)";
2301 throw new DBUnexpectedError( $this, $msg );
2302 }
2303
2304 $this->assertHasConnectionHandle();
2305
2306 $cs = $this->commenceCriticalSection( __METHOD__ );
2307 $timeStart = microtime( true );
2308 try {
2309 $this->doBegin( $fname );
2310 } catch ( DBError $e ) {
2311 $this->completeCriticalSection( __METHOD__, $cs );
2312 throw $e;
2313 }
2314 $timeEnd = microtime( true );
2315 // Treat "BEGIN" as a trivial query to gauge the RTT delay
2316 $rtt = max( $timeEnd - $timeStart, 0.0 );
2317 $this->transactionManager->newTrxId( $mode, $fname, $rtt );
2318 $this->replicationReporter->resetReplicationLagStatus( $this );
2319 $this->completeCriticalSection( __METHOD__, $cs );
2320 }
2321
2329 protected function doBegin( $fname ) {
2330 $query = new Query( 'BEGIN', self::QUERY_CHANGE_TRX, 'BEGIN' );
2331 $this->query( $query, $fname );
2332 }
2333
2334 final public function commit( $fname = __METHOD__, $flush = self::FLUSHING_ONE ) {
2335 static $modes = [ self::FLUSHING_ONE, self::FLUSHING_ALL_PEERS, self::FLUSHING_INTERNAL ];
2336 if ( !in_array( $flush, $modes, true ) ) {
2337 throw new DBUnexpectedError( $this, "$fname: invalid flush parameter '$flush'" );
2338 }
2339
2340 if ( !$this->transactionManager->onCommit( $this, $fname, $flush ) ) {
2341 return;
2342 }
2343
2344 $this->assertHasConnectionHandle();
2345
2346 $this->runOnTransactionPreCommitCallbacks();
2347
2348 $cs = $this->commenceCriticalSection( __METHOD__ );
2349 try {
2350 if ( $this->trxLevel() ) {
2351 $query = new Query( 'COMMIT', self::QUERY_CHANGE_TRX, 'COMMIT' );
2352 $this->query( $query, $fname );
2353 }
2354 } catch ( DBError $e ) {
2355 $this->completeCriticalSection( __METHOD__, $cs );
2356 throw $e;
2357 }
2358 $lastWriteTime = $this->transactionManager->onCommitInCriticalSection( $this );
2359 if ( $lastWriteTime ) {
2360 $this->lastWriteTime = $lastWriteTime;
2361 }
2362 // With FLUSHING_ALL_PEERS, callbacks will run when requested by a dedicated phase
2363 // within LoadBalancer. With FLUSHING_INTERNAL, callbacks will run when requested by
2364 // the Database caller during a safe point. This avoids isolation and recursion issues.
2365 if ( $flush === self::FLUSHING_ONE ) {
2366 $this->runTransactionPostCommitCallbacks();
2367 }
2368 $this->completeCriticalSection( __METHOD__, $cs );
2369 }
2370
2371 final public function rollback( $fname = __METHOD__, $flush = self::FLUSHING_ONE ) {
2372 if (
2373 $flush !== self::FLUSHING_INTERNAL &&
2374 $flush !== self::FLUSHING_ALL_PEERS &&
2375 $this->flagsHolder->hasImplicitTrxFlag()
2376 ) {
2377 throw new DBUnexpectedError(
2378 $this,
2379 "$fname: Expected mass rollback of all peer transactions (DBO_TRX set)"
2380 );
2381 }
2382
2383 if ( !$this->trxLevel() ) {
2384 $this->transactionManager->setTrxStatusToNone();
2385 $this->transactionManager->clearPreEndCallbacks();
2386 if ( $this->transactionManager->trxLevel() <= TransactionManager::STATUS_TRX_ERROR ) {
2387 $this->logger->info(
2388 "$fname: acknowledged server-side transaction loss on {db_server}",
2389 $this->getLogContext()
2390 );
2391 }
2392
2393 return;
2394 }
2395
2396 $this->assertHasConnectionHandle();
2397
2398 if ( $this->csmError ) {
2399 // Since the session state is corrupt, we cannot just rollback the transaction
2400 // while preserving the non-transaction session state. The handle will remain
2401 // marked as corrupt until flushSession() is called to reset the connection
2402 // and deal with any remaining callbacks.
2403 $this->logger->info(
2404 "$fname: acknowledged client-side transaction loss on {db_server}",
2405 $this->getLogContext()
2406 );
2407
2408 return;
2409 }
2410
2411 $cs = $this->commenceCriticalSection( __METHOD__ );
2412 if ( $this->trxLevel() ) {
2413 // Disconnects cause rollback anyway, so ignore those errors
2414 $query = new Query(
2415 $this->platform->rollbackSqlText(),
2416 self::QUERY_SILENCE_ERRORS | self::QUERY_CHANGE_TRX,
2417 'ROLLBACK'
2418 );
2419 $this->query( $query, $fname );
2420 }
2421 $this->transactionManager->onRollback( $this );
2422 // With FLUSHING_ALL_PEERS, callbacks will run when requested by a dedicated phase
2423 // within LoadBalancer. With FLUSHING_INTERNAL, callbacks will run when requested by
2424 // the Database caller during a safe point. This avoids isolation and recursion issues.
2425 if ( $flush === self::FLUSHING_ONE ) {
2426 $this->runTransactionPostRollbackCallbacks();
2427 }
2428 $this->completeCriticalSection( __METHOD__, $cs );
2429 }
2430
2435 public function setTransactionManager( TransactionManager $transactionManager ) {
2436 $this->transactionManager = $transactionManager;
2437 }
2438
2439 public function flushSession( $fname = __METHOD__, $flush = self::FLUSHING_ONE ) {
2440 if (
2441 $flush !== self::FLUSHING_INTERNAL &&
2442 $flush !== self::FLUSHING_ALL_PEERS &&
2443 $this->flagsHolder->hasImplicitTrxFlag()
2444 ) {
2445 throw new DBUnexpectedError(
2446 $this,
2447 "$fname: Expected mass flush of all peer connections (DBO_TRX set)"
2448 );
2449 }
2450
2451 if ( $this->csmError ) {
2452 // If a critical section error occurred, such as Excimer timeout exceptions raised
2453 // before a query response was marshalled, destroy the connection handle and reset
2454 // the session state tracking variables. The value of trxLevel() is irrelevant here,
2455 // and, in fact, might be 1 due to rollback() deferring critical section recovery.
2456 $this->logger->info(
2457 "$fname: acknowledged client-side session loss on {db_server}",
2458 $this->getLogContext()
2459 );
2460 $this->csmError = null;
2461 $this->csmFname = null;
2462 $this->replaceLostConnection( 2048, __METHOD__ );
2463
2464 return;
2465 }
2466
2467 if ( $this->trxLevel() ) {
2468 // Any existing transaction should have been rolled back already
2469 throw new DBUnexpectedError(
2470 $this,
2471 "$fname: transaction still in progress (not yet rolled back)"
2472 );
2473 }
2474
2475 if ( $this->transactionManager->sessionStatus() <= TransactionManager::STATUS_SESS_ERROR ) {
2476 // If the session state was already lost due to either an unacknowledged session
2477 // state loss error (e.g. dropped connection) or an explicit connection close call,
2478 // then there is nothing to do here. Note that in such cases, even temporary tables
2479 // and server-side config variables are lost (invocation of this method is assumed
2480 // to imply that such losses are tolerable).
2481 $this->logger->info(
2482 "$fname: acknowledged server-side session loss on {db_server}",
2483 $this->getLogContext()
2484 );
2485 } elseif ( $this->isOpen() ) {
2486 // Connection handle exists; server-side session state must be flushed
2487 $this->doFlushSession( $fname );
2488 $this->sessionNamedLocks = [];
2489 }
2490
2491 $this->transactionManager->clearSessionError();
2492 }
2493
2502 protected function doFlushSession( $fname ) {
2503 // no-op
2504 }
2505
2506 public function flushSnapshot( $fname = __METHOD__, $flush = self::FLUSHING_ONE ) {
2507 $this->transactionManager->onFlushSnapshot( $this, $fname, $flush, $this->getTransactionRoundId() );
2508 $this->commit( $fname, self::FLUSHING_INTERNAL );
2509 }
2510
2512 $oldName,
2513 $newName,
2514 $temporary = false,
2515 $fname = __METHOD__
2516 ) {
2517 throw new RuntimeException( __METHOD__ . ' is not implemented in descendant class' );
2518 }
2519
2520 public function listTables( $prefix = null, $fname = __METHOD__ ) {
2521 throw new RuntimeException( __METHOD__ . ' is not implemented in descendant class' );
2522 }
2523
2524 public function affectedRows() {
2525 $this->lastEmulatedAffectedRows ??= $this->lastQueryAffectedRows;
2526
2527 return $this->lastEmulatedAffectedRows;
2528 }
2529
2530 public function insertId() {
2531 if ( $this->lastEmulatedInsertId === null ) {
2532 // Guard against misuse of this method by checking affectedRows(). Note that calls
2533 // to insert() with "IGNORE" and calls to insertSelect() might not add any rows.
2534 if ( $this->affectedRows() ) {
2535 $this->lastEmulatedInsertId = $this->lastInsertId();
2536 } else {
2537 $this->lastEmulatedInsertId = 0;
2538 }
2539 }
2540
2541 return $this->lastEmulatedInsertId;
2542 }
2543
2557 abstract protected function lastInsertId();
2558
2559 public function ping() {
2560 if ( $this->isOpen() ) {
2561 // If the connection was recently used, assume that it is still good
2562 if ( ( microtime( true ) - $this->lastPing ) < self::PING_TTL ) {
2563 return true;
2564 }
2565 // Send a trivial query to test the connection, triggering an automatic
2566 // reconnection attempt if the connection was lost
2567 $query = new Query(
2568 self::PING_QUERY,
2569 self::QUERY_IGNORE_DBO_TRX | self::QUERY_SILENCE_ERRORS | self::QUERY_CHANGE_NONE,
2570 'SELECT'
2571 );
2572 $res = $this->query( $query, __METHOD__ );
2573 $ok = ( $res !== false );
2574 } else {
2575 // Try to re-establish a connection
2576 $ok = $this->replaceLostConnection( null, __METHOD__ );
2577 }
2578
2579 return $ok;
2580 }
2581
2589 protected function replaceLostConnection( $lastErrno, $fname ) {
2590 if ( $this->conn ) {
2591 $this->closeConnection();
2592 $this->conn = null;
2593 $this->handleSessionLossPreconnect();
2594 }
2595
2596 try {
2597 $this->open(
2598 $this->connectionParams[self::CONN_HOST],
2599 $this->connectionParams[self::CONN_USER],
2600 $this->connectionParams[self::CONN_PASSWORD],
2601 $this->currentDomain->getDatabase(),
2602 $this->currentDomain->getSchema(),
2603 $this->tablePrefix()
2604 );
2605 $this->lastPing = microtime( true );
2606 $ok = true;
2607
2608 $this->logger->warning(
2609 $fname . ': lost connection to {db_server} with error {errno}; reconnected',
2610 $this->getLogContext( [
2611 'exception' => new RuntimeException(),
2612 'db_log_category' => 'connection',
2613 'errno' => $lastErrno
2614 ] )
2615 );
2616 } catch ( DBConnectionError $e ) {
2617 $ok = false;
2618
2619 $this->logger->error(
2620 $fname . ': lost connection to {db_server} with error {errno}; reconnection failed: {connect_msg}',
2621 $this->getLogContext( [
2622 'exception' => new RuntimeException(),
2623 'db_log_category' => 'connection',
2624 'errno' => $lastErrno,
2625 'connect_msg' => $e->getMessage()
2626 ] )
2627 );
2628 }
2629
2630 // Handle callbacks in trxEndCallbacks, e.g. onTransactionResolution().
2631 // If callback suppression is set then the array will remain unhandled.
2632 $this->runOnTransactionIdleCallbacks( self::TRIGGER_ROLLBACK );
2633 // Handle callbacks in trxRecurringCallbacks, e.g. setTransactionListener().
2634 // If callback suppression is set then the array will remain unhandled.
2635 $this->runTransactionListenerCallbacks( self::TRIGGER_ROLLBACK );
2636
2637 return $ok;
2638 }
2639
2662 public static function getCacheSetOptions( ?IReadableDatabase ...$dbs ) {
2663 $res = [ 'lag' => 0, 'since' => INF, 'pending' => false ];
2664
2665 foreach ( func_get_args() as $db ) {
2666 if ( $db instanceof IReadableDatabase ) {
2667 $status = $db->getSessionLagStatus();
2668
2669 if ( $status['lag'] === false ) {
2670 $res['lag'] = false;
2671 } elseif ( $res['lag'] !== false ) {
2672 $res['lag'] = max( $res['lag'], $status['lag'] );
2673 }
2674 $res['since'] = min( $res['since'], $status['since'] );
2675 }
2676
2677 if ( $db instanceof IDatabaseForOwner ) {
2678 $res['pending'] = $res['pending'] ?: $db->writesPending();
2679 }
2680 }
2681
2682 return $res;
2683 }
2684
2685 public function encodeBlob( $b ) {
2686 return $b;
2687 }
2688
2689 public function decodeBlob( $b ) {
2690 if ( $b instanceof Blob ) {
2691 $b = $b->fetch();
2692 }
2693 return $b;
2694 }
2695
2696 public function setSessionOptions( array $options ) {
2697 }
2698
2699 public function sourceFile(
2700 $filename,
2701 callable $lineCallback = null,
2702 callable $resultCallback = null,
2703 $fname = false,
2704 callable $inputCallback = null
2705 ) {
2706 AtEase::suppressWarnings();
2707 $fp = fopen( $filename, 'r' );
2708 AtEase::restoreWarnings();
2709
2710 if ( $fp === false ) {
2711 throw new RuntimeException( "Could not open \"{$filename}\"" );
2712 }
2713
2714 if ( !$fname ) {
2715 $fname = __METHOD__ . "( $filename )";
2716 }
2717
2718 try {
2719 return $this->sourceStream(
2720 $fp,
2721 $lineCallback,
2722 $resultCallback,
2723 $fname,
2724 $inputCallback
2725 );
2726 } finally {
2727 fclose( $fp );
2728 }
2729 }
2730
2731 public function sourceStream(
2732 $fp,
2733 callable $lineCallback = null,
2734 callable $resultCallback = null,
2735 $fname = __METHOD__,
2736 callable $inputCallback = null
2737 ) {
2738 $delimiterReset = new ScopedCallback(
2739 function ( $delimiter ) {
2740 $this->delimiter = $delimiter;
2741 },
2742 [ $this->delimiter ]
2743 );
2744 $cmd = '';
2745
2746 while ( !feof( $fp ) ) {
2747 if ( $lineCallback ) {
2748 call_user_func( $lineCallback );
2749 }
2750
2751 $line = trim( fgets( $fp ) );
2752
2753 if ( $line == '' ) {
2754 continue;
2755 }
2756
2757 if ( $line[0] == '-' && $line[1] == '-' ) {
2758 continue;
2759 }
2760
2761 if ( $cmd != '' ) {
2762 $cmd .= ' ';
2763 }
2764
2765 $done = $this->streamStatementEnd( $cmd, $line );
2766
2767 $cmd .= "$line\n";
2768
2769 if ( $done || feof( $fp ) ) {
2770 $cmd = $this->platform->replaceVars( $cmd );
2771
2772 if ( $inputCallback ) {
2773 $callbackResult = $inputCallback( $cmd );
2774
2775 if ( is_string( $callbackResult ) || !$callbackResult ) {
2776 $cmd = $callbackResult;
2777 }
2778 }
2779
2780 if ( $cmd ) {
2781 $res = $this->query( $cmd, $fname );
2782
2783 if ( $resultCallback ) {
2784 $resultCallback( $res, $this );
2785 }
2786
2787 if ( $res === false ) {
2788 $err = $this->lastError();
2789
2790 return "Query \"{$cmd}\" failed with error code \"$err\".\n";
2791 }
2792 }
2793 $cmd = '';
2794 }
2795 }
2796
2797 ScopedCallback::consume( $delimiterReset );
2798 return true;
2799 }
2800
2808 public function streamStatementEnd( &$sql, &$newLine ) {
2809 if ( $this->delimiter ) {
2810 $prev = $newLine;
2811 $newLine = preg_replace(
2812 '/' . preg_quote( $this->delimiter, '/' ) . '$/',
2813 '',
2814 $newLine
2815 );
2816 if ( $newLine != $prev ) {
2817 return true;
2818 }
2819 }
2820
2821 return false;
2822 }
2823
2827 public function lockIsFree( $lockName, $method ) {
2828 // RDBMs methods for checking named locks may or may not count this thread itself.
2829 // In MySQL, IS_FREE_LOCK() returns 0 if the thread already has the lock. This is
2830 // the behavior chosen by the interface for this method.
2831 if ( isset( $this->sessionNamedLocks[$lockName] ) ) {
2832 $lockIsFree = false;
2833 } else {
2834 $lockIsFree = $this->doLockIsFree( $lockName, $method );
2835 }
2836
2837 return $lockIsFree;
2838 }
2839
2848 protected function doLockIsFree( string $lockName, string $method ) {
2849 return true; // not implemented
2850 }
2851
2855 public function lock( $lockName, $method, $timeout = 5, $flags = 0 ) {
2856 $lockTsUnix = $this->doLock( $lockName, $method, $timeout );
2857 if ( $lockTsUnix !== null ) {
2858 $locked = true;
2859 $this->sessionNamedLocks[$lockName] = [
2860 'ts' => $lockTsUnix,
2861 'trxId' => $this->transactionManager->getTrxId()
2862 ];
2863 } else {
2864 $locked = false;
2865 $this->logger->info(
2866 __METHOD__ . ": failed to acquire lock '{lockname}'",
2867 [
2868 'lockname' => $lockName,
2869 'db_log_category' => 'locking'
2870 ]
2871 );
2872 }
2873
2874 return $this->flagsHolder::contains( $flags, self::LOCK_TIMESTAMP ) ? $lockTsUnix : $locked;
2875 }
2876
2886 protected function doLock( string $lockName, string $method, int $timeout ) {
2887 return microtime( true ); // not implemented
2888 }
2889
2893 public function unlock( $lockName, $method ) {
2894 if ( !isset( $this->sessionNamedLocks[$lockName] ) ) {
2895 $released = false;
2896 $this->logger->warning(
2897 __METHOD__ . ": trying to release unheld lock '$lockName'\n",
2898 [ 'db_log_category' => 'locking' ]
2899 );
2900 } else {
2901 $released = $this->doUnlock( $lockName, $method );
2902 if ( $released ) {
2903 unset( $this->sessionNamedLocks[$lockName] );
2904 } else {
2905 $this->logger->warning(
2906 __METHOD__ . ": failed to release lock '$lockName'\n",
2907 [ 'db_log_category' => 'locking' ]
2908 );
2909 }
2910 }
2911
2912 return $released;
2913 }
2914
2923 protected function doUnlock( string $lockName, string $method ) {
2924 return true; // not implemented
2925 }
2926
2927 public function getScopedLockAndFlush( $lockKey, $fname, $timeout ) {
2928 $this->transactionManager->onGetScopedLockAndFlush( $this, $fname );
2929
2930 if ( !$this->lock( $lockKey, $fname, $timeout ) ) {
2931 return null;
2932 }
2933
2934 $unlocker = new ScopedCallback( function () use ( $lockKey, $fname ) {
2935 // Note that the callback can be reached due to an exception making the calling
2936 // function end early. If the transaction/session is in an error state, avoid log
2937 // spam and confusing replacement of an original DBError with one about unlock().
2938 // Unlock query will fail anyway; avoid possibly triggering errors in rollback()
2939 if (
2940 $this->transactionManager->sessionStatus() <= TransactionManager::STATUS_SESS_ERROR ||
2941 $this->transactionManager->trxStatus() <= TransactionManager::STATUS_TRX_ERROR
2942 ) {
2943 return;
2944 }
2945 if ( $this->trxLevel() ) {
2946 $this->onTransactionResolution(
2947 function () use ( $lockKey, $fname ) {
2948 $this->unlock( $lockKey, $fname );
2949 },
2950 $fname
2951 );
2952 } else {
2953 $this->unlock( $lockKey, $fname );
2954 }
2955 } );
2956
2957 $this->commit( $fname, self::FLUSHING_INTERNAL );
2958
2959 return $unlocker;
2960 }
2961
2962 public function dropTable( $table, $fname = __METHOD__ ) {
2963 if ( !$this->tableExists( $table, $fname ) ) {
2964 return false;
2965 }
2966
2967 $query = new Query(
2968 $this->platform->dropTableSqlText( $table ),
2969 self::QUERY_CHANGE_SCHEMA,
2970 'DROP',
2971 $table
2972 );
2973 $this->query( $query, $fname );
2974
2975 return true;
2976 }
2977
2978 public function truncateTable( $table, $fname = __METHOD__ ) {
2979 $sql = "TRUNCATE TABLE " . $this->tableName( $table );
2980 $query = new Query( $sql, self::QUERY_CHANGE_SCHEMA, 'TRUNCATE', $table );
2981 $this->query( $query, $fname );
2982 }
2983
2984 public function isReadOnly() {
2985 return ( $this->getReadOnlyReason() !== null );
2986 }
2987
2991 protected function getReadOnlyReason() {
2992 $reason = $this->replicationReporter->getTopologyBasedReadOnlyReason();
2993 if ( $reason ) {
2994 return $reason;
2995 }
2996
2997 $reason = $this->getLBInfo( self::LB_READ_ONLY_REASON );
2998 if ( is_string( $reason ) ) {
2999 return [ $reason, 'lb' ];
3000 }
3001
3002 return null;
3003 }
3004
3016 protected function getBindingHandle() {
3017 if ( !$this->conn ) {
3018 throw new DBUnexpectedError(
3019 $this,
3020 'DB connection was already closed or the connection dropped'
3021 );
3022 }
3023
3024 return $this->conn;
3025 }
3026
3063 protected function commenceCriticalSection( string $fname ) {
3064 if ( $this->csmError ) {
3065 throw new DBUnexpectedError(
3066 $this,
3067 "Cannot execute $fname critical section while session state is out of sync.\n\n" .
3068 $this->csmError->getMessage() . "\n" .
3069 $this->csmError->getTraceAsString()
3070 );
3071 }
3072
3073 if ( $this->csmId ) {
3074 $csm = null; // fold into the outer critical section
3075 } elseif ( $this->csProvider ) {
3076 $csm = $this->csProvider->scopedEnter(
3077 $fname,
3078 null, // emergency limit (default)
3079 null, // emergency callback (default)
3080 function () use ( $fname ) {
3081 // Mark a critical section as having been aborted by an error
3082 $e = new RuntimeException( "A critical section from {$fname} has failed" );
3083 $this->csmError = $e;
3084 $this->csmId = null;
3085 }
3086 );
3087 $this->csmId = $csm->getId();
3088 $this->csmFname = $fname;
3089 } else {
3090 $csm = null; // not supported
3091 }
3092
3093 return $csm;
3094 }
3095
3106 protected function completeCriticalSection(
3107 string $fname,
3108 ?CriticalSectionScope $csm,
3109 Throwable $trxError = null
3110 ) {
3111 if ( $csm !== null ) {
3112 if ( $this->csmId === null ) {
3113 throw new LogicException( "$fname critical section is not active" );
3114 } elseif ( $csm->getId() !== $this->csmId ) {
3115 throw new LogicException(
3116 "$fname critical section is not the active ({$this->csmFname}) one"
3117 );
3118 }
3119
3120 $csm->exit();
3121 $this->csmId = null;
3122 }
3123
3124 if ( $trxError ) {
3125 $this->transactionManager->setTransactionError( $trxError );
3126 }
3127 }
3128
3129 public function __toString() {
3130 $id = spl_object_id( $this );
3131
3132 $description = $this->getType() . ' object #' . $id;
3133 // phpcs:ignore MediaWiki.Usage.ForbiddenFunctions.is_resource
3134 if ( is_resource( $this->conn ) ) {
3135 $description .= ' (' . (string)$this->conn . ')'; // "resource id #<ID>"
3136 } elseif ( is_object( $this->conn ) ) {
3137 $handleId = spl_object_id( $this->conn );
3138 $description .= " (handle id #$handleId)";
3139 }
3140
3141 return $description;
3142 }
3143
3148 public function __clone() {
3149 $this->logger->warning(
3150 "Cloning " . static::class . " is not recommended; forking connection",
3151 [
3152 'exception' => new RuntimeException(),
3153 'db_log_category' => 'connection'
3154 ]
3155 );
3156
3157 if ( $this->isOpen() ) {
3158 // Open a new connection resource without messing with the old one
3159 $this->conn = null;
3160 $this->transactionManager->clearEndCallbacks();
3161 $this->handleSessionLossPreconnect(); // no trx or locks anymore
3162 $this->open(
3163 $this->connectionParams[self::CONN_HOST],
3164 $this->connectionParams[self::CONN_USER],
3165 $this->connectionParams[self::CONN_PASSWORD],
3166 $this->currentDomain->getDatabase(),
3167 $this->currentDomain->getSchema(),
3168 $this->tablePrefix()
3169 );
3170 $this->lastPing = microtime( true );
3171 }
3172 }
3173
3180 public function __sleep() {
3181 throw new RuntimeException( 'Database serialization may cause problems, since ' .
3182 'the connection is not restored on wakeup' );
3183 }
3184
3188 public function __destruct() {
3189 if ( $this->transactionManager ) {
3190 // Tests mock this class and disable constructor.
3191 $this->transactionManager->onDestruct();
3192 }
3193
3194 $danglingWriters = $this->pendingWriteAndCallbackCallers();
3195 if ( $danglingWriters ) {
3196 $fnames = implode( ', ', $danglingWriters );
3197 trigger_error( "DB transaction writes or callbacks still pending ($fnames)" );
3198 }
3199
3200 if ( $this->conn ) {
3201 // Avoid connection leaks. Normally, resources close at script completion.
3202 // The connection might already be closed in PHP by now, so suppress warnings.
3203 AtEase::suppressWarnings();
3204 $this->closeConnection();
3205 AtEase::restoreWarnings();
3206 $this->conn = null;
3207 }
3208 }
3209
3210 /* Start of methods delegated to DatabaseFlags. Avoid using them outside of rdbms library */
3211
3212 public function setFlag( $flag, $remember = self::REMEMBER_NOTHING ) {
3213 $this->flagsHolder->setFlag( $flag, $remember );
3214 }
3215
3216 public function clearFlag( $flag, $remember = self::REMEMBER_NOTHING ) {
3217 $this->flagsHolder->clearFlag( $flag, $remember );
3218 }
3219
3220 public function restoreFlags( $state = self::RESTORE_PRIOR ) {
3221 $this->flagsHolder->restoreFlags( $state );
3222 }
3223
3224 public function getFlag( $flag ) {
3225 return $this->flagsHolder->getFlag( $flag );
3226 }
3227
3228 /* End of methods delegated to DatabaseFlags. */
3229
3230 /* Start of methods delegated to TransactionManager. Avoid using them outside of rdbms library */
3231
3232 final public function trxLevel() {
3233 // FIXME: A lot of tests disable constructor leading to trx manager being
3234 // null and breaking, this is unacceptable but hopefully this should
3235 // happen less by moving these functions to the transaction manager class.
3236 if ( !$this->transactionManager ) {
3237 $this->transactionManager = new TransactionManager( new NullLogger() );
3238 }
3239 return $this->transactionManager->trxLevel();
3240 }
3241
3242 public function trxTimestamp() {
3243 return $this->transactionManager->trxTimestamp();
3244 }
3245
3246 public function trxStatus() {
3247 return $this->transactionManager->trxStatus();
3248 }
3249
3250 public function writesPending() {
3251 return $this->transactionManager->writesPending();
3252 }
3253
3254 public function writesOrCallbacksPending() {
3255 return $this->transactionManager->writesOrCallbacksPending();
3256 }
3257
3258 public function pendingWriteQueryDuration( $type = self::ESTIMATE_TOTAL ) {
3259 return $this->transactionManager->pendingWriteQueryDuration( $type );
3260 }
3261
3262 public function pendingWriteCallers() {
3263 if ( !$this->transactionManager ) {
3264 return [];
3265 }
3266 return $this->transactionManager->pendingWriteCallers();
3267 }
3268
3270 if ( !$this->transactionManager ) {
3271 return [];
3272 }
3273 return $this->transactionManager->pendingWriteAndCallbackCallers();
3274 }
3275
3277 return $this->transactionManager->runOnTransactionPreCommitCallbacks( $this );
3278 }
3279
3280 public function explicitTrxActive() {
3281 return $this->transactionManager->explicitTrxActive();
3282 }
3283
3284 /* End of methods delegated to TransactionManager. */
3285
3286 /* Start of methods delegated to SQLPlatform. Avoid using them outside of rdbms library */
3287
3288 public function implicitOrderby() {
3289 return $this->platform->implicitOrderby();
3290 }
3291
3292 public function selectSQLText(
3293 $tables, $vars, $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
3294 ) {
3295 return $this->platform->selectSQLText( $tables, $vars, $conds, $fname, $options, $join_conds );
3296 }
3297
3298 public function buildComparison( string $op, array $conds ): string {
3299 return $this->platform->buildComparison( $op, $conds );
3300 }
3301
3302 public function makeList( array $a, $mode = self::LIST_COMMA ) {
3303 return $this->platform->makeList( $a, $mode );
3304 }
3305
3306 public function makeWhereFrom2d( $data, $baseKey, $subKey ) {
3307 return $this->platform->makeWhereFrom2d( $data, $baseKey, $subKey );
3308 }
3309
3310 public function factorConds( $condsArray ) {
3311 return $this->platform->factorConds( $condsArray );
3312 }
3313
3314 public function bitNot( $field ) {
3315 return $this->platform->bitNot( $field );
3316 }
3317
3318 public function bitAnd( $fieldLeft, $fieldRight ) {
3319 return $this->platform->bitAnd( $fieldLeft, $fieldRight );
3320 }
3321
3322 public function bitOr( $fieldLeft, $fieldRight ) {
3323 return $this->platform->bitOr( $fieldLeft, $fieldRight );
3324 }
3325
3326 public function buildConcat( $stringList ) {
3327 return $this->platform->buildConcat( $stringList );
3328 }
3329
3330 public function buildGreatest( $fields, $values ) {
3331 return $this->platform->buildGreatest( $fields, $values );
3332 }
3333
3334 public function buildLeast( $fields, $values ) {
3335 return $this->platform->buildLeast( $fields, $values );
3336 }
3337
3338 public function buildSubstring( $input, $startPosition, $length = null ) {
3339 return $this->platform->buildSubstring( $input, $startPosition, $length );
3340 }
3341
3342 public function buildStringCast( $field ) {
3343 return $this->platform->buildStringCast( $field );
3344 }
3345
3346 public function buildIntegerCast( $field ) {
3347 return $this->platform->buildIntegerCast( $field );
3348 }
3349
3350 public function tableName( string $name, $format = 'quoted' ) {
3351 return $this->platform->tableName( $name, $format );
3352 }
3353
3354 public function tableNames( ...$tables ) {
3355 return $this->platform->tableNames( ...$tables );
3356 }
3357
3358 public function tableNamesN( ...$tables ) {
3359 return $this->platform->tableNamesN( ...$tables );
3360 }
3361
3362 public function addIdentifierQuotes( $s ) {
3363 return $this->platform->addIdentifierQuotes( $s );
3364 }
3365
3366 public function isQuotedIdentifier( $name ) {
3367 return $this->platform->isQuotedIdentifier( $name );
3368 }
3369
3370 public function buildLike( $param, ...$params ) {
3371 return $this->platform->buildLike( $param, ...$params );
3372 }
3373
3374 public function anyChar() {
3375 return $this->platform->anyChar();
3376 }
3377
3378 public function anyString() {
3379 return $this->platform->anyString();
3380 }
3381
3382 public function limitResult( $sql, $limit, $offset = false ) {
3383 return $this->platform->limitResult( $sql, $limit, $offset );
3384 }
3385
3386 public function unionSupportsOrderAndLimit() {
3387 return $this->platform->unionSupportsOrderAndLimit();
3388 }
3389
3390 public function unionQueries( $sqls, $all, $options = [] ) {
3391 return $this->platform->unionQueries( $sqls, $all, $options );
3392 }
3393
3394 public function conditional( $cond, $caseTrueExpression, $caseFalseExpression ) {
3395 return $this->platform->conditional( $cond, $caseTrueExpression, $caseFalseExpression );
3396 }
3397
3398 public function strreplace( $orig, $old, $new ) {
3399 return $this->platform->strreplace( $orig, $old, $new );
3400 }
3401
3402 public function timestamp( $ts = 0 ) {
3403 return $this->platform->timestamp( $ts );
3404 }
3405
3406 public function timestampOrNull( $ts = null ) {
3407 return $this->platform->timestampOrNull( $ts );
3408 }
3409
3410 public function getInfinity() {
3411 return $this->platform->getInfinity();
3412 }
3413
3414 public function encodeExpiry( $expiry ) {
3415 return $this->platform->encodeExpiry( $expiry );
3416 }
3417
3418 public function decodeExpiry( $expiry, $format = TS_MW ) {
3419 return $this->platform->decodeExpiry( $expiry, $format );
3420 }
3421
3422 public function setTableAliases( array $aliases ) {
3423 $this->platform->setTableAliases( $aliases );
3424 }
3425
3426 public function getTableAliases() {
3427 return $this->platform->getTableAliases();
3428 }
3429
3430 public function setIndexAliases( array $aliases ) {
3431 $this->platform->setIndexAliases( $aliases );
3432 }
3433
3434 public function buildGroupConcatField(
3435 $delim, $tables, $field, $conds = '', $join_conds = []
3436 ) {
3437 return $this->platform->buildGroupConcatField( $delim, $tables, $field, $conds, $join_conds );
3438 }
3439
3440 public function buildSelectSubquery(
3441 $tables, $vars, $conds = '', $fname = __METHOD__,
3442 $options = [], $join_conds = []
3443 ) {
3444 return $this->platform->buildSelectSubquery( $tables, $vars, $conds, $fname, $options, $join_conds );
3445 }
3446
3447 public function buildExcludedValue( $column ) {
3448 return $this->platform->buildExcludedValue( $column );
3449 }
3450
3451 public function setSchemaVars( $vars ) {
3452 $this->platform->setSchemaVars( $vars );
3453 }
3454
3455 /* End of methods delegated to SQLPlatform. */
3456
3457 /* Start of methods delegated to ReplicationReporter. */
3458 public function primaryPosWait( DBPrimaryPos $pos, $timeout ) {
3459 return $this->replicationReporter->primaryPosWait( $this, $pos, $timeout );
3460 }
3461
3462 public function getPrimaryPos() {
3463 return $this->replicationReporter->getPrimaryPos( $this );
3464 }
3465
3466 public function getLag() {
3467 return $this->replicationReporter->getLag( $this );
3468 }
3469
3470 public function getSessionLagStatus() {
3471 return $this->replicationReporter->getSessionLagStatus( $this );
3472 }
3473
3474 /* End of methods delegated to ReplicationReporter. */
3475}
array $params
The job parameters.
if(!defined('MW_SETUP_CALLBACK'))
Definition WebStart.php:81
Representing a group of expressions chained via AND.
Class used for token representing identifiers for atomic sections from IDatabase instances.
static recordQuery(DatabaseDomain $domain, Query $query)
When tracking is enabled and a query alters tables, record the list of tables that are altered.
Database error base class.
Definition DBError.php:36
Exception class for attempted DB write access to a DBConnRef with the DB_REPLICA role.
Class to handle database/schema/prefix specifications for IDatabase.
Relational database abstraction object.
Definition Database.php:44
bool $cliMode
Whether this PHP instance is for a CLI script.
Definition Database.php:70
getServerInfo()
Get a human-readable string describing the current software version.
Definition Database.php:300
encodeBlob( $b)
Some DBMSs have a special format for inserting into blob fields, they don't allow simple quoted strin...
setLBInfo( $nameOrArray, $value=null)
Set the entire array or a particular key of the managing load balancer info array.
Definition Database.php:354
expr(string $field, string $op, $value)
See Expression::__construct()
begin( $fname=__METHOD__, $mode=self::TRANSACTION_EXPLICIT)
Begin a transaction.
buildExcludedValue( $column)
Build a reference to a column value from the conflicting proposed upsert() row.
restoreErrorHandler()
Restore the previous error handler and return the last PHP error for this DB.
Definition Database.php:426
callable $errorLogger
Error logging callback.
Definition Database.php:50
isReadOnly()
Check if this DB server is marked as read-only according to load balancer info.
strencode( $s)
Wrapper for addslashes()
int null $connectTimeout
Maximum seconds to wait on connection attempts.
Definition Database.php:72
__toString()
Get a debugging string that mentions the database type, the ID of this instance, and the ID of any un...
open( $server, $user, $password, $db, $schema, $tablePrefix)
Open a new connection to the database (closing any existing one)
newUpdateQueryBuilder()
Get an UpdateQueryBuilder bound to this connection.
primaryPosWait(DBPrimaryPos $pos, $timeout)
Wait for the replica server to catch up to a given primary server position.
object resource null $conn
Database connection.
Definition Database.php:65
trxTimestamp()
Get the UNIX timestamp of the time that the transaction was established.
addQuotes( $s)
Escape and quote a raw value string for use in a SQL query.
tablePrefix( $prefix=null)
Get/set the table prefix.
Definition Database.php:304
newSelectQueryBuilder()
Get a SelectQueryBuilder bound to this connection.
setLogger(LoggerInterface $logger)
Set the PSR-3 logger interface to use.
Definition Database.php:296
doInsertSelectNative( $destTable, $srcTable, array $varMap, $conds, $fname, array $insertOptions, array $selectOptions, $selectJoinConds)
Native server-side implementation of insertSelect() for situations where we don't want to select ever...
getSessionLagStatus()
Get a cached estimate of the seconds of replication lag on this database server, using the estimate o...
CriticalSectionProvider null $csProvider
Definition Database.php:46
listTables( $prefix=null, $fname=__METHOD__)
List all tables on the database.
fieldExists( $table, $field, $fname=__METHOD__)
Determines whether a field exists in a table.
newExceptionAfterConnectError( $error)
__destruct()
Run a few simple checks and close dangling connections.
dbSchema( $schema=null)
Get/set the db schema.
Definition Database.php:319
endAtomic( $fname=__METHOD__)
Ends an atomic section of SQL statements.
cancelAtomic( $fname=__METHOD__, AtomicSectionIdentifier $sectionId=null)
Cancel an atomic section of SQL statements.
setSessionOptions(array $options)
Override database's default behavior.
string[] int[] float[] $connectionVariables
SQL variables values to use for all new connections.
Definition Database.php:80
string $agent
Agent name for query profiling.
Definition Database.php:76
newDeleteQueryBuilder()
Get a DeleteQueryBuilder bound to this connection.
estimateRowCount( $tables, $var=' *', $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Estimate the number of rows in dataset.MySQL allows you to estimate the number of rows that would be ...
getDomainID()
Return the currently selected domain ID.
Definition Database.php:400
closeConnection()
Closes underlying database connection.
buildSelectSubquery( $tables, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Equivalent to IDatabase::selectSQLText() except wraps the result in Subquery.
lockForUpdate( $table, $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Lock all rows meeting the given conditions/options FOR UPDATE.
buildLeast( $fields, $values)
Build a LEAST function statement comparing columns/values.
DatabaseFlags $flagsHolder
Definition Database.php:61
timestamp( $ts=0)
Convert a timestamp in one of the formats accepted by ConvertibleTimestamp to the format used for ins...
isKnownStatementRollbackError( $errno)
explicitTrxActive()
Check whether there is a transaction open at the specific request of a caller.
serverIsReadOnly()
bool Whether this DB server is running in server-side read-only mode query} 1.28
lastDoneWrites()
Get the last time the connection may have been used for a write query.
Definition Database.php:368
bitAnd( $fieldLeft, $fieldRight)
setIndexAliases(array $aliases)
Convert certain index names to alternative names before querying the DB.
array< string, array > $sessionNamedLocks
Map of (lock name => (UNIX time,trx ID))
Definition Database.php:97
registerTempTables(Query $query)
Register creation and dropping of temporary tables.
Definition Database.php:602
doBegin( $fname)
Issues the BEGIN command to the database server.
writesOrCallbacksPending()
Whether there is a transaction open with either possible write queries or unresolved pre-commit/commi...
initConnection()
Initialize the connection to the database over the wire (or to local files)
Definition Database.php:254
tableNames(... $tables)
Fetch a number of table names into an associative array.
onTransactionResolution(callable $callback, $fname=__METHOD__)
Run a callback when the current transaction commits or rolls back.
dropTable( $table, $fname=__METHOD__)
Delete a table.
indexUnique( $table, $index, $fname=__METHOD__)
Determines if a given index is unique.
string null $serverName
Readable name or host/IP of the database server.
Definition Database.php:68
array< string, mixed > $connectionParams
Connection parameters used by initConnection() and open()
Definition Database.php:78
runTransactionListenerCallbacks( $trigger, array &$errors=[])
Actually run any "transaction listener" callbacks.
databasesAreIndependent()
Returns true if DBs are assumed to be on potentially different servers.
assertHasConnectionHandle()
Make sure there is an open connection handle (alive or not)
Definition Database.php:533
andExpr(array $conds)
See Expression::__construct()
callable $deprecationLogger
Deprecation logging callback.
Definition Database.php:52
doHandleSessionLossPreconnect()
Reset any additional subclass trx* and session* fields.
deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname=__METHOD__)
Delete all rows in a table that match a condition which includes a join.
factorConds( $condsArray)
Given an array of condition arrays representing an OR list of AND lists, for example:
unionSupportsOrderAndLimit()
Determine if the RDBMS supports ORDER BY and LIMIT for separate subqueries within UNION.
duplicateTableStructure( $oldName, $newName, $temporary=false, $fname=__METHOD__)
Creates a new table with structure copied from existing table.
anyChar()
Returns a token for buildLike() that denotes a '_' to be used in a LIKE query.
doUnlock(string $lockName, string $method)
restoreFlags( $state=self::RESTORE_PRIOR)
Restore the flags to their prior state before the last setFlag/clearFlag call.
getValueTypesForWithClause( $table)
doAtomicSection( $fname, callable $callback, $cancelable=self::ATOMIC_NOT_CANCELABLE)
Perform an atomic section of reversible SQL statements from a callback.
flushSnapshot( $fname=__METHOD__, $flush=self::FLUSHING_ONE)
Commit any transaction but error out if writes or callbacks are pending.
setTrxEndCallbackSuppression( $suppress)
Whether to disable running of post-COMMIT/ROLLBACK callbacks.
installErrorHandler()
Set a custom error handler for logging errors during database connection.
Definition Database.php:415
affectedRows()
Get the number of rows affected by the last query method call.
isQueryTimeoutError( $errno)
Checks whether the cause of the error is detected to be a timeout.
buildSubstring( $input, $startPosition, $length=null)
array< string, array< string, $sessionTempTables=[];protected int $lastQueryAffectedRows=0;protected int|null $lastQueryInsertId;protected int|null $lastEmulatedAffectedRows;protected int|null $lastEmulatedInsertId;protected string $lastConnectError='';private float $lastPing=0.0;private float|false $lastWriteTime=false;private string|false $lastPhpError=false;private int|null $csmId;private string|null $csmFname;private DBUnexpectedError|null $csmError;public const ATTR_DB_IS_FILE='db-is-file';public const ATTR_DB_LEVEL_LOCKING='db-level-locking';public const ATTR_SCHEMAS_AS_TABLE_GROUPS='supports-schemas';public const NEW_UNCONNECTED=0;public const NEW_CONNECTED=1;protected const ERR_NONE=0;protected const ERR_RETRY_QUERY=1;protected const ERR_ABORT_QUERY=2;protected const ERR_ABORT_TRX=4;protected const ERR_ABORT_SESSION=8;protected const DROPPED_CONN_BLAME_THRESHOLD_SEC=3.0;=private const NOT_APPLICABLE 'n/a';private const PING_TTL=1.0;private const PING_QUERY='SELECT 1 AS ping';protected const CONN_HOST='host';protected const CONN_USER='user';protected const CONN_PASSWORD='password';protected const CONN_INITIAL_DB='dbname';protected const CONN_INITIAL_SCHEMA='schema';protected const CONN_INITIAL_TABLE_PREFIX='tablePrefix';protected SQLPlatform $platform;protected ReplicationReporter $replicationReporter;public function __construct(array $params) { $this->logger=$params[ 'logger'] ?? new NullLogger();$this-> transactionManager
TempTableInfo>> Map of (DB name => table name => info)
Definition Database.php:187
isConnectionError( $errno)
Do not use this method outside of Database/DBError classes.
insert( $table, $rows, $fname=__METHOD__, $options=[])
Insert row(s) into a table, in the provided order.
selectDomain( $domain)
Set the current domain (database, schema, and table prefix)
streamStatementEnd(&$sql, &$newLine)
Called by sourceStream() to check if we've reached a statement end.
array $lbInfo
Current LoadBalancer tracking information.
Definition Database.php:89
setTransactionManager(TransactionManager $transactionManager)
newReplaceQueryBuilder()
Get a ReplaceQueryBuilder bound to this connection.
selectRowCount( $tables, $var=' *', $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Get the number of rows in dataset.
bool $ssl
Whether to use SSL connections.
Definition Database.php:85
replaceLostConnection( $lastErrno, $fname)
Close any existing (dead) database connection and open a new connection.
insertId()
Get the sequence-based ID assigned by the last query method call.
buildConcat( $stringList)
Build a concatenation list to feed into a SQL query.
tableName(string $name, $format='quoted')
Format a table name ready for use in constructing an SQL query.
bitOr( $fieldLeft, $fieldRight)
clearFlag( $flag, $remember=self::REMEMBER_NOTHING)
Clear a flag for this connection.
select( $tables, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Execute a SELECT query constructed using the various parameters provided.
DatabaseDomain $currentDomain
Definition Database.php:59
LoggerInterface $logger
Definition Database.php:48
tableNamesN(... $tables)
Fetch a number of table names into a zero-indexed numerical array.
connectionErrorLogger( $errno, $errstr)
Error handler for logging errors during database connection.
Definition Database.php:457
doFlushSession( $fname)
Reset the server-side session state for named locks and table locks.
unionQueries( $sqls, $all, $options=[])
Construct a UNION query.
sourceStream( $fp, callable $lineCallback=null, callable $resultCallback=null, $fname=__METHOD__, callable $inputCallback=null)
Read and execute commands from an open file handle.
replace( $table, $uniqueKeys, $rows, $fname=__METHOD__)
Insert row(s) into a table, in the provided order, while deleting conflicting rows.
indexExists( $table, $index, $fname=__METHOD__)
Determines whether an index exists.
limitResult( $sql, $limit, $offset=false)
Construct a LIMIT query with optional offset.
pendingWriteCallers()
Get the list of method names that did write queries for this transaction.
pendingWriteQueryDuration( $type=self::ESTIMATE_TOTAL)
Get the time spend running write queries for this transaction.
int null $receiveTimeout
Maximum seconds to wait on receiving query results.
Definition Database.php:74
startAtomic( $fname=__METHOD__, $cancelable=self::ATOMIC_NOT_CANCELABLE)
Begin an atomic section of SQL statements.
commit( $fname=__METHOD__, $flush=self::FLUSHING_ONE)
Commits a transaction previously started using begin()
getLBInfo( $name=null)
Get properties passed down from the server info array of the load balancer.
Definition Database.php:342
lock( $lockName, $method, $timeout=5, $flags=0)
Acquire a named lock.Named locks are not related to transactionsbool|float|null Success (bool); acqui...
__sleep()
Called by serialize.
addIdentifierQuotes( $s)
Escape a SQL identifier (e.g.
callable null $profiler
Definition Database.php:54
getInsertIdColumnForUpsert( $table)
int $nonNativeInsertSelectBatchSize
Row batch size to use for emulated INSERT SELECT queries.
Definition Database.php:82
indexInfo( $table, $index, $fname=__METHOD__)
Get information about an index into an object.
doSelectDomain(DatabaseDomain $domain)
getLogContext(array $extras=[])
Create a log context to pass to PSR-3 logger functions.
Definition Database.php:467
doSingleStatementQuery(string $sql)
Run a query and return a QueryStatus instance with the query result information.
trxLevel()
Gets the current transaction level.
newInsertQueryBuilder()
Get a InsertQueryBuilder bound to this connection.
setSchemaVars( $vars)
Set schema variables to be used when streaming commands from SQL files or stdin.
selectFieldValues( $tables, $var, $cond='', $fname=__METHOD__, $options=[], $join_conds=[])
A SELECT wrapper which returns a list of single field values from result rows.
upsert( $table, array $rows, $uniqueKeys, array $set, $fname=__METHOD__)
Upsert row(s) into a table, in the provided order, while updating conflicting rows.
commenceCriticalSection(string $fname)
Demark the start of a critical section of session/transaction state changes.
decodeBlob( $b)
Some DBMSs return a special placeholder object representing blob fields in result objects.
setFlag( $flag, $remember=self::REMEMBER_NOTHING)
Set a flag for this connection.
setTableAliases(array $aliases)
Make certain table names use their own database, schema, and table prefix when passed into SQL querie...
truncateTable( $table, $fname=__METHOD__)
Delete all data in a table and reset any sequences owned by that table.
runOnTransactionIdleCallbacks( $trigger, array &$errors=[])
Consume and run any "on transaction idle/resolution" callbacks.
doLockIsFree(string $lockName, string $method)
executeQuery( $sql, $fname, $flags)
Execute a query without enforcing public (non-Database) caller restrictions.
Definition Database.php:665
static getCacheSetOptions(?IReadableDatabase ... $dbs)
Merge the result of getSessionLagStatus() for several DBs using the most pessimistic values to estima...
getPrimaryPos()
Get the replication position of this primary DB server.
completeCriticalSection(string $fname, ?CriticalSectionScope $csm, Throwable $trxError=null)
Demark the completion of a critical section of session/transaction state changes.
sourceFile( $filename, callable $lineCallback=null, callable $resultCallback=null, $fname=false, callable $inputCallback=null)
Read and execute SQL commands from a file.
conditional( $cond, $caseTrueExpression, $caseFalseExpression)
Returns an SQL expression for a simple conditional.
buildLike( $param,... $params)
LIKE statement wrapper.
checkInsertWarnings(Query $query, $fname)
Check for warnings after performing an INSERT query, and throw exceptions if necessary.
makeWhereFrom2d( $data, $baseKey, $subKey)
Build a "OR" condition with pairs from a two-dimensional array.
unlock( $lockName, $method)
Release a lock.Named locks are not related to transactionsbool Success query}
orExpr(array $conds)
See Expression::__construct()
ping()
Ping the server and try to reconnect if it there is no connection.
isInsertSelectSafe(array $insertOptions, array $selectOptions, $fname=__METHOD__)
getServer()
Get the hostname or IP address of the server.
getLag()
Get the seconds of replication lag on this database server.
onTransactionPreCommitOrIdle(callable $callback, $fname=__METHOD__)
Run a callback before the current transaction commits or now if there is none.
string false $delimiter
Current SQL query delimiter.
Definition Database.php:91
getTableAliases()
Return current table aliases.
selectRow( $tables, $vars, $conds, $fname=__METHOD__, $options=[], $join_conds=[])
Wrapper to IDatabase::select() that only fetches one row (via LIMIT)
buildComparison(string $op, array $conds)
Build a condition comparing multiple values, for use with indexes that cover multiple fields,...
flushSession( $fname=__METHOD__, $flush=self::FLUSHING_ONE)
Release important session-level state (named lock, table locks) as post-rollback cleanup.
__clone()
Make sure that copies do not share the same client binding handle.
close( $fname=__METHOD__)
Close the database connection.
Definition Database.php:478
anyString()
Returns a token for buildLike() that denotes a '' to be used in a LIKE query.
getInfinity()
Find out when 'infinity' is.
getServerName()
Get the readable name for the server.
reportQueryError( $error, $errno, $sql, $fname, $ignore=false)
Report a query error.
getScopedLockAndFlush( $lockKey, $fname, $timeout)
Acquire a named lock, flush any transaction, and return an RAII style unlocker object.
encodeExpiry( $expiry)
Encode an expiry time into the DBMS dependent format.
tableExists( $table, $fname=__METHOD__)
Query whether a given table exists.
decodeExpiry( $expiry, $format=TS_MW)
Decode an expiry time into a DBMS independent format.
rollback( $fname=__METHOD__, $flush=self::FLUSHING_ONE)
Rollback a transaction previously started using begin()
setTransactionListener( $name, callable $callback=null)
Run a callback after each time any transaction commits or rolls back.
insertSelect( $destTable, $srcTable, $varMap, $conds, $fname=__METHOD__, $insertOptions=[], $selectOptions=[], $selectJoinConds=[])
INSERT SELECT wrapper.
lockIsFree( $lockName, $method)
Check to see if a named lock is not locked by any thread (non-blocking)bool query} 1....
getFlag( $flag)
Returns a boolean whether the flag $flag is set for this connection.
makeList(array $a, $mode=self::LIST_COMMA)
Makes an encoded list of strings from an array.
selectSQLText( $tables, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Take the same arguments as IDatabase::select() and return the SQL it would use.
timestampOrNull( $ts=null)
Convert a timestamp in one of the formats accepted by ConvertibleTimestamp to the format used for ins...
if(is_string( $params['sqlMode'] ?? null)) $flags
Definition Database.php:214
update( $table, $set, $conds, $fname=__METHOD__, $options=[])
Update all rows in a table that match a given condition.
onAtomicSectionCancel(callable $callback, $fname=__METHOD__)
Run a callback when the atomic section is cancelled.
query( $sql, $fname=__METHOD__, $flags=0)
Run an SQL query statement and return the result.
Definition Database.php:622
buildGreatest( $fields, $values)
Build a GREATEST function statement comparing columns/values.
getBindingHandle()
Get the underlying binding connection handle.
implicitOrderby()
Returns true if this database does an implicit order by when the column has an index For example: SEL...
newUnionQueryBuilder()
Get a UnionQueryBuilder bound to this connection.
doLock(string $lockName, string $method, int $timeout)
lastInsertId()
Get a row ID from the last insert statement to implicitly assign one within the session.
bool $strictWarnings
Whether to check for warnings.
Definition Database.php:87
strreplace( $orig, $old, $new)
Returns a SQL expression for simple string replacement (e.g.
buildGroupConcatField( $delim, $tables, $field, $conds='', $join_conds=[])
Build a GROUP_CONCAT or equivalent statement for a query.
getDBname()
Get the current database name; null if there isn't one.
onTransactionCommitOrIdle(callable $callback, $fname=__METHOD__)
Run a callback when the current transaction commits or now if there is none.
selectField( $tables, $var, $cond='', $fname=__METHOD__, $options=[], $join_conds=[])
A SELECT wrapper which returns a single field from a single result row.
A query builder for DELETE queries with a fluent interface.
A composite leaf representing an expression.
Build INSERT queries with a fluent interface.
Representing a group of expressions chained via OR.
static buildQuery(string $sql, $flags, string $tablePrefix='')
Holds information on Query to be executed.
Definition Query.php:31
getWriteTable()
Get the table which is being written to, or null for a read query or if the destination is unknown.
Definition Query.php:122
Raw SQL value to be used in query builders.
Build REPLACE queries with a fluent interface.
Build SELECT queries with a fluent interface.
A query builder for UNION queries takes SelectQueryBuilder objects.
Build UPDATE queries with a fluent interface.
return[0=> 'ـ', 1=> ' ', 2=> '`', 3=> '´', 4=> '˜', 5=> '^', 6=> '¯', 7=> '‾', 8=> '˘', 9=> '˙', 10=> '¨', 11=> '˚', 12=> '˝', 13=> '᾽', 14=> '῝', 15=> '¸', 16=> '˛', 17=> '_', 18=> '‗', 19=> '῀', 20=> '﮲', 21=> '﮳', 22=> '﮴', 23=> '﮵', 24=> '﮶', 25=> '﮷', 26=> '﮸', 27=> '﮹', 28=> '﮺', 29=> '﮻', 30=> '﮼', 31=> '﮽', 32=> '﮾', 33=> '﮿', 34=> '﯀', 35=> '﯁', 36=> '゛', 37=> '゜', 38=> '-', 39=> '֊', 40=> '᐀', 41=> '᭠', 42=> '᠆', 43=> '᠇', 44=> '‐', 45=> '‒', 46=> '–', 47=> '—', 48=> '―', 49=> '⁓', 50=> '⸗', 51=> '゠', 52=> '・', 53=> ',', 54=> '՝', 55=> '،', 56=> '؍', 57=> '٫', 58=> '٬', 59=> '߸', 60=> '᠂', 61=> '᠈', 62=> '꓾', 63=> '꘍', 64=> '꛵', 65=> '︑', 66=> ';', 67=> '؛', 68=> '⁏', 69=> '꛶', 70=> ':', 71=> '։', 72=> '؞', 73=> '܃', 74=> '܄', 75=> '܅', 76=> '܆', 77=> '܇', 78=> '܈', 79=> '࠰', 80=> '࠱', 81=> '࠲', 82=> '࠳', 83=> '࠴', 84=> '࠵', 85=> '࠶', 86=> '࠷', 87=> '࠸', 88=> '࠹', 89=> '࠺', 90=> '࠻', 91=> '࠼', 92=> '࠽', 93=> '࠾', 94=> '፡', 95=> '፣', 96=> '፤', 97=> '፥', 98=> '፦', 99=> '᠄', 100=> '᠅', 101=> '༔', 102=> '៖', 103=> '᭝', 104=> '꧇', 105=> '᛫', 106=> '᛬', 107=> '᛭', 108=> '꛴', 109=> '!', 110=> '¡', 111=> '՜', 112=> '߹', 113=> '᥄', 114=> '?', 115=> '¿', 116=> '⸮', 117=> '՞', 118=> '؟', 119=> '܉', 120=> '፧', 121=> '᥅', 122=> '⳺', 123=> '⳻', 124=> '꘏', 125=> '꛷', 126=> '‽', 127=> '⸘', 128=> '.', 129=> '᠁', 130=> '۔', 131=> '܁', 132=> '܂', 133=> '።', 134=> '᠃', 135=> '᠉', 136=> '᙮', 137=> '᭜', 138=> '⳹', 139=> '⳾', 140=> '⸰', 141=> '꓿', 142=> '꘎', 143=> '꛳', 144=> '︒', 145=> '·', 146=> '⸱', 147=> '।', 148=> '॥', 149=> '꣎', 150=> '꣏', 151=> '᰻', 152=> '᰼', 153=> '꡶', 154=> '꡷', 155=> '᜵', 156=> '᜶', 157=> '꤯', 158=> '၊', 159=> '။', 160=> '។', 161=> '៕', 162=> '᪨', 163=> '᪩', 164=> '᪪', 165=> '᪫', 166=> '᭞', 167=> '᭟', 168=> '꧈', 169=> '꧉', 170=> '꩝', 171=> '꩞', 172=> '꩟', 173=> '꯫', 174=> '𐩖', 175=> '𐩗', 176=> '𑁇', 177=> '𑁈', 178=> '𑃀', 179=> '𑃁', 180=> '᱾', 181=> '᱿', 182=> '܀', 183=> '߷', 184=> '჻', 185=> '፠', 186=> '፨', 187=> '᨞', 188=> '᨟', 189=> '᭚', 190=> '᭛', 191=> '꧁', 192=> '꧂', 193=> '꧃', 194=> '꧄', 195=> '꧅', 196=> '꧆', 197=> '꧊', 198=> '꧋', 199=> '꧌', 200=> '꧍', 201=> '꛲', 202=> '꥟', 203=> '𐡗', 204=> '𐬺', 205=> '𐬻', 206=> '𐬼', 207=> '𐬽', 208=> '𐬾', 209=> '𐬿', 210=> '𑂾', 211=> '𑂿', 212=> '⁕', 213=> '⁖', 214=> '⁘', 215=> '⁙', 216=> '⁚', 217=> '⁛', 218=> '⁜', 219=> '⁝', 220=> '⁞', 221=> '⸪', 222=> '⸫', 223=> '⸬', 224=> '⸭', 225=> '⳼', 226=> '⳿', 227=> '⸙', 228=> '𐤿', 229=> '𐄀', 230=> '𐄁', 231=> '𐄂', 232=> '𐎟', 233=> '𐏐', 234=> '𐤟', 235=> '𒑰', 236=> '𒑱', 237=> '𒑲', 238=> '𒑳', 239=> '\'', 240=> '‘', 241=> '’', 242=> '‚', 243=> '‛', 244=> '‹', 245=> '›', 246=> '"', 247 => '“', 248 => '”', 249 => '„', 250 => '‟', 251 => '«', 252 => '»', 253 => '(', 254 => ')', 255 => '[', 256 => ']', 257 => '{', 258 => '}', 259 => '༺', 260 => '༻', 261 => '༼', 262 => '༽', 263 => '᚛', 264 => '᚜', 265 => '⁅', 266 => '⁆', 267 => '⧼', 268 => '⧽', 269 => '⦃', 270 => '⦄', 271 => '⦅', 272 => '⦆', 273 => '⦇', 274 => '⦈', 275 => '⦉', 276 => '⦊', 277 => '⦋', 278 => '⦌', 279 => '⦍', 280 => '⦎', 281 => '⦏', 282 => '⦐', 283 => '⦑', 284 => '⦒', 285 => '⦓', 286 => '⦔', 287 => '⦕', 288 => '⦖', 289 => '⦗', 290 => '⦘', 291 => '⟬', 292 => '⟭', 293 => '⟮', 294 => '⟯', 295 => '⸂', 296 => '⸃', 297 => '⸄', 298 => '⸅', 299 => '⸉', 300 => '⸊', 301 => '⸌', 302 => '⸍', 303 => '⸜', 304 => '⸝', 305 => '⸠', 306 => '⸡', 307 => '⸢', 308 => '⸣', 309 => '⸤', 310 => '⸥', 311 => '⸦', 312 => '⸧', 313 => '⸨', 314 => '⸩', 315 => '〈', 316 => '〉', 317 => '「', 318 => '」', 319 => '﹝', 320 => '﹞', 321 => '︗', 322 => '︘', 323 => '﴾', 324 => '﴿', 325 => '§', 326 => '¶', 327 => '⁋', 328 => '©', 329 => '®', 330 => '@', 331 => '*', 332 => '⁎', 333 => '⁑', 334 => '٭', 335 => '꙳', 336 => '/', 337 => '⁄', 338 => '\\', 339 => '&', 340 => '⅋', 341 => '⁊', 342 => '#', 343 => '%', 344 => '٪', 345 => '‰', 346 => '؉', 347 => '‱', 348 => '؊', 349 => '⁒', 350 => '†', 351 => '‡', 352 => '•', 353 => '‣', 354 => '‧', 355 => '⁃', 356 => '⁌', 357 => '⁍', 358 => '′', 359 => '‵', 360 => '‸', 361 => '※', 362 => '‿', 363 => '⁔', 364 => '⁀', 365 => '⁐', 366 => '⁁', 367 => '⁂', 368 => '⸀', 369 => '⸁', 370 => '⸆', 371 => '⸇', 372 => '⸈', 373 => '⸋', 374 => '⸎', 375 => '⸏', 376 => '⸐', 377 => '⸑', 378 => '⸒', 379 => '⸓', 380 => '⸔', 381 => '⸕', 382 => '⸖', 383 => '⸚', 384 => '⸛', 385 => '⸞', 386 => '⸟', 387 => '꙾', 388 => '՚', 389 => '՛', 390 => '՟', 391 => '־', 392 => '׀', 393 => '׃', 394 => '׆', 395 => '׳', 396 => '״', 397 => '܊', 398 => '܋', 399 => '܌', 400 => '܍', 401 => '࡞', 402 => '᠀', 403 => '॰', 404 => '꣸', 405 => '꣹', 406 => '꣺', 407 => '෴', 408 => '๚', 409 => '๛', 410 => '꫞', 411 => '꫟', 412 => '༄', 413 => '༅', 414 => '༆', 415 => '༇', 416 => '༈', 417 => '༉', 418 => '༊', 419 => '࿐', 420 => '࿑', 421 => '་', 422 => '།', 423 => '༎', 424 => '༏', 425 => '༐', 426 => '༑', 427 => '༒', 428 => '྅', 429 => '࿒', 430 => '࿓', 431 => '࿔', 432 => '࿙', 433 => '࿚', 434 => '᰽', 435 => '᰾', 436 => '᰿', 437 => '᥀', 438 => '၌', 439 => '၍', 440 => '၎', 441 => '၏', 442 => '႞', 443 => '႟', 444 => '꩷', 445 => '꩸', 446 => '꩹', 447 => 'ៗ', 448 => '៘', 449 => '៙', 450 => '៚', 451 => '᪠', 452 => '᪡', 453 => '᪢', 454 => '᪣', 455 => '᪤', 456 => '᪥', 457 => '᪦', 458 => '᪬', 459 => '᪭', 460 => '᙭', 461 => '⵰', 462 => '꡴', 463 => '꡵', 464 => '᯼', 465 => '᯽', 466 => '᯾', 467 => '᯿', 468 => '꤮', 469 => '꧞', 470 => '꧟', 471 => '꩜', 472 => '𑁉', 473 => '𑁊', 474 => '𑁋', 475 => '𑁌', 476 => '𑁍', 477 => '𐩐', 478 => '𐩑', 479 => '𐩒', 480 => '𐩓', 481 => '𐩔', 482 => '𐩕', 483 => '𐩘', 484 => '𐬹', 485 => '𑂻', 486 => '𑂼', 487 => 'ʹ', 488 => '͵', 489 => 'ʺ', 490 => '˂', 491 => '˃', 492 => '˄', 493 => '˅', 494 => 'ˆ', 495 => 'ˇ', 496 => 'ˈ', 497 => 'ˉ', 498 => 'ˊ', 499 => 'ˋ', 500 => 'ˌ', 501 => 'ˍ', 502 => 'ˎ', 503 => 'ˏ', 504 => '˒', 505 => '˓', 506 => '˔', 507 => '˕', 508 => '˖', 509 => '˗', 510 => '˞', 511 => '˟', 512 => '˥', 513 => '˦', 514 => '˧', 515 => '˨', 516 => '˩', 517 => '˪', 518 => '˫', 519 => 'ˬ', 520 => '˭', 521 => '˯', 522 => '˰', 523 => '˱', 524 => '˲', 525 => '˳', 526 => '˴', 527 => '˵', 528 => '˶', 529 => '˷', 530 => '˸', 531 => '˹', 532 => '˺', 533 => '˻', 534 => '˼', 535 => '˽', 536 => '˾', 537 => '˿', 538 => '᎐', 539 => '᎑', 540 => '᎒', 541 => '᎓', 542 => '᎔', 543 => '᎕', 544 => '᎖', 545 => '᎗', 546 => '᎘', 547 => '᎙', 548 => '꜀', 549 => '꜁', 550 => '꜂', 551 => '꜃', 552 => '꜄', 553 => '꜅', 554 => '꜆', 555 => '꜇', 556 => '꜈', 557 => '꜉', 558 => '꜊', 559 => '꜋', 560 => '꜌', 561 => '꜍', 562 => '꜎', 563 => '꜏', 564 => '꜐', 565 => '꜑', 566 => '꜒', 567 => '꜓', 568 => '꜔', 569 => '꜕', 570 => '꜖', 571 => 'ꜗ', 572 => 'ꜘ', 573 => 'ꜙ', 574 => 'ꜚ', 575 => 'ꜛ', 576 => 'ꜜ', 577 => 'ꜝ', 578 => 'ꜞ', 579 => 'ꜟ', 580 => '꜠', 581 => '꜡', 582 => 'ꞈ', 583 => '꞉', 584 => '꞊', 585 => '°', 586 => '҂', 587 => '؈', 588 => '؎', 589 => '؏', 590 => '۞', 591 => '۩', 592 => '﷽', 593 => '߶', 594 => '৺', 595 => '୰', 596 => '௳', 597 => '௴', 598 => '௵', 599 => '௶', 600 => '௷', 601 => '௸', 602 => '௺', 603 => '౿', 604 => '൹', 605 => '꠨', 606 => '꠩', 607 => '꠪', 608 => '꠫', 609 => '꠶', 610 => '꠷', 611 => '꠹', 612 => '๏', 613 => '༁', 614 => '༂', 615 => '༃', 616 => '༓', 617 => '༕', 618 => '༖', 619 => '༗', 620 => '༚', 621 => '༛', 622 => '༜', 623 => '༝', 624 => '༞', 625 => '༟', 626 => '༴', 627 => '༶', 628 => '༸', 629 => '྾', 630 => '྿', 631 => '࿀', 632 => '࿁', 633 => '࿂', 634 => '࿃', 635 => '࿄', 636 => '࿅', 637 => '࿇', 638 => '࿈', 639 => '࿉', 640 => '࿊', 641 => '࿋', 642 => '࿌', 643 => '࿎', 644 => '࿏', 645 => '࿕', 646 => '࿖', 647 => '࿗', 648 => '࿘', 649 => '᧠', 650 => '᧡', 651 => '᧢', 652 => '᧣', 653 => '᧤', 654 => '᧥', 655 => '᧦', 656 => '᧧', 657 => '᧨', 658 => '᧩', 659 => '᧪', 660 => '᧫', 661 => '᧬', 662 => '᧭', 663 => '᧮', 664 => '᧯', 665 => '᧰', 666 => '᧱', 667 => '᧲', 668 => '᧳', 669 => '᧴', 670 => '᧵', 671 => '᧶', 672 => '᧷', 673 => '᧸', 674 => '᧹', 675 => '᧺', 676 => '᧻', 677 => '᧼', 678 => '᧽', 679 => '᧾', 680 => '᧿', 681 => '᭡', 682 => '᭢', 683 => '᭣', 684 => '᭤', 685 => '᭥', 686 => '᭦', 687 => '᭧', 688 => '᭨', 689 => '᭩', 690 => '᭪', 691 => '᭴', 692 => '᭵', 693 => '᭶', 694 => '᭷', 695 => '᭸', 696 => '᭹', 697 => '᭺', 698 => '᭻', 699 => '᭼', 700 => '℄', 701 => '℈', 702 => '℔', 703 => '℗', 704 => '℘', 705 => '℞', 706 => '℟', 707 => '℣', 708 => '℥', 709 => '℧', 710 => '℩', 711 => '℮', 712 => '℺', 713 => '⅁', 714 => '⅂', 715 => '⅃', 716 => '⅄', 717 => '⅊', 718 => '⅌', 719 => '⅍', 720 => '⅏', 721 => '←', 722 => '→', 723 => '↑', 724 => '↓', 725 => '↔', 726 => '↕', 727 => '↖', 728 => '↗', 729 => '↘', 730 => '↙', 731 => '↜', 732 => '↝', 733 => '↞', 734 => '↟', 735 => '↠', 736 => '↡', 737 => '↢', 738 => '↣', 739 => '↤', 740 => '↥', 741 => '↦', 742 => '↧', 743 => '↨', 744 => '↩', 745 => '↪', 746 => '↫', 747 => '↬', 748 => '↭', 749 => '↯', 750 => '↰', 751 => '↱', 752 => '↲', 753 => '↳', 754 => '↴', 755 => '↵', 756 => '↶', 757 => '↷', 758 => '↸', 759 => '↹', 760 => '↺', 761 => '↻', 762 => '↼', 763 => '↽', 764 => '↾', 765 => '↿', 766 => '⇀', 767 => '⇁', 768 => '⇂', 769 => '⇃', 770 => '⇄', 771 => '⇅', 772 => '⇆', 773 => '⇇', 774 => '⇈', 775 => '⇉', 776 => '⇊', 777 => '⇋', 778 => '⇌', 779 => '⇐', 780 => '⇑', 781 => '⇒', 782 => '⇓', 783 => '⇔', 784 => '⇕', 785 => '⇖', 786 => '⇗', 787 => '⇘', 788 => '⇙', 789 => '⇚', 790 => '⇛', 791 => '⇜', 792 => '⇝', 793 => '⇞', 794 => '⇟', 795 => '⇠', 796 => '⇡', 797 => '⇢', 798 => '⇣', 799 => '⇤', 800 => '⇥', 801 => '⇦', 802 => '⇧', 803 => '⇨', 804 => '⇩', 805 => '⇪', 806 => '⇫', 807 => '⇬', 808 => '⇭', 809 => '⇮', 810 => '⇯', 811 => '⇰', 812 => '⇱', 813 => '⇲', 814 => '⇳', 815 => '⇴', 816 => '⇵', 817 => '⇶', 818 => '⇷', 819 => '⇸', 820 => '⇹', 821 => '⇺', 822 => '⇻', 823 => '⇼', 824 => '⇽', 825 => '⇾', 826 => '⇿', 827 => '∀', 828 => '∁', 829 => '∂', 830 => '∃', 831 => '∅', 832 => '∆', 833 => '∇', 834 => '∈', 835 => '∊', 836 => '∋', 837 => '∍', 838 => '϶', 839 => '∎', 840 => '∏', 841 => '∐', 842 => '∑', 843 => '+', 844 => '±', 845 => '÷', 846 => '×', 847 => '<', 848 => '=', 849 => '>', 850 => '¬', 851 => '|', 852 => '¦', 853 => '‖', 854 => '~', 855 => '−', 856 => '∓', 857 => '∔', 858 => '∕', 859 => '∖', 860 => '∗', 861 => '∘', 862 => '∙', 863 => '√', 864 => '∛', 865 => '؆', 866 => '∜', 867 => '؇', 868 => '∝', 869 => '∞', 870 => '∟', 871 => '∠', 872 => '∡', 873 => '∢', 874 => '∣', 875 => '∥', 876 => '∧', 877 => '∨', 878 => '∩', 879 => '∪', 880 => '∫', 881 => '∮', 882 => '∱', 883 => '∲', 884 => '∳', 885 => '∴', 886 => '∵', 887 => '∶', 888 => '∷', 889 => '∸', 890 => '∹', 891 => '∺', 892 => '∻', 893 => '∼', 894 => '∽', 895 => '∾', 896 => '∿', 897 => '≀', 898 => '≂', 899 => '≃', 900 => '≅', 901 => '≆', 902 => '≈', 903 => '≊', 904 => '≋', 905 => '≌', 906 => '≍', 907 => '≎', 908 => '≏', 909 => '≐', 910 => '≑', 911 => '≒', 912 => '≓', 913 => '≔', 914 => '≕', 915 => '≖', 916 => '≗', 917 => '≘', 918 => '≙', 919 => '≚', 920 => '≛', 921 => '≜', 922 => '≝', 923 => '≞', 924 => '≟', 925 => '≡', 926 => '≣', 927 => '≤', 928 => '≥', 929 => '≦', 930 => '≧', 931 => '≨', 932 => '≩', 933 => '≪', 934 => '≫', 935 => '≬', 936 => '≲', 937 => '≳', 938 => '≶', 939 => '≷', 940 => '≺', 941 => '≻', 942 => '≼', 943 => '≽', 944 => '≾', 945 => '≿', 946 => '⊂', 947 => '⊃', 948 => '⊆', 949 => '⊇', 950 => '⊊', 951 => '⊋', 952 => '⊌', 953 => '⊍', 954 => '⊎', 955 => '⊏', 956 => '⊐', 957 => '⊑', 958 => '⊒', 959 => '⊓', 960 => '⊔', 961 => '⊕', 962 => '⊖', 963 => '⊗', 964 => '⊘', 965 => '⊙', 966 => '⊚', 967 => '⊛', 968 => '⊜', 969 => '⊝', 970 => '⊞', 971 => '⊟', 972 => '⊠', 973 => '⊡', 974 => '⊢', 975 => '⊣', 976 => '⊤', 977 => '⊥', 978 => '⊦', 979 => '⊧', 980 => '⊨', 981 => '⊩', 982 => '⊪', 983 => '⊫', 984 => '⊰', 985 => '⊱', 986 => '⊲', 987 => '⊳', 988 => '⊴', 989 => '⊵', 990 => '⊶', 991 => '⊷', 992 => '⊸', 993 => '⊹', 994 => '⊺', 995 => '⊻', 996 => '⊼', 997 => '⊽', 998 => '⊾', 999 => '⊿', 1000 => '⋀', 1001 => '⋁', 1002 => '⋂', 1003 => '⋃', 1004 => '⋄', 1005 => '⋅', 1006 => '⋆', 1007 => '⋇', 1008 => '⋈', 1009 => '⋉', 1010 => '⋊', 1011 => '⋋', 1012 => '⋌', 1013 => '⋍', 1014 => '⋎', 1015 => '⋏', 1016 => '⋐', 1017 => '⋑', 1018 => '⋒', 1019 => '⋓', 1020 => '⋔', 1021 => '⋕', 1022 => '⋖', 1023 => '⋗', 1024 => '⋘', 1025 => '⋙', 1026 => '⋚', 1027 => '⋛', 1028 => '⋜', 1029 => '⋝', 1030 => '⋞', 1031 => '⋟', 1032 => '⋤', 1033 => '⋥', 1034 => '⋦', 1035 => '⋧', 1036 => '⋨', 1037 => '⋩', 1038 => '⋮', 1039 => '⋯', 1040 => '⋰', 1041 => '⋱', 1042 => '⋲', 1043 => '⋳', 1044 => '⋴', 1045 => '⋵', 1046 => '⋶', 1047 => '⋷', 1048 => '⋸', 1049 => '⋹', 1050 => '⋺', 1051 => '⋻', 1052 => '⋼', 1053 => '⋽', 1054 => '⋾', 1055 => '⋿', 1056 => '⌀', 1057 => '⌁', 1058 => '⌂', 1059 => '⌃', 1060 => '⌄', 1061 => '⌅', 1062 => '⌆', 1063 => '⌇', 1064 => '⌈', 1065 => '⌉', 1066 => '⌊', 1067 => '⌋', 1068 => '⌌', 1069 => '⌍', 1070 => '⌎', 1071 => '⌏', 1072 => '⌐', 1073 => '⌑', 1074 => '⌒', 1075 => '⌓', 1076 => '⌔', 1077 => '⌕', 1078 => '⌖', 1079 => '⌗', 1080 => '⌘', 1081 => '⌙', 1082 => '⌚', 1083 => '⌛', 1084 => '⌜', 1085 => '⌝', 1086 => '⌞', 1087 => '⌟', 1088 => '⌠', 1089 => '⌡', 1090 => '⌢', 1091 => '⌣', 1092 => '⌤', 1093 => '⌥', 1094 => '⌦', 1095 => '⌧', 1096 => '⌨', 1097 => '⌫', 1098 => '⌬', 1099 => '⌭', 1100 => '⌮', 1101 => '⌯', 1102 => '⌰', 1103 => '⌱', 1104 => '⌲', 1105 => '⌳', 1106 => '⌴', 1107 => '⌵', 1108 => '⌶', 1109 => '⌷', 1110 => '⌸', 1111 => '⌹', 1112 => '⌺', 1113 => '⌻', 1114 => '⌼', 1115 => '⌽', 1116 => '⌾', 1117 => '⌿', 1118 => '⍀', 1119 => '⍁', 1120 => '⍂', 1121 => '⍃', 1122 => '⍄', 1123 => '⍅', 1124 => '⍆', 1125 => '⍇', 1126 => '⍈', 1127 => '⍉', 1128 => '⍊', 1129 => '⍋', 1130 => '⍌', 1131 => '⍍', 1132 => '⍎', 1133 => '⍏', 1134 => '⍐', 1135 => '⍑', 1136 => '⍒', 1137 => '⍓', 1138 => '⍔', 1139 => '⍕', 1140 => '⍖', 1141 => '⍗', 1142 => '⍘', 1143 => '⍙', 1144 => '⍚', 1145 => '⍛', 1146 => '⍜', 1147 => '⍝', 1148 => '⍞', 1149 => '⍟', 1150 => '⍠', 1151 => '⍡', 1152 => '⍢', 1153 => '⍣', 1154 => '⍤', 1155 => '⍥', 1156 => '⍦', 1157 => '⍧', 1158 => '⍨', 1159 => '⍩', 1160 => '⍪', 1161 => '⍫', 1162 => '⍬', 1163 => '⍭', 1164 => '⍮', 1165 => '⍯', 1166 => '⍰', 1167 => '⍱', 1168 => '⍲', 1169 => '⍳', 1170 => '⍴', 1171 => '⍵', 1172 => '⍶', 1173 => '⍷', 1174 => '⍸', 1175 => '⍹', 1176 => '⍺', 1177 => '⍻', 1178 => '⍼', 1179 => '⍽', 1180 => '⍾', 1181 => '⍿', 1182 => '⎀', 1183 => '⎁', 1184 => '⎂', 1185 => '⎃', 1186 => '⎄', 1187 => '⎅', 1188 => '⎆', 1189 => '⎇', 1190 => '⎈', 1191 => '⎉', 1192 => '⎊', 1193 => '⎋', 1194 => '⎌', 1195 => '⎍', 1196 => '⎎', 1197 => '⎏', 1198 => '⎐', 1199 => '⎑', 1200 => '⎒', 1201 => '⎓', 1202 => '⎔', 1203 => '⎕', 1204 => '⎖', 1205 => '⎗', 1206 => '⎘', 1207 => '⎙', 1208 => '⎚', 1209 => '⎛', 1210 => '⎜', 1211 => '⎝', 1212 => '⎞', 1213 => '⎟', 1214 => '⎠', 1215 => '⎡', 1216 => '⎢', 1217 => '⎣', 1218 => '⎤', 1219 => '⎥', 1220 => '⎦', 1221 => '⎧', 1222 => '⎨', 1223 => '⎩', 1224 => '⎪', 1225 => '⎫', 1226 => '⎬', 1227 => '⎭', 1228 => '⎮', 1229 => '⎯', 1230 => '⎰', 1231 => '⎱', 1232 => '⎲', 1233 => '⎳', 1234 => '⎴', 1235 => '⎵', 1236 => '⎶', 1237 => '⎷', 1238 => '⎸', 1239 => '⎹', 1240 => '⎺', 1241 => '⎻', 1242 => '⎼', 1243 => '⎽', 1244 => '⎾', 1245 => '⎿', 1246 => '⏀', 1247 => '⏁', 1248 => '⏂', 1249 => '⏃', 1250 => '⏄', 1251 => '⏅', 1252 => '⏆', 1253 => '⏇', 1254 => '⏈', 1255 => '⏉', 1256 => '⏊', 1257 => '⏋', 1258 => '⏌', 1259 => '⏍', 1260 => '⏎', 1261 => '⏏', 1262 => '⏐', 1263 => '⏑', 1264 => '⏒', 1265 => '⏓', 1266 => '⏔', 1267 => '⏕', 1268 => '⏖', 1269 => '⏗', 1270 => '⏘', 1271 => '⏙', 1272 => '⏚', 1273 => '⏛', 1274 => '⏜', 1275 => '⏝', 1276 => '⏞', 1277 => '⏟', 1278 => '⏠', 1279 => '⏡', 1280 => '⏢', 1281 => '⏣', 1282 => '⏤', 1283 => '⏥', 1284 => '⏦', 1285 => '⏧', 1286 => '⏨', 1287 => '⏩', 1288 => '⏪', 1289 => '⏫', 1290 => '⏬', 1291 => '⏭', 1292 => '⏮', 1293 => '⏯', 1294 => '⏰', 1295 => '⏱', 1296 => '⏲', 1297 => '⏳', 1298 => '␀', 1299 => '␁', 1300 => '␂', 1301 => '␃', 1302 => '␄', 1303 => '␅', 1304 => '␆', 1305 => '␇', 1306 => '␈', 1307 => '␉', 1308 => '␊', 1309 => '␋', 1310 => '␌', 1311 => '␍', 1312 => '␎', 1313 => '␏', 1314 => '␐', 1315 => '␑', 1316 => '␒', 1317 => '␓', 1318 => '␔', 1319 => '␕', 1320 => '␖', 1321 => '␗', 1322 => '␘', 1323 => '␙', 1324 => '␚', 1325 => '␛', 1326 => '␜', 1327 => '␝', 1328 => '␞', 1329 => '␟', 1330 => '␠', 1331 => '␡', 1332 => '␢', 1333 => '␣', 1334 => '␤', 1335 => '␥', 1336 => '␦', 1337 => '⑀', 1338 => '⑁', 1339 => '⑂', 1340 => '⑃', 1341 => '⑄', 1342 => '⑅', 1343 => '⑆', 1344 => '⑇', 1345 => '⑈', 1346 => '⑉', 1347 => '⑊', 1348 => '─', 1349 => '━', 1350 => '│', 1351 => '┃', 1352 => '┄', 1353 => '┅', 1354 => '┆', 1355 => '┇', 1356 => '┈', 1357 => '┉', 1358 => '┊', 1359 => '┋', 1360 => '┌', 1361 => '┍', 1362 => '┎', 1363 => '┏', 1364 => '┐', 1365 => '┑', 1366 => '┒', 1367 => '┓', 1368 => '└', 1369 => '┕', 1370 => '┖', 1371 => '┗', 1372 => '┘', 1373 => '┙', 1374 => '┚', 1375 => '┛', 1376 => '├', 1377 => '┝', 1378 => '┞', 1379 => '┟', 1380 => '┠', 1381 => '┡', 1382 => '┢', 1383 => '┣', 1384 => '┤', 1385 => '┥', 1386 => '┦', 1387 => '┧', 1388 => '┨', 1389 => '┩', 1390 => '┪', 1391 => '┫', 1392 => '┬', 1393 => '┭', 1394 => '┮', 1395 => '┯', 1396 => '┰', 1397 => '┱', 1398 => '┲', 1399 => '┳', 1400 => '┴', 1401 => '┵', 1402 => '┶', 1403 => '┷', 1404 => '┸', 1405 => '┹', 1406 => '┺', 1407 => '┻', 1408 => '┼', 1409 => '┽', 1410 => '┾', 1411 => '┿', 1412 => '╀', 1413 => '╁', 1414 => '╂', 1415 => '╃', 1416 => '╄', 1417 => '╅', 1418 => '╆', 1419 => '╇', 1420 => '╈', 1421 => '╉', 1422 => '╊', 1423 => '╋', 1424 => '╌', 1425 => '╍', 1426 => '╎', 1427 => '╏', 1428 => '═', 1429 => '║', 1430 => '╒', 1431 => '╓', 1432 => '╔', 1433 => '╕', 1434 => '╖', 1435 => '╗', 1436 => '╘', 1437 => '╙', 1438 => '╚', 1439 => '╛', 1440 => '╜', 1441 => '╝', 1442 => '╞', 1443 => '╟', 1444 => '╠', 1445 => '╡', 1446 => '╢', 1447 => '╣', 1448 => '╤', 1449 => '╥', 1450 => '╦', 1451 => '╧', 1452 => '╨', 1453 => '╩', 1454 => '╪', 1455 => '╫', 1456 => '╬', 1457 => '╭', 1458 => '╮', 1459 => '╯', 1460 => '╰', 1461 => '╱', 1462 => '╲', 1463 => '╳', 1464 => '╴', 1465 => '╵', 1466 => '╶', 1467 => '╷', 1468 => '╸', 1469 => '╹', 1470 => '╺', 1471 => '╻', 1472 => '╼', 1473 => '╽', 1474 => '╾', 1475 => '╿', 1476 => '▀', 1477 => '▁', 1478 => '▂', 1479 => '▃', 1480 => '▄', 1481 => '▅', 1482 => '▆', 1483 => '▇', 1484 => '█', 1485 => '▉', 1486 => '▊', 1487 => '▋', 1488 => '▌', 1489 => '▍', 1490 => '▎', 1491 => '▏', 1492 => '▐', 1493 => '░', 1494 => '▒', 1495 => '▓', 1496 => '▔', 1497 => '▕', 1498 => '▖', 1499 => '▗', 1500 => '▘', 1501 => '▙', 1502 => '▚', 1503 => '▛', 1504 => '▜', 1505 => '▝', 1506 => '▞', 1507 => '▟', 1508 => '■', 1509 => '□', 1510 => '▢', 1511 => '▣', 1512 => '▤', 1513 => '▥', 1514 => '▦', 1515 => '▧', 1516 => '▨', 1517 => '▩', 1518 => '▪', 1519 => '▫', 1520 => '▬', 1521 => '▭', 1522 => '▮', 1523 => '▯', 1524 => '▰', 1525 => '▱', 1526 => '▲', 1527 => '△', 1528 => '▴', 1529 => '▵', 1530 => '▶', 1531 => '▷', 1532 => '▸', 1533 => '▹', 1534 => '►', 1535 => '▻', 1536 => '▼', 1537 => '▽', 1538 => '▾', 1539 => '▿', 1540 => '◀', 1541 => '◁', 1542 => '◂', 1543 => '◃', 1544 => '◄', 1545 => '◅', 1546 => '◆', 1547 => '◇', 1548 => '◈', 1549 => '◉', 1550 => '◊', 1551 => '○', 1552 => '◌', 1553 => '◍', 1554 => '◎', 1555 => '●', 1556 => '◐', 1557 => '◑', 1558 => '◒', 1559 => '◓', 1560 => '◔', 1561 => '◕', 1562 => '◖', 1563 => '◗', 1564 => '◘', 1565 => '◙', 1566 => '◚', 1567 => '◛', 1568 => '◜', 1569 => '◝', 1570 => '◞', 1571 => '◟', 1572 => '◠', 1573 => '◡', 1574 => '◢', 1575 => '◣', 1576 => '◤', 1577 => '◥', 1578 => '◦', 1579 => '◧', 1580 => '◨', 1581 => '◩', 1582 => '◪', 1583 => '◫', 1584 => '◬', 1585 => '◭', 1586 => '◮', 1587 => '◯', 1588 => '◰', 1589 => '◱', 1590 => '◲', 1591 => '◳', 1592 => '◴', 1593 => '◵', 1594 => '◶', 1595 => '◷', 1596 => '◸', 1597 => '◹', 1598 => '◺', 1599 => '◻', 1600 => '◼', 1601 => '◽', 1602 => '◾', 1603 => '◿', 1604 => '☀', 1605 => '☁', 1606 => '☂', 1607 => '☃', 1608 => '☄', 1609 => '★', 1610 => '☆', 1611 => '☇', 1612 => '☈', 1613 => '☉', 1614 => '☊', 1615 => '☋', 1616 => '☌', 1617 => '☍', 1618 => '☎', 1619 => '☏', 1620 => '☐', 1621 => '☑', 1622 => '☒', 1623 => '☓', 1624 => '☔', 1625 => '☕', 1626 => '☖', 1627 => '☗', 1628 => '☘', 1629 => '☙', 1630 => '☚', 1631 => '☛', 1632 => '☜', 1633 => '☝', 1634 => '☞', 1635 => '☟', 1636 => '☠', 1637 => '☡', 1638 => '☢', 1639 => '☣', 1640 => '☤', 1641 => '☥', 1642 => '☦', 1643 => '☧', 1644 => '☨', 1645 => '☩', 1646 => '☪', 1647 => '☫', 1648 => '☬', 1649 => '☭', 1650 => '☮', 1651 => '☯', 1652 => '☸', 1653 => '☹', 1654 => '☺', 1655 => '☻', 1656 => '☼', 1657 => '☽', 1658 => '☾', 1659 => '☿', 1660 => '♀', 1661 => '♁', 1662 => '♂', 1663 => '♃', 1664 => '♄', 1665 => '♅', 1666 => '♆', 1667 => '♇', 1668 => '♈', 1669 => '♉', 1670 => '♊', 1671 => '♋', 1672 => '♌', 1673 => '♍', 1674 => '♎', 1675 => '♏', 1676 => '♐', 1677 => '♑', 1678 => '♒', 1679 => '♓', 1680 => '♔', 1681 => '♕', 1682 => '♖', 1683 => '♗', 1684 => '♘', 1685 => '♙', 1686 => '♚', 1687 => '♛', 1688 => '♜', 1689 => '♝', 1690 => '♞', 1691 => '♟', 1692 => '♠', 1693 => '♡', 1694 => '♢', 1695 => '♣', 1696 => '♤', 1697 => '♥', 1698 => '♦', 1699 => '♧', 1700 => '♨', 1701 => '♩', 1702 => '♪', 1703 => '♫', 1704 => '♬', 1705 => '♰', 1706 => '♱', 1707 => '♲', 1708 => '♳', 1709 => '♴', 1710 => '♵', 1711 => '♶', 1712 => '♷', 1713 => '♸', 1714 => '♹', 1715 => '♺', 1716 => '♻', 1717 => '♼', 1718 => '♽', 1719 => '♾', 1720 => '♿', 1721 => '⚀', 1722 => '⚁', 1723 => '⚂', 1724 => '⚃', 1725 => '⚄', 1726 => '⚅', 1727 => '⚆', 1728 => '⚇', 1729 => '⚈', 1730 => '⚉', 1731 => '⚐', 1732 => '⚑', 1733 => '⚒', 1734 => '⚓', 1735 => '⚔', 1736 => '⚕', 1737 => '⚖', 1738 => '⚗', 1739 => '⚘', 1740 => '⚙', 1741 => '⚚', 1742 => '⚛', 1743 => '⚜', 1744 => '⚝', 1745 => '⚞', 1746 => '⚟', 1747 => '⚠', 1748 => '⚡', 1749 => '⚢', 1750 => '⚣', 1751 => '⚤', 1752 => '⚥', 1753 => '⚦', 1754 => '⚧', 1755 => '⚨', 1756 => '⚩', 1757 => '⚪', 1758 => '⚫', 1759 => '⚬', 1760 => '⚭', 1761 => '⚮', 1762 => '⚯', 1763 => '⚰', 1764 => '⚱', 1765 => '⚲', 1766 => '⚳', 1767 => '⚴', 1768 => '⚵', 1769 => '⚶', 1770 => '⚷', 1771 => '⚸', 1772 => '⚹', 1773 => '⚺', 1774 => '⚻', 1775 => '⚼', 1776 => '⚽', 1777 => '⚾', 1778 => '⚿', 1779 => '⛀', 1780 => '⛁', 1781 => '⛂', 1782 => '⛃', 1783 => '⛄', 1784 => '⛅', 1785 => '⛆', 1786 => '⛇', 1787 => '⛈', 1788 => '⛉', 1789 => '⛊', 1790 => '⛋', 1791 => '⛌', 1792 => '⛍', 1793 => '⛎', 1794 => '⛏', 1795 => '⛐', 1796 => '⛑', 1797 => '⛒', 1798 => '⛓', 1799 => '⛔', 1800 => '⛕', 1801 => '⛖', 1802 => '⛗', 1803 => '⛘', 1804 => '⛙', 1805 => '⛚', 1806 => '⛛', 1807 => '⛜', 1808 => '⛝', 1809 => '⛞', 1810 => '⛟', 1811 => '⛠', 1812 => '⛡', 1813 => '⛢', 1814 => '⛣', 1815 => '⛤', 1816 => '⛥', 1817 => '⛦', 1818 => '⛧', 1819 => '⛨', 1820 => '⛩', 1821 => '⛪', 1822 => '⛫', 1823 => '⛬', 1824 => '⛭', 1825 => '⛮', 1826 => '⛯', 1827 => '⛰', 1828 => '⛱', 1829 => '⛲', 1830 => '⛳', 1831 => '⛴', 1832 => '⛵', 1833 => '⛶', 1834 => '⛷', 1835 => '⛸', 1836 => '⛹', 1837 => '⛺', 1838 => '⛻', 1839 => '⛼', 1840 => '⛽', 1841 => '⛾', 1842 => '⛿', 1843 => '✁', 1844 => '✂', 1845 => '✃', 1846 => '✄', 1847 => '✅', 1848 => '✆', 1849 => '✇', 1850 => '✈', 1851 => '✉', 1852 => '✊', 1853 => '✋', 1854 => '✌', 1855 => '✍', 1856 => '✎', 1857 => '✏', 1858 => '✐', 1859 => '✑', 1860 => '✒', 1861 => '✓', 1862 => '✔', 1863 => '✕', 1864 => '✖', 1865 => '✗', 1866 => '✘', 1867 => '✙', 1868 => '✚', 1869 => '✛', 1870 => '✜', 1871 => '✝', 1872 => '✞', 1873 => '✟', 1874 => '✠', 1875 => '✡', 1876 => '✢', 1877 => '✣', 1878 => '✤', 1879 => '✥', 1880 => '✦', 1881 => '✧', 1882 => '✨', 1883 => '✩', 1884 => '✪', 1885 => '✫', 1886 => '✬', 1887 => '✭', 1888 => '✮', 1889 => '✯', 1890 => '✰', 1891 => '✱', 1892 => '✲', 1893 => '✳', 1894 => '✴', 1895 => '✵', 1896 => '✶', 1897 => '✷', 1898 => '✸', 1899 => '✹', 1900 => '✺', 1901 => '✻', 1902 => '✼', 1903 => '✽', 1904 => '✾', 1905 => '✿', 1906 => '❀', 1907 => '❁', 1908 => '❂', 1909 => '❃', 1910 => '❄', 1911 => '❅', 1912 => '❆', 1913 => '❇', 1914 => '❈', 1915 => '❉', 1916 => '❊', 1917 => '❋', 1918 => '❌', 1919 => '❍', 1920 => '❎', 1921 => '❏', 1922 => '❐', 1923 => '❑', 1924 => '❒', 1925 => '❓', 1926 => '❔', 1927 => '❕', 1928 => '❖', 1929 => '❗', 1930 => '❘', 1931 => '❙', 1932 => '❚', 1933 => '❛', 1934 => '❜', 1935 => '❝', 1936 => '❞', 1937 => '❟', 1938 => '❠', 1939 => '❡', 1940 => '❢', 1941 => '❣', 1942 => '❤', 1943 => '❥', 1944 => '❦', 1945 => '❧', 1946 => '❨', 1947 => '❩', 1948 => '❪', 1949 => '❫', 1950 => '❬', 1951 => '❭', 1952 => '❮', 1953 => '❯', 1954 => '❰', 1955 => '❱', 1956 => '❲', 1957 => '❳', 1958 => '❴', 1959 => '❵', 1960 => '➔', 1961 => '➕', 1962 => '➖', 1963 => '➗', 1964 => '➘', 1965 => '➙', 1966 => '➚', 1967 => '➛', 1968 => '➜', 1969 => '➝', 1970 => '➞', 1971 => '➟', 1972 => '➠', 1973 => '➡', 1974 => '➢', 1975 => '➣', 1976 => '➤', 1977 => '➥', 1978 => '➦', 1979 => '➧', 1980 => '➨', 1981 => '➩', 1982 => '➪', 1983 => '➫', 1984 => '➬', 1985 => '➭', 1986 => '➮', 1987 => '➯', 1988 => '➰', 1989 => '➱', 1990 => '➲', 1991 => '➳', 1992 => '➴', 1993 => '➵', 1994 => '➶', 1995 => '➷', 1996 => '➸', 1997 => '➹', 1998 => '➺', 1999 => '➻', 2000 => '➼', 2001 => '➽', 2002 => '➾', 2003 => '➿', 2004 => '⟀', 2005 => '⟁', 2006 => '⟂', 2007 => '⟃', 2008 => '⟄', 2009 => '⟅', 2010 => '⟆', 2011 => '⟇', 2012 => '⟈', 2013 => '⟉', 2014 => '⟊', 2015 => '⟌', 2016 => '⟎', 2017 => '⟏', 2018 => '⟐', 2019 => '⟑', 2020 => '⟒', 2021 => '⟓', 2022 => '⟔', 2023 => '⟕', 2024 => '⟖', 2025 => '⟗', 2026 => '⟘', 2027 => '⟙', 2028 => '⟚', 2029 => '⟛', 2030 => '⟜', 2031 => '⟝', 2032 => '⟞', 2033 => '⟟', 2034 => '⟠', 2035 => '⟡', 2036 => '⟢', 2037 => '⟣', 2038 => '⟤', 2039 => '⟥', 2040 => '⟦', 2041 => '⟧', 2042 => '⟨', 2043 => '⟩', 2044 => '⟪', 2045 => '⟫', 2046 => '⟰', 2047 => '⟱', 2048 => '⟲', 2049 => '⟳', 2050 => '⟴', 2051 => '⟵', 2052 => '⟶', 2053 => '⟷', 2054 => '⟸', 2055 => '⟹', 2056 => '⟺', 2057 => '⟻', 2058 => '⟼', 2059 => '⟽', 2060 => '⟾', 2061 => '⟿', 2062 => '⤀', 2063 => '⤁', 2064 => '⤂', 2065 => '⤃', 2066 => '⤄', 2067 => '⤅', 2068 => '⤆', 2069 => '⤇', 2070 => '⤈', 2071 => '⤉', 2072 => '⤊', 2073 => '⤋', 2074 => '⤌', 2075 => '⤍', 2076 => '⤎', 2077 => '⤏', 2078 => '⤐', 2079 => '⤑', 2080 => '⤒', 2081 => '⤓', 2082 => '⤔', 2083 => '⤕', 2084 => '⤖', 2085 => '⤗', 2086 => '⤘', 2087 => '⤙', 2088 => '⤚', 2089 => '⤛', 2090 => '⤜', 2091 => '⤝', 2092 => '⤞', 2093 => '⤟', 2094 => '⤠', 2095 => '⤡', 2096 => '⤢', 2097 => '⤣', 2098 => '⤤', 2099 => '⤥', 2100 => '⤦', 2101 => '⤧', 2102 => '⤨', 2103 => '⤩', 2104 => '⤪', 2105 => '⤫', 2106 => '⤬', 2107 => '⤭', 2108 => '⤮', 2109 => '⤯', 2110 => '⤰', 2111 => '⤱', 2112 => '⤲', 2113 => '⤳', 2114 => '⤴', 2115 => '⤵', 2116 => '⤶', 2117 => '⤷', 2118 => '⤸', 2119 => '⤹', 2120 => '⤺', 2121 => '⤻', 2122 => '⤼', 2123 => '⤽', 2124 => '⤾', 2125 => '⤿', 2126 => '⥀', 2127 => '⥁', 2128 => '⥂', 2129 => '⥃', 2130 => '⥄', 2131 => '⥅', 2132 => '⥆', 2133 => '⥇', 2134 => '⥈', 2135 => '⥉', 2136 => '⥊', 2137 => '⥋', 2138 => '⥌', 2139 => '⥍', 2140 => '⥎', 2141 => '⥏', 2142 => '⥐', 2143 => '⥑', 2144 => '⥒', 2145 => '⥓', 2146 => '⥔', 2147 => '⥕', 2148 => '⥖', 2149 => '⥗', 2150 => '⥘', 2151 => '⥙', 2152 => '⥚', 2153 => '⥛', 2154 => '⥜', 2155 => '⥝', 2156 => '⥞', 2157 => '⥟', 2158 => '⥠', 2159 => '⥡', 2160 => '⥢', 2161 => '⥣', 2162 => '⥤', 2163 => '⥥', 2164 => '⥦', 2165 => '⥧', 2166 => '⥨', 2167 => '⥩', 2168 => '⥪', 2169 => '⥫', 2170 => '⥬', 2171 => '⥭', 2172 => '⥮', 2173 => '⥯', 2174 => '⥰', 2175 => '⥱', 2176 => '⥲', 2177 => '⥳', 2178 => '⥴', 2179 => '⥵', 2180 => '⥶', 2181 => '⥷', 2182 => '⥸', 2183 => '⥹', 2184 => '⥺', 2185 => '⥻', 2186 => '⥼', 2187 => '⥽', 2188 => '⥾', 2189 => '⥿', 2190 => '⦀', 2191 => '⦁', 2192 => '⦂', 2193 => '⦙', 2194 => '⦚', 2195 => '⦛', 2196 => '⦜', 2197 => '⦝', 2198 => '⦞', 2199 => '⦟', 2200 => '⦠', 2201 => '⦡', 2202 => '⦢', 2203 => '⦣', 2204 => '⦤', 2205 => '⦥', 2206 => '⦦', 2207 => '⦧', 2208 => '⦨', 2209 => '⦩', 2210 => '⦪', 2211 => '⦫', 2212 => '⦬', 2213 => '⦭', 2214 => '⦮', 2215 => '⦯', 2216 => '⦰', 2217 => '⦱', 2218 => '⦲', 2219 => '⦳', 2220 => '⦴', 2221 => '⦵', 2222 => '⦶', 2223 => '⦷', 2224 => '⦸', 2225 => '⦹', 2226 => '⦺', 2227 => '⦻', 2228 => '⦼', 2229 => '⦽', 2230 => '⦾', 2231 => '⦿', 2232 => '⧀', 2233 => '⧁', 2234 => '⧂', 2235 => '⧃', 2236 => '⧄', 2237 => '⧅', 2238 => '⧆', 2239 => '⧇', 2240 => '⧈', 2241 => '⧉', 2242 => '⧊', 2243 => '⧋', 2244 => '⧌', 2245 => '⧍', 2246 => '⧎', 2247 => '⧏', 2248 => '⧐', 2249 => '⧑', 2250 => '⧒', 2251 => '⧓', 2252 => '⧔', 2253 => '⧕', 2254 => '⧖', 2255 => '⧗', 2256 => '⧘', 2257 => '⧙', 2258 => '⧚', 2259 => '⧛', 2260 => '⧜', 2261 => '⧝', 2262 => '⧞', 2263 => '⧟', 2264 => '⧠', 2265 => '⧡', 2266 => '⧢', 2267 => '⧣', 2268 => '⧤', 2269 => '⧥', 2270 => '⧦', 2271 => '⧧', 2272 => '⧨', 2273 => '⧩', 2274 => '⧪', 2275 => '⧫', 2276 => '⧬', 2277 => '⧭', 2278 => '⧮', 2279 => '⧯', 2280 => '⧰', 2281 => '⧱', 2282 => '⧲', 2283 => '⧳', 2284 => '⧴', 2285 => '⧵', 2286 => '⧶', 2287 => '⧷', 2288 => '⧸', 2289 => '⧹', 2290 => '⧺', 2291 => '⧻', 2292 => '⧾', 2293 => '⧿', 2294 => '⨀', 2295 => '⨁', 2296 => '⨂', 2297 => '⨃', 2298 => '⨄', 2299 => '⨅', 2300 => '⨆', 2301 => '⨇', 2302 => '⨈', 2303 => '⨉', 2304 => '⨊', 2305 => '⨋', 2306 => '⨍', 2307 => '⨎', 2308 => '⨏', 2309 => '⨐', 2310 => '⨑', 2311 => '⨒', 2312 => '⨓', 2313 => '⨔', 2314 => '⨕', 2315 => '⨖', 2316 => '⨗', 2317 => '⨘', 2318 => '⨙', 2319 => '⨚', 2320 => '⨛', 2321 => '⨜', 2322 => '⨝', 2323 => '⨞', 2324 => '⨟', 2325 => '⨠', 2326 => '⨡', 2327 => '⨢', 2328 => '⨣', 2329 => '⨤', 2330 => '⨥', 2331 => '⨦', 2332 => '⨧', 2333 => '⨨', 2334 => '⨩', 2335 => '⨪', 2336 => '⨫', 2337 => '⨬', 2338 => '⨭', 2339 => '⨮', 2340 => '⨯', 2341 => '⨰', 2342 => '⨱', 2343 => '⨲', 2344 => '⨳', 2345 => '⨴', 2346 => '⨵', 2347 => '⨶', 2348 => '⨷', 2349 => '⨸', 2350 => '⨹', 2351 => '⨺', 2352 => '⨻', 2353 => '⨼', 2354 => '⨽', 2355 => '⨾', 2356 => '⨿', 2357 => '⩀', 2358 => '⩁', 2359 => '⩂', 2360 => '⩃', 2361 => '⩄', 2362 => '⩅', 2363 => '⩆', 2364 => '⩇', 2365 => '⩈', 2366 => '⩉', 2367 => '⩊', 2368 => '⩋', 2369 => '⩌', 2370 => '⩍', 2371 => '⩎', 2372 => '⩏', 2373 => '⩐', 2374 => '⩑', 2375 => '⩒', 2376 => '⩓', 2377 => '⩔', 2378 => '⩕', 2379 => '⩖', 2380 => '⩗', 2381 => '⩘', 2382 => '⩙', 2383 => '⩚', 2384 => '⩛', 2385 => '⩜', 2386 => '⩝', 2387 => '⩞', 2388 => '⩟', 2389 => '⩠', 2390 => '⩡', 2391 => '⩢', 2392 => '⩣', 2393 => '⩤', 2394 => '⩥', 2395 => '⩦', 2396 => '⩧', 2397 => '⩨', 2398 => '⩩', 2399 => '⩪', 2400 => '⩫', 2401 => '⩬', 2402 => '⩭', 2403 => '⩮', 2404 => '⩯', 2405 => '⩰', 2406 => '⩱', 2407 => '⩲', 2408 => '⩳', 2409 => '⩷', 2410 => '⩸', 2411 => '⩹', 2412 => '⩺', 2413 => '⩻', 2414 => '⩼', 2415 => '⩽', 2416 => '⩾', 2417 => '⩿', 2418 => '⪀', 2419 => '⪁', 2420 => '⪂', 2421 => '⪃', 2422 => '⪄', 2423 => '⪅', 2424 => '⪆', 2425 => '⪇', 2426 => '⪈', 2427 => '⪉', 2428 => '⪊', 2429 => '⪋', 2430 => '⪌', 2431 => '⪍', 2432 => '⪎', 2433 => '⪏', 2434 => '⪐', 2435 => '⪑', 2436 => '⪒', 2437 => '⪓', 2438 => '⪔', 2439 => '⪕', 2440 => '⪖', 2441 => '⪗', 2442 => '⪘', 2443 => '⪙', 2444 => '⪚', 2445 => '⪛', 2446 => '⪜', 2447 => '⪝', 2448 => '⪞', 2449 => '⪟', 2450 => '⪠', 2451 => '⪡', 2452 => '⪢', 2453 => '⪣', 2454 => '⪤', 2455 => '⪥', 2456 => '⪦', 2457 => '⪧', 2458 => '⪨', 2459 => '⪩', 2460 => '⪪', 2461 => '⪫', 2462 => '⪬', 2463 => '⪭', 2464 => '⪮', 2465 => '⪯', 2466 => '⪰', 2467 => '⪱', 2468 => '⪲', 2469 => '⪳', 2470 => '⪴', 2471 => '⪵', 2472 => '⪶', 2473 => '⪷', 2474 => '⪸', 2475 => '⪹', 2476 => '⪺', 2477 => '⪻', 2478 => '⪼', 2479 => '⪽', 2480 => '⪾', 2481 => '⪿', 2482 => '⫀', 2483 => '⫁', 2484 => '⫂', 2485 => '⫃', 2486 => '⫄', 2487 => '⫅', 2488 => '⫆', 2489 => '⫇', 2490 => '⫈', 2491 => '⫉', 2492 => '⫊', 2493 => '⫋', 2494 => '⫌', 2495 => '⫍', 2496 => '⫎', 2497 => '⫏', 2498 => '⫐', 2499 => '⫑', 2500 => '⫒', 2501 => '⫓', 2502 => '⫔', 2503 => '⫕', 2504 => '⫖', 2505 => '⫗', 2506 => '⫘', 2507 => '⫙', 2508 => '⫚', 2509 => '⫛', 2510 => '⫝', 2511 => '⫞', 2512 => '⫟', 2513 => '⫠', 2514 => '⫡', 2515 => '⫢', 2516 => '⫣', 2517 => '⫤', 2518 => '⫥', 2519 => '⫦', 2520 => '⫧', 2521 => '⫨', 2522 => '⫩', 2523 => '⫪', 2524 => '⫫', 2525 => '⫬', 2526 => '⫭', 2527 => '⫮', 2528 => '⫯', 2529 => '⫰', 2530 => '⫱', 2531 => '⫲', 2532 => '⫳', 2533 => '⫴', 2534 => '⫵', 2535 => '⫶', 2536 => '⫷', 2537 => '⫸', 2538 => '⫹', 2539 => '⫺', 2540 => '⫻', 2541 => '⫼', 2542 => '⫽', 2543 => '⫾', 2544 => '⫿', 2545 => '⬀', 2546 => '⬁', 2547 => '⬂', 2548 => '⬃', 2549 => '⬄', 2550 => '⬅', 2551 => '⬆', 2552 => '⬇', 2553 => '⬈', 2554 => '⬉', 2555 => '⬊', 2556 => '⬋', 2557 => '⬌', 2558 => '⬍', 2559 => '⬎', 2560 => '⬏', 2561 => '⬐', 2562 => '⬑', 2563 => '⬒', 2564 => '⬓', 2565 => '⬔', 2566 => '⬕', 2567 => '⬖', 2568 => '⬗', 2569 => '⬘', 2570 => '⬙', 2571 => '⬚', 2572 => '⬛', 2573 => '⬜', 2574 => '⬝', 2575 => '⬞', 2576 => '⬟', 2577 => '⬠', 2578 => '⬡', 2579 => '⬢', 2580 => '⬣', 2581 => '⬤', 2582 => '⬥', 2583 => '⬦', 2584 => '⬧', 2585 => '⬨', 2586 => '⬩', 2587 => '⬪', 2588 => '⬫', 2589 => '⬬', 2590 => '⬭', 2591 => '⬮', 2592 => '⬯', 2593 => '⬰', 2594 => '⬱', 2595 => '⬲', 2596 => '⬳', 2597 => '⬴', 2598 => '⬵', 2599 => '⬶', 2600 => '⬷', 2601 => '⬸', 2602 => '⬹', 2603 => '⬺', 2604 => '⬻', 2605 => '⬼', 2606 => '⬽', 2607 => '⬾', 2608 => '⬿', 2609 => '⭀', 2610 => '⭁', 2611 => '⭂', 2612 => '⭃', 2613 => '⭄', 2614 => '⭅', 2615 => '⭆', 2616 => '⭇', 2617 => '⭈', 2618 => '⭉', 2619 => '⭊', 2620 => '⭋', 2621 => '⭌', 2622 => '⭐', 2623 => '⭑', 2624 => '⭒', 2625 => '⭓', 2626 => '⭔', 2627 => '⭕', 2628 => '⭖', 2629 => '⭗', 2630 => '⭘', 2631 => '⭙', 2632 => '⳥', 2633 => '⳦', 2634 => '⳧', 2635 => '⳨', 2636 => '⳩', 2637 => '⳪', 2638 => '⠀', 2639 => '⠁', 2640 => '⠂', 2641 => '⠃', 2642 => '⠄', 2643 => '⠅', 2644 => '⠆', 2645 => '⠇', 2646 => '⠈', 2647 => '⠉', 2648 => '⠊', 2649 => '⠋', 2650 => '⠌', 2651 => '⠍', 2652 => '⠎', 2653 => '⠏', 2654 => '⠐', 2655 => '⠑', 2656 => '⠒', 2657 => '⠓', 2658 => '⠔', 2659 => '⠕', 2660 => '⠖', 2661 => '⠗', 2662 => '⠘', 2663 => '⠙', 2664 => '⠚', 2665 => '⠛', 2666 => '⠜', 2667 => '⠝', 2668 => '⠞', 2669 => '⠟', 2670 => '⠠', 2671 => '⠡', 2672 => '⠢', 2673 => '⠣', 2674 => '⠤', 2675 => '⠥', 2676 => '⠦', 2677 => '⠧', 2678 => '⠨', 2679 => '⠩', 2680 => '⠪', 2681 => '⠫', 2682 => '⠬', 2683 => '⠭', 2684 => '⠮', 2685 => '⠯', 2686 => '⠰', 2687 => '⠱', 2688 => '⠲', 2689 => '⠳', 2690 => '⠴', 2691 => '⠵', 2692 => '⠶', 2693 => '⠷', 2694 => '⠸', 2695 => '⠹', 2696 => '⠺', 2697 => '⠻', 2698 => '⠼', 2699 => '⠽', 2700 => '⠾', 2701 => '⠿', 2702 => '⡀', 2703 => '⡁', 2704 => '⡂', 2705 => '⡃', 2706 => '⡄', 2707 => '⡅', 2708 => '⡆', 2709 => '⡇', 2710 => '⡈', 2711 => '⡉', 2712 => '⡊', 2713 => '⡋', 2714 => '⡌', 2715 => '⡍', 2716 => '⡎', 2717 => '⡏', 2718 => '⡐', 2719 => '⡑', 2720 => '⡒', 2721 => '⡓', 2722 => '⡔', 2723 => '⡕', 2724 => '⡖', 2725 => '⡗', 2726 => '⡘', 2727 => '⡙', 2728 => '⡚', 2729 => '⡛', 2730 => '⡜', 2731 => '⡝', 2732 => '⡞', 2733 => '⡟', 2734 => '⡠', 2735 => '⡡', 2736 => '⡢', 2737 => '⡣', 2738 => '⡤', 2739 => '⡥', 2740 => '⡦', 2741 => '⡧', 2742 => '⡨', 2743 => '⡩', 2744 => '⡪', 2745 => '⡫', 2746 => '⡬', 2747 => '⡭', 2748 => '⡮', 2749 => '⡯', 2750 => '⡰', 2751 => '⡱', 2752 => '⡲', 2753 => '⡳', 2754 => '⡴', 2755 => '⡵', 2756 => '⡶', 2757 => '⡷', 2758 => '⡸', 2759 => '⡹', 2760 => '⡺', 2761 => '⡻', 2762 => '⡼', 2763 => '⡽', 2764 => '⡾', 2765 => '⡿', 2766 => '⢀', 2767 => '⢁', 2768 => '⢂', 2769 => '⢃', 2770 => '⢄', 2771 => '⢅', 2772 => '⢆', 2773 => '⢇', 2774 => '⢈', 2775 => '⢉', 2776 => '⢊', 2777 => '⢋', 2778 => '⢌', 2779 => '⢍', 2780 => '⢎', 2781 => '⢏', 2782 => '⢐', 2783 => '⢑', 2784 => '⢒', 2785 => '⢓', 2786 => '⢔', 2787 => '⢕', 2788 => '⢖', 2789 => '⢗', 2790 => '⢘', 2791 => '⢙', 2792 => '⢚', 2793 => '⢛', 2794 => '⢜', 2795 => '⢝', 2796 => '⢞', 2797 => '⢟', 2798 => '⢠', 2799 => '⢡', 2800 => '⢢', 2801 => '⢣', 2802 => '⢤', 2803 => '⢥', 2804 => '⢦', 2805 => '⢧', 2806 => '⢨', 2807 => '⢩', 2808 => '⢪', 2809 => '⢫', 2810 => '⢬', 2811 => '⢭', 2812 => '⢮', 2813 => '⢯', 2814 => '⢰', 2815 => '⢱', 2816 => '⢲', 2817 => '⢳', 2818 => '⢴', 2819 => '⢵', 2820 => '⢶', 2821 => '⢷', 2822 => '⢸', 2823 => '⢹', 2824 => '⢺', 2825 => '⢻', 2826 => '⢼', 2827 => '⢽', 2828 => '⢾', 2829 => '⢿', 2830 => '⣀', 2831 => '⣁', 2832 => '⣂', 2833 => '⣃', 2834 => '⣄', 2835 => '⣅', 2836 => '⣆', 2837 => '⣇', 2838 => '⣈', 2839 => '⣉', 2840 => '⣊', 2841 => '⣋', 2842 => '⣌', 2843 => '⣍', 2844 => '⣎', 2845 => '⣏', 2846 => '⣐', 2847 => '⣑', 2848 => '⣒', 2849 => '⣓', 2850 => '⣔', 2851 => '⣕', 2852 => '⣖', 2853 => '⣗', 2854 => '⣘', 2855 => '⣙', 2856 => '⣚', 2857 => '⣛', 2858 => '⣜', 2859 => '⣝', 2860 => '⣞', 2861 => '⣟', 2862 => '⣠', 2863 => '⣡', 2864 => '⣢', 2865 => '⣣', 2866 => '⣤', 2867 => '⣥', 2868 => '⣦', 2869 => '⣧', 2870 => '⣨', 2871 => '⣩', 2872 => '⣪', 2873 => '⣫', 2874 => '⣬', 2875 => '⣭', 2876 => '⣮', 2877 => '⣯', 2878 => '⣰', 2879 => '⣱', 2880 => '⣲', 2881 => '⣳', 2882 => '⣴', 2883 => '⣵', 2884 => '⣶', 2885 => '⣷', 2886 => '⣸', 2887 => '⣹', 2888 => '⣺', 2889 => '⣻', 2890 => '⣼', 2891 => '⣽', 2892 => '⣾', 2893 => '⣿', 2894 => '⚊', 2895 => '⚋', 2896 => '⚌', 2897 => '⚍', 2898 => '⚎', 2899 => '⚏', 2900 => '☰', 2901 => '☱', 2902 => '☲', 2903 => '☳', 2904 => '☴', 2905 => '☵', 2906 => '☶', 2907 => '☷', 2908 => '䷀', 2909 => '䷁', 2910 => '䷂', 2911 => '䷃', 2912 => '䷄', 2913 => '䷅', 2914 => '䷆', 2915 => '䷇', 2916 => '䷈', 2917 => '䷉', 2918 => '䷊', 2919 => '䷋', 2920 => '䷌', 2921 => '䷍', 2922 => '䷎', 2923 => '䷏', 2924 => '䷐', 2925 => '䷑', 2926 => '䷒', 2927 => '䷓', 2928 => '䷔', 2929 => '䷕', 2930 => '䷖', 2931 => '䷗', 2932 => '䷘', 2933 => '䷙', 2934 => '䷚', 2935 => '䷛', 2936 => '䷜', 2937 => '䷝', 2938 => '䷞', 2939 => '䷟', 2940 => '䷠', 2941 => '䷡', 2942 => '䷢', 2943 => '䷣', 2944 => '䷤', 2945 => '䷥', 2946 => '䷦', 2947 => '䷧', 2948 => '䷨', 2949 => '䷩', 2950 => '䷪', 2951 => '䷫', 2952 => '䷬', 2953 => '䷭', 2954 => '䷮', 2955 => '䷯', 2956 => '䷰', 2957 => '䷱', 2958 => '䷲', 2959 => '䷳', 2960 => '䷴', 2961 => '䷵', 2962 => '䷶', 2963 => '䷷', 2964 => '䷸', 2965 => '䷹', 2966 => '䷺', 2967 => '䷻', 2968 => '䷼', 2969 => '䷽', 2970 => '䷾', 2971 => '䷿', 2972 => '𝌀', 2973 => '𝌁', 2974 => '𝌂', 2975 => '𝌃', 2976 => '𝌄', 2977 => '𝌅', 2978 => '𝌆', 2979 => '𝌇', 2980 => '𝌈', 2981 => '𝌉', 2982 => '𝌊', 2983 => '𝌋', 2984 => '𝌌', 2985 => '𝌍', 2986 => '𝌎', 2987 => '𝌏', 2988 => '𝌐', 2989 => '𝌑', 2990 => '𝌒', 2991 => '𝌓', 2992 => '𝌔', 2993 => '𝌕', 2994 => '𝌖', 2995 => '𝌗', 2996 => '𝌘', 2997 => '𝌙', 2998 => '𝌚', 2999 => '𝌛', 3000 => '𝌜', 3001 => '𝌝', 3002 => '𝌞', 3003 => '𝌟', 3004 => '𝌠', 3005 => '𝌡', 3006 => '𝌢', 3007 => '𝌣', 3008 => '𝌤', 3009 => '𝌥', 3010 => '𝌦', 3011 => '𝌧', 3012 => '𝌨', 3013 => '𝌩', 3014 => '𝌪', 3015 => '𝌫', 3016 => '𝌬', 3017 => '𝌭', 3018 => '𝌮', 3019 => '𝌯', 3020 => '𝌰', 3021 => '𝌱', 3022 => '𝌲', 3023 => '𝌳', 3024 => '𝌴', 3025 => '𝌵', 3026 => '𝌶', 3027 => '𝌷', 3028 => '𝌸', 3029 => '𝌹', 3030 => '𝌺', 3031 => '𝌻', 3032 => '𝌼', 3033 => '𝌽', 3034 => '𝌾', 3035 => '𝌿', 3036 => '𝍀', 3037 => '𝍁', 3038 => '𝍂', 3039 => '𝍃', 3040 => '𝍄', 3041 => '𝍅', 3042 => '𝍆', 3043 => '𝍇', 3044 => '𝍈', 3045 => '𝍉', 3046 => '𝍊', 3047 => '𝍋', 3048 => '𝍌', 3049 => '𝍍', 3050 => '𝍎', 3051 => '𝍏', 3052 => '𝍐', 3053 => '𝍑', 3054 => '𝍒', 3055 => '𝍓', 3056 => '𝍔', 3057 => '𝍕', 3058 => '𝍖', 3059 => '꒐', 3060 => '꒑', 3061 => '꒒', 3062 => '꒓', 3063 => '꒔', 3064 => '꒕', 3065 => '꒖', 3066 => '꒗', 3067 => '꒘', 3068 => '꒙', 3069 => '꒚', 3070 => '꒛', 3071 => '꒜', 3072 => '꒝', 3073 => '꒞', 3074 => '꒟', 3075 => '꒠', 3076 => '꒡', 3077 => '꒢', 3078 => '꒣', 3079 => '꒤', 3080 => '꒥', 3081 => '꒦', 3082 => '꒧', 3083 => '꒨', 3084 => '꒩', 3085 => '꒪', 3086 => '꒫', 3087 => '꒬', 3088 => '꒭', 3089 => '꒮', 3090 => '꒯', 3091 => '꒰', 3092 => '꒱', 3093 => '꒲', 3094 => '꒳', 3095 => '꒴', 3096 => '꒵', 3097 => '꒶', 3098 => '꒷', 3099 => '꒸', 3100 => '꒹', 3101 => '꒺', 3102 => '꒻', 3103 => '꒼', 3104 => '꒽', 3105 => '꒾', 3106 => '꒿', 3107 => '꓀', 3108 => '꓁', 3109 => '꓂', 3110 => '꓃', 3111 => '꓄', 3112 => '꓅', 3113 => '꓆', 3114 => '𐄷', 3115 => '𐄸', 3116 => '𐄹', 3117 => '𐄺', 3118 => '𐄻', 3119 => '𐄼', 3120 => '𐄽', 3121 => '𐄾', 3122 => '𐄿', 3123 => '𐅹', 3124 => '𐅺', 3125 => '𐅻', 3126 => '𐅼', 3127 => '𐅽', 3128 => '𐅾', 3129 => '𐅿', 3130 => '𐆀', 3131 => '𐆁', 3132 => '𐆂', 3133 => '𐆃', 3134 => '𐆄', 3135 => '𐆅', 3136 => '𐆆', 3137 => '𐆇', 3138 => '𐆈', 3139 => '𐆉', 3140 => '𐆐', 3141 => '𐆑', 3142 => '𐆒', 3143 => '𐆓', 3144 => '𐆔', 3145 => '𐆕', 3146 => '𐆖', 3147 => '𐆗', 3148 => '𐆘', 3149 => '𐆙', 3150 => '𐆚', 3151 => '𐆛', 3152 => '𐇐', 3153 => '𐇑', 3154 => '𐇒', 3155 => '𐇓', 3156 => '𐇔', 3157 => '𐇕', 3158 => '𐇖', 3159 => '𐇗', 3160 => '𐇘', 3161 => '𐇙', 3162 => '𐇚', 3163 => '𐇛', 3164 => '𐇜', 3165 => '𐇝', 3166 => '𐇞', 3167 => '𐇟', 3168 => '𐇠', 3169 => '𐇡', 3170 => '𐇢', 3171 => '𐇣', 3172 => '𐇤', 3173 => '𐇥', 3174 => '𐇦', 3175 => '𐇧', 3176 => '𐇨', 3177 => '𐇩', 3178 => '𐇪', 3179 => '𐇫', 3180 => '𐇬', 3181 => '𐇭', 3182 => '𐇮', 3183 => '𐇯', 3184 => '𐇰', 3185 => '𐇱', 3186 => '𐇲', 3187 => '𐇳', 3188 => '𐇴', 3189 => '𐇵', 3190 => '𐇶', 3191 => '𐇷', 3192 => '𐇸', 3193 => '𐇹', 3194 => '𐇺', 3195 => '𐇻', 3196 => '𐇼', 3197 => '𝀀', 3198 => '𝀁', 3199 => '𝀂', 3200 => '𝀃', 3201 => '𝀄', 3202 => '𝀅', 3203 => '𝀆', 3204 => '𝀇', 3205 => '𝀈', 3206 => '𝀉', 3207 => '𝀊', 3208 => '𝀋', 3209 => '𝀌', 3210 => '𝀍', 3211 => '𝀎', 3212 => '𝀏', 3213 => '𝀐', 3214 => '𝀑', 3215 => '𝀒', 3216 => '𝀓', 3217 => '𝀔', 3218 => '𝀕', 3219 => '𝀖', 3220 => '𝀗', 3221 => '𝀘', 3222 => '𝀙', 3223 => '𝀚', 3224 => '𝀛', 3225 => '𝀜', 3226 => '𝀝', 3227 => '𝀞', 3228 => '𝀟', 3229 => '𝀠', 3230 => '𝀡', 3231 => '𝀢', 3232 => '𝀣', 3233 => '𝀤', 3234 => '𝀥', 3235 => '𝀦', 3236 => '𝀧', 3237 => '𝀨', 3238 => '𝀩', 3239 => '𝀪', 3240 => '𝀫', 3241 => '𝀬', 3242 => '𝀭', 3243 => '𝀮', 3244 => '𝀯', 3245 => '𝀰', 3246 => '𝀱', 3247 => '𝀲', 3248 => '𝀳', 3249 => '𝀴', 3250 => '𝀵', 3251 => '𝀶', 3252 => '𝀷', 3253 => '𝀸', 3254 => '𝀹', 3255 => '𝀺', 3256 => '𝀻', 3257 => '𝀼', 3258 => '𝀽', 3259 => '𝀾', 3260 => '𝀿', 3261 => '𝁀', 3262 => '𝁁', 3263 => '𝁂', 3264 => '𝁃', 3265 => '𝁄', 3266 => '𝁅', 3267 => '𝁆', 3268 => '𝁇', 3269 => '𝁈', 3270 => '𝁉', 3271 => '𝁊', 3272 => '𝁋', 3273 => '𝁌', 3274 => '𝁍', 3275 => '𝁎', 3276 => '𝁏', 3277 => '𝁐', 3278 => '𝁑', 3279 => '𝁒', 3280 => '𝁓', 3281 => '𝁔', 3282 => '𝁕', 3283 => '𝁖', 3284 => '𝁗', 3285 => '𝁘', 3286 => '𝁙', 3287 => '𝁚', 3288 => '𝁛', 3289 => '𝁜', 3290 => '𝁝', 3291 => '𝁞', 3292 => '𝁟', 3293 => '𝁠', 3294 => '𝁡', 3295 => '𝁢', 3296 => '𝁣', 3297 => '𝁤', 3298 => '𝁥', 3299 => '𝁦', 3300 => '𝁧', 3301 => '𝁨', 3302 => '𝁩', 3303 => '𝁪', 3304 => '𝁫', 3305 => '𝁬', 3306 => '𝁭', 3307 => '𝁮', 3308 => '𝁯', 3309 => '𝁰', 3310 => '𝁱', 3311 => '𝁲', 3312 => '𝁳', 3313 => '𝁴', 3314 => '𝁵', 3315 => '𝁶', 3316 => '𝁷', 3317 => '𝁸', 3318 => '𝁹', 3319 => '𝁺', 3320 => '𝁻', 3321 => '𝁼', 3322 => '𝁽', 3323 => '𝁾', 3324 => '𝁿', 3325 => '𝂀', 3326 => '𝂁', 3327 => '𝂂', 3328 => '𝂃', 3329 => '𝂄', 3330 => '𝂅', 3331 => '𝂆', 3332 => '𝂇', 3333 => '𝂈', 3334 => '𝂉', 3335 => '𝂊', 3336 => '𝂋', 3337 => '𝂌', 3338 => '𝂍', 3339 => '𝂎', 3340 => '𝂏', 3341 => '𝂐', 3342 => '𝂑', 3343 => '𝂒', 3344 => '𝂓', 3345 => '𝂔', 3346 => '𝂕', 3347 => '𝂖', 3348 => '𝂗', 3349 => '𝂘', 3350 => '𝂙', 3351 => '𝂚', 3352 => '𝂛', 3353 => '𝂜', 3354 => '𝂝', 3355 => '𝂞', 3356 => '𝂟', 3357 => '𝂠', 3358 => '𝂡', 3359 => '𝂢', 3360 => '𝂣', 3361 => '𝂤', 3362 => '𝂥', 3363 => '𝂦', 3364 => '𝂧', 3365 => '𝂨', 3366 => '𝂩', 3367 => '𝂪', 3368 => '𝂫', 3369 => '𝂬', 3370 => '𝂭', 3371 => '𝂮', 3372 => '𝂯', 3373 => '𝂰', 3374 => '𝂱', 3375 => '𝂲', 3376 => '𝂳', 3377 => '𝂴', 3378 => '𝂵', 3379 => '𝂶', 3380 => '𝂷', 3381 => '𝂸', 3382 => '𝂹', 3383 => '𝂺', 3384 => '𝂻', 3385 => '𝂼', 3386 => '𝂽', 3387 => '𝂾', 3388 => '𝂿', 3389 => '𝃀', 3390 => '𝃁', 3391 => '𝃂', 3392 => '𝃃', 3393 => '𝃄', 3394 => '𝃅', 3395 => '𝃆', 3396 => '𝃇', 3397 => '𝃈', 3398 => '𝃉', 3399 => '𝃊', 3400 => '𝃋', 3401 => '𝃌', 3402 => '𝃍', 3403 => '𝃎', 3404 => '𝃏', 3405 => '𝃐', 3406 => '𝃑', 3407 => '𝃒', 3408 => '𝃓', 3409 => '𝃔', 3410 => '𝃕', 3411 => '𝃖', 3412 => '𝃗', 3413 => '𝃘', 3414 => '𝃙', 3415 => '𝃚', 3416 => '𝃛', 3417 => '𝃜', 3418 => '𝃝', 3419 => '𝃞', 3420 => '𝃟', 3421 => '𝃠', 3422 => '𝃡', 3423 => '𝃢', 3424 => '𝃣', 3425 => '𝃤', 3426 => '𝃥', 3427 => '𝃦', 3428 => '𝃧', 3429 => '𝃨', 3430 => '𝃩', 3431 => '𝃪', 3432 => '𝃫', 3433 => '𝃬', 3434 => '𝃭', 3435 => '𝃮', 3436 => '𝃯', 3437 => '𝃰', 3438 => '𝃱', 3439 => '𝃲', 3440 => '𝃳', 3441 => '𝃴', 3442 => '𝃵', 3443 => '𝄀', 3444 => '𝄁', 3445 => '𝄂', 3446 => '𝄃', 3447 => '𝄄', 3448 => '𝄅', 3449 => '𝄆', 3450 => '𝄇', 3451 => '𝄈', 3452 => '𝄉', 3453 => '𝄊', 3454 => '𝄋', 3455 => '𝄌', 3456 => '𝄍', 3457 => '𝄎', 3458 => '𝄏', 3459 => '𝄐', 3460 => '𝄑', 3461 => '𝄒', 3462 => '𝄓', 3463 => '𝄔', 3464 => '𝄕', 3465 => '𝄖', 3466 => '𝄗', 3467 => '𝄘', 3468 => '𝄙', 3469 => '𝄚', 3470 => '𝄛', 3471 => '𝄜', 3472 => '𝄝', 3473 => '𝄞', 3474 => '𝄟', 3475 => '𝄠', 3476 => '𝄡', 3477 => '𝄢', 3478 => '𝄣', 3479 => '𝄤', 3480 => '𝄥', 3481 => '𝄦', 3482 => '♭', 3483 => '♮', 3484 => '♯', 3485 => '𝄪', 3486 => '𝄫', 3487 => '𝄬', 3488 => '𝄭', 3489 => '𝄮', 3490 => '𝄯', 3491 => '𝄰', 3492 => '𝄱', 3493 => '𝄲', 3494 => '𝄳', 3495 => '𝄴', 3496 => '𝄵', 3497 => '𝄶', 3498 => '𝄷', 3499 => '𝄸', 3500 => '𝄹', 3501 => '𝄩', 3502 => '𝄺', 3503 => '𝄻', 3504 => '𝄼', 3505 => '𝄽', 3506 => '𝄾', 3507 => '𝄿', 3508 => '𝅀', 3509 => '𝅁', 3510 => '𝅂', 3511 => '𝅃', 3512 => '𝅄', 3513 => '𝅅', 3514 => '𝅆', 3515 => '𝅇', 3516 => '𝅈', 3517 => '𝅉', 3518 => '𝅊', 3519 => '𝅋', 3520 => '𝅌', 3521 => '𝅍', 3522 => '𝅎', 3523 => '𝅏', 3524 => '𝅐', 3525 => '𝅑', 3526 => '𝅒', 3527 => '𝅓', 3528 => '𝅔', 3529 => '𝅕', 3530 => '𝅖', 3531 => '𝅗', 3532 => '𝅘', 3533 => '𝅙', 3534 => '𝅚', 3535 => '𝅛', 3536 => '𝅜', 3537 => '𝅝', 3538 => '𝅪', 3539 => '𝅫', 3540 => '𝅬', 3541 => '𝆃', 3542 => '𝆄', 3543 => '𝆌', 3544 => '𝆍', 3545 => '𝆎', 3546 => '𝆏', 3547 => '𝆐', 3548 => '𝆑', 3549 => '𝆒', 3550 => '𝆓', 3551 => '𝆔', 3552 => '𝆕', 3553 => '𝆖', 3554 => '𝆗', 3555 => '𝆘', 3556 => '𝆙', 3557 => '𝆚', 3558 => '𝆛', 3559 => '𝆜', 3560 => '𝆝', 3561 => '𝆞', 3562 => '𝆟', 3563 => '𝆠', 3564 => '𝆡', 3565 => '𝆢', 3566 => '𝆣', 3567 => '𝆤', 3568 => '𝆥', 3569 => '𝆦', 3570 => '𝆧', 3571 => '𝆨', 3572 => '𝆩', 3573 => '𝆮', 3574 => '𝆯', 3575 => '𝆰', 3576 => '𝆱', 3577 => '𝆲', 3578 => '𝆳', 3579 => '𝆴', 3580 => '𝆵', 3581 => '𝆶', 3582 => '𝆷', 3583 => '𝆸', 3584 => '𝆹', 3585 => '𝆺', 3586 => '𝇁', 3587 => '𝇂', 3588 => '𝇃', 3589 => '𝇄', 3590 => '𝇅', 3591 => '𝇆', 3592 => '𝇇', 3593 => '𝇈', 3594 => '𝇉', 3595 => '𝇊', 3596 => '𝇋', 3597 => '𝇌', 3598 => '𝇍', 3599 => '𝇎', 3600 => '𝇏', 3601 => '𝇐', 3602 => '𝇑', 3603 => '𝇒', 3604 => '𝇓', 3605 => '𝇔', 3606 => '𝇕', 3607 => '𝇖', 3608 => '𝇗', 3609 => '𝇘', 3610 => '𝇙', 3611 => '𝇚', 3612 => '𝇛', 3613 => '𝇜', 3614 => '𝇝', 3615 => '𝈀', 3616 => '𝈁', 3617 => '𝈂', 3618 => '𝈃', 3619 => '𝈄', 3620 => '𝈅', 3621 => '𝈆', 3622 => '𝈇', 3623 => '𝈈', 3624 => '𝈉', 3625 => '𝈊', 3626 => '𝈋', 3627 => '𝈌', 3628 => '𝈍', 3629 => '𝈎', 3630 => '𝈏', 3631 => '𝈐', 3632 => '𝈑', 3633 => '𝈒', 3634 => '𝈓', 3635 => '𝈔', 3636 => '𝈕', 3637 => '𝈖', 3638 => '𝈗', 3639 => '𝈘', 3640 => '𝈙', 3641 => '𝈚', 3642 => '𝈛', 3643 => '𝈜', 3644 => '𝈝', 3645 => '𝈞', 3646 => '𝈟', 3647 => '𝈠', 3648 => '𝈡', 3649 => '𝈢', 3650 => '𝈣', 3651 => '𝈤', 3652 => '𝈥', 3653 => '𝈦', 3654 => '𝈧', 3655 => '𝈨', 3656 => '𝈩', 3657 => '𝈪', 3658 => '𝈫', 3659 => '𝈬', 3660 => '𝈭', 3661 => '𝈮', 3662 => '𝈯', 3663 => '𝈰', 3664 => '𝈱', 3665 => '𝈲', 3666 => '𝈳', 3667 => '𝈴', 3668 => '𝈵', 3669 => '𝈶', 3670 => '𝈷', 3671 => '𝈸', 3672 => '𝈹', 3673 => '𝈺', 3674 => '𝈻', 3675 => '𝈼', 3676 => '𝈽', 3677 => '𝈾', 3678 => '𝈿', 3679 => '𝉀', 3680 => '𝉁', 3681 => '𝉅', 3682 => '🀀', 3683 => '🀁', 3684 => '🀂', 3685 => '🀃', 3686 => '🀄', 3687 => '🀅', 3688 => '🀆', 3689 => '🀇', 3690 => '🀈', 3691 => '🀉', 3692 => '🀊', 3693 => '🀋', 3694 => '🀌', 3695 => '🀍', 3696 => '🀎', 3697 => '🀏', 3698 => '🀐', 3699 => '🀑', 3700 => '🀒', 3701 => '🀓', 3702 => '🀔', 3703 => '🀕', 3704 => '🀖', 3705 => '🀗', 3706 => '🀘', 3707 => '🀙', 3708 => '🀚', 3709 => '🀛', 3710 => '🀜', 3711 => '🀝', 3712 => '🀞', 3713 => '🀟', 3714 => '🀠', 3715 => '🀡', 3716 => '🀢', 3717 => '🀣', 3718 => '🀤', 3719 => '🀥', 3720 => '🀦', 3721 => '🀧', 3722 => '🀨', 3723 => '🀩', 3724 => '🀪', 3725 => '🀫', 3726 => '🀰', 3727 => '🀱', 3728 => '🀲', 3729 => '🀳', 3730 => '🀴', 3731 => '🀵', 3732 => '🀶', 3733 => '🀷', 3734 => '🀸', 3735 => '🀹', 3736 => '🀺', 3737 => '🀻', 3738 => '🀼', 3739 => '🀽', 3740 => '🀾', 3741 => '🀿', 3742 => '🁀', 3743 => '🁁', 3744 => '🁂', 3745 => '🁃', 3746 => '🁄', 3747 => '🁅', 3748 => '🁆', 3749 => '🁇', 3750 => '🁈', 3751 => '🁉', 3752 => '🁊', 3753 => '🁋', 3754 => '🁌', 3755 => '🁍', 3756 => '🁎', 3757 => '🁏', 3758 => '🁐', 3759 => '🁑', 3760 => '🁒', 3761 => '🁓', 3762 => '🁔', 3763 => '🁕', 3764 => '🁖', 3765 => '🁗', 3766 => '🁘', 3767 => '🁙', 3768 => '🁚', 3769 => '🁛', 3770 => '🁜', 3771 => '🁝', 3772 => '🁞', 3773 => '🁟', 3774 => '🁠', 3775 => '🁡', 3776 => '🁢', 3777 => '🁣', 3778 => '🁤', 3779 => '🁥', 3780 => '🁦', 3781 => '🁧', 3782 => '🁨', 3783 => '🁩', 3784 => '🁪', 3785 => '🁫', 3786 => '🁬', 3787 => '🁭', 3788 => '🁮', 3789 => '🁯', 3790 => '🁰', 3791 => '🁱', 3792 => '🁲', 3793 => '🁳', 3794 => '🁴', 3795 => '🁵', 3796 => '🁶', 3797 => '🁷', 3798 => '🁸', 3799 => '🁹', 3800 => '🁺', 3801 => '🁻', 3802 => '🁼', 3803 => '🁽', 3804 => '🁾', 3805 => '🁿', 3806 => '🂀', 3807 => '🂁', 3808 => '🂂', 3809 => '🂃', 3810 => '🂄', 3811 => '🂅', 3812 => '🂆', 3813 => '🂇', 3814 => '🂈', 3815 => '🂉', 3816 => '🂊', 3817 => '🂋', 3818 => '🂌', 3819 => '🂍', 3820 => '🂎', 3821 => '🂏', 3822 => '🂐', 3823 => '🂑', 3824 => '🂒', 3825 => '🂓', 3826 => '🂠', 3827 => '🂡', 3828 => '🂢', 3829 => '🂣', 3830 => '🂤', 3831 => '🂥', 3832 => '🂦', 3833 => '🂧', 3834 => '🂨', 3835 => '🂩', 3836 => '🂪', 3837 => '🂫', 3838 => '🂬', 3839 => '🂭', 3840 => '🂮', 3841 => '🂱', 3842 => '🂲', 3843 => '🂳', 3844 => '🂴', 3845 => '🂵', 3846 => '🂶', 3847 => '🂷', 3848 => '🂸', 3849 => '🂹', 3850 => '🂺', 3851 => '🂻', 3852 => '🂼', 3853 => '🂽', 3854 => '🂾', 3855 => '🃁', 3856 => '🃂', 3857 => '🃃', 3858 => '🃄', 3859 => '🃅', 3860 => '🃆', 3861 => '🃇', 3862 => '🃈', 3863 => '🃉', 3864 => '🃊', 3865 => '🃋', 3866 => '🃌', 3867 => '🃍', 3868 => '🃎', 3869 => '🃏', 3870 => '🃑', 3871 => '🃒', 3872 => '🃓', 3873 => '🃔', 3874 => '🃕', 3875 => '🃖', 3876 => '🃗', 3877 => '🃘', 3878 => '🃙', 3879 => '🃚', 3880 => '🃛', 3881 => '🃜', 3882 => '🃝', 3883 => '🃞', 3884 => '🃟', 3885 => '🌀', 3886 => '🌁', 3887 => '🌂', 3888 => '🌃', 3889 => '🌄', 3890 => '🌅', 3891 => '🌆', 3892 => '🌇', 3893 => '🌈', 3894 => '🌉', 3895 => '🌊', 3896 => '🌋', 3897 => '🌌', 3898 => '🌍', 3899 => '🌎', 3900 => '🌏', 3901 => '🌐', 3902 => '🌑', 3903 => '🌒', 3904 => '🌓', 3905 => '🌔', 3906 => '🌕', 3907 => '🌖', 3908 => '🌗', 3909 => '🌘', 3910 => '🌙', 3911 => '🌚', 3912 => '🌛', 3913 => '🌜', 3914 => '🌝', 3915 => '🌞', 3916 => '🌟', 3917 => '🌠', 3918 => '🌰', 3919 => '🌱', 3920 => '🌲', 3921 => '🌳', 3922 => '🌴', 3923 => '🌵', 3924 => '🌷', 3925 => '🌸', 3926 => '🌹', 3927 => '🌺', 3928 => '🌻', 3929 => '🌼', 3930 => '🌽', 3931 => '🌾', 3932 => '🌿', 3933 => '🍀', 3934 => '🍁', 3935 => '🍂', 3936 => '🍃', 3937 => '🍄', 3938 => '🍅', 3939 => '🍆', 3940 => '🍇', 3941 => '🍈', 3942 => '🍉', 3943 => '🍊', 3944 => '🍋', 3945 => '🍌', 3946 => '🍍', 3947 => '🍎', 3948 => '🍏', 3949 => '🍐', 3950 => '🍑', 3951 => '🍒', 3952 => '🍓', 3953 => '🍔', 3954 => '🍕', 3955 => '🍖', 3956 => '🍗', 3957 => '🍘', 3958 => '🍙', 3959 => '🍚', 3960 => '🍛', 3961 => '🍜', 3962 => '🍝', 3963 => '🍞', 3964 => '🍟', 3965 => '🍠', 3966 => '🍡', 3967 => '🍢', 3968 => '🍣', 3969 => '🍤', 3970 => '🍥', 3971 => '🍦', 3972 => '🍧', 3973 => '🍨', 3974 => '🍩', 3975 => '🍪', 3976 => '🍫', 3977 => '🍬', 3978 => '🍭', 3979 => '🍮', 3980 => '🍯', 3981 => '🍰', 3982 => '🍱', 3983 => '🍲', 3984 => '🍳', 3985 => '🍴', 3986 => '🍵', 3987 => '🍶', 3988 => '🍷', 3989 => '🍸', 3990 => '🍹', 3991 => '🍺', 3992 => '🍻', 3993 => '🍼', 3994 => '🎀', 3995 => '🎁', 3996 => '🎂', 3997 => '🎃', 3998 => '🎄', 3999 => '🎅', 4000 => '🎆', 4001 => '🎇', 4002 => '🎈', 4003 => '🎉', 4004 => '🎊', 4005 => '🎋', 4006 => '🎌', 4007 => '🎍', 4008 => '🎎', 4009 => '🎏', 4010 => '🎐', 4011 => '🎑', 4012 => '🎒', 4013 => '🎓', 4014 => '🎠', 4015 => '🎡', 4016 => '🎢', 4017 => '🎣', 4018 => '🎤', 4019 => '🎥', 4020 => '🎦', 4021 => '🎧', 4022 => '🎨', 4023 => '🎩', 4024 => '🎪', 4025 => '🎫', 4026 => '🎬', 4027 => '🎭', 4028 => '🎮', 4029 => '🎯', 4030 => '🎰', 4031 => '🎱', 4032 => '🎲', 4033 => '🎳', 4034 => '🎴', 4035 => '🎵', 4036 => '🎶', 4037 => '🎷', 4038 => '🎸', 4039 => '🎹', 4040 => '🎺', 4041 => '🎻', 4042 => '🎼', 4043 => '🎽', 4044 => '🎾', 4045 => '🎿', 4046 => '🏀', 4047 => '🏁', 4048 => '🏂', 4049 => '🏃', 4050 => '🏄', 4051 => '🏆', 4052 => '🏇', 4053 => '🏈', 4054 => '🏉', 4055 => '🏊', 4056 => '🏠', 4057 => '🏡', 4058 => '🏢', 4059 => '🏣', 4060 => '🏤', 4061 => '🏥', 4062 => '🏦', 4063 => '🏧', 4064 => '🏨', 4065 => '🏩', 4066 => '🏪', 4067 => '🏫', 4068 => '🏬', 4069 => '🏭', 4070 => '🏮', 4071 => '🏯', 4072 => '🏰', 4073 => '🐀', 4074 => '🐁', 4075 => '🐂', 4076 => '🐃', 4077 => '🐄', 4078 => '🐅', 4079 => '🐆', 4080 => '🐇', 4081 => '🐈', 4082 => '🐉', 4083 => '🐊', 4084 => '🐋', 4085 => '🐌', 4086 => '🐍', 4087 => '🐎', 4088 => '🐏', 4089 => '🐐', 4090 => '🐑', 4091 => '🐒', 4092 => '🐓', 4093 => '🐔', 4094 => '🐕', 4095 => '🐖', 4096 => '🐗', 4097 => '🐘', 4098 => '🐙', 4099 => '🐚', 4100 => '🐛', 4101 => '🐜', 4102 => '🐝', 4103 => '🐞', 4104 => '🐟', 4105 => '🐠', 4106 => '🐡', 4107 => '🐢', 4108 => '🐣', 4109 => '🐤', 4110 => '🐥', 4111 => '🐦', 4112 => '🐧', 4113 => '🐨', 4114 => '🐩', 4115 => '🐪', 4116 => '🐫', 4117 => '🐬', 4118 => '🐭', 4119 => '🐮', 4120 => '🐯', 4121 => '🐰', 4122 => '🐱', 4123 => '🐲', 4124 => '🐳', 4125 => '🐴', 4126 => '🐵', 4127 => '🐶', 4128 => '🐷', 4129 => '🐸', 4130 => '🐹', 4131 => '🐺', 4132 => '🐻', 4133 => '🐼', 4134 => '🐽', 4135 => '🐾', 4136 => '👀', 4137 => '👂', 4138 => '👃', 4139 => '👄', 4140 => '👅', 4141 => '👆', 4142 => '👇', 4143 => '👈', 4144 => '👉', 4145 => '👊', 4146 => '👋', 4147 => '👌', 4148 => '👍', 4149 => '👎', 4150 => '👏', 4151 => '👐', 4152 => '👑', 4153 => '👒', 4154 => '👓', 4155 => '👔', 4156 => '👕', 4157 => '👖', 4158 => '👗', 4159 => '👘', 4160 => '👙', 4161 => '👚', 4162 => '👛', 4163 => '👜', 4164 => '👝', 4165 => '👞', 4166 => '👟', 4167 => '👠', 4168 => '👡', 4169 => '👢', 4170 => '👣', 4171 => '👤', 4172 => '👥', 4173 => '👦', 4174 => '👧', 4175 => '👨', 4176 => '👩', 4177 => '👪', 4178 => '👫', 4179 => '👬', 4180 => '👭', 4181 => '👮', 4182 => '👯', 4183 => '👰', 4184 => '👱', 4185 => '👲', 4186 => '👳', 4187 => '👴', 4188 => '👵', 4189 => '👶', 4190 => '👷', 4191 => '👸', 4192 => '👹', 4193 => '👺', 4194 => '👻', 4195 => '👼', 4196 => '👽', 4197 => '👾', 4198 => '👿', 4199 => '💀', 4200 => '💁', 4201 => '💂', 4202 => '💃', 4203 => '💄', 4204 => '💅', 4205 => '💆', 4206 => '💇', 4207 => '💈', 4208 => '💉', 4209 => '💊', 4210 => '💋', 4211 => '💌', 4212 => '💍', 4213 => '💎', 4214 => '💏', 4215 => '💐', 4216 => '💑', 4217 => '💒', 4218 => '💓', 4219 => '💔', 4220 => '💕', 4221 => '💖', 4222 => '💗', 4223 => '💘', 4224 => '💙', 4225 => '💚', 4226 => '💛', 4227 => '💜', 4228 => '💝', 4229 => '💞', 4230 => '💟', 4231 => '💠', 4232 => '💡', 4233 => '💢', 4234 => '💣', 4235 => '💤', 4236 => '💥', 4237 => '💦', 4238 => '💧', 4239 => '💨', 4240 => '💩', 4241 => '💪', 4242 => '💫', 4243 => '💬', 4244 => '💭', 4245 => '💮', 4246 => '💯', 4247 => '💰', 4248 => '💱', 4249 => '💲', 4250 => '💳', 4251 => '💴', 4252 => '💵', 4253 => '💶', 4254 => '💷', 4255 => '💸', 4256 => '💹', 4257 => '💺', 4258 => '💻', 4259 => '💼', 4260 => '💽', 4261 => '💾', 4262 => '💿', 4263 => '📀', 4264 => '📁', 4265 => '📂', 4266 => '📃', 4267 => '📄', 4268 => '📅', 4269 => '📆', 4270 => '📇', 4271 => '📈', 4272 => '📉', 4273 => '📊', 4274 => '📋', 4275 => '📌', 4276 => '📍', 4277 => '📎', 4278 => '📏', 4279 => '📐', 4280 => '📑', 4281 => '📒', 4282 => '📓', 4283 => '📔', 4284 => '📕', 4285 => '📖', 4286 => '📗', 4287 => '📘', 4288 => '📙', 4289 => '📚', 4290 => '📛', 4291 => '📜', 4292 => '📝', 4293 => '📞', 4294 => '📟', 4295 => '📠', 4296 => '📡', 4297 => '📢', 4298 => '📣', 4299 => '📤', 4300 => '📥', 4301 => '📦', 4302 => '📧', 4303 => '📨', 4304 => '📩', 4305 => '📪', 4306 => '📫', 4307 => '📬', 4308 => '📭', 4309 => '📮', 4310 => '📯', 4311 => '📰', 4312 => '📱', 4313 => '📲', 4314 => '📳', 4315 => '📴', 4316 => '📵', 4317 => '📶', 4318 => '📷', 4319 => '📹', 4320 => '📺', 4321 => '📻', 4322 => '📼', 4323 => '🔀', 4324 => '🔁', 4325 => '🔂', 4326 => '🔃', 4327 => '🔄', 4328 => '🔅', 4329 => '🔆', 4330 => '🔇', 4331 => '🔈', 4332 => '🔉', 4333 => '🔊', 4334 => '🔋', 4335 => '🔌', 4336 => '🔍', 4337 => '🔎', 4338 => '🔏', 4339 => '🔐', 4340 => '🔑', 4341 => '🔒', 4342 => '🔓', 4343 => '🔔', 4344 => '🔕', 4345 => '🔖', 4346 => '🔗', 4347 => '🔘', 4348 => '🔙', 4349 => '🔚', 4350 => '🔛', 4351 => '🔜', 4352 => '🔝', 4353 => '🔞', 4354 => '🔟', 4355 => '🔠', 4356 => '🔡', 4357 => '🔢', 4358 => '🔣', 4359 => '🔤', 4360 => '🔥', 4361 => '🔦', 4362 => '🔧', 4363 => '🔨', 4364 => '🔩', 4365 => '🔪', 4366 => '🔫', 4367 => '🔬', 4368 => '🔭', 4369 => '🔮', 4370 => '🔯', 4371 => '🔰', 4372 => '🔱', 4373 => '🔲', 4374 => '🔳', 4375 => '🔴', 4376 => '🔵', 4377 => '🔶', 4378 => '🔷', 4379 => '🔸', 4380 => '🔹', 4381 => '🔺', 4382 => '🔻', 4383 => '🔼', 4384 => '🔽', 4385 => '🕐', 4386 => '🕑', 4387 => '🕒', 4388 => '🕓', 4389 => '🕔', 4390 => '🕕', 4391 => '🕖', 4392 => '🕗', 4393 => '🕘', 4394 => '🕙', 4395 => '🕚', 4396 => '🕛', 4397 => '🕜', 4398 => '🕝', 4399 => '🕞', 4400 => '🕟', 4401 => '🕠', 4402 => '🕡', 4403 => '🕢', 4404 => '🕣', 4405 => '🕤', 4406 => '🕥', 4407 => '🕦', 4408 => '🕧', 4409 => '🗻', 4410 => '🗼', 4411 => '🗽', 4412 => '🗾', 4413 => '🗿', 4414 => '😁', 4415 => '😂', 4416 => '😃', 4417 => '😄', 4418 => '😅', 4419 => '😆', 4420 => '😇', 4421 => '😈', 4422 => '😉', 4423 => '😊', 4424 => '😋', 4425 => '😌', 4426 => '😍', 4427 => '😎', 4428 => '😏', 4429 => '😐', 4430 => '😒', 4431 => '😓', 4432 => '😔', 4433 => '😖', 4434 => '😘', 4435 => '😚', 4436 => '😜', 4437 => '😝', 4438 => '😞', 4439 => '😠', 4440 => '😡', 4441 => '😢', 4442 => '😣', 4443 => '😤', 4444 => '😥', 4445 => '😨', 4446 => '😩', 4447 => '😪', 4448 => '😫', 4449 => '😭', 4450 => '😰', 4451 => '😱', 4452 => '😲', 4453 => '😳', 4454 => '😵', 4455 => '😶', 4456 => '😷', 4457 => '😸', 4458 => '😹', 4459 => '😺', 4460 => '😻', 4461 => '😼', 4462 => '😽', 4463 => '😾', 4464 => '😿', 4465 => '🙀', 4466 => '🙅', 4467 => '🙆', 4468 => '🙇', 4469 => '🙈', 4470 => '🙉', 4471 => '🙊', 4472 => '🙋', 4473 => '🙌', 4474 => '🙍', 4475 => '🙎', 4476 => '🙏', 4477 => '🚀', 4478 => '🚁', 4479 => '🚂', 4480 => '🚃', 4481 => '🚄', 4482 => '🚅', 4483 => '🚆', 4484 => '🚇', 4485 => '🚈', 4486 => '🚉', 4487 => '🚊', 4488 => '🚋', 4489 => '🚌', 4490 => '🚍', 4491 => '🚎', 4492 => '🚏', 4493 => '🚐', 4494 => '🚑', 4495 => '🚒', 4496 => '🚓', 4497 => '🚔', 4498 => '🚕', 4499 => '🚖', 4500 => '🚗', 4501 => '🚘', 4502 => '🚙', 4503 => '🚚', 4504 => '🚛', 4505 => '🚜', 4506 => '🚝', 4507 => '🚞', 4508 => '🚟', 4509 => '🚠', 4510 => '🚡', 4511 => '🚢', 4512 => '🚣', 4513 => '🚤', 4514 => '🚥', 4515 => '🚦', 4516 => '🚧', 4517 => '🚨', 4518 => '🚩', 4519 => '🚪', 4520 => '🚫', 4521 => '🚬', 4522 => '🚭', 4523 => '🚮', 4524 => '🚯', 4525 => '🚰', 4526 => '🚱', 4527 => '🚲', 4528 => '🚳', 4529 => '🚴', 4530 => '🚵', 4531 => '🚶', 4532 => '🚷', 4533 => '🚸', 4534 => '🚹', 4535 => '🚺', 4536 => '🚻', 4537 => '🚼', 4538 => '🚽', 4539 => '🚾', 4540 => '🚿', 4541 => '🛀', 4542 => '🛁', 4543 => '🛂', 4544 => '🛃', 4545 => '🛄', 4546 => '🛅', 4547 => '🜀', 4548 => '🜁', 4549 => '🜂', 4550 => '🜃', 4551 => '🜄', 4552 => '🜅', 4553 => '🜆', 4554 => '🜇', 4555 => '🜈', 4556 => '🜉', 4557 => '🜊', 4558 => '🜋', 4559 => '🜌', 4560 => '🜍', 4561 => '🜎', 4562 => '🜏', 4563 => '🜐', 4564 => '🜑', 4565 => '🜒', 4566 => '🜓', 4567 => '🜔', 4568 => '🜕', 4569 => '🜖', 4570 => '🜗', 4571 => '🜘', 4572 => '🜙', 4573 => '🜚', 4574 => '🜛', 4575 => '🜜', 4576 => '🜝', 4577 => '🜞', 4578 => '🜟', 4579 => '🜠', 4580 => '🜡', 4581 => '🜢', 4582 => '🜣', 4583 => '🜤', 4584 => '🜥', 4585 => '🜦', 4586 => '🜧', 4587 => '🜨', 4588 => '🜩', 4589 => '🜪', 4590 => '🜫', 4591 => '🜬', 4592 => '🜭', 4593 => '🜮', 4594 => '🜯', 4595 => '🜰', 4596 => '🜱', 4597 => '🜲', 4598 => '🜳', 4599 => '🜴', 4600 => '🜵', 4601 => '🜶', 4602 => '🜷', 4603 => '🜸', 4604 => '🜹', 4605 => '🜺', 4606 => '🜻', 4607 => '🜼', 4608 => '🜽', 4609 => '🜾', 4610 => '🜿', 4611 => '🝀', 4612 => '🝁', 4613 => '🝂', 4614 => '🝃', 4615 => '🝄', 4616 => '🝅', 4617 => '🝆', 4618 => '🝇', 4619 => '🝈', 4620 => '🝉', 4621 => '🝊', 4622 => '🝋', 4623 => '🝌', 4624 => '🝍', 4625 => '🝎', 4626 => '🝏', 4627 => '🝐', 4628 => '🝑', 4629 => '🝒', 4630 => '🝓', 4631 => '🝔', 4632 => '🝕', 4633 => '🝖', 4634 => '🝗', 4635 => '🝘', 4636 => '🝙', 4637 => '🝚', 4638 => '🝛', 4639 => '🝜', 4640 => '🝝', 4641 => '🝞', 4642 => '🝟', 4643 => '🝠', 4644 => '🝡', 4645 => '🝢', 4646 => '🝣', 4647 => '🝤', 4648 => '🝥', 4649 => '🝦', 4650 => '🝧', 4651 => '🝨', 4652 => '🝩', 4653 => '🝪', 4654 => '🝫', 4655 => '🝬', 4656 => '🝭', 4657 => '🝮', 4658 => '🝯', 4659 => '🝰', 4660 => '🝱', 4661 => '🝲', 4662 => '🝳', 4663 => '㆐', 4664 => '㆑', 4665 => '', 4666 => '�', 4667 => '৴', 4668 => '৵', 4669 => '৶', 4670 => '৷', 4671 => '৸', 4672 => '৹', 4673 => '୲', 4674 => '୳', 4675 => '୴', 4676 => '୵', 4677 => '୶', 4678 => '୷', 4679 => '꠰', 4680 => '꠱', 4681 => '꠲', 4682 => '꠳', 4683 => '꠴', 4684 => '꠵', 4685 => '௰', 4686 => '௱', 4687 => '௲', 4688 => '൰', 4689 => '൱', 4690 => '൲', 4691 => '൳', 4692 => '൴', 4693 => '൵', 4694 => '፲', 4695 => '፳', 4696 => '፴', 4697 => '፵', 4698 => '፶', 4699 => '፷', 4700 => '፸', 4701 => '፹', 4702 => '፺', 4703 => '፻', 4704 => '፼', 4705 => 'ↀ', 4706 => 'ↁ', 4707 => 'ↂ', 4708 => 'ↆ', 4709 => 'ↇ', 4710 => 'ↈ', 4711 => '𐹩', 4712 => '𐹪', 4713 => '𐹫', 4714 => '𐹬', 4715 => '𐹭', 4716 => '𐹮', 4717 => '𐹯', 4718 => '𐹰', 4719 => '𐹱', 4720 => '𐹲', 4721 => '𐹳', 4722 => '𐹴', 4723 => '𐹵', 4724 => '𐹶', 4725 => '𐹷', 4726 => '𐹸', 4727 => '𐹹', 4728 => '𐹺', 4729 => '𐹻', 4730 => '𐹼', 4731 => '𐹽', 4732 => '𐹾', 4733 => '⳽', 4734 => '𐌢', 4735 => '𐌣', 4736 => '𐄐', 4737 => '𐄑', 4738 => '𐄒', 4739 => '𐄓', 4740 => '𐄔', 4741 => '𐄕', 4742 => '𐄖', 4743 => '𐄗', 4744 => '𐄘', 4745 => '𐄙', 4746 => '𐄚', 4747 => '𐄛', 4748 => '𐄜', 4749 => '𐄝', 4750 => '𐄞', 4751 => '𐄟', 4752 => '𐄠', 4753 => '𐄡', 4754 => '𐄢', 4755 => '𐄣', 4756 => '𐄤', 4757 => '𐄥', 4758 => '𐄦', 4759 => '𐄧', 4760 => '𐄨', 4761 => '𐄩', 4762 => '𐄪', 4763 => '𐄫', 4764 => '𐄬', 4765 => '𐄭', 4766 => '𐄮', 4767 => '𐄯', 4768 => '𐄰', 4769 => '𐄱', 4770 => '𐄲', 4771 => '𐄳', 4772 => '𐅀', 4773 => '𐅁', 4774 => '𐅄', 4775 => '𐅅', 4776 => '𐅆', 4777 => '𐅇', 4778 => '𐅉', 4779 => '𐅊', 4780 => '𐅋', 4781 => '𐅌', 4782 => '𐅍', 4783 => '𐅎', 4784 => '𐅐', 4785 => '𐅑', 4786 => '𐅒', 4787 => '𐅓', 4788 => '𐅔', 4789 => '𐅕', 4790 => '𐅖', 4791 => '𐅗', 4792 => '𐅠', 4793 => '𐅡', 4794 => '𐅢', 4795 => '𐅣', 4796 => '𐅤', 4797 => '𐅥', 4798 => '𐅦', 4799 => '𐅧', 4800 => '𐅨', 4801 => '𐅩', 4802 => '𐅪', 4803 => '𐅫', 4804 => '𐅬', 4805 => '𐅭', 4806 => '𐅮', 4807 => '𐅯', 4808 => '𐅰', 4809 => '𐅱', 4810 => '𐅲', 4811 => '𐅴', 4812 => '𐅵', 4813 => '𐅶', 4814 => '𐅷', 4815 => '𐅸', 4816 => '𐏓', 4817 => '𐏔', 4818 => '𐏕', 4819 => '𐩾', 4820 => '𐩿', 4821 => '𐤗', 4822 => '𐤘', 4823 => '𐤙', 4824 => '𐡛', 4825 => '𐡜', 4826 => '𐡝', 4827 => '𐡞', 4828 => '𐡟', 4829 => '𐭜', 4830 => '𐭝', 4831 => '𐭞', 4832 => '𐭟', 4833 => '𐭼', 4834 => '𐭽', 4835 => '𐭾', 4836 => '𐭿', 4837 => '𑁛', 4838 => '𑁜', 4839 => '𑁝', 4840 => '𑁞', 4841 => '𑁟', 4842 => '𑁠', 4843 => '𑁡', 4844 => '𑁢', 4845 => '𑁣', 4846 => '𑁤', 4847 => '𑁥', 4848 => '𐩄', 4849 => '𐩅', 4850 => '𐩆', 4851 => '𐩇', 4852 => '𒐲', 4853 => '𒐳', 4854 => '𒑖', 4855 => '𒑗', 4856 => '𒑚', 4857 => '𒑛', 4858 => '𒑜', 4859 => '𒑝', 4860 => '𒑞', 4861 => '𒑟', 4862 => '𒑠', 4863 => '𒑡', 4864 => '𒑢', 4865 => '𝍩', 4866 => '𝍪', 4867 => '𝍫', 4868 => '𝍬', 4869 => '𝍭', 4870 => '𝍮', 4871 => '𝍯', 4872 => '𝍰', 4873 => '𝍱', 4874 => 'ː', 4875 => 'ˑ', 4876 => 'ॱ', 4877 => 'ๆ', 4878 => 'ໆ', 4879 => 'ᪧ', 4880 => 'ꧏ', 4881 => 'ꩰ', 4882 => 'ꫝ', 4883 => 'ゝ', 4884 => 'ー', 4885 => 'ヽ', 4886 => '¤', 4887 => '¢', 4888 => '$', 4889 => '£', 4890 => '¥', 4891 => '؋', 4892 => '৲', 4893 => '৳', 4894 => '৻', 4895 => '૱', 4896 => '꠸', 4897 => '௹', 4898 => '฿', 4899 => '៛', 4900 => '₠', 4901 => '₡', 4902 => '₢', 4903 => '₣', 4904 => '₤', 4905 => '₥', 4906 => '₦', 4907 => '₧', 4908 => '₩', 4909 => '₪', 4910 => '₫', 4911 => '€', 4912 => '₭', 4913 => '₮', 4914 => '₯', 4915 => '₰', 4916 => '₱', 4917 => '₲', 4918 => '₳', 4919 => '₴', 4920 => '₵', 4921 => '₶', 4922 => '₷', 4923 => '₸', 4924 => '₹', 4925 => '0', 4926 => '1', 4927 => '2', 4928 => '3', 4929 => '4', 4930 => '5', 4931 => '6', 4932 => '7', 4933 => '8', 4934 => '9', 4935 => 'A', 4936 => 'ᴀ', 4937 => 'Ⱥ', 4938 => 'ᶏ', 4939 => 'ᴁ', 4940 => 'ᴂ', 4941 => 'Ɐ', 4942 => 'Ɑ', 4943 => 'ᶐ', 4944 => 'Ɒ', 4945 => 'B', 4946 => 'ʙ', 4947 => 'Ƀ', 4948 => 'ᴯ', 4949 => 'ᴃ', 4950 => 'ᵬ', 4951 => 'ᶀ', 4952 => 'Ɓ', 4953 => 'Ƃ', 4954 => 'C', 4955 => 'ᴄ', 4956 => 'Ȼ', 4957 => 'Ƈ', 4958 => 'ɕ', 4959 => 'Ↄ', 4960 => 'Ꜿ', 4961 => 'D', 4962 => 'ᴅ', 4963 => 'ᴆ', 4964 => 'ᵭ', 4965 => 'ᶁ', 4966 => 'Ɖ', 4967 => 'Ɗ', 4968 => 'ᶑ', 4969 => 'Ƌ', 4970 => 'ȡ', 4971 => 'ꝱ', 4972 => 'ẟ', 4973 => 'E', 4974 => 'ᴇ', 4975 => 'Ɇ', 4976 => 'ᶒ', 4977 => 'ⱸ', 4978 => 'Ǝ', 4979 => 'ⱻ', 4980 => 'Ə', 4981 => 'ᶕ', 4982 => 'Ɛ', 4983 => 'ᶓ', 4984 => 'ɘ', 4985 => 'ɚ', 4986 => 'ɜ', 4987 => 'ᶔ', 4988 => 'ᴈ', 4989 => 'ɝ', 4990 => 'ɞ', 4991 => 'ʚ', 4992 => 'ɤ', 4993 => 'F', 4994 => 'ꜰ', 4995 => 'ᵮ', 4996 => 'ᶂ', 4997 => 'Ƒ', 4998 => 'Ⅎ', 4999 => 'ꟻ', 5000 => 'G', 5001 => 'ɡ', 5002 => 'ɢ', 5003 => 'Ǥ', 5004 => 'ᶃ', 5005 => 'Ɠ', 5006 => 'ʛ', 5007 => 'ᵷ', 5008 => 'Ꝿ', 5009 => 'Ɣ', 5010 => 'Ƣ', 5011 => 'H', 5012 => 'ʜ', 5013 => 'Ƕ', 5014 => 'ɦ', 5015 => 'Ⱨ', 5016 => 'Ⱶ', 5017 => 'Ꜧ', 5018 => 'ɧ', 5019 => 'ʻ', 5020 => 'ʽ', 5021 => 'I', 5022 => 'ı', 5023 => 'ɪ', 5024 => 'ꟾ', 5025 => 'ᴉ', 5026 => 'Ɨ', 5027 => 'ᵻ', 5028 => 'ᶖ', 5029 => 'Ɩ', 5030 => 'ᵼ', 5031 => 'J', 5032 => 'ȷ', 5033 => 'ᴊ', 5034 => 'Ɉ', 5035 => 'ʝ', 5036 => 'ɟ', 5037 => 'ʄ', 5038 => 'K', 5039 => 'ᴋ', 5040 => 'ᶄ', 5041 => 'Ƙ', 5042 => 'Ⱪ', 5043 => 'Ꝁ', 5044 => 'Ꝃ', 5045 => 'Ꝅ', 5046 => 'ʞ', 5047 => 'L', 5048 => 'ʟ', 5049 => 'Ꝇ', 5050 => 'ᴌ', 5051 => 'Ꝉ', 5052 => 'Ƚ', 5053 => 'Ⱡ', 5054 => 'Ɫ', 5055 => 'ɬ', 5056 => 'ᶅ', 5057 => 'ɭ', 5058 => 'ꞎ', 5059 => 'ȴ', 5060 => 'ꝲ', 5061 => 'ɮ', 5062 => 'Ꞁ', 5063 => 'ƛ', 5064 => 'ʎ', 5065 => 'M', 5066 => 'ᴍ', 5067 => 'ᵯ', 5068 => 'ᶆ', 5069 => 'Ɱ', 5070 => 'ꟽ', 5071 => 'ꟿ', 5072 => 'ꝳ', 5073 => 'N', 5074 => 'ɴ', 5075 => 'ᴻ', 5076 => 'ᴎ', 5077 => 'ᵰ', 5078 => 'Ɲ', 5079 => 'Ƞ', 5080 => 'Ꞑ', 5081 => 'ᶇ', 5082 => 'ɳ', 5083 => 'ȵ', 5084 => 'ꝴ', 5085 => 'Ŋ', 5086 => 'O', 5087 => 'ᴏ', 5088 => 'ᴑ', 5089 => 'ɶ', 5090 => 'ᴔ', 5091 => 'ᴓ', 5092 => 'Ɔ', 5093 => 'ᴐ', 5094 => 'ᴒ', 5095 => 'ᶗ', 5096 => 'Ꝍ', 5097 => 'ᴖ', 5098 => 'ᴗ', 5099 => 'ⱺ', 5100 => 'Ɵ', 5101 => 'Ꝋ', 5102 => 'ɷ', 5103 => 'Ȣ', 5104 => 'ᴕ', 5105 => 'P', 5106 => 'ᴘ', 5107 => 'Ᵽ', 5108 => 'Ꝑ', 5109 => 'ᵱ', 5110 => 'ᶈ', 5111 => 'Ƥ', 5112 => 'Ꝓ', 5113 => 'Ꝕ', 5114 => 'ꟼ', 5115 => 'ɸ', 5116 => 'ⱷ', 5117 => 'Q', 5118 => 'Ꝗ', 5119 => 'Ꝙ', 5120 => 'ʠ', 5121 => 'Ɋ', 5122 => 'ĸ', 5123 => 'R', 5124 => 'Ʀ', 5125 => 'Ꝛ', 5126 => 'ᴙ', 5127 => 'Ɍ', 5128 => 'ᵲ', 5129 => 'ɹ', 5130 => 'ᴚ', 5131 => 'ɺ', 5132 => 'ᶉ', 5133 => 'ɻ', 5134 => 'ⱹ', 5135 => 'ɼ', 5136 => 'Ɽ', 5137 => 'ɾ', 5138 => 'ᵳ', 5139 => 'ɿ', 5140 => 'ʁ', 5141 => 'ꝵ', 5142 => 'ꝶ', 5143 => 'Ꝝ', 5144 => 'S', 5145 => 'ꜱ', 5146 => 'ᵴ', 5147 => 'ᶊ', 5148 => 'ʂ', 5149 => 'Ȿ', 5150 => 'ẜ', 5151 => 'ẝ', 5152 => 'Ʃ', 5153 => 'ᶋ', 5154 => 'ƪ', 5155 => 'ʅ', 5156 => 'ᶘ', 5157 => 'ʆ', 5158 => 'T', 5159 => 'ᴛ', 5160 => 'Ŧ', 5161 => 'Ⱦ', 5162 => 'ᵵ', 5163 => 'ƫ', 5164 => 'Ƭ', 5165 => 'Ʈ', 5166 => 'ȶ', 5167 => 'ꝷ', 5168 => 'ʇ', 5169 => 'U', 5170 => 'ᴜ', 5171 => 'ᴝ', 5172 => 'ᴞ', 5173 => 'ᵫ', 5174 => 'Ʉ', 5175 => 'ᵾ', 5176 => 'ᶙ', 5177 => 'Ɥ', 5178 => 'ʮ', 5179 => 'ʯ', 5180 => 'Ɯ', 5181 => 'ꟺ', 5182 => 'ᴟ', 5183 => 'ɰ', 5184 => 'Ʊ', 5185 => 'ᵿ', 5186 => 'V', 5187 => 'ᴠ', 5188 => 'Ꝟ', 5189 => 'ᶌ', 5190 => 'Ʋ', 5191 => 'ⱱ', 5192 => 'ⱴ', 5193 => 'Ỽ', 5194 => 'Ʌ', 5195 => 'W', 5196 => 'ᴡ', 5197 => 'Ⱳ', 5198 => 'ʍ', 5199 => 'X', 5200 => 'ᶍ', 5201 => 'Y', 5202 => 'ʏ', 5203 => 'Ɏ', 5204 => 'Ƴ', 5205 => 'Ỿ', 5206 => 'Z', 5207 => 'ᴢ', 5208 => 'Ƶ', 5209 => 'ᵶ', 5210 => 'ᶎ', 5211 => 'Ȥ', 5212 => 'ʐ', 5213 => 'ʑ', 5214 => 'Ɀ', 5215 => 'Ⱬ', 5216 => 'Ꝣ', 5217 => 'Ʒ', 5218 => 'ᴣ', 5219 => 'Ƹ', 5220 => 'ᶚ', 5221 => 'ƺ', 5222 => 'ʓ', 5223 => 'Ȝ', 5224 => 'Þ', 5225 => 'Ꝥ', 5226 => 'Ꝧ', 5227 => 'Ƿ', 5228 => 'Ꝩ', 5229 => 'Ꝫ', 5230 => 'Ꝭ', 5231 => 'Ꝯ', 5232 => 'ꝸ', 5233 => 'ƻ', 5234 => 'Ꜫ', 5235 => 'Ꜭ', 5236 => 'Ꜯ', 5237 => 'Ƨ', 5238 => 'Ƽ', 5239 => 'Ƅ', 5240 => 'ʔ', 5241 => 'Ɂ', 5242 => 'ˀ', 5243 => 'ʼ', 5244 => 'ˮ', 5245 => 'ʾ', 5246 => 'Ꜣ', 5247 => 'Ꞌ', 5248 => 'ʕ', 5249 => 'ʿ', 5250 => 'ˁ', 5251 => 'ᴤ', 5252 => 'ᴥ', 5253 => 'Ꜥ', 5254 => 'ʡ', 5255 => 'ʢ', 5256 => 'ʖ', 5257 => 'ǀ', 5258 => 'ǁ', 5259 => 'ǂ', 5260 => 'ǃ', 5261 => 'ʗ', 5262 => 'ʘ', 5263 => 'ʬ', 5264 => 'ʭ', 5265 => 'Α', 5266 => 'Β', 5267 => 'Γ', 5268 => 'ᴦ', 5269 => 'Δ', 5270 => 'Ε', 5271 => 'Ϝ', 5272 => 'Ͷ', 5273 => 'Ϛ', 5274 => 'Ζ', 5275 => 'Ͱ', 5276 => 'Η', 5277 => 'Θ', 5278 => 'Ι', 5279 => 'ϳ', 5280 => 'Κ', 5281 => 'Λ', 5282 => 'ᴧ', 5283 => 'Μ', 5284 => 'Ν', 5285 => 'Ξ', 5286 => 'Ο', 5287 => 'Π', 5288 => 'ᴨ', 5289 => 'Ϻ', 5290 => 'Ϟ', 5291 => 'Ϙ', 5292 => 'Ρ', 5293 => 'ᴩ', 5294 => 'ϼ', 5295 => 'Σ', 5296 => 'Ͼ', 5297 => 'Ͻ', 5298 => 'Ͽ', 5299 => 'Τ', 5300 => 'Υ', 5301 => 'Φ', 5302 => 'Χ', 5303 => 'Ψ', 5304 => 'ᴪ', 5305 => 'Ω', 5306 => 'Ϡ', 5307 => 'Ͳ', 5308 => 'Ϸ', 5309 => 'Ⲁ', 5310 => 'Ⲃ', 5311 => 'Ⲅ', 5312 => 'Ⲇ', 5313 => 'Ⲉ', 5314 => 'Ⲷ', 5315 => 'Ⲋ', 5316 => 'Ⲍ', 5317 => 'Ⲏ', 5318 => 'Ⲑ', 5319 => 'Ⲓ', 5320 => 'Ⲕ', 5321 => 'Ⲹ', 5322 => 'Ⲗ', 5323 => 'Ⲙ', 5324 => 'Ⲛ', 5325 => 'Ⲻ', 5326 => 'Ⲽ', 5327 => 'Ⲝ', 5328 => 'Ⲟ', 5329 => 'Ⲡ', 5330 => 'Ⲣ', 5331 => 'Ⲥ', 5332 => 'Ⲧ', 5333 => 'Ⲩ', 5334 => 'Ⲫ', 5335 => 'Ⲭ', 5336 => 'Ⲯ', 5337 => 'Ⲱ', 5338 => 'Ⲿ', 5339 => 'Ⳁ', 5340 => 'Ϣ', 5341 => 'Ⳬ', 5342 => 'Ⳃ', 5343 => 'Ⳅ', 5344 => 'Ⳇ', 5345 => 'Ϥ', 5346 => 'Ϧ', 5347 => 'Ⳉ', 5348 => 'Ϩ', 5349 => 'Ⳋ', 5350 => 'Ⳍ', 5351 => 'Ⳏ', 5352 => 'Ⳑ', 5353 => 'Ⳓ', 5354 => 'Ⳕ', 5355 => 'Ϫ', 5356 => 'Ⳮ', 5357 => 'Ⳗ', 5358 => 'Ϭ', 5359 => 'Ⳙ', 5360 => 'Ⳛ', 5361 => 'Ⳝ', 5362 => 'Ϯ', 5363 => 'Ⲳ', 5364 => 'Ⲵ', 5365 => 'Ⳟ', 5366 => 'Ⳡ', 5367 => 'Ⳣ', 5368 => 'А', 5369 => 'Ӑ', 5370 => 'Ӓ', 5371 => 'Ә', 5372 => 'Ӛ', 5373 => 'Ӕ', 5374 => 'Б', 5375 => 'В', 5376 => 'Г', 5377 => 'Ғ', 5378 => 'Ӻ', 5379 => 'Ҕ', 5380 => 'Ӷ', 5381 => 'Д', 5382 => 'Ԁ', 5383 => 'Ꚁ', 5384 => 'Ђ', 5385 => 'Ꙣ', 5386 => 'Ԃ', 5387 => 'Ѓ', 5388 => 'Ҙ', 5389 => 'Е', 5390 => 'Ӗ', 5391 => 'Є', 5392 => 'Ж', 5393 => 'Ꚅ', 5394 => 'Ӝ', 5395 => 'Җ', 5396 => 'З', 5397 => 'Ꙁ', 5398 => 'Ԅ', 5399 => 'Ԑ', 5400 => 'Ӟ', 5401 => 'Ꙃ', 5402 => 'Ѕ', 5403 => 'Ꙅ', 5404 => 'Ӡ', 5405 => 'Ꚉ', 5406 => 'Ԇ', 5407 => 'Ꚃ', 5408 => 'И', 5409 => 'Ҋ', 5410 => 'Ӥ', 5411 => 'І', 5412 => 'Ꙇ', 5413 => 'Ї', 5414 => 'Й', 5415 => 'Ј', 5416 => 'Ꙉ', 5417 => 'К', 5418 => 'Қ', 5419 => 'Ӄ', 5420 => 'Ҡ', 5421 => 'Ҟ', 5422 => 'Ҝ', 5423 => 'Ԟ', 5424 => 'Ԛ', 5425 => 'Л', 5426 => 'ᴫ', 5427 => 'Ӆ', 5428 => 'Ԓ', 5429 => 'Ԡ', 5430 => 'Љ', 5431 => 'Ꙥ', 5432 => 'Ԉ', 5433 => 'Ԕ', 5434 => 'М', 5435 => 'Ӎ', 5436 => 'Ꙧ', 5437 => 'Н', 5438 => 'Ӊ', 5439 => 'Ң', 5440 => 'Ӈ', 5441 => 'Ԣ', 5442 => 'Ҥ', 5443 => 'Њ', 5444 => 'Ԋ', 5445 => 'О', 5446 => 'Ӧ', 5447 => 'Ө', 5448 => 'Ӫ', 5449 => 'П', 5450 => 'Ԥ', 5451 => 'Ҧ', 5452 => 'Ҁ', 5453 => 'Р', 5454 => 'Ҏ', 5455 => 'Ԗ', 5456 => 'С', 5457 => 'Ԍ', 5458 => 'Ҫ', 5459 => 'Т', 5460 => 'Ꚍ', 5461 => 'Ԏ', 5462 => 'Ҭ', 5463 => 'Ꚋ', 5464 => 'Ћ', 5465 => 'Ќ', 5466 => 'У', 5467 => 'Ў', 5468 => 'Ӱ', 5469 => 'Ӳ', 5470 => 'Ү', 5471 => 'Ұ', 5472 => 'Ꙋ', 5473 => 'Ѹ', 5474 => 'Ф', 5475 => 'Х', 5476 => 'Ӽ', 5477 => 'Ӿ', 5478 => 'Ҳ', 5479 => 'Һ', 5480 => 'Ԧ', 5481 => 'Ꚕ', 5482 => 'Ѡ', 5483 => 'Ѿ', 5484 => 'Ꙍ', 5485 => 'Ѽ', 5486 => 'Ѻ', 5487 => 'Ц', 5488 => 'Ꙡ', 5489 => 'Ꚏ', 5490 => 'Ҵ', 5491 => 'Ꚑ', 5492 => 'Ч', 5493 => 'Ꚓ', 5494 => 'Ӵ', 5495 => 'Ҷ', 5496 => 'Ӌ', 5497 => 'Ҹ', 5498 => 'Ꚇ', 5499 => 'Ҽ', 5500 => 'Ҿ', 5501 => 'Џ', 5502 => 'Ш', 5503 => 'Ꚗ', 5504 => 'Щ', 5505 => 'Ꙏ', 5506 => 'ⸯ', 5507 => 'ꙿ', 5508 => 'Ъ', 5509 => 'Ꙑ', 5510 => 'Ы', 5511 => 'Ӹ', 5512 => 'Ь', 5513 => 'Ҍ', 5514 => 'Ѣ', 5515 => 'Ꙓ', 5516 => 'Э', 5517 => 'Ӭ', 5518 => 'Ю', 5519 => 'Ꙕ', 5520 => 'Ꙗ', 5521 => 'Я', 5522 => 'Ԙ', 5523 => 'Ѥ', 5524 => 'Ѧ', 5525 => 'Ꙙ', 5526 => 'Ѫ', 5527 => 'Ꙛ', 5528 => 'Ѩ', 5529 => 'Ꙝ', 5530 => 'Ѭ', 5531 => 'Ѯ', 5532 => 'Ѱ', 5533 => 'Ѳ', 5534 => 'Ѵ', 5535 => 'Ѷ', 5536 => 'Ꙟ', 5537 => 'Ҩ', 5538 => 'Ԝ', 5539 => 'Ӏ', 5540 => 'Ⰰ', 5541 => 'Ⰱ', 5542 => 'Ⰲ', 5543 => 'Ⰳ', 5544 => 'Ⰴ', 5545 => 'Ⰵ', 5546 => 'Ⰶ', 5547 => 'Ⰷ', 5548 => 'Ⰸ', 5549 => 'Ⰹ', 5550 => 'Ⰺ', 5551 => 'Ⰻ', 5552 => 'Ⰼ', 5553 => 'Ⰽ', 5554 => 'Ⰾ', 5555 => 'Ⰿ', 5556 => 'Ⱀ', 5557 => 'Ⱁ', 5558 => 'Ⱂ', 5559 => 'Ⱃ', 5560 => 'Ⱄ', 5561 => 'Ⱅ', 5562 => 'Ⱆ', 5563 => 'Ⱇ', 5564 => 'Ⱈ', 5565 => 'Ⱉ', 5566 => 'Ⱊ', 5567 => 'Ⱋ', 5568 => 'Ⱌ', 5569 => 'Ⱍ', 5570 => 'Ⱎ', 5571 => 'Ⱏ', 5572 => 'Ⱐ', 5573 => 'Ⱑ', 5574 => 'Ⱒ', 5575 => 'Ⱓ', 5576 => 'Ⱔ', 5577 => 'Ⱕ', 5578 => 'Ⱖ', 5579 => 'Ⱗ', 5580 => 'Ⱘ', 5581 => 'Ⱙ', 5582 => 'Ⱚ', 5583 => 'Ⱛ', 5584 => 'Ⱜ', 5585 => 'Ⱝ', 5586 => 'Ⱞ', 5587 => 'ა', 5588 => 'Ⴀ', 5589 => 'ბ', 5590 => 'Ⴁ', 5591 => 'გ', 5592 => 'Ⴂ', 5593 => 'დ', 5594 => 'Ⴃ', 5595 => 'ე', 5596 => 'Ⴄ', 5597 => 'ვ', 5598 => 'Ⴅ', 5599 => 'ზ', 5600 => 'Ⴆ', 5601 => 'ჱ', 5602 => 'Ⴡ', 5603 => 'თ', 5604 => 'Ⴇ', 5605 => 'ი', 5606 => 'Ⴈ', 5607 => 'კ', 5608 => 'Ⴉ', 5609 => 'ლ', 5610 => 'Ⴊ', 5611 => 'მ', 5612 => 'Ⴋ', 5613 => 'ნ', 5614 => 'Ⴌ', 5615 => 'ჲ', 5616 => 'Ⴢ', 5617 => 'ო', 5618 => 'Ⴍ', 5619 => 'პ', 5620 => 'Ⴎ', 5621 => 'ჟ', 5622 => 'Ⴏ', 5623 => 'რ', 5624 => 'Ⴐ', 5625 => 'ს', 5626 => 'Ⴑ', 5627 => 'ტ', 5628 => 'Ⴒ', 5629 => 'ჳ', 5630 => 'Ⴣ', 5631 => 'უ', 5632 => 'Ⴓ', 5633 => 'ფ', 5634 => 'Ⴔ', 5635 => 'ქ', 5636 => 'Ⴕ', 5637 => 'ღ', 5638 => 'Ⴖ', 5639 => 'ყ', 5640 => 'Ⴗ', 5641 => 'შ', 5642 => 'Ⴘ', 5643 => 'ჩ', 5644 => 'Ⴙ', 5645 => 'ც', 5646 => 'Ⴚ', 5647 => 'ძ', 5648 => 'Ⴛ', 5649 => 'წ', 5650 => 'Ⴜ', 5651 => 'ჭ', 5652 => 'Ⴝ', 5653 => 'ხ', 5654 => 'Ⴞ', 5655 => 'ჴ', 5656 => 'Ⴤ', 5657 => 'ჯ', 5658 => 'Ⴟ', 5659 => 'ჰ', 5660 => 'Ⴠ', 5661 => 'ჵ', 5662 => 'Ⴥ', 5663 => 'ჶ', 5664 => 'ჷ', 5665 => 'ჸ', 5666 => 'ჹ', 5667 => 'ჺ', 5668 => 'Ա', 5669 => 'Բ', 5670 => 'Գ', 5671 => 'Դ', 5672 => 'Ե', 5673 => 'Զ', 5674 => 'Է', 5675 => 'Ը', 5676 => 'Թ', 5677 => 'Ժ', 5678 => 'Ի', 5679 => 'Լ', 5680 => 'Խ', 5681 => 'Ծ', 5682 => 'Կ', 5683 => 'Հ', 5684 => 'Ձ', 5685 => 'Ղ', 5686 => 'Ճ', 5687 => 'Մ', 5688 => 'Յ', 5689 => 'Ն', 5690 => 'Շ', 5691 => 'Ո', 5692 => 'Չ', 5693 => 'Պ', 5694 => 'Ջ', 5695 => 'Ռ', 5696 => 'Ս', 5697 => 'Վ', 5698 => 'Տ', 5699 => 'Ր', 5700 => 'Ց', 5701 => 'Ւ', 5702 => 'Փ', 5703 => 'Ք', 5704 => 'Օ', 5705 => 'Ֆ', 5706 => 'ՙ', 5707 => 'א', 5708 => 'ב', 5709 => 'ג', 5710 => 'ד', 5711 => 'ה', 5712 => 'ו', 5713 => 'ז', 5714 => 'ח', 5715 => 'ט', 5716 => 'י', 5717 => 'ך', 5718 => 'ל', 5719 => 'ם', 5720 => 'ן', 5721 => 'ס', 5722 => 'ע', 5723 => 'ף', 5724 => 'ץ', 5725 => 'ק', 5726 => 'ר', 5727 => 'ש', 5728 => 'ת', 5729 => '𐤀', 5730 => '𐤁', 5731 => '𐤂', 5732 => '𐤃', 5733 => '𐤄', 5734 => '𐤅', 5735 => '𐤆', 5736 => '𐤇', 5737 => '𐤈', 5738 => '𐤉', 5739 => '𐤊', 5740 => '𐤋', 5741 => '𐤌', 5742 => '𐤍', 5743 => '𐤎', 5744 => '𐤏', 5745 => '𐤐', 5746 => '𐤑', 5747 => '𐤒', 5748 => '𐤓', 5749 => '𐤔', 5750 => '𐤕', 5751 => 'ࠀ', 5752 => 'ࠁ', 5753 => 'ࠂ', 5754 => 'ࠃ', 5755 => 'ࠄ', 5756 => 'ࠅ', 5757 => 'ࠆ', 5758 => 'ࠇ', 5759 => 'ࠈ', 5760 => 'ࠉ', 5761 => 'ࠊ', 5762 => 'ࠋ', 5763 => 'ࠌ', 5764 => 'ࠍ', 5765 => 'ࠎ', 5766 => 'ࠏ', 5767 => 'ࠐ', 5768 => 'ࠑ', 5769 => 'ࠒ', 5770 => 'ࠓ', 5771 => 'ࠔ', 5772 => 'ࠕ', 5773 => 'ࠚ', 5774 => 'ء', 5775 => 'آ', 5776 => 'أ', 5777 => 'ٲ', 5778 => 'ٱ', 5779 => 'ؤ', 5780 => 'إ', 5781 => 'ٳ', 5782 => 'ݳ', 5783 => 'ݴ', 5784 => 'ئ', 5785 => 'ا', 5786 => 'ٮ', 5787 => 'ب', 5788 => 'ٻ', 5789 => 'پ', 5790 => 'ڀ', 5791 => 'ݐ', 5792 => 'ݑ', 5793 => 'ݒ', 5794 => 'ݓ', 5795 => 'ݔ', 5796 => 'ݕ', 5797 => 'ݖ', 5798 => 'ة', 5799 => 'ت', 5800 => 'ث', 5801 => 'ٹ', 5802 => 'ٺ', 5803 => 'ټ', 5804 => 'ٽ', 5805 => 'ٿ', 5806 => 'ج', 5807 => 'ڃ', 5808 => 'ڄ', 5809 => 'چ', 5810 => 'ڿ', 5811 => 'ڇ', 5812 => 'ح', 5813 => 'خ', 5814 => 'ځ', 5815 => 'ڂ', 5816 => 'څ', 5817 => 'ݗ', 5818 => 'ݘ', 5819 => 'ݮ', 5820 => 'ݯ', 5821 => 'ݲ', 5822 => 'ݼ', 5823 => 'د', 5824 => 'ذ', 5825 => 'ڈ', 5826 => 'ډ', 5827 => 'ڊ', 5828 => 'ڋ', 5829 => 'ڌ', 5830 => 'ڍ', 5831 => 'ڎ', 5832 => 'ڏ', 5833 => 'ڐ', 5834 => 'ۮ', 5835 => 'ݙ', 5836 => 'ݚ', 5837 => 'ر', 5838 => 'ز', 5839 => 'ڑ', 5840 => 'ڒ', 5841 => 'ړ', 5842 => 'ڔ', 5843 => 'ڕ', 5844 => 'ږ', 5845 => 'ڗ', 5846 => 'ژ', 5847 => 'ڙ', 5848 => 'ۯ', 5849 => 'ݛ', 5850 => 'ݫ', 5851 => 'ݬ', 5852 => 'ݱ', 5853 => 'س', 5854 => 'ش', 5855 => 'ښ', 5856 => 'ڛ', 5857 => 'ڜ', 5858 => 'ۺ', 5859 => 'ݜ', 5860 => 'ݭ', 5861 => 'ݰ', 5862 => 'ݽ', 5863 => 'ݾ', 5864 => 'ص', 5865 => 'ض', 5866 => 'ڝ', 5867 => 'ڞ', 5868 => 'ۻ', 5869 => 'ط', 5870 => 'ظ', 5871 => 'ڟ', 5872 => 'ع', 5873 => 'غ', 5874 => 'ڠ', 5875 => 'ۼ', 5876 => 'ݝ', 5877 => 'ݞ', 5878 => 'ݟ', 5879 => 'ف', 5880 => 'ڡ', 5881 => 'ڢ', 5882 => 'ڣ', 5883 => 'ڤ', 5884 => 'ڥ', 5885 => 'ڦ', 5886 => 'ݠ', 5887 => 'ݡ', 5888 => 'ٯ', 5889 => 'ق', 5890 => 'ڧ', 5891 => 'ڨ', 5892 => 'ك', 5893 => 'ک', 5894 => 'ڪ', 5895 => 'ګ', 5896 => 'ڬ', 5897 => 'ݿ', 5898 => 'ڭ', 5899 => 'ڮ', 5900 => 'گ', 5901 => 'ڰ', 5902 => 'ڱ', 5903 => 'ڲ', 5904 => 'ڳ', 5905 => 'ڴ', 5906 => 'ݢ', 5907 => 'ػ', 5908 => 'ؼ', 5909 => 'ݣ', 5910 => 'ݤ', 5911 => 'ل', 5912 => 'ڵ', 5913 => 'ڶ', 5914 => 'ڷ', 5915 => 'ڸ', 5916 => 'ݪ', 5917 => 'م', 5918 => 'ݥ', 5919 => 'ݦ', 5920 => 'ن', 5921 => 'ں', 5922 => 'ڻ', 5923 => 'ڼ', 5924 => 'ڽ', 5925 => 'ڹ', 5926 => 'ݧ', 5927 => 'ݨ', 5928 => 'ݩ', 5929 => 'ه', 5930 => 'ھ', 5931 => 'ہ', 5932 => 'ۃ', 5933 => 'ۿ', 5934 => 'ە', 5935 => 'و', 5936 => 'ۄ', 5937 => 'ۅ', 5938 => 'ۆ', 5939 => 'ۇ', 5940 => 'ۈ', 5941 => 'ۉ', 5942 => 'ۊ', 5943 => 'ۋ', 5944 => 'ۏ', 5945 => 'ݸ', 5946 => 'ݹ', 5947 => 'ى', 5948 => 'ي', 5949 => 'ی', 5950 => 'ۍ', 5951 => 'ێ', 5952 => 'ې', 5953 => 'ۑ', 5954 => 'ؽ', 5955 => 'ؾ', 5956 => 'ؿ', 5957 => 'ؠ', 5958 => 'ݵ', 5959 => 'ݶ', 5960 => 'ݷ', 5961 => 'ے', 5962 => 'ݺ', 5963 => 'ݻ', 5964 => 'ܐ', 5965 => 'ܒ', 5966 => 'ܓ', 5967 => 'ܖ', 5968 => 'ܕ', 5969 => 'ܗ', 5970 => 'ܘ', 5971 => 'ܙ', 5972 => 'ݍ', 5973 => 'ܚ', 5974 => 'ܛ', 5975 => 'ܝ', 5976 => 'ܞ', 5977 => 'ܟ', 5978 => 'ݎ', 5979 => 'ܠ', 5980 => 'ܡ', 5981 => 'ܢ', 5982 => 'ܣ', 5983 => 'ܥ', 5984 => 'ܦ', 5985 => 'ݏ', 5986 => 'ܨ', 5987 => 'ܩ', 5988 => 'ܪ', 5989 => 'ܫ', 5990 => 'ܬ', 5991 => 'ࡀ', 5992 => 'ࡁ', 5993 => 'ࡂ', 5994 => 'ࡃ', 5995 => 'ࡄ', 5996 => 'ࡅ', 5997 => 'ࡆ', 5998 => 'ࡇ', 5999 => 'ࡈ', 6000 => 'ࡉ', 6001 => 'ࡊ', 6002 => 'ࡋ', 6003 => 'ࡌ', 6004 => 'ࡍ', 6005 => 'ࡎ', 6006 => 'ࡏ', 6007 => 'ࡐ', 6008 => 'ࡑ', 6009 => 'ࡒ', 6010 => 'ࡓ', 6011 => 'ࡔ', 6012 => 'ࡕ', 6013 => 'ࡖ', 6014 => 'ࡗ', 6015 => 'ࡘ', 6016 => 'ހ', 6017 => 'ޙ', 6018 => 'ޚ', 6019 => 'ށ', 6020 => 'ނ', 6021 => 'ރ', 6022 => 'ޜ', 6023 => 'ބ', 6024 => 'ޅ', 6025 => 'ކ', 6026 => 'އ', 6027 => 'ޢ', 6028 => 'ޣ', 6029 => 'ވ', 6030 => 'ޥ', 6031 => 'މ', 6032 => 'ފ', 6033 => 'ދ', 6034 => 'ޛ', 6035 => 'ތ', 6036 => 'ޘ', 6037 => 'ޠ', 6038 => 'ޡ', 6039 => 'ލ', 6040 => 'ގ', 6041 => 'ޤ', 6042 => 'ޏ', 6043 => 'ސ', 6044 => 'ޝ', 6045 => 'ޞ', 6046 => 'ޟ', 6047 => 'ޑ', 6048 => 'ޒ', 6049 => 'ޓ', 6050 => 'ޔ', 6051 => 'ޕ', 6052 => 'ޖ', 6053 => 'ޗ', 6054 => 'ޱ', 6055 => 'ߊ', 6056 => 'ߋ', 6057 => 'ߌ', 6058 => 'ߍ', 6059 => 'ߎ', 6060 => 'ߏ', 6061 => 'ߐ', 6062 => 'ߑ', 6063 => 'ߒ', 6064 => 'ߓ', 6065 => 'ߔ', 6066 => 'ߕ', 6067 => 'ߖ', 6068 => 'ߗ', 6069 => 'ߘ', 6070 => 'ߙ', 6071 => 'ߚ', 6072 => 'ߛ', 6073 => 'ߜ', 6074 => 'ߝ', 6075 => 'ߞ', 6076 => 'ߟ', 6077 => 'ߠ', 6078 => 'ߡ', 6079 => 'ߢ', 6080 => 'ߣ', 6081 => 'ߤ', 6082 => 'ߥ', 6083 => 'ߦ', 6084 => 'ߧ', 6085 => 'ߴ', 6086 => 'ߵ', 6087 => 'ⴰ', 6088 => 'ⴱ', 6089 => 'ⴲ', 6090 => 'ⴳ', 6091 => 'ⴴ', 6092 => 'ⴵ', 6093 => 'ⴶ', 6094 => 'ⴷ', 6095 => 'ⴸ', 6096 => 'ⴹ', 6097 => 'ⴺ', 6098 => 'ⴻ', 6099 => 'ⴼ', 6100 => 'ⴽ', 6101 => 'ⴾ', 6102 => 'ⴿ', 6103 => 'ⵀ', 6104 => 'ⵁ', 6105 => 'ⵂ', 6106 => 'ⵃ', 6107 => 'ⵄ', 6108 => 'ⵅ', 6109 => 'ⵆ', 6110 => 'ⵇ', 6111 => 'ⵈ', 6112 => 'ⵉ', 6113 => 'ⵊ', 6114 => 'ⵋ', 6115 => 'ⵌ', 6116 => 'ⵍ', 6117 => 'ⵎ', 6118 => 'ⵏ', 6119 => 'ⵐ', 6120 => 'ⵑ', 6121 => 'ⵒ', 6122 => 'ⵓ', 6123 => 'ⵔ', 6124 => 'ⵕ', 6125 => 'ⵖ', 6126 => 'ⵗ', 6127 => 'ⵘ', 6128 => 'ⵙ', 6129 => 'ⵚ', 6130 => 'ⵛ', 6131 => 'ⵜ', 6132 => 'ⵝ', 6133 => 'ⵞ', 6134 => 'ⵟ', 6135 => 'ⵠ', 6136 => 'ⵡ', 6137 => 'ⵢ', 6138 => 'ⵣ', 6139 => 'ⵤ', 6140 => 'ⵥ', 6141 => 'ⵯ', 6142 => 'ሀ', 6143 => 'ሁ', 6144 => 'ሂ', 6145 => 'ሃ', 6146 => 'ሄ', 6147 => 'ህ', 6148 => 'ሆ', 6149 => 'ሇ', 6150 => 'ለ', 6151 => 'ሉ', 6152 => 'ሊ', 6153 => 'ላ', 6154 => 'ሌ', 6155 => 'ል', 6156 => 'ሎ', 6157 => 'ሏ', 6158 => 'ⶀ', 6159 => 'ሐ', 6160 => 'ሑ', 6161 => 'ሒ', 6162 => 'ሓ', 6163 => 'ሔ', 6164 => 'ሕ', 6165 => 'ሖ', 6166 => 'ሗ', 6167 => 'መ', 6168 => 'ሙ', 6169 => 'ሚ', 6170 => 'ማ', 6171 => 'ሜ', 6172 => 'ም', 6173 => 'ሞ', 6174 => 'ሟ', 6175 => 'ᎀ', 6176 => 'ᎁ', 6177 => 'ᎂ', 6178 => 'ᎃ', 6179 => 'ⶁ', 6180 => 'ሠ', 6181 => 'ሡ', 6182 => 'ሢ', 6183 => 'ሣ', 6184 => 'ሤ', 6185 => 'ሥ', 6186 => 'ሦ', 6187 => 'ሧ', 6188 => 'ረ', 6189 => 'ሩ', 6190 => 'ሪ', 6191 => 'ራ', 6192 => 'ሬ', 6193 => 'ር', 6194 => 'ሮ', 6195 => 'ሯ', 6196 => 'ⶂ', 6197 => 'ሰ', 6198 => 'ሱ', 6199 => 'ሲ', 6200 => 'ሳ', 6201 => 'ሴ', 6202 => 'ስ', 6203 => 'ሶ', 6204 => 'ሷ', 6205 => 'ⶃ', 6206 => 'ꬁ', 6207 => 'ꬂ', 6208 => 'ꬃ', 6209 => 'ꬄ', 6210 => 'ꬅ', 6211 => 'ꬆ', 6212 => 'ሸ', 6213 => 'ሹ', 6214 => 'ሺ', 6215 => 'ሻ', 6216 => 'ሼ', 6217 => 'ሽ', 6218 => 'ሾ', 6219 => 'ሿ', 6220 => 'ⶄ', 6221 => 'ቀ', 6222 => 'ቁ', 6223 => 'ቂ', 6224 => 'ቃ', 6225 => 'ቄ', 6226 => 'ቅ', 6227 => 'ቆ', 6228 => 'ቇ', 6229 => 'ቈ', 6230 => 'ቊ', 6231 => 'ቋ', 6232 => 'ቌ', 6233 => 'ቍ', 6234 => 'ቐ', 6235 => 'ቑ', 6236 => 'ቒ', 6237 => 'ቓ', 6238 => 'ቔ', 6239 => 'ቕ', 6240 => 'ቖ', 6241 => 'ቘ', 6242 => 'ቚ', 6243 => 'ቛ', 6244 => 'ቜ', 6245 => 'ቝ', 6246 => 'በ', 6247 => 'ቡ', 6248 => 'ቢ', 6249 => 'ባ', 6250 => 'ቤ', 6251 => 'ብ', 6252 => 'ቦ', 6253 => 'ቧ', 6254 => 'ᎄ', 6255 => 'ᎅ', 6256 => 'ᎆ', 6257 => 'ᎇ', 6258 => 'ⶅ', 6259 => 'ቨ', 6260 => 'ቩ', 6261 => 'ቪ', 6262 => 'ቫ', 6263 => 'ቬ', 6264 => 'ቭ', 6265 => 'ቮ', 6266 => 'ቯ', 6267 => 'ተ', 6268 => 'ቱ', 6269 => 'ቲ', 6270 => 'ታ', 6271 => 'ቴ', 6272 => 'ት', 6273 => 'ቶ', 6274 => 'ቷ', 6275 => 'ⶆ', 6276 => 'ቸ', 6277 => 'ቹ', 6278 => 'ቺ', 6279 => 'ቻ', 6280 => 'ቼ', 6281 => 'ች', 6282 => 'ቾ', 6283 => 'ቿ', 6284 => 'ⶇ', 6285 => 'ኀ', 6286 => 'ኁ', 6287 => 'ኂ', 6288 => 'ኃ', 6289 => 'ኄ', 6290 => 'ኅ', 6291 => 'ኆ', 6292 => 'ኇ', 6293 => 'ኈ', 6294 => 'ኊ', 6295 => 'ኋ', 6296 => 'ኌ', 6297 => 'ኍ', 6298 => 'ነ', 6299 => 'ኑ', 6300 => 'ኒ', 6301 => 'ና', 6302 => 'ኔ', 6303 => 'ን', 6304 => 'ኖ', 6305 => 'ኗ', 6306 => 'ⶈ', 6307 => 'ኘ', 6308 => 'ኙ', 6309 => 'ኚ', 6310 => 'ኛ', 6311 => 'ኜ', 6312 => 'ኝ', 6313 => 'ኞ', 6314 => 'ኟ', 6315 => 'ⶉ', 6316 => 'አ', 6317 => 'ኡ', 6318 => 'ኢ', 6319 => 'ኣ', 6320 => 'ኤ', 6321 => 'እ', 6322 => 'ኦ', 6323 => 'ኧ', 6324 => 'ⶊ', 6325 => 'ከ', 6326 => 'ኩ', 6327 => 'ኪ', 6328 => 'ካ', 6329 => 'ኬ', 6330 => 'ክ', 6331 => 'ኮ', 6332 => 'ኯ', 6333 => 'ኰ', 6334 => 'ኲ', 6335 => 'ኳ', 6336 => 'ኴ', 6337 => 'ኵ', 6338 => 'ኸ', 6339 => 'ኹ', 6340 => 'ኺ', 6341 => 'ኻ', 6342 => 'ኼ', 6343 => 'ኽ', 6344 => 'ኾ', 6345 => 'ዀ', 6346 => 'ዂ', 6347 => 'ዃ', 6348 => 'ዄ', 6349 => 'ዅ', 6350 => 'ወ', 6351 => 'ዉ', 6352 => 'ዊ', 6353 => 'ዋ', 6354 => 'ዌ', 6355 => 'ው', 6356 => 'ዎ', 6357 => 'ዏ', 6358 => 'ዐ', 6359 => 'ዑ', 6360 => 'ዒ', 6361 => 'ዓ', 6362 => 'ዔ', 6363 => 'ዕ', 6364 => 'ዖ', 6365 => 'ዘ', 6366 => 'ዙ', 6367 => 'ዚ', 6368 => 'ዛ', 6369 => 'ዜ', 6370 => 'ዝ', 6371 => 'ዞ', 6372 => 'ዟ', 6373 => 'ⶋ', 6374 => 'ꬑ', 6375 => 'ꬒ', 6376 => 'ꬓ', 6377 => 'ꬔ', 6378 => 'ꬕ', 6379 => 'ꬖ', 6380 => 'ዠ', 6381 => 'ዡ', 6382 => 'ዢ', 6383 => 'ዣ', 6384 => 'ዤ', 6385 => 'ዥ', 6386 => 'ዦ', 6387 => 'ዧ', 6388 => 'የ', 6389 => 'ዩ', 6390 => 'ዪ', 6391 => 'ያ', 6392 => 'ዬ', 6393 => 'ይ', 6394 => 'ዮ', 6395 => 'ዯ', 6396 => 'ደ', 6397 => 'ዱ', 6398 => 'ዲ', 6399 => 'ዳ', 6400 => 'ዴ', 6401 => 'ድ', 6402 => 'ዶ', 6403 => 'ዷ', 6404 => 'ⶌ', 6405 => 'ꬉ', 6406 => 'ꬊ', 6407 => 'ꬋ', 6408 => 'ꬌ', 6409 => 'ꬍ', 6410 => 'ꬎ', 6411 => 'ዸ', 6412 => 'ዹ', 6413 => 'ዺ', 6414 => 'ዻ', 6415 => 'ዼ', 6416 => 'ዽ', 6417 => 'ዾ', 6418 => 'ዿ', 6419 => 'ⶍ', 6420 => 'ጀ', 6421 => 'ጁ', 6422 => 'ጂ', 6423 => 'ጃ', 6424 => 'ጄ', 6425 => 'ጅ', 6426 => 'ጆ', 6427 => 'ጇ', 6428 => 'ⶎ', 6429 => 'ገ', 6430 => 'ጉ', 6431 => 'ጊ', 6432 => 'ጋ', 6433 => 'ጌ', 6434 => 'ግ', 6435 => 'ጎ', 6436 => 'ጏ', 6437 => 'ጐ', 6438 => 'ጒ', 6439 => 'ጓ', 6440 => 'ጔ', 6441 => 'ጕ', 6442 => 'ጘ', 6443 => 'ጙ', 6444 => 'ጚ', 6445 => 'ጛ', 6446 => 'ጜ', 6447 => 'ጝ', 6448 => 'ጞ', 6449 => 'ጟ', 6450 => 'ⶓ', 6451 => 'ⶔ', 6452 => 'ⶕ', 6453 => 'ⶖ', 6454 => 'ጠ', 6455 => 'ጡ', 6456 => 'ጢ', 6457 => 'ጣ', 6458 => 'ጤ', 6459 => 'ጥ', 6460 => 'ጦ', 6461 => 'ጧ', 6462 => 'ⶏ', 6463 => 'ጨ', 6464 => 'ጩ', 6465 => 'ጪ', 6466 => 'ጫ', 6467 => 'ጬ', 6468 => 'ጭ', 6469 => 'ጮ', 6470 => 'ጯ', 6471 => 'ⶐ', 6472 => 'ꬠ', 6473 => 'ꬡ', 6474 => 'ꬢ', 6475 => 'ꬣ', 6476 => 'ꬤ', 6477 => 'ꬥ', 6478 => 'ꬦ', 6479 => 'ጰ', 6480 => 'ጱ', 6481 => 'ጲ', 6482 => 'ጳ', 6483 => 'ጴ', 6484 => 'ጵ', 6485 => 'ጶ', 6486 => 'ጷ', 6487 => 'ⶑ', 6488 => 'ጸ', 6489 => 'ጹ', 6490 => 'ጺ', 6491 => 'ጻ', 6492 => 'ጼ', 6493 => 'ጽ', 6494 => 'ጾ', 6495 => 'ጿ', 6496 => 'ꬨ', 6497 => 'ꬩ', 6498 => 'ꬪ', 6499 => 'ꬫ', 6500 => 'ꬬ', 6501 => 'ꬭ', 6502 => 'ꬮ', 6503 => 'ፀ', 6504 => 'ፁ', 6505 => 'ፂ', 6506 => 'ፃ', 6507 => 'ፄ', 6508 => 'ፅ', 6509 => 'ፆ', 6510 => 'ፇ', 6511 => 'ፈ', 6512 => 'ፉ', 6513 => 'ፊ', 6514 => 'ፋ', 6515 => 'ፌ', 6516 => 'ፍ', 6517 => 'ፎ', 6518 => 'ፏ', 6519 => 'ᎈ', 6520 => 'ᎉ', 6521 => 'ᎊ', 6522 => 'ᎋ', 6523 => 'ፐ', 6524 => 'ፑ', 6525 => 'ፒ', 6526 => 'ፓ', 6527 => 'ፔ', 6528 => 'ፕ', 6529 => 'ፖ', 6530 => 'ፗ', 6531 => 'ᎌ', 6532 => 'ᎍ', 6533 => 'ᎎ', 6534 => 'ᎏ', 6535 => 'ⶒ', 6536 => 'ፘ', 6537 => 'ፙ', 6538 => 'ፚ', 6539 => 'ⶠ', 6540 => 'ⶡ', 6541 => 'ⶢ', 6542 => 'ⶣ', 6543 => 'ⶤ', 6544 => 'ⶥ', 6545 => 'ⶦ', 6546 => 'ⶨ', 6547 => 'ⶩ', 6548 => 'ⶪ', 6549 => 'ⶫ', 6550 => 'ⶬ', 6551 => 'ⶭ', 6552 => 'ⶮ', 6553 => 'ⶰ', 6554 => 'ⶱ', 6555 => 'ⶲ', 6556 => 'ⶳ', 6557 => 'ⶴ', 6558 => 'ⶵ', 6559 => 'ⶶ', 6560 => 'ⶸ', 6561 => 'ⶹ', 6562 => 'ⶺ', 6563 => 'ⶻ', 6564 => 'ⶼ', 6565 => 'ⶽ', 6566 => 'ⶾ', 6567 => 'ⷀ', 6568 => 'ⷁ', 6569 => 'ⷂ', 6570 => 'ⷃ', 6571 => 'ⷄ', 6572 => 'ⷅ', 6573 => 'ⷆ', 6574 => 'ⷈ', 6575 => 'ⷉ', 6576 => 'ⷊ', 6577 => 'ⷋ', 6578 => 'ⷌ', 6579 => 'ⷍ', 6580 => 'ⷎ', 6581 => 'ⷐ', 6582 => 'ⷑ', 6583 => 'ⷒ', 6584 => 'ⷓ', 6585 => 'ⷔ', 6586 => 'ⷕ', 6587 => 'ⷖ', 6588 => 'ⷘ', 6589 => 'ⷙ', 6590 => 'ⷚ', 6591 => 'ⷛ', 6592 => 'ⷜ', 6593 => 'ⷝ', 6594 => 'ⷞ', 6595 => 'ॐ', 6596 => 'ॲ', 6597 => 'ऄ', 6598 => 'अ', 6599 => 'आ', 6600 => 'ॳ', 6601 => 'ॴ', 6602 => 'ॵ', 6603 => 'ॶ', 6604 => 'ॷ', 6605 => 'इ', 6606 => 'ई', 6607 => 'उ', 6608 => 'ऊ', 6609 => 'ऋ', 6610 => 'ॠ', 6611 => 'ऌ', 6612 => 'ॡ', 6613 => 'ऍ', 6614 => 'ऎ', 6615 => 'ए', 6616 => 'ऐ', 6617 => 'ऑ', 6618 => 'ऒ', 6619 => 'ओ', 6620 => 'औ', 6621 => 'क', 6622 => 'ख', 6623 => 'ग', 6624 => 'ॻ', 6625 => 'घ', 6626 => 'ङ', 6627 => 'च', 6628 => 'छ', 6629 => 'ज', 6630 => 'ॹ', 6631 => 'ॼ', 6632 => 'झ', 6633 => 'ञ', 6634 => 'ट', 6635 => 'ठ', 6636 => 'ड', 6637 => 'ॾ', 6638 => 'ढ', 6639 => 'ण', 6640 => 'त', 6641 => 'थ', 6642 => 'द', 6643 => 'ध', 6644 => 'न', 6645 => 'प', 6646 => 'फ', 6647 => 'ब', 6648 => 'ॿ', 6649 => 'भ', 6650 => 'म', 6651 => 'य', 6652 => 'ॺ', 6653 => 'र', 6654 => 'ल', 6655 => 'ळ', 6656 => 'व', 6657 => 'श', 6658 => 'ष', 6659 => 'स', 6660 => 'ह', 6661 => 'ऽ', 6662 => 'ॽ', 6663 => 'ᳩ', 6664 => 'ꣲ', 6665 => 'ꣻ', 6666 => 'অ', 6667 => 'আ', 6668 => 'ই', 6669 => 'ঈ', 6670 => 'উ', 6671 => 'ঊ', 6672 => 'ঋ', 6673 => 'ৠ', 6674 => 'ঌ', 6675 => 'ৡ', 6676 => 'এ', 6677 => 'ঐ', 6678 => 'ও', 6679 => 'ঔ', 6680 => 'ক', 6681 => 'খ', 6682 => 'গ', 6683 => 'ঘ', 6684 => 'ঙ', 6685 => 'চ', 6686 => 'ছ', 6687 => 'জ', 6688 => 'ঝ', 6689 => 'ঞ', 6690 => 'ট', 6691 => 'ঠ', 6692 => 'ড', 6693 => 'ঢ', 6694 => 'ণ', 6695 => 'ত', 6696 => 'থ', 6697 => 'দ', 6698 => 'ধ', 6699 => 'ন', 6700 => 'প', 6701 => 'ফ', 6702 => 'ব', 6703 => 'ভ', 6704 => 'ম', 6705 => 'য', 6706 => 'র', 6707 => 'ৰ', 6708 => 'ল', 6709 => 'ৱ', 6710 => 'শ', 6711 => 'ষ', 6712 => 'স', 6713 => 'হ', 6714 => 'ঽ', 6715 => 'ੴ', 6716 => 'ੳ', 6717 => 'ਉ', 6718 => 'ਊ', 6719 => 'ਓ', 6720 => 'ਅ', 6721 => 'ਆ', 6722 => 'ਐ', 6723 => 'ਔ', 6724 => 'ੲ', 6725 => 'ਇ', 6726 => 'ਈ', 6727 => 'ਏ', 6728 => 'ਸ', 6729 => 'ਹ', 6730 => 'ਕ', 6731 => 'ਖ', 6732 => 'ਗ', 6733 => 'ਘ', 6734 => 'ਙ', 6735 => 'ਚ', 6736 => 'ਛ', 6737 => 'ਜ', 6738 => 'ਝ', 6739 => 'ਞ', 6740 => 'ਟ', 6741 => 'ਠ', 6742 => 'ਡ', 6743 => 'ਢ', 6744 => 'ਣ', 6745 => 'ਤ', 6746 => 'ਥ', 6747 => 'ਦ', 6748 => 'ਧ', 6749 => 'ਨ', 6750 => 'ਪ', 6751 => 'ਫ', 6752 => 'ਬ', 6753 => 'ਭ', 6754 => 'ਮ', 6755 => 'ਯ', 6756 => 'ਰ', 6757 => 'ਲ', 6758 => 'ਵ', 6759 => 'ੜ', 6760 => 'ૐ', 6761 => 'અ', 6762 => 'આ', 6763 => 'ઇ', 6764 => 'ઈ', 6765 => 'ઉ', 6766 => 'ઊ', 6767 => 'ઋ', 6768 => 'ૠ', 6769 => 'ઌ', 6770 => 'ૡ', 6771 => 'ઍ', 6772 => 'એ', 6773 => 'ઐ', 6774 => 'ઑ', 6775 => 'ઓ', 6776 => 'ઔ', 6777 => 'ક', 6778 => 'ખ', 6779 => 'ગ', 6780 => 'ઘ', 6781 => 'ઙ', 6782 => 'ચ', 6783 => 'છ', 6784 => 'જ', 6785 => 'ઝ', 6786 => 'ઞ', 6787 => 'ટ', 6788 => 'ઠ', 6789 => 'ડ', 6790 => 'ઢ', 6791 => 'ણ', 6792 => 'ત', 6793 => 'થ', 6794 => 'દ', 6795 => 'ધ', 6796 => 'ન', 6797 => 'પ', 6798 => 'ફ', 6799 => 'બ', 6800 => 'ભ', 6801 => 'મ', 6802 => 'ય', 6803 => 'ર', 6804 => 'લ', 6805 => 'વ', 6806 => 'શ', 6807 => 'ષ', 6808 => 'સ', 6809 => 'હ', 6810 => 'ળ', 6811 => 'ઽ', 6812 => 'ଅ', 6813 => 'ଆ', 6814 => 'ଇ', 6815 => 'ଈ', 6816 => 'ଉ', 6817 => 'ଊ', 6818 => 'ଋ', 6819 => 'ୠ', 6820 => 'ଌ', 6821 => 'ୡ', 6822 => 'ଏ', 6823 => 'ଐ', 6824 => 'ଓ', 6825 => 'ଔ', 6826 => 'କ', 6827 => 'ଖ', 6828 => 'ଗ', 6829 => 'ଘ', 6830 => 'ଙ', 6831 => 'ଚ', 6832 => 'ଛ', 6833 => 'ଜ', 6834 => 'ଝ', 6835 => 'ଞ', 6836 => 'ଟ', 6837 => 'ଠ', 6838 => 'ଡ', 6839 => 'ଢ', 6840 => 'ଣ', 6841 => 'ତ', 6842 => 'ଥ', 6843 => 'ଦ', 6844 => 'ଧ', 6845 => 'ନ', 6846 => 'ପ', 6847 => 'ଫ', 6848 => 'ବ', 6849 => 'ଭ', 6850 => 'ମ', 6851 => 'ଯ', 6852 => 'ୟ', 6853 => 'ର', 6854 => 'ଲ', 6855 => 'ଳ', 6856 => 'ଵ', 6857 => 'ୱ', 6858 => 'ଶ', 6859 => 'ଷ', 6860 => 'ସ', 6861 => 'ହ', 6862 => 'ଽ', 6863 => 'ௐ', 6864 => 'அ', 6865 => 'ஆ', 6866 => 'இ', 6867 => 'ஈ', 6868 => 'உ', 6869 => 'ஊ', 6870 => 'எ', 6871 => 'ஏ', 6872 => 'ஐ', 6873 => 'ஒ', 6874 => 'ஓ', 6875 => 'ஔ', 6876 => 'ஃ', 6877 => 'க', 6878 => 'ங', 6879 => 'ச', 6880 => 'ஞ', 6881 => 'ட', 6882 => 'ண', 6883 => 'த', 6884 => 'ந', 6885 => 'ப', 6886 => 'ம', 6887 => 'ய', 6888 => 'ர', 6889 => 'ல', 6890 => 'வ', 6891 => 'ழ', 6892 => 'ள', 6893 => 'ற', 6894 => 'ன', 6895 => 'ஜ', 6896 => 'ஶ', 6897 => 'ஷ', 6898 => 'ஸ', 6899 => 'ஹ', 6900 => 'అ', 6901 => 'ఆ', 6902 => 'ఇ', 6903 => 'ఈ', 6904 => 'ఉ', 6905 => 'ఊ', 6906 => 'ఋ', 6907 => 'ౠ', 6908 => 'ఌ', 6909 => 'ౡ', 6910 => 'ఎ', 6911 => 'ఏ', 6912 => 'ఐ', 6913 => 'ఒ', 6914 => 'ఓ', 6915 => 'ఔ', 6916 => 'క', 6917 => 'ఖ', 6918 => 'గ', 6919 => 'ఘ', 6920 => 'ఙ', 6921 => 'చ', 6922 => 'ౘ', 6923 => 'ఛ', 6924 => 'జ', 6925 => 'ౙ', 6926 => 'ఝ', 6927 => 'ఞ', 6928 => 'ట', 6929 => 'ఠ', 6930 => 'డ', 6931 => 'ఢ', 6932 => 'ణ', 6933 => 'త', 6934 => 'థ', 6935 => 'ద', 6936 => 'ధ', 6937 => 'న', 6938 => 'ప', 6939 => 'ఫ', 6940 => 'బ', 6941 => 'భ', 6942 => 'మ', 6943 => 'య', 6944 => 'ర', 6945 => 'ఱ', 6946 => 'ల', 6947 => 'వ', 6948 => 'శ', 6949 => 'ష', 6950 => 'స', 6951 => 'హ', 6952 => 'ళ', 6953 => 'ఽ', 6954 => 'ಅ', 6955 => 'ಆ', 6956 => 'ಇ', 6957 => 'ಈ', 6958 => 'ಉ', 6959 => 'ಊ', 6960 => 'ಋ', 6961 => 'ೠ', 6962 => 'ಌ', 6963 => 'ೡ', 6964 => 'ಎ', 6965 => 'ಏ', 6966 => 'ಐ', 6967 => 'ಒ', 6968 => 'ಓ', 6969 => 'ಔ', 6970 => 'ಕ', 6971 => 'ಖ', 6972 => 'ಗ', 6973 => 'ಘ', 6974 => 'ಙ', 6975 => 'ಚ', 6976 => 'ಛ', 6977 => 'ಜ', 6978 => 'ಝ', 6979 => 'ಞ', 6980 => 'ಟ', 6981 => 'ಠ', 6982 => 'ಡ', 6983 => 'ಢ', 6984 => 'ಣ', 6985 => 'ತ', 6986 => 'ಥ', 6987 => 'ದ', 6988 => 'ಧ', 6989 => 'ನ', 6990 => 'ಪ', 6991 => 'ಫ', 6992 => 'ಬ', 6993 => 'ಭ', 6994 => 'ಮ', 6995 => 'ಯ', 6996 => 'ರ', 6997 => 'ಱ', 6998 => 'ಲ', 6999 => 'ವ', 7000 => 'ಶ', 7001 => 'ಷ', 7002 => 'ಸ', 7003 => 'ಹ', 7004 => 'ಳ', 7005 => 'ೞ', 7006 => 'ಽ', 7007 => 'ೱ', 7008 => 'ೲ', 7009 => 'അ', 7010 => 'ആ', 7011 => 'ഇ', 7012 => 'ഈ', 7013 => 'ഉ', 7014 => 'ഊ', 7015 => 'ഋ', 7016 => 'ൠ', 7017 => 'ഌ', 7018 => 'ൡ', 7019 => 'എ', 7020 => 'ഏ', 7021 => 'ഐ', 7022 => 'ഒ', 7023 => 'ഓ', 7024 => 'ഔ', 7025 => 'ക', 7026 => 'ഖ', 7027 => 'ഗ', 7028 => 'ഘ', 7029 => 'ങ', 7030 => 'ച', 7031 => 'ഛ', 7032 => 'ജ', 7033 => 'ഝ', 7034 => 'ഞ', 7035 => 'ട', 7036 => 'ഠ', 7037 => 'ഡ', 7038 => 'ഢ', 7039 => 'ണ', 7040 => 'ത', 7041 => 'ഥ', 7042 => 'ദ', 7043 => 'ധ', 7044 => 'ന', 7045 => 'ഩ', 7046 => 'പ', 7047 => 'ഫ', 7048 => 'ബ', 7049 => 'ഭ', 7050 => 'മ', 7051 => 'യ', 7052 => 'ര', 7053 => 'ല', 7054 => 'വ', 7055 => 'ശ', 7056 => 'ഷ', 7057 => 'സ', 7058 => 'ഹ', 7059 => 'ള', 7060 => 'ഴ', 7061 => 'റ', 7062 => 'ഺ', 7063 => 'ഽ', 7064 => 'අ', 7065 => 'ආ', 7066 => 'ඇ', 7067 => 'ඈ', 7068 => 'ඉ', 7069 => 'ඊ', 7070 => 'උ', 7071 => 'ඌ', 7072 => 'ඍ', 7073 => 'ඎ', 7074 => 'ඏ', 7075 => 'ඐ', 7076 => 'එ', 7077 => 'ඒ', 7078 => 'ඓ', 7079 => 'ඔ', 7080 => 'ඕ', 7081 => 'ඖ', 7082 => 'ක', 7083 => 'ඛ', 7084 => 'ග', 7085 => 'ඝ', 7086 => 'ඞ', 7087 => 'ඟ', 7088 => 'ච', 7089 => 'ඡ', 7090 => 'ජ', 7091 => 'ඣ', 7092 => 'ඤ', 7093 => 'ඥ', 7094 => 'ඦ', 7095 => 'ට', 7096 => 'ඨ', 7097 => 'ඩ', 7098 => 'ඪ', 7099 => 'ණ', 7100 => 'ඬ', 7101 => 'ත', 7102 => 'ථ', 7103 => 'ද', 7104 => 'ධ', 7105 => 'න', 7106 => 'ඳ', 7107 => 'ප', 7108 => 'ඵ', 7109 => 'බ', 7110 => 'භ', 7111 => 'ම', 7112 => 'ඹ', 7113 => 'ය', 7114 => 'ර', 7115 => 'ල', 7116 => 'ව', 7117 => 'ශ', 7118 => 'ෂ', 7119 => 'ස', 7120 => 'හ', 7121 => 'ළ', 7122 => 'ෆ', 7123 => 'ꯀ', 7124 => 'ꯁ', 7125 => 'ꯂ', 7126 => 'ꯃ', 7127 => 'ꯄ', 7128 => 'ꯅ', 7129 => 'ꯆ', 7130 => 'ꯇ', 7131 => 'ꯈ', 7132 => 'ꯉ', 7133 => 'ꯊ', 7134 => 'ꯋ', 7135 => 'ꯌ', 7136 => 'ꯍ', 7137 => 'ꯎ', 7138 => 'ꯏ', 7139 => 'ꯐ', 7140 => 'ꯑ', 7141 => 'ꯒ', 7142 => 'ꯓ', 7143 => 'ꯔ', 7144 => 'ꯕ', 7145 => 'ꯖ', 7146 => 'ꯗ', 7147 => 'ꯘ', 7148 => 'ꯙ', 7149 => 'ꯚ', 7150 => 'ꯛ', 7151 => 'ꯜ', 7152 => 'ꯝ', 7153 => 'ꯞ', 7154 => 'ꯟ', 7155 => 'ꯠ', 7156 => 'ꯡ', 7157 => 'ꯢ', 7158 => 'ꠀ', 7159 => 'ꠁ', 7160 => 'ꠃ', 7161 => 'ꠄ', 7162 => 'ꠅ', 7163 => 'ꠇ', 7164 => 'ꠈ', 7165 => 'ꠉ', 7166 => 'ꠊ', 7167 => 'ꠌ', 7168 => 'ꠍ', 7169 => 'ꠎ', 7170 => 'ꠏ', 7171 => 'ꠐ', 7172 => 'ꠑ', 7173 => 'ꠒ', 7174 => 'ꠓ', 7175 => 'ꠔ', 7176 => 'ꠕ', 7177 => 'ꠖ', 7178 => 'ꠗ', 7179 => 'ꠘ', 7180 => 'ꠙ', 7181 => 'ꠚ', 7182 => 'ꠛ', 7183 => 'ꠜ', 7184 => 'ꠝ', 7185 => 'ꠞ', 7186 => 'ꠟ', 7187 => 'ꠠ', 7188 => 'ꠡ', 7189 => 'ꠢ', 7190 => 'ꢂ', 7191 => 'ꢃ', 7192 => 'ꢄ', 7193 => 'ꢅ', 7194 => 'ꢆ', 7195 => 'ꢇ', 7196 => 'ꢈ', 7197 => 'ꢉ', 7198 => 'ꢊ', 7199 => 'ꢋ', 7200 => 'ꢌ', 7201 => 'ꢍ', 7202 => 'ꢎ', 7203 => 'ꢏ', 7204 => 'ꢐ', 7205 => 'ꢑ', 7206 => 'ꢒ', 7207 => 'ꢓ', 7208 => 'ꢔ', 7209 => 'ꢕ', 7210 => 'ꢖ', 7211 => 'ꢗ', 7212 => 'ꢘ', 7213 => 'ꢙ', 7214 => 'ꢚ', 7215 => 'ꢛ', 7216 => 'ꢜ', 7217 => 'ꢝ', 7218 => 'ꢞ', 7219 => 'ꢟ', 7220 => 'ꢠ', 7221 => 'ꢡ', 7222 => 'ꢢ', 7223 => 'ꢣ', 7224 => 'ꢤ', 7225 => 'ꢥ', 7226 => 'ꢦ', 7227 => 'ꢧ', 7228 => 'ꢨ', 7229 => 'ꢩ', 7230 => 'ꢪ', 7231 => 'ꢫ', 7232 => 'ꢬ', 7233 => 'ꢭ', 7234 => 'ꢮ', 7235 => 'ꢯ', 7236 => 'ꢰ', 7237 => 'ꢱ', 7238 => 'ꢲ', 7239 => 'ꢳ', 7240 => '𑂃', 7241 => '𑂄', 7242 => '𑂅', 7243 => '𑂆', 7244 => '𑂇', 7245 => '𑂈', 7246 => '𑂉', 7247 => '𑂊', 7248 => '𑂋', 7249 => '𑂌', 7250 => '𑂍', 7251 => '𑂎', 7252 => '𑂏', 7253 => '𑂐', 7254 => '𑂑', 7255 => '𑂒', 7256 => '𑂓', 7257 => '𑂔', 7258 => '𑂕', 7259 => '𑂖', 7260 => '𑂗', 7261 => '𑂘', 7262 => '𑂙', 7263 => '𑂛', 7264 => '𑂝', 7265 => '𑂞', 7266 => '𑂟', 7267 => '𑂠', 7268 => '𑂡', 7269 => '𑂢', 7270 => '𑂣', 7271 => '𑂤', 7272 => '𑂥', 7273 => '𑂦', 7274 => '𑂧', 7275 => '𑂨', 7276 => '𑂩', 7277 => '𑂪', 7278 => '𑂬', 7279 => '𑂭', 7280 => '𑂮', 7281 => '𑂯', 7282 => 'ᮃ', 7283 => 'ᮄ', 7284 => 'ᮅ', 7285 => 'ᮆ', 7286 => 'ᮇ', 7287 => 'ᮈ', 7288 => 'ᮉ', 7289 => 'ᮊ', 7290 => 'ᮮ', 7291 => 'ᮋ', 7292 => 'ᮌ', 7293 => 'ᮍ', 7294 => 'ᮎ', 7295 => 'ᮏ', 7296 => 'ᮐ', 7297 => 'ᮑ', 7298 => 'ᮒ', 7299 => 'ᮓ', 7300 => 'ᮔ', 7301 => 'ᮕ', 7302 => 'ᮖ', 7303 => 'ᮗ', 7304 => 'ᮘ', 7305 => 'ᮙ', 7306 => 'ᮚ', 7307 => 'ᮛ', 7308 => 'ᮜ', 7309 => 'ᮝ', 7310 => 'ᮞ', 7311 => 'ᮟ', 7312 => 'ᮯ', 7313 => 'ᮠ', 7314 => '𑀅', 7315 => '𑀆', 7316 => '𑀇', 7317 => '𑀈', 7318 => '𑀉', 7319 => '𑀊', 7320 => '𑀋', 7321 => '𑀌', 7322 => '𑀍', 7323 => '𑀎', 7324 => '𑀏', 7325 => '𑀐', 7326 => '𑀑', 7327 => '𑀒', 7328 => '𑀓', 7329 => '𑀔', 7330 => '𑀕', 7331 => '𑀖', 7332 => '𑀗', 7333 => '𑀘', 7334 => '𑀙', 7335 => '𑀚', 7336 => '𑀛', 7337 => '𑀜', 7338 => '𑀝', 7339 => '𑀞', 7340 => '𑀟', 7341 => '𑀠', 7342 => '𑀡', 7343 => '𑀢', 7344 => '𑀣', 7345 => '𑀤', 7346 => '𑀥', 7347 => '𑀦', 7348 => '𑀧', 7349 => '𑀨', 7350 => '𑀩', 7351 => '𑀪', 7352 => '𑀫', 7353 => '𑀬', 7354 => '𑀭', 7355 => '𑀮', 7356 => '𑀯', 7357 => '𑀰', 7358 => '𑀱', 7359 => '𑀲', 7360 => '𑀳', 7361 => '𑀃', 7362 => '𑀄', 7363 => '𑀴', 7364 => '𑀵', 7365 => '𑀶', 7366 => '𑀷', 7367 => '𐨀', 7368 => '𐨐', 7369 => '𐨑', 7370 => '𐨒', 7371 => '𐨓', 7372 => '𐨕', 7373 => '𐨖', 7374 => '𐨗', 7375 => '𐨙', 7376 => '𐨚', 7377 => '𐨛', 7378 => '𐨜', 7379 => '𐨝', 7380 => '𐨞', 7381 => '𐨟', 7382 => '𐨠', 7383 => '𐨡', 7384 => '𐨢', 7385 => '𐨣', 7386 => '𐨤', 7387 => '𐨥', 7388 => '𐨦', 7389 => '𐨧', 7390 => '𐨨', 7391 => '𐨩', 7392 => '𐨪', 7393 => '𐨫', 7394 => '𐨬', 7395 => '𐨭', 7396 => '𐨮', 7397 => '𐨯', 7398 => '𐨰', 7399 => '𐨱', 7400 => '𐨲', 7401 => '𐨳', 7402 => 'ก', 7403 => 'ข', 7404 => 'ฃ', 7405 => 'ค', 7406 => 'ฅ', 7407 => 'ฆ', 7408 => 'ง', 7409 => 'จ', 7410 => 'ฉ', 7411 => 'ช', 7412 => 'ซ', 7413 => 'ฌ', 7414 => 'ญ', 7415 => 'ฎ', 7416 => 'ฏ', 7417 => 'ฐ', 7418 => 'ฑ', 7419 => 'ฒ', 7420 => 'ณ', 7421 => 'ด', 7422 => 'ต', 7423 => 'ถ', 7424 => 'ท', 7425 => 'ธ', 7426 => 'น', 7427 => 'บ', 7428 => 'ป', 7429 => 'ผ', 7430 => 'ฝ', 7431 => 'พ', 7432 => 'ฟ', 7433 => 'ภ', 7434 => 'ม', 7435 => 'ย', 7436 => 'ร', 7437 => 'ฤ', 7438 => 'ล', 7439 => 'ฦ', 7440 => 'ว', 7441 => 'ศ', 7442 => 'ษ', 7443 => 'ส', 7444 => 'ห', 7445 => 'ฬ', 7446 => 'อ', 7447 => 'ฮ', 7448 => 'ฯ', 7449 => 'ะ', 7450 => 'า', 7451 => 'ำ', 7452 => 'เ', 7453 => 'แ', 7454 => 'โ', 7455 => 'ใ', 7456 => 'ไ', 7457 => 'ๅ', 7458 => 'ກ', 7459 => 'ຂ', 7460 => 'ຄ', 7461 => 'ງ', 7462 => 'ຈ', 7463 => 'ສ', 7464 => 'ຊ', 7465 => 'ຍ', 7466 => 'ດ', 7467 => 'ຕ', 7468 => 'ຖ', 7469 => 'ທ', 7470 => 'ນ', 7471 => 'ບ', 7472 => 'ປ', 7473 => 'ຜ', 7474 => 'ຝ', 7475 => 'ພ', 7476 => 'ຟ', 7477 => 'ມ', 7478 => 'ຢ', 7479 => 'ຣ', 7480 => 'ລ', 7481 => 'ວ', 7482 => 'ຫ', 7483 => 'ອ', 7484 => 'ຮ', 7485 => 'ຯ', 7486 => 'ະ', 7487 => 'າ', 7488 => 'ຳ', 7489 => 'ຽ', 7490 => 'ເ', 7491 => 'ແ', 7492 => 'ໂ', 7493 => 'ໃ', 7494 => 'ໄ', 7495 => 'ꪀ', 7496 => 'ꪁ', 7497 => 'ꪂ', 7498 => 'ꪃ', 7499 => 'ꪄ', 7500 => 'ꪅ', 7501 => 'ꪆ', 7502 => 'ꪇ', 7503 => 'ꪈ', 7504 => 'ꪉ', 7505 => 'ꪊ', 7506 => 'ꪋ', 7507 => 'ꪌ', 7508 => 'ꪍ', 7509 => 'ꪎ', 7510 => 'ꪏ', 7511 => 'ꪐ', 7512 => 'ꪑ', 7513 => 'ꪒ', 7514 => 'ꪓ', 7515 => 'ꪔ', 7516 => 'ꪕ', 7517 => 'ꪖ', 7518 => 'ꪗ', 7519 => 'ꪘ', 7520 => 'ꪙ', 7521 => 'ꪚ', 7522 => 'ꪛ', 7523 => 'ꪜ', 7524 => 'ꪝ', 7525 => 'ꪞ', 7526 => 'ꪟ', 7527 => 'ꪠ', 7528 => 'ꪡ', 7529 => 'ꪢ', 7530 => 'ꪣ', 7531 => 'ꪤ', 7532 => 'ꪥ', 7533 => 'ꪦ', 7534 => 'ꪧ', 7535 => 'ꪨ', 7536 => 'ꪩ', 7537 => 'ꪪ', 7538 => 'ꪫ', 7539 => 'ꪬ', 7540 => 'ꪭ', 7541 => 'ꪮ', 7542 => 'ꪯ', 7543 => 'ꪱ', 7544 => 'ꪵ', 7545 => 'ꪶ', 7546 => 'ꪹ', 7547 => 'ꪺ', 7548 => 'ꪻ', 7549 => 'ꪼ', 7550 => 'ꪽ', 7551 => 'ꫀ', 7552 => 'ꫂ', 7553 => 'ꫛ', 7554 => 'ꫜ', 7555 => 'ཀ', 7556 => 'ཫ', 7557 => 'ཁ', 7558 => 'ག', 7559 => 'ང', 7560 => 'ཅ', 7561 => 'ཆ', 7562 => 'ཇ', 7563 => 'ཉ', 7564 => 'ཊ', 7565 => 'ཋ', 7566 => 'ཌ', 7567 => 'ཎ', 7568 => 'ཏ', 7569 => 'ཐ', 7570 => 'ད', 7571 => 'ན', 7572 => 'པ', 7573 => 'ཕ', 7574 => 'བ', 7575 => 'མ', 7576 => 'ཙ', 7577 => 'ཚ', 7578 => 'ཛ', 7579 => 'ཝ', 7580 => 'ཞ', 7581 => 'ཟ', 7582 => 'འ', 7583 => 'ཡ', 7584 => 'ར', 7585 => 'ཬ', 7586 => 'ལ', 7587 => 'ཤ', 7588 => 'ཥ', 7589 => 'ས', 7590 => 'ཧ', 7591 => 'ཨ', 7592 => 'ྈ', 7593 => 'ྉ', 7594 => 'ྌ', 7595 => 'ྊ', 7596 => 'ྋ', 7597 => 'ᰀ', 7598 => 'ᰁ', 7599 => 'ᰂ', 7600 => 'ᰃ', 7601 => 'ᰄ', 7602 => 'ᰅ', 7603 => 'ᰆ', 7604 => 'ᰇ', 7605 => 'ᰈ', 7606 => 'ᰉ', 7607 => 'ᱍ', 7608 => 'ᱎ', 7609 => 'ᱏ', 7610 => 'ᰊ', 7611 => 'ᰋ', 7612 => 'ᰌ', 7613 => 'ᰍ', 7614 => 'ᰎ', 7615 => 'ᰏ', 7616 => 'ᰐ', 7617 => 'ᰑ', 7618 => 'ᰒ', 7619 => 'ᰓ', 7620 => 'ᰔ', 7621 => 'ᰕ', 7622 => 'ᰖ', 7623 => 'ᰗ', 7624 => 'ᰘ', 7625 => 'ᰙ', 7626 => 'ᰚ', 7627 => 'ᰛ', 7628 => 'ᰜ', 7629 => 'ᰝ', 7630 => 'ᰞ', 7631 => 'ᰟ', 7632 => 'ᰠ', 7633 => 'ᰡ', 7634 => 'ᰢ', 7635 => 'ᰣ', 7636 => 'ꡀ', 7637 => 'ꡁ', 7638 => 'ꡂ', 7639 => 'ꡃ', 7640 => 'ꡄ', 7641 => 'ꡅ', 7642 => 'ꡆ', 7643 => 'ꡇ', 7644 => 'ꡩ', 7645 => 'ꡪ', 7646 => 'ꡫ', 7647 => 'ꡬ', 7648 => 'ꡈ', 7649 => 'ꡉ', 7650 => 'ꡊ', 7651 => 'ꡋ', 7652 => 'ꡌ', 7653 => 'ꡍ', 7654 => 'ꡎ', 7655 => 'ꡏ', 7656 => 'ꡐ', 7657 => 'ꡑ', 7658 => 'ꡒ', 7659 => 'ꡓ', 7660 => 'ꡧ', 7661 => 'ꡔ', 7662 => 'ꡕ', 7663 => 'ꡖ', 7664 => 'ꡗ', 7665 => 'ꡨ', 7666 => 'ꡭ', 7667 => 'ꡘ', 7668 => 'ꡱ', 7669 => 'ꡲ', 7670 => 'ꡙ', 7671 => 'ꡚ', 7672 => 'ꡮ', 7673 => 'ꡛ', 7674 => 'ꡜ', 7675 => 'ꡯ', 7676 => 'ꡰ', 7677 => 'ꡝ', 7678 => 'ꡢ', 7679 => 'ꡣ', 7680 => 'ꡤ', 7681 => 'ꡥ', 7682 => 'ꡞ', 7683 => 'ꡟ', 7684 => 'ꡠ', 7685 => 'ꡡ', 7686 => 'ꡦ', 7687 => 'ꡳ', 7688 => 'ᤀ', 7689 => 'ᤁ', 7690 => 'ᤂ', 7691 => 'ᤃ', 7692 => 'ᤄ', 7693 => 'ᤅ', 7694 => 'ᤆ', 7695 => 'ᤇ', 7696 => 'ᤈ', 7697 => 'ᤉ', 7698 => 'ᤊ', 7699 => 'ᤋ', 7700 => 'ᤌ', 7701 => 'ᤍ', 7702 => 'ᤎ', 7703 => 'ᤏ', 7704 => 'ᤐ', 7705 => 'ᤑ', 7706 => 'ᤒ', 7707 => 'ᤓ', 7708 => 'ᤔ', 7709 => 'ᤕ', 7710 => 'ᤖ', 7711 => 'ᤗ', 7712 => 'ᤘ', 7713 => 'ᤙ', 7714 => 'ᤚ', 7715 => 'ᤛ', 7716 => 'ᤜ', 7717 => 'ᜀ', 7718 => 'ᜁ', 7719 => 'ᜂ', 7720 => 'ᜃ', 7721 => 'ᜄ', 7722 => 'ᜅ', 7723 => 'ᜆ', 7724 => 'ᜇ', 7725 => 'ᜈ', 7726 => 'ᜉ', 7727 => 'ᜊ', 7728 => 'ᜋ', 7729 => 'ᜌ', 7730 => 'ᜎ', 7731 => 'ᜏ', 7732 => 'ᜐ', 7733 => 'ᜑ', 7734 => 'ᜠ', 7735 => 'ᜡ', 7736 => 'ᜢ', 7737 => 'ᜣ', 7738 => 'ᜤ', 7739 => 'ᜥ', 7740 => 'ᜦ', 7741 => 'ᜧ', 7742 => 'ᜨ', 7743 => 'ᜩ', 7744 => 'ᜪ', 7745 => 'ᜫ', 7746 => 'ᜬ', 7747 => 'ᜭ', 7748 => 'ᜮ', 7749 => 'ᜯ', 7750 => 'ᜰ', 7751 => 'ᜱ', 7752 => 'ᝀ', 7753 => 'ᝁ', 7754 => 'ᝂ', 7755 => 'ᝃ', 7756 => 'ᝄ', 7757 => 'ᝅ', 7758 => 'ᝆ', 7759 => 'ᝇ', 7760 => 'ᝈ', 7761 => 'ᝉ', 7762 => 'ᝊ', 7763 => 'ᝋ', 7764 => 'ᝌ', 7765 => 'ᝍ', 7766 => 'ᝎ', 7767 => 'ᝏ', 7768 => 'ᝐ', 7769 => 'ᝑ', 7770 => 'ᝠ', 7771 => 'ᝡ', 7772 => 'ᝢ', 7773 => 'ᝣ', 7774 => 'ᝤ', 7775 => 'ᝥ', 7776 => 'ᝦ', 7777 => 'ᝧ', 7778 => 'ᝨ', 7779 => 'ᝩ', 7780 => 'ᝪ', 7781 => 'ᝫ', 7782 => 'ᝬ', 7783 => 'ᝮ', 7784 => 'ᝯ', 7785 => 'ᝰ', 7786 => 'ᨀ', 7787 => 'ᨁ', 7788 => 'ᨂ', 7789 => 'ᨃ', 7790 => 'ᨄ', 7791 => 'ᨅ', 7792 => 'ᨆ', 7793 => 'ᨇ', 7794 => 'ᨈ', 7795 => 'ᨉ', 7796 => 'ᨊ', 7797 => 'ᨋ', 7798 => 'ᨌ', 7799 => 'ᨍ', 7800 => 'ᨎ', 7801 => 'ᨏ', 7802 => 'ᨐ', 7803 => 'ᨑ', 7804 => 'ᨒ', 7805 => 'ᨓ', 7806 => 'ᨔ', 7807 => 'ᨕ', 7808 => 'ᨖ', 7809 => 'ᯀ', 7810 => 'ᯂ', 7811 => 'ᯅ', 7812 => 'ᯇ', 7813 => 'ᯉ', 7814 => 'ᯋ', 7815 => 'ᯎ', 7816 => 'ᯐ', 7817 => 'ᯑ', 7818 => 'ᯒ', 7819 => 'ᯔ', 7820 => 'ᯖ', 7821 => 'ᯘ', 7822 => 'ᯛ', 7823 => 'ᯝ', 7824 => 'ᯞ', 7825 => 'ᯠ', 7826 => 'ᯡ', 7827 => 'ᯢ', 7828 => 'ᯣ', 7829 => 'ᯤ', 7830 => 'ᯥ', 7831 => 'ꤰ', 7832 => 'ꤱ', 7833 => 'ꤲ', 7834 => 'ꤳ', 7835 => 'ꤴ', 7836 => 'ꤵ', 7837 => 'ꤶ', 7838 => 'ꤷ', 7839 => 'ꤸ', 7840 => 'ꤹ', 7841 => 'ꤺ', 7842 => 'ꤻ', 7843 => 'ꤼ', 7844 => 'ꤽ', 7845 => 'ꤾ', 7846 => 'ꤿ', 7847 => 'ꥀ', 7848 => 'ꥁ', 7849 => 'ꥂ', 7850 => 'ꥃ', 7851 => 'ꥄ', 7852 => 'ꥅ', 7853 => 'ꥆ', 7854 => 'ꤊ', 7855 => 'ꤋ', 7856 => 'ꤌ', 7857 => 'ꤍ', 7858 => 'ꤎ', 7859 => 'ꤏ', 7860 => 'ꤐ', 7861 => 'ꤑ', 7862 => 'ꤒ', 7863 => 'ꤓ', 7864 => 'ꤔ', 7865 => 'ꤕ', 7866 => 'ꤖ', 7867 => 'ꤗ', 7868 => 'ꤘ', 7869 => 'ꤙ', 7870 => 'ꤚ', 7871 => 'ꤛ', 7872 => 'ꤜ', 7873 => 'ꤝ', 7874 => 'ꤞ', 7875 => 'ꤟ', 7876 => 'ꤠ', 7877 => 'ꤡ', 7878 => 'ꤢ', 7879 => 'ꤣ', 7880 => 'ꤤ', 7881 => 'ꤥ', 7882 => 'က', 7883 => 'ၵ', 7884 => 'ခ', 7885 => 'ၶ', 7886 => 'ဂ', 7887 => 'ၷ', 7888 => 'ꩠ', 7889 => 'ဃ', 7890 => 'င', 7891 => 'ၚ', 7892 => 'စ', 7893 => 'ၸ', 7894 => 'ꩡ', 7895 => 'ဆ', 7896 => 'ꩢ', 7897 => 'ဇ', 7898 => 'ꩣ', 7899 => 'ၹ', 7900 => 'ꩲ', 7901 => 'ဈ', 7902 => 'ၛ', 7903 => 'ꩤ', 7904 => 'ၡ', 7905 => 'ဉ', 7906 => 'ၺ', 7907 => 'ꩥ', 7908 => 'ည', 7909 => 'ဋ', 7910 => 'ꩦ', 7911 => 'ဌ', 7912 => 'ꩧ', 7913 => 'ဍ', 7914 => 'ꩨ', 7915 => 'ဎ', 7916 => 'ꩩ', 7917 => 'ဏ', 7918 => 'ၮ', 7919 => 'တ', 7920 => 'ထ', 7921 => 'ဒ', 7922 => 'ၻ', 7923 => 'ဓ', 7924 => 'ꩪ', 7925 => 'န', 7926 => 'ၼ', 7927 => 'ꩫ', 7928 => 'ပ', 7929 => 'ဖ', 7930 => 'ၽ', 7931 => 'ၾ', 7932 => 'ꩯ', 7933 => 'ႎ', 7934 => 'ဗ', 7935 => 'ၿ', 7936 => 'ဘ', 7937 => 'မ', 7938 => 'ယ', 7939 => 'ရ', 7940 => 'ꩳ', 7941 => 'ꩺ', 7942 => 'လ', 7943 => 'ဝ', 7944 => 'ႀ', 7945 => 'ၐ', 7946 => 'ၑ', 7947 => 'ၥ', 7948 => 'သ', 7949 => 'ꩬ', 7950 => 'ဟ', 7951 => 'ႁ', 7952 => 'ꩭ', 7953 => 'ꩮ', 7954 => 'ꩱ', 7955 => 'ဠ', 7956 => 'ၜ', 7957 => 'ၝ', 7958 => 'ၯ', 7959 => 'ၰ', 7960 => 'ၦ', 7961 => 'အ', 7962 => 'ဢ', 7963 => 'ဣ', 7964 => 'ဤ', 7965 => 'ဥ', 7966 => 'ဦ', 7967 => 'ၒ', 7968 => 'ၓ', 7969 => 'ၔ', 7970 => 'ၕ', 7971 => 'ဧ', 7972 => 'ဨ', 7973 => 'ဩ', 7974 => 'ဪ', 7975 => 'ꩴ', 7976 => 'ꩵ', 7977 => 'ꩶ', 7978 => 'ក', 7979 => 'ខ', 7980 => 'គ', 7981 => 'ឃ', 7982 => 'ង', 7983 => 'ច', 7984 => 'ឆ', 7985 => 'ជ', 7986 => 'ឈ', 7987 => 'ញ', 7988 => 'ដ', 7989 => 'ឋ', 7990 => 'ឌ', 7991 => 'ឍ', 7992 => 'ណ', 7993 => 'ត', 7994 => 'ថ', 7995 => 'ទ', 7996 => 'ធ', 7997 => 'ន', 7998 => 'ប', 7999 => 'ផ', 8000 => 'ព', 8001 => 'ភ', 8002 => 'ម', 8003 => 'យ', 8004 => 'រ', 8005 => 'ល', 8006 => 'វ', 8007 => 'ឝ', 8008 => 'ឞ', 8009 => 'ស', 8010 => 'ហ', 8011 => 'ឡ', 8012 => 'អ', 8013 => 'ៜ', 8014 => 'ឣ', 8015 => 'ឤ', 8016 => 'ឥ', 8017 => 'ឦ', 8018 => 'ឧ', 8019 => 'ឨ', 8020 => 'ឩ', 8021 => 'ឪ', 8022 => 'ឫ', 8023 => 'ឬ', 8024 => 'ឭ', 8025 => 'ឮ', 8026 => 'ឯ', 8027 => 'ឰ', 8028 => 'ឱ', 8029 => 'ឲ', 8030 => 'ឳ', 8031 => 'ᥐ', 8032 => 'ᥑ', 8033 => 'ᥒ', 8034 => 'ᥓ', 8035 => 'ᥔ', 8036 => 'ᥕ', 8037 => 'ᥖ', 8038 => 'ᥗ', 8039 => 'ᥘ', 8040 => 'ᥙ', 8041 => 'ᥚ', 8042 => 'ᥛ', 8043 => 'ᥜ', 8044 => 'ᥝ', 8045 => 'ᥞ', 8046 => 'ᥟ', 8047 => 'ᥠ', 8048 => 'ᥡ', 8049 => 'ᥢ', 8050 => 'ᥣ', 8051 => 'ᥤ', 8052 => 'ᥥ', 8053 => 'ᥦ', 8054 => 'ᥧ', 8055 => 'ᥨ', 8056 => 'ᥩ', 8057 => 'ᥪ', 8058 => 'ᥫ', 8059 => 'ᥬ', 8060 => 'ᥭ', 8061 => 'ᥰ', 8062 => 'ᥱ', 8063 => 'ᥲ', 8064 => 'ᥳ', 8065 => 'ᥴ', 8066 => 'ᦀ', 8067 => 'ᦁ', 8068 => 'ᦂ', 8069 => 'ᦃ', 8070 => 'ᦄ', 8071 => 'ᦅ', 8072 => 'ᦆ', 8073 => 'ᦇ', 8074 => 'ᦈ', 8075 => 'ᦉ', 8076 => 'ᦊ', 8077 => 'ᦋ', 8078 => 'ᦌ', 8079 => 'ᦍ', 8080 => 'ᦎ', 8081 => 'ᦏ', 8082 => 'ᦐ', 8083 => 'ᦑ', 8084 => 'ᦒ', 8085 => 'ᦓ', 8086 => 'ᦔ', 8087 => 'ᦕ', 8088 => 'ᦖ', 8089 => 'ᦗ', 8090 => 'ᦘ', 8091 => 'ᦙ', 8092 => 'ᦚ', 8093 => 'ᦛ', 8094 => 'ᦜ', 8095 => 'ᦝ', 8096 => 'ᦞ', 8097 => 'ᦟ', 8098 => 'ᦠ', 8099 => 'ᦡ', 8100 => 'ᦢ', 8101 => 'ᦣ', 8102 => 'ᦤ', 8103 => 'ᦥ', 8104 => 'ᦦ', 8105 => 'ᦧ', 8106 => 'ᦨ', 8107 => 'ᦩ', 8108 => 'ᦪ', 8109 => 'ᦫ', 8110 => 'ᧁ', 8111 => 'ᧂ', 8112 => 'ᧃ', 8113 => 'ᧄ', 8114 => 'ᧅ', 8115 => 'ᧆ', 8116 => 'ᧇ', 8117 => 'ᨠ', 8118 => 'ᨡ', 8119 => 'ᨢ', 8120 => 'ᨣ', 8121 => 'ᨤ', 8122 => 'ᨥ', 8123 => 'ᨦ', 8124 => 'ᨧ', 8125 => 'ᨨ', 8126 => 'ᨩ', 8127 => 'ᨪ', 8128 => 'ᨫ', 8129 => 'ᨬ', 8130 => 'ᨭ', 8131 => 'ᨮ', 8132 => 'ᨯ', 8133 => 'ᨰ', 8134 => 'ᨱ', 8135 => 'ᨲ', 8136 => 'ᨳ', 8137 => 'ᨴ', 8138 => 'ᨵ', 8139 => 'ᨶ', 8140 => 'ᨷ', 8141 => 'ᨸ', 8142 => 'ᨹ', 8143 => 'ᨺ', 8144 => 'ᨻ', 8145 => 'ᨼ', 8146 => 'ᨽ', 8147 => 'ᨾ', 8148 => 'ᨿ', 8149 => 'ᩀ', 8150 => 'ᩁ', 8151 => 'ᩂ', 8152 => 'ᩃ', 8153 => 'ᩄ', 8154 => 'ᩅ', 8155 => 'ᩆ', 8156 => 'ᩇ', 8157 => 'ᩈ', 8158 => 'ᩉ', 8159 => 'ᩊ', 8160 => 'ᩋ', 8161 => 'ᩌ', 8162 => 'ᩓ', 8163 => 'ᩍ', 8164 => 'ᩎ', 8165 => 'ᩏ', 8166 => 'ᩐ', 8167 => 'ᩑ', 8168 => 'ᩒ', 8169 => 'ꨀ', 8170 => 'ꨁ', 8171 => 'ꨂ', 8172 => 'ꨃ', 8173 => 'ꨄ', 8174 => 'ꨅ', 8175 => 'ꨆ', 8176 => 'ꨇ', 8177 => 'ꨈ', 8178 => 'ꨉ', 8179 => 'ꨊ', 8180 => 'ꨋ', 8181 => 'ꨌ', 8182 => 'ꨍ', 8183 => 'ꨎ', 8184 => 'ꨏ', 8185 => 'ꨐ', 8186 => 'ꨑ', 8187 => 'ꨒ', 8188 => 'ꨓ', 8189 => 'ꨔ', 8190 => 'ꨕ', 8191 => 'ꨖ', 8192 => 'ꨗ', 8193 => 'ꨘ', 8194 => 'ꨙ', 8195 => 'ꨚ', 8196 => 'ꨛ', 8197 => 'ꨜ', 8198 => 'ꨝ', 8199 => 'ꨞ', 8200 => 'ꨟ', 8201 => 'ꨠ', 8202 => 'ꨡ', 8203 => 'ꨢ', 8204 => 'ꨣ', 8205 => 'ꨤ', 8206 => 'ꨥ', 8207 => 'ꨦ', 8208 => 'ꨧ', 8209 => 'ꨨ', 8210 => 'ꩀ', 8211 => 'ꩁ', 8212 => 'ꩂ', 8213 => 'ꩄ', 8214 => 'ꩅ', 8215 => 'ꩆ', 8216 => 'ꩇ', 8217 => 'ꩈ', 8218 => 'ꩉ', 8219 => 'ꩊ', 8220 => 'ꩋ', 8221 => 'ᬅ', 8222 => 'ᬆ', 8223 => 'ᬇ', 8224 => 'ᬈ', 8225 => 'ᬉ', 8226 => 'ᬊ', 8227 => 'ᬋ', 8228 => 'ᬌ', 8229 => 'ᬍ', 8230 => 'ᬎ', 8231 => 'ᬏ', 8232 => 'ᬐ', 8233 => 'ᬑ', 8234 => 'ᬒ', 8235 => 'ᬓ', 8236 => 'ᭅ', 8237 => 'ᭆ', 8238 => 'ᬔ', 8239 => 'ᬕ', 8240 => 'ᬖ', 8241 => 'ᬗ', 8242 => 'ᬘ', 8243 => 'ᬙ', 8244 => 'ᬚ', 8245 => 'ᬛ', 8246 => 'ᬜ', 8247 => 'ᬝ', 8248 => 'ᬞ', 8249 => 'ᬟ', 8250 => 'ᬠ', 8251 => 'ᬡ', 8252 => 'ᬢ', 8253 => 'ᭇ', 8254 => 'ᬣ', 8255 => 'ᬤ', 8256 => 'ᬥ', 8257 => 'ᬦ', 8258 => 'ᬧ', 8259 => 'ᭈ', 8260 => 'ᬨ', 8261 => 'ᬩ', 8262 => 'ᬪ', 8263 => 'ᬫ', 8264 => 'ᬬ', 8265 => 'ᬭ', 8266 => 'ᬮ', 8267 => 'ᬯ', 8268 => 'ᭉ', 8269 => 'ᬰ', 8270 => 'ᬱ', 8271 => 'ᬲ', 8272 => 'ᭊ', 8273 => 'ᭋ', 8274 => 'ᬳ', 8275 => 'ꦄ', 8276 => 'ꦅ', 8277 => 'ꦆ', 8278 => 'ꦇ', 8279 => 'ꦈ', 8280 => 'ꦉ', 8281 => 'ꦊ', 8282 => 'ꦋ', 8283 => 'ꦌ', 8284 => 'ꦍ', 8285 => 'ꦎ', 8286 => 'ꦏ', 8287 => 'ꦐ', 8288 => 'ꦑ', 8289 => 'ꦒ', 8290 => 'ꦓ', 8291 => 'ꦔ', 8292 => 'ꦕ', 8293 => 'ꦖ', 8294 => 'ꦗ', 8295 => 'ꦘ', 8296 => 'ꦙ', 8297 => 'ꦚ', 8298 => 'ꦛ', 8299 => 'ꦜ', 8300 => 'ꦝ', 8301 => 'ꦞ', 8302 => 'ꦟ', 8303 => 'ꦠ', 8304 => 'ꦡ', 8305 => 'ꦢ', 8306 => 'ꦣ', 8307 => 'ꦤ', 8308 => 'ꦥ', 8309 => 'ꦦ', 8310 => 'ꦧ', 8311 => 'ꦨ', 8312 => 'ꦩ', 8313 => 'ꦪ', 8314 => 'ꦫ', 8315 => 'ꦭ', 8316 => 'ꦮ', 8317 => 'ꦯ', 8318 => 'ꦰ', 8319 => 'ꦱ', 8320 => 'ꦲ', 8321 => 'ᢀ', 8322 => 'ᢁ', 8323 => 'ᢂ', 8324 => 'ᢃ', 8325 => 'ᢄ', 8326 => 'ᢅ', 8327 => 'ᢆ', 8328 => 'ᡃ', 8329 => 'ᠠ', 8330 => 'ᢇ', 8331 => 'ᠡ', 8332 => 'ᡄ', 8333 => 'ᡝ', 8334 => 'ᠢ', 8335 => 'ᡅ', 8336 => 'ᡞ', 8337 => 'ᡳ', 8338 => 'ᢈ', 8339 => 'ᡟ', 8340 => 'ᠣ', 8341 => 'ᡆ', 8342 => 'ᠤ', 8343 => 'ᡇ', 8344 => 'ᡡ', 8345 => 'ᠥ', 8346 => 'ᡈ', 8347 => 'ᠦ', 8348 => 'ᡉ', 8349 => 'ᡠ', 8350 => 'ᠧ', 8351 => 'ᠨ', 8352 => 'ᠩ', 8353 => 'ᡊ', 8354 => 'ᡢ', 8355 => 'ᢊ', 8356 => 'ᢛ', 8357 => 'ᠪ', 8358 => 'ᡋ', 8359 => 'ᠫ', 8360 => 'ᡌ', 8361 => 'ᡦ', 8362 => 'ᠬ', 8363 => 'ᡍ', 8364 => 'ᠭ', 8365 => 'ᡎ', 8366 => 'ᡤ', 8367 => 'ᢚ', 8368 => 'ᡥ', 8369 => 'ᠮ', 8370 => 'ᡏ', 8371 => 'ᠯ', 8372 => 'ᠰ', 8373 => 'ᠱ', 8374 => 'ᡧ', 8375 => 'ᢜ', 8376 => 'ᢝ', 8377 => 'ᢢ', 8378 => 'ᢤ', 8379 => 'ᢥ', 8380 => 'ᠲ', 8381 => 'ᡐ', 8382 => 'ᡨ', 8383 => 'ᠳ', 8384 => 'ᡑ', 8385 => 'ᡩ', 8386 => 'ᠴ', 8387 => 'ᡒ', 8388 => 'ᡱ', 8389 => 'ᡜ', 8390 => 'ᢋ', 8391 => 'ᠵ', 8392 => 'ᡓ', 8393 => 'ᡪ', 8394 => 'ᡷ', 8395 => 'ᠶ', 8396 => 'ᡕ', 8397 => 'ᡲ', 8398 => 'ᠷ', 8399 => 'ᡵ', 8400 => 'ᠸ', 8401 => 'ᡖ', 8402 => 'ᠹ', 8403 => 'ᡫ', 8404 => 'ᡶ', 8405 => 'ᠺ', 8406 => 'ᡗ', 8407 => 'ᡣ', 8408 => 'ᡴ', 8409 => 'ᢉ', 8410 => 'ᠻ', 8411 => 'ᠼ', 8412 => 'ᡔ', 8413 => 'ᡮ', 8414 => 'ᠽ', 8415 => 'ᡯ', 8416 => 'ᡘ', 8417 => 'ᡬ', 8418 => 'ᠾ', 8419 => 'ᡙ', 8420 => 'ᡭ', 8421 => 'ᠿ', 8422 => 'ᡀ', 8423 => 'ᡁ', 8424 => 'ᡂ', 8425 => 'ᡚ', 8426 => 'ᡛ', 8427 => 'ᡰ', 8428 => 'ᢌ', 8429 => 'ᢞ', 8430 => 'ᢍ', 8431 => 'ᢎ', 8432 => 'ᢟ', 8433 => 'ᢏ', 8434 => 'ᢐ', 8435 => 'ᢘ', 8436 => 'ᢠ', 8437 => 'ᢑ', 8438 => 'ᢡ', 8439 => 'ᢒ', 8440 => 'ᢓ', 8441 => 'ᢨ', 8442 => 'ᢔ', 8443 => 'ᢣ', 8444 => 'ᢕ', 8445 => 'ᢙ', 8446 => 'ᢖ', 8447 => 'ᢗ', 8448 => 'ᢦ', 8449 => 'ᢧ', 8450 => 'ᢪ', 8451 => 'ᱚ', 8452 => 'ᱛ', 8453 => 'ᱜ', 8454 => 'ᱝ', 8455 => 'ᱞ', 8456 => 'ᱟ', 8457 => 'ᱠ', 8458 => 'ᱡ', 8459 => 'ᱢ', 8460 => 'ᱣ', 8461 => 'ᱤ', 8462 => 'ᱥ', 8463 => 'ᱦ', 8464 => 'ᱧ', 8465 => 'ᱨ', 8466 => 'ᱩ', 8467 => 'ᱪ', 8468 => 'ᱫ', 8469 => 'ᱬ', 8470 => 'ᱭ', 8471 => 'ᱮ', 8472 => 'ᱯ', 8473 => 'ᱰ', 8474 => 'ᱱ', 8475 => 'ᱲ', 8476 => 'ᱳ', 8477 => 'ᱴ', 8478 => 'ᱵ', 8479 => 'ᱶ', 8480 => 'ᱷ', 8481 => 'ᱸ', 8482 => 'ᱹ', 8483 => 'ᱺ', 8484 => 'ᱻ', 8485 => 'ᱼ', 8486 => 'ᱽ', 8487 => 'Ꭰ', 8488 => 'Ꭱ', 8489 => 'Ꭲ', 8490 => 'Ꭳ', 8491 => 'Ꭴ', 8492 => 'Ꭵ', 8493 => 'Ꭶ', 8494 => 'Ꭷ', 8495 => 'Ꭸ', 8496 => 'Ꭹ', 8497 => 'Ꭺ', 8498 => 'Ꭻ', 8499 => 'Ꭼ', 8500 => 'Ꭽ', 8501 => 'Ꭾ', 8502 => 'Ꭿ', 8503 => 'Ꮀ', 8504 => 'Ꮁ', 8505 => 'Ꮂ', 8506 => 'Ꮃ', 8507 => 'Ꮄ', 8508 => 'Ꮅ', 8509 => 'Ꮆ', 8510 => 'Ꮇ', 8511 => 'Ꮈ', 8512 => 'Ꮉ', 8513 => 'Ꮊ', 8514 => 'Ꮋ', 8515 => 'Ꮌ', 8516 => 'Ꮍ', 8517 => 'Ꮎ', 8518 => 'Ꮏ', 8519 => 'Ꮐ', 8520 => 'Ꮑ', 8521 => 'Ꮒ', 8522 => 'Ꮓ', 8523 => 'Ꮔ', 8524 => 'Ꮕ', 8525 => 'Ꮖ', 8526 => 'Ꮗ', 8527 => 'Ꮘ', 8528 => 'Ꮙ', 8529 => 'Ꮚ', 8530 => 'Ꮛ', 8531 => 'Ꮜ', 8532 => 'Ꮝ', 8533 => 'Ꮞ', 8534 => 'Ꮟ', 8535 => 'Ꮠ', 8536 => 'Ꮡ', 8537 => 'Ꮢ', 8538 => 'Ꮣ', 8539 => 'Ꮤ', 8540 => 'Ꮥ', 8541 => 'Ꮦ', 8542 => 'Ꮧ', 8543 => 'Ꮨ', 8544 => 'Ꮩ', 8545 => 'Ꮪ', 8546 => 'Ꮫ', 8547 => 'Ꮬ', 8548 => 'Ꮭ', 8549 => 'Ꮮ', 8550 => 'Ꮯ', 8551 => 'Ꮰ', 8552 => 'Ꮱ', 8553 => 'Ꮲ', 8554 => 'Ꮳ', 8555 => 'Ꮴ', 8556 => 'Ꮵ', 8557 => 'Ꮶ', 8558 => 'Ꮷ', 8559 => 'Ꮸ', 8560 => 'Ꮹ', 8561 => 'Ꮺ', 8562 => 'Ꮻ', 8563 => 'Ꮼ', 8564 => 'Ꮽ', 8565 => 'Ꮾ', 8566 => 'Ꮿ', 8567 => 'Ᏸ', 8568 => 'Ᏹ', 8569 => 'Ᏺ', 8570 => 'Ᏻ', 8571 => 'Ᏼ', 8572 => 'ᐁ', 8573 => 'ᐂ', 8574 => 'ᐃ', 8575 => 'ᐄ', 8576 => 'ᐅ', 8577 => 'ᐆ', 8578 => 'ᐇ', 8579 => 'ᐈ', 8580 => 'ᐉ', 8581 => 'ᐊ', 8582 => 'ᐋ', 8583 => 'ᐌ', 8584 => 'ᐍ', 8585 => 'ᐎ', 8586 => 'ᐏ', 8587 => 'ᐐ', 8588 => 'ᐑ', 8589 => 'ᐒ', 8590 => 'ᐓ', 8591 => 'ᐔ', 8592 => 'ᐕ', 8593 => 'ᐖ', 8594 => 'ᐗ', 8595 => 'ᐘ', 8596 => 'ᐙ', 8597 => 'ᐚ', 8598 => 'ᐛ', 8599 => 'ᐜ', 8600 => 'ᐝ', 8601 => 'ᐞ', 8602 => 'ᐟ', 8603 => 'ᐠ', 8604 => 'ᐡ', 8605 => 'ᐢ', 8606 => 'ᐣ', 8607 => 'ᐤ', 8608 => 'ᐥ', 8609 => 'ᐦ', 8610 => 'ᐧ', 8611 => 'ᐨ', 8612 => 'ᐩ', 8613 => 'ᐪ', 8614 => 'ᐫ', 8615 => 'ᐬ', 8616 => 'ᐭ', 8617 => 'ᐮ', 8618 => 'ᐯ', 8619 => 'ᐰ', 8620 => 'ᐱ', 8621 => 'ᐲ', 8622 => 'ᐳ', 8623 => 'ᐴ', 8624 => 'ᐵ', 8625 => 'ᐶ', 8626 => 'ᐷ', 8627 => 'ᐸ', 8628 => 'ᐹ', 8629 => 'ᐺ', 8630 => 'ᐻ', 8631 => 'ᐼ', 8632 => 'ᐽ', 8633 => 'ᐾ', 8634 => 'ᐿ', 8635 => 'ᑀ', 8636 => 'ᑁ', 8637 => 'ᑂ', 8638 => 'ᑃ', 8639 => 'ᑄ', 8640 => 'ᑅ', 8641 => 'ᑆ', 8642 => 'ᑇ', 8643 => 'ᑈ', 8644 => 'ᑉ', 8645 => 'ᑊ', 8646 => 'ᑋ', 8647 => 'ᑌ', 8648 => 'ᑍ', 8649 => 'ᑎ', 8650 => 'ᑏ', 8651 => 'ᑐ', 8652 => 'ᑑ', 8653 => 'ᑒ', 8654 => 'ᑓ', 8655 => 'ᑔ', 8656 => 'ᑕ', 8657 => 'ᑖ', 8658 => 'ᑗ', 8659 => 'ᑘ', 8660 => 'ᑙ', 8661 => 'ᑚ', 8662 => 'ᑛ', 8663 => 'ᑜ', 8664 => 'ᑝ', 8665 => 'ᑞ', 8666 => 'ᑟ', 8667 => 'ᑠ', 8668 => 'ᑡ', 8669 => 'ᑢ', 8670 => 'ᑣ', 8671 => 'ᑤ', 8672 => 'ᑥ', 8673 => 'ᑦ', 8674 => 'ᑧ', 8675 => 'ᑨ', 8676 => 'ᑩ', 8677 => 'ᑪ', 8678 => 'ᑫ', 8679 => 'ᑬ', 8680 => 'ᑭ', 8681 => 'ᑮ', 8682 => 'ᑯ', 8683 => 'ᑰ', 8684 => 'ᑱ', 8685 => 'ᑲ', 8686 => 'ᑳ', 8687 => 'ᑴ', 8688 => 'ᑵ', 8689 => 'ᑶ', 8690 => 'ᑷ', 8691 => 'ᑸ', 8692 => 'ᑹ', 8693 => 'ᑺ', 8694 => 'ᑻ', 8695 => 'ᑼ', 8696 => 'ᑽ', 8697 => 'ᑾ', 8698 => 'ᑿ', 8699 => 'ᒀ', 8700 => 'ᒁ', 8701 => 'ᒂ', 8702 => 'ᒃ', 8703 => 'ᒄ', 8704 => 'ᒅ', 8705 => 'ᒆ', 8706 => 'ᒇ', 8707 => 'ᒈ', 8708 => 'ᒉ', 8709 => 'ᒊ', 8710 => 'ᒋ', 8711 => 'ᒌ', 8712 => 'ᒍ', 8713 => 'ᒎ', 8714 => 'ᒏ', 8715 => 'ᒐ', 8716 => 'ᒑ', 8717 => 'ᒒ', 8718 => 'ᒓ', 8719 => 'ᒔ', 8720 => 'ᒕ', 8721 => 'ᒖ', 8722 => 'ᒗ', 8723 => 'ᒘ', 8724 => 'ᒙ', 8725 => 'ᒚ', 8726 => 'ᒛ', 8727 => 'ᒜ', 8728 => 'ᒝ', 8729 => 'ᒞ', 8730 => 'ᒟ', 8731 => 'ᒠ', 8732 => 'ᒡ', 8733 => 'ᒢ', 8734 => 'ᒣ', 8735 => 'ᒤ', 8736 => 'ᒥ', 8737 => 'ᒦ', 8738 => 'ᒧ', 8739 => 'ᒨ', 8740 => 'ᒩ', 8741 => 'ᒪ', 8742 => 'ᒫ', 8743 => 'ᒬ', 8744 => 'ᒭ', 8745 => 'ᒮ', 8746 => 'ᒯ', 8747 => 'ᒰ', 8748 => 'ᒱ', 8749 => 'ᒲ', 8750 => 'ᒳ', 8751 => 'ᒴ', 8752 => 'ᒵ', 8753 => 'ᒶ', 8754 => 'ᒷ', 8755 => 'ᒸ', 8756 => 'ᒹ', 8757 => 'ᒺ', 8758 => 'ᒻ', 8759 => 'ᒼ', 8760 => 'ᒽ', 8761 => 'ᒾ', 8762 => 'ᒿ', 8763 => 'ᓀ', 8764 => 'ᓁ', 8765 => 'ᓂ', 8766 => 'ᓃ', 8767 => 'ᓄ', 8768 => 'ᓅ', 8769 => 'ᓆ', 8770 => 'ᓇ', 8771 => 'ᓈ', 8772 => 'ᓉ', 8773 => 'ᓊ', 8774 => 'ᓋ', 8775 => 'ᓌ', 8776 => 'ᓍ', 8777 => 'ᓎ', 8778 => 'ᓏ', 8779 => 'ᓐ', 8780 => 'ᓑ', 8781 => 'ᓒ', 8782 => 'ᓓ', 8783 => 'ᓔ', 8784 => 'ᓕ', 8785 => 'ᓖ', 8786 => 'ᓗ', 8787 => 'ᓘ', 8788 => 'ᓙ', 8789 => 'ᓚ', 8790 => 'ᓛ', 8791 => 'ᓜ', 8792 => 'ᓝ', 8793 => 'ᓞ', 8794 => 'ᓟ', 8795 => 'ᓠ', 8796 => 'ᓡ', 8797 => 'ᓢ', 8798 => 'ᓣ', 8799 => 'ᓤ', 8800 => 'ᓥ', 8801 => 'ᓦ', 8802 => 'ᓧ', 8803 => 'ᓨ', 8804 => 'ᓩ', 8805 => 'ᓪ', 8806 => 'ᓫ', 8807 => 'ᓬ', 8808 => 'ᓭ', 8809 => 'ᓮ', 8810 => 'ᓯ', 8811 => 'ᓰ', 8812 => 'ᓱ', 8813 => 'ᓲ', 8814 => 'ᓳ', 8815 => 'ᓴ', 8816 => 'ᓵ', 8817 => 'ᓶ', 8818 => 'ᓷ', 8819 => 'ᓸ', 8820 => 'ᓹ', 8821 => 'ᓺ', 8822 => 'ᓻ', 8823 => 'ᓼ', 8824 => 'ᓽ', 8825 => 'ᓾ', 8826 => 'ᓿ', 8827 => 'ᔀ', 8828 => 'ᔁ', 8829 => 'ᔂ', 8830 => 'ᔃ', 8831 => 'ᔄ', 8832 => 'ᔅ', 8833 => 'ᔆ', 8834 => 'ᔇ', 8835 => 'ᔈ', 8836 => 'ᔉ', 8837 => 'ᔊ', 8838 => 'ᔋ', 8839 => 'ᔌ', 8840 => 'ᔍ', 8841 => 'ᔎ', 8842 => 'ᔏ', 8843 => 'ᔐ', 8844 => 'ᔑ', 8845 => 'ᔒ', 8846 => 'ᔓ', 8847 => 'ᔔ', 8848 => 'ᔕ', 8849 => 'ᔖ', 8850 => 'ᔗ', 8851 => 'ᔘ', 8852 => 'ᔙ', 8853 => 'ᔚ', 8854 => 'ᔛ', 8855 => 'ᔜ', 8856 => 'ᔝ', 8857 => 'ᔞ', 8858 => 'ᔟ', 8859 => 'ᔠ', 8860 => 'ᔡ', 8861 => 'ᔢ', 8862 => 'ᔣ', 8863 => 'ᔤ', 8864 => 'ᔥ', 8865 => 'ᔦ', 8866 => 'ᔧ', 8867 => 'ᔨ', 8868 => 'ᔩ', 8869 => 'ᔪ', 8870 => 'ᔫ', 8871 => 'ᔬ', 8872 => 'ᔭ', 8873 => 'ᔮ', 8874 => 'ᔯ', 8875 => 'ᔰ', 8876 => 'ᔱ', 8877 => 'ᔲ', 8878 => 'ᔳ', 8879 => 'ᔴ', 8880 => 'ᔵ', 8881 => 'ᔶ', 8882 => 'ᔷ', 8883 => 'ᔸ', 8884 => 'ᔹ', 8885 => 'ᔺ', 8886 => 'ᔻ', 8887 => 'ᔼ', 8888 => 'ᔽ', 8889 => 'ᔾ', 8890 => 'ᔿ', 8891 => 'ᕀ', 8892 => 'ᕁ', 8893 => 'ᕂ', 8894 => 'ᕃ', 8895 => 'ᕄ', 8896 => 'ᕅ', 8897 => 'ᕆ', 8898 => 'ᕇ', 8899 => 'ᕈ', 8900 => 'ᕉ', 8901 => 'ᕊ', 8902 => 'ᕋ', 8903 => 'ᕌ', 8904 => 'ᕍ', 8905 => 'ᕎ', 8906 => 'ᕏ', 8907 => 'ᕐ', 8908 => 'ᕑ', 8909 => 'ᕒ', 8910 => 'ᕓ', 8911 => 'ᕔ', 8912 => 'ᕕ', 8913 => 'ᕖ', 8914 => 'ᕗ', 8915 => 'ᕘ', 8916 => 'ᕙ', 8917 => 'ᕚ', 8918 => 'ᕛ', 8919 => 'ᕜ', 8920 => 'ᕝ', 8921 => 'ᕞ', 8922 => 'ᕟ', 8923 => 'ᕠ', 8924 => 'ᕡ', 8925 => 'ᕢ', 8926 => 'ᕣ', 8927 => 'ᕤ', 8928 => 'ᕥ', 8929 => 'ᕦ', 8930 => 'ᕧ', 8931 => 'ᕨ', 8932 => 'ᕩ', 8933 => 'ᕪ', 8934 => 'ᕫ', 8935 => 'ᕬ', 8936 => 'ᕭ', 8937 => 'ᕮ', 8938 => 'ᕯ', 8939 => 'ᕰ', 8940 => 'ᕱ', 8941 => 'ᕲ', 8942 => 'ᕳ', 8943 => 'ᕴ', 8944 => 'ᕵ', 8945 => 'ᕶ', 8946 => 'ᕷ', 8947 => 'ᕸ', 8948 => 'ᕹ', 8949 => 'ᕺ', 8950 => 'ᕻ', 8951 => 'ᕽ', 8952 => 'ᙯ', 8953 => 'ᕾ', 8954 => 'ᕿ', 8955 => 'ᖀ', 8956 => 'ᖁ', 8957 => 'ᖂ', 8958 => 'ᖃ', 8959 => 'ᖄ', 8960 => 'ᖅ', 8961 => 'ᖆ', 8962 => 'ᖇ', 8963 => 'ᖈ', 8964 => 'ᖉ', 8965 => 'ᖊ', 8966 => 'ᖋ', 8967 => 'ᖌ', 8968 => 'ᖍ', 8969 => 'ᙰ', 8970 => 'ᖎ', 8971 => 'ᖏ', 8972 => 'ᖐ', 8973 => 'ᖑ', 8974 => 'ᖒ', 8975 => 'ᖓ', 8976 => 'ᖔ', 8977 => 'ᖕ', 8978 => 'ᙱ', 8979 => 'ᙲ', 8980 => 'ᙳ', 8981 => 'ᙴ', 8982 => 'ᙵ', 8983 => 'ᙶ', 8984 => 'ᖖ', 8985 => 'ᖗ', 8986 => 'ᖘ', 8987 => 'ᖙ', 8988 => 'ᖚ', 8989 => 'ᖛ', 8990 => 'ᖜ', 8991 => 'ᖝ', 8992 => 'ᖞ', 8993 => 'ᖟ', 8994 => 'ᖠ', 8995 => 'ᖡ', 8996 => 'ᖢ', 8997 => 'ᖣ', 8998 => 'ᖤ', 8999 => 'ᖥ', 9000 => 'ᖦ', 9001 => 'ᕼ', 9002 => 'ᖧ', 9003 => 'ᖨ', 9004 => 'ᖩ', 9005 => 'ᖪ', 9006 => 'ᖫ', 9007 => 'ᖬ', 9008 => 'ᖭ', 9009 => 'ᖮ', 9010 => 'ᖯ', 9011 => 'ᖰ', 9012 => 'ᖱ', 9013 => 'ᖲ', 9014 => 'ᖳ', 9015 => 'ᖴ', 9016 => 'ᖵ', 9017 => 'ᖶ', 9018 => 'ᖷ', 9019 => 'ᖸ', 9020 => 'ᖹ', 9021 => 'ᖺ', 9022 => 'ᖻ', 9023 => 'ᖼ', 9024 => 'ᖽ', 9025 => 'ᖾ', 9026 => 'ᖿ', 9027 => 'ᗀ', 9028 => 'ᗁ', 9029 => 'ᗂ', 9030 => 'ᗃ', 9031 => 'ᗄ', 9032 => 'ᗅ', 9033 => 'ᗆ', 9034 => 'ᗇ', 9035 => 'ᗈ', 9036 => 'ᗉ', 9037 => 'ᗊ', 9038 => 'ᗋ', 9039 => 'ᗌ', 9040 => 'ᗍ', 9041 => 'ᗎ', 9042 => 'ᗏ', 9043 => 'ᗐ', 9044 => 'ᗑ', 9045 => 'ᗒ', 9046 => 'ᗓ', 9047 => 'ᗔ', 9048 => 'ᗕ', 9049 => 'ᗖ', 9050 => 'ᗗ', 9051 => 'ᗘ', 9052 => 'ᗙ', 9053 => 'ᗚ', 9054 => 'ᗛ', 9055 => 'ᗜ', 9056 => 'ᗝ', 9057 => 'ᗞ', 9058 => 'ᗟ', 9059 => 'ᗠ', 9060 => 'ᗡ', 9061 => 'ᗢ', 9062 => 'ᗣ', 9063 => 'ᗤ', 9064 => 'ᗥ', 9065 => 'ᗦ', 9066 => 'ᗧ', 9067 => 'ᗨ', 9068 => 'ᗩ', 9069 => 'ᗪ', 9070 => 'ᗫ', 9071 => 'ᗬ', 9072 => 'ᗭ', 9073 => 'ᗮ', 9074 => 'ᗯ', 9075 => 'ᗰ', 9076 => 'ᗱ', 9077 => 'ᗲ', 9078 => 'ᗳ', 9079 => 'ᗴ', 9080 => 'ᗵ', 9081 => 'ᗶ', 9082 => 'ᗷ', 9083 => 'ᗸ', 9084 => 'ᗹ', 9085 => 'ᗺ', 9086 => 'ᗻ', 9087 => 'ᗼ', 9088 => 'ᗽ', 9089 => 'ᗾ', 9090 => 'ᗿ', 9091 => 'ᘀ', 9092 => 'ᘁ', 9093 => 'ᘂ', 9094 => 'ᘃ', 9095 => 'ᘄ', 9096 => 'ᘅ', 9097 => 'ᘆ', 9098 => 'ᘇ', 9099 => 'ᘈ', 9100 => 'ᘉ', 9101 => 'ᘊ', 9102 => 'ᘋ', 9103 => 'ᘌ', 9104 => 'ᘍ', 9105 => 'ᘎ', 9106 => 'ᘏ', 9107 => 'ᘐ', 9108 => 'ᘑ', 9109 => 'ᘒ', 9110 => 'ᘓ', 9111 => 'ᘔ', 9112 => 'ᘕ', 9113 => 'ᘖ', 9114 => 'ᘗ', 9115 => 'ᘘ', 9116 => 'ᘙ', 9117 => 'ᘚ', 9118 => 'ᘛ', 9119 => 'ᘜ', 9120 => 'ᘝ', 9121 => 'ᘞ', 9122 => 'ᘟ', 9123 => 'ᘠ', 9124 => 'ᘡ', 9125 => 'ᘢ', 9126 => 'ᘣ', 9127 => 'ᘤ', 9128 => 'ᘥ', 9129 => 'ᘦ', 9130 => 'ᘧ', 9131 => 'ᘨ', 9132 => 'ᘩ', 9133 => 'ᘪ', 9134 => 'ᘫ', 9135 => 'ᘬ', 9136 => 'ᘭ', 9137 => 'ᘮ', 9138 => 'ᘯ', 9139 => 'ᘰ', 9140 => 'ᘱ', 9141 => 'ᘲ', 9142 => 'ᘳ', 9143 => 'ᘴ', 9144 => 'ᘵ', 9145 => 'ᘶ', 9146 => 'ᘷ', 9147 => 'ᘸ', 9148 => 'ᘹ', 9149 => 'ᘺ', 9150 => 'ᘻ', 9151 => 'ᘼ', 9152 => 'ᘽ', 9153 => 'ᘾ', 9154 => 'ᘿ', 9155 => 'ᙀ', 9156 => 'ᙁ', 9157 => 'ᙂ', 9158 => 'ᙃ', 9159 => 'ᙄ', 9160 => 'ᙅ', 9161 => 'ᙆ', 9162 => 'ᙇ', 9163 => 'ᙈ', 9164 => 'ᙉ', 9165 => 'ᙊ', 9166 => 'ᙋ', 9167 => 'ᙌ', 9168 => 'ᙍ', 9169 => 'ᙎ', 9170 => 'ᙏ', 9171 => 'ᙐ', 9172 => 'ᙑ', 9173 => 'ᙒ', 9174 => 'ᙓ', 9175 => 'ᙔ', 9176 => 'ᙕ', 9177 => 'ᙖ', 9178 => 'ᙗ', 9179 => 'ᙘ', 9180 => 'ᙙ', 9181 => 'ᙚ', 9182 => 'ᙛ', 9183 => 'ᙜ', 9184 => 'ᙝ', 9185 => 'ᙞ', 9186 => 'ᙟ', 9187 => 'ᙠ', 9188 => 'ᙡ', 9189 => 'ᙢ', 9190 => 'ᙣ', 9191 => 'ᙤ', 9192 => 'ᙥ', 9193 => 'ᙦ', 9194 => 'ᙧ', 9195 => 'ᙨ', 9196 => 'ᙩ', 9197 => 'ᙪ', 9198 => 'ᙫ', 9199 => 'ᙬ', 9200 => 'ᙷ', 9201 => 'ᙸ', 9202 => 'ᙹ', 9203 => 'ᙺ', 9204 => 'ᙻ', 9205 => 'ᙼ', 9206 => 'ᙽ', 9207 => 'ᙾ', 9208 => 'ᙿ', 9209 => 'ᢰ', 9210 => 'ᢱ', 9211 => 'ᢲ', 9212 => 'ᢳ', 9213 => 'ᢴ', 9214 => 'ᢵ', 9215 => 'ᢶ', 9216 => 'ᢷ', 9217 => 'ᢸ', 9218 => 'ᢹ', 9219 => 'ᢺ', 9220 => 'ᢻ', 9221 => 'ᢼ', 9222 => 'ᢽ', 9223 => 'ᢾ', 9224 => 'ᢿ', 9225 => 'ᣀ', 9226 => 'ᣁ', 9227 => 'ᣂ', 9228 => 'ᣃ', 9229 => 'ᣄ', 9230 => 'ᣅ', 9231 => 'ᣆ', 9232 => 'ᣇ', 9233 => 'ᣈ', 9234 => 'ᣉ', 9235 => 'ᣊ', 9236 => 'ᣋ', 9237 => 'ᣌ', 9238 => 'ᣍ', 9239 => 'ᣎ', 9240 => 'ᣏ', 9241 => 'ᣐ', 9242 => 'ᣑ', 9243 => 'ᣒ', 9244 => 'ᣓ', 9245 => 'ᣔ', 9246 => 'ᣕ', 9247 => 'ᣖ', 9248 => 'ᣗ', 9249 => 'ᣘ', 9250 => 'ᣙ', 9251 => 'ᣚ', 9252 => 'ᣛ', 9253 => 'ᣜ', 9254 => 'ᣝ', 9255 => 'ᣞ', 9256 => 'ᣟ', 9257 => 'ᣠ', 9258 => 'ᣡ', 9259 => 'ᣢ', 9260 => 'ᣣ', 9261 => 'ᣤ', 9262 => 'ᣥ', 9263 => 'ᣦ', 9264 => 'ᣧ', 9265 => 'ᣨ', 9266 => 'ᣩ', 9267 => 'ᣪ', 9268 => 'ᣫ', 9269 => 'ᣬ', 9270 => 'ᣭ', 9271 => 'ᣮ', 9272 => 'ᣯ', 9273 => 'ᣰ', 9274 => 'ᣱ', 9275 => 'ᣲ', 9276 => 'ᣳ', 9277 => 'ᣴ', 9278 => 'ᣵ', 9279 => 'ᚁ', 9280 => 'ᚂ', 9281 => 'ᚃ', 9282 => 'ᚄ', 9283 => 'ᚅ', 9284 => 'ᚆ', 9285 => 'ᚇ', 9286 => 'ᚈ', 9287 => 'ᚉ', 9288 => 'ᚊ', 9289 => 'ᚋ', 9290 => 'ᚌ', 9291 => 'ᚍ', 9292 => 'ᚎ', 9293 => 'ᚏ', 9294 => 'ᚐ', 9295 => 'ᚑ', 9296 => 'ᚒ', 9297 => 'ᚓ', 9298 => 'ᚔ', 9299 => 'ᚕ', 9300 => 'ᚖ', 9301 => 'ᚗ', 9302 => 'ᚘ', 9303 => 'ᚙ', 9304 => 'ᚚ', 9305 => 'ᚠ', 9306 => 'ᚢ', 9307 => 'ᚦ', 9308 => 'ᚨ', 9309 => 'ᚯ', 9310 => 'ᚰ', 9311 => 'ᚱ', 9312 => 'ᚲ', 9313 => 'ᚷ', 9314 => 'ᚹ', 9315 => 'ᚺ', 9316 => 'ᚾ', 9317 => 'ᛁ', 9318 => 'ᛃ', 9319 => 'ᛅ', 9320 => 'ᛇ', 9321 => 'ᛈ', 9322 => 'ᛉ', 9323 => 'ᛊ', 9324 => 'ᛏ', 9325 => 'ᛒ', 9326 => 'ᛖ', 9327 => 'ᛗ', 9328 => 'ᛚ', 9329 => 'ᛜ', 9330 => 'ᛞ', 9331 => 'ᛟ', 9332 => 'ᚪ', 9333 => 'ᚫ', 9334 => 'ᚣ', 9335 => 'ᛠ', 9336 => 'ᛣ', 9337 => 'ᚸ', 9338 => 'ᛤ', 9339 => 'ᛡ', 9340 => 'ᛢ', 9341 => 'ᛥ', 9342 => 'ᛦ', 9343 => '𐰀', 9344 => '𐰂', 9345 => '𐰃', 9346 => '𐰅', 9347 => '𐰆', 9348 => '𐰇', 9349 => '𐰉', 9350 => '𐰋', 9351 => '𐰍', 9352 => '𐰏', 9353 => '𐰑', 9354 => '𐰓', 9355 => '𐰔', 9356 => '𐰖', 9357 => '𐰘', 9358 => '𐰚', 9359 => '𐰜', 9360 => '𐰞', 9361 => '𐰠', 9362 => '𐰡', 9363 => '𐰢', 9364 => '𐰣', 9365 => '𐰤', 9366 => '𐰦', 9367 => '𐰨', 9368 => '𐰪', 9369 => '𐰬', 9370 => '𐰭', 9371 => '𐰯', 9372 => '𐰰', 9373 => '𐰱', 9374 => '𐰲', 9375 => '𐰴', 9376 => '𐰶', 9377 => '𐰸', 9378 => '𐰺', 9379 => '𐰼', 9380 => '𐰽', 9381 => '𐰾', 9382 => '𐰿', 9383 => '𐱁', 9384 => '𐱃', 9385 => '𐱅', 9386 => '𐱇', 9387 => '𐱈', 9388 => 'ꔀ', 9389 => 'ꔁ', 9390 => 'ꔂ', 9391 => 'ꔃ', 9392 => 'ꔄ', 9393 => 'ꔅ', 9394 => 'ꔆ', 9395 => 'ꔇ', 9396 => 'ꔈ', 9397 => 'ꔉ', 9398 => 'ꔊ', 9399 => 'ꔋ', 9400 => 'ꔌ', 9401 => 'ꔍ', 9402 => 'ꔎ', 9403 => 'ꔏ', 9404 => 'ꔐ', 9405 => 'ꔑ', 9406 => 'ꔒ', 9407 => 'ꔓ', 9408 => 'ꔔ', 9409 => 'ꔕ', 9410 => 'ꔖ', 9411 => 'ꔗ', 9412 => 'ꔘ', 9413 => 'ꔙ', 9414 => 'ꔚ', 9415 => 'ꔛ', 9416 => 'ꔜ', 9417 => 'ꔝ', 9418 => 'ꔞ', 9419 => 'ꔟ', 9420 => 'ꔠ', 9421 => 'ꔡ', 9422 => 'ꔢ', 9423 => 'ꔣ', 9424 => 'ꔤ', 9425 => 'ꔥ', 9426 => 'ꔦ', 9427 => 'ꔧ', 9428 => 'ꔨ', 9429 => 'ꔩ', 9430 => 'ꔪ', 9431 => 'ꔫ', 9432 => 'ꔬ', 9433 => 'ꔭ', 9434 => 'ꔮ', 9435 => 'ꔯ', 9436 => 'ꔰ', 9437 => 'ꔱ', 9438 => 'ꔲ', 9439 => 'ꔳ', 9440 => 'ꔴ', 9441 => 'ꔵ', 9442 => 'ꔶ', 9443 => 'ꔷ', 9444 => 'ꔸ', 9445 => 'ꔹ', 9446 => 'ꔺ', 9447 => 'ꔻ', 9448 => 'ꔼ', 9449 => 'ꔽ', 9450 => 'ꔾ', 9451 => 'ꔿ', 9452 => 'ꕀ', 9453 => 'ꕁ', 9454 => 'ꕂ', 9455 => 'ꕃ', 9456 => 'ꕄ', 9457 => 'ꕅ', 9458 => 'ꕆ', 9459 => 'ꕇ', 9460 => 'ꕈ', 9461 => 'ꕉ', 9462 => 'ꕊ', 9463 => 'ꕋ', 9464 => 'ꕌ', 9465 => 'ꕍ', 9466 => 'ꕎ', 9467 => 'ꕏ', 9468 => 'ꕐ', 9469 => 'ꕑ', 9470 => 'ꕒ', 9471 => 'ꕓ', 9472 => 'ꕔ', 9473 => 'ꕕ', 9474 => 'ꕖ', 9475 => 'ꕗ', 9476 => 'ꕘ', 9477 => 'ꕙ', 9478 => 'ꕚ', 9479 => 'ꕛ', 9480 => 'ꕜ', 9481 => 'ꕝ', 9482 => 'ꕞ', 9483 => 'ꕟ', 9484 => 'ꕠ', 9485 => 'ꕡ', 9486 => 'ꕢ', 9487 => 'ꕣ', 9488 => 'ꕤ', 9489 => 'ꕥ', 9490 => 'ꕦ', 9491 => 'ꕧ', 9492 => 'ꕨ', 9493 => 'ꕩ', 9494 => 'ꕪ', 9495 => 'ꕫ', 9496 => 'ꕬ', 9497 => 'ꕭ', 9498 => 'ꕮ', 9499 => 'ꕯ', 9500 => 'ꕰ', 9501 => 'ꕱ', 9502 => 'ꕲ', 9503 => 'ꕳ', 9504 => 'ꕴ', 9505 => 'ꕵ', 9506 => 'ꕶ', 9507 => 'ꕷ', 9508 => 'ꕸ', 9509 => 'ꕹ', 9510 => 'ꕺ', 9511 => 'ꕻ', 9512 => 'ꕼ', 9513 => 'ꕽ', 9514 => 'ꕾ', 9515 => 'ꕿ', 9516 => 'ꖀ', 9517 => 'ꖁ', 9518 => 'ꖂ', 9519 => 'ꖃ', 9520 => 'ꖄ', 9521 => 'ꖅ', 9522 => 'ꖆ', 9523 => 'ꖇ', 9524 => 'ꖈ', 9525 => 'ꖉ', 9526 => 'ꖊ', 9527 => 'ꖋ', 9528 => 'ꖌ', 9529 => 'ꖍ', 9530 => 'ꖎ', 9531 => 'ꖏ', 9532 => 'ꖐ', 9533 => 'ꖑ', 9534 => 'ꖒ', 9535 => 'ꖓ', 9536 => 'ꖔ', 9537 => 'ꖕ', 9538 => 'ꖖ', 9539 => 'ꖗ', 9540 => 'ꖘ', 9541 => 'ꖙ', 9542 => 'ꖚ', 9543 => 'ꖛ', 9544 => 'ꖜ', 9545 => 'ꖝ', 9546 => 'ꖞ', 9547 => 'ꖟ', 9548 => 'ꖠ', 9549 => 'ꖡ', 9550 => 'ꖢ', 9551 => 'ꖣ', 9552 => 'ꖤ', 9553 => 'ꖥ', 9554 => 'ꖦ', 9555 => 'ꖧ', 9556 => 'ꖨ', 9557 => 'ꖩ', 9558 => 'ꖪ', 9559 => 'ꖫ', 9560 => 'ꖬ', 9561 => 'ꖭ', 9562 => 'ꖮ', 9563 => 'ꖯ', 9564 => 'ꖰ', 9565 => 'ꖱ', 9566 => 'ꖲ', 9567 => 'ꖳ', 9568 => 'ꖴ', 9569 => 'ꖵ', 9570 => 'ꖶ', 9571 => 'ꖷ', 9572 => 'ꖸ', 9573 => 'ꖹ', 9574 => 'ꖺ', 9575 => 'ꖻ', 9576 => 'ꖼ', 9577 => 'ꖽ', 9578 => 'ꖾ', 9579 => 'ꖿ', 9580 => 'ꗀ', 9581 => 'ꗁ', 9582 => 'ꗂ', 9583 => 'ꗃ', 9584 => 'ꗄ', 9585 => 'ꗅ', 9586 => 'ꗆ', 9587 => 'ꗇ', 9588 => 'ꗈ', 9589 => 'ꗉ', 9590 => 'ꗊ', 9591 => 'ꗋ', 9592 => 'ꗌ', 9593 => 'ꗍ', 9594 => 'ꗎ', 9595 => 'ꗏ', 9596 => 'ꗐ', 9597 => 'ꗑ', 9598 => 'ꗒ', 9599 => 'ꗓ', 9600 => 'ꗔ', 9601 => 'ꗕ', 9602 => 'ꗖ', 9603 => 'ꗗ', 9604 => 'ꗘ', 9605 => 'ꗙ', 9606 => 'ꗚ', 9607 => 'ꗛ', 9608 => 'ꗜ', 9609 => 'ꗝ', 9610 => 'ꗞ', 9611 => 'ꗟ', 9612 => 'ꗠ', 9613 => 'ꗡ', 9614 => 'ꗢ', 9615 => 'ꗣ', 9616 => 'ꗤ', 9617 => 'ꗥ', 9618 => 'ꗦ', 9619 => 'ꗧ', 9620 => 'ꗨ', 9621 => 'ꗩ', 9622 => 'ꗪ', 9623 => 'ꗫ', 9624 => 'ꗬ', 9625 => 'ꗭ', 9626 => 'ꗮ', 9627 => 'ꗯ', 9628 => 'ꗰ', 9629 => 'ꗱ', 9630 => 'ꗲ', 9631 => 'ꗳ', 9632 => 'ꗴ', 9633 => 'ꗵ', 9634 => 'ꗶ', 9635 => 'ꗷ', 9636 => 'ꗸ', 9637 => 'ꗹ', 9638 => 'ꗺ', 9639 => 'ꗻ', 9640 => 'ꗼ', 9641 => 'ꗽ', 9642 => 'ꗾ', 9643 => 'ꗿ', 9644 => 'ꘀ', 9645 => 'ꘁ', 9646 => 'ꘂ', 9647 => 'ꘃ', 9648 => 'ꘄ', 9649 => 'ꘅ', 9650 => 'ꘆ', 9651 => 'ꘇ', 9652 => 'ꘈ', 9653 => 'ꘉ', 9654 => 'ꘊ', 9655 => 'ꘋ', 9656 => 'ꘌ', 9657 => 'ꚠ', 9658 => 'ꚡ', 9659 => 'ꚢ', 9660 => 'ꚣ', 9661 => 'ꚤ', 9662 => 'ꚥ', 9663 => 'ꚦ', 9664 => 'ꚧ', 9665 => 'ꚨ', 9666 => 'ꚩ', 9667 => 'ꚪ', 9668 => 'ꚫ', 9669 => 'ꚬ', 9670 => 'ꚭ', 9671 => 'ꚮ', 9672 => 'ꚯ', 9673 => 'ꚰ', 9674 => 'ꚱ', 9675 => 'ꚲ', 9676 => 'ꚳ', 9677 => 'ꚴ', 9678 => 'ꚵ', 9679 => 'ꚶ', 9680 => 'ꚷ', 9681 => 'ꚸ', 9682 => 'ꚹ', 9683 => 'ꚺ', 9684 => 'ꚻ', 9685 => 'ꚼ', 9686 => 'ꚽ', 9687 => 'ꚾ', 9688 => 'ꚿ', 9689 => 'ꛀ', 9690 => 'ꛁ', 9691 => 'ꛂ', 9692 => 'ꛃ', 9693 => 'ꛄ', 9694 => 'ꛅ', 9695 => 'ꛆ', 9696 => 'ꛇ', 9697 => 'ꛈ', 9698 => 'ꛉ', 9699 => 'ꛊ', 9700 => 'ꛋ', 9701 => 'ꛌ', 9702 => 'ꛍ', 9703 => 'ꛎ', 9704 => 'ꛏ', 9705 => 'ꛐ', 9706 => 'ꛑ', 9707 => 'ꛒ', 9708 => 'ꛓ', 9709 => 'ꛔ', 9710 => 'ꛕ', 9711 => 'ꛖ', 9712 => 'ꛗ', 9713 => 'ꛘ', 9714 => 'ꛙ', 9715 => 'ꛚ', 9716 => 'ꛛ', 9717 => 'ꛜ', 9718 => 'ꛝ', 9719 => 'ꛞ', 9720 => 'ꛟ', 9721 => 'ꛠ', 9722 => 'ꛡ', 9723 => 'ꛢ', 9724 => 'ꛣ', 9725 => 'ꛤ', 9726 => 'ꛥ', 9727 => 'ꛦ', 9728 => 'ꛧ', 9729 => 'ꛨ', 9730 => 'ꛩ', 9731 => 'ꛪ', 9732 => 'ꛫ', 9733 => 'ꛬ', 9734 => 'ꛭ', 9735 => 'ꛮ', 9736 => 'ꛯ', 9737 => '𖠀', 9738 => '𖠁', 9739 => '𖠂', 9740 => '𖠃', 9741 => '𖠄', 9742 => '𖠅', 9743 => '𖠆', 9744 => '𖠇', 9745 => '𖠈', 9746 => '𖠉', 9747 => '𖠊', 9748 => '𖠋', 9749 => '𖠌', 9750 => '𖠍', 9751 => '𖠎', 9752 => '𖠏', 9753 => '𖠐', 9754 => '𖠑', 9755 => '𖠒', 9756 => '𖠓', 9757 => '𖠔', 9758 => '𖠕', 9759 => '𖠖', 9760 => '𖠗', 9761 => '𖠘', 9762 => '𖠙', 9763 => '𖠚', 9764 => '𖠛', 9765 => '𖠜', 9766 => '𖠝', 9767 => '𖠞', 9768 => '𖠟', 9769 => '𖠠', 9770 => '𖠡', 9771 => '𖠢', 9772 => '𖠣', 9773 => '𖠤', 9774 => '𖠥', 9775 => '𖠦', 9776 => '𖠧', 9777 => '𖠨', 9778 => '𖠩', 9779 => '𖠪', 9780 => '𖠫', 9781 => '𖠬', 9782 => '𖠭', 9783 => '𖠮', 9784 => '𖠯', 9785 => '𖠰', 9786 => '𖠱', 9787 => '𖠲', 9788 => '𖠳', 9789 => '𖠴', 9790 => '𖠵', 9791 => '𖠶', 9792 => '𖠷', 9793 => '𖠸', 9794 => '𖠹', 9795 => '𖠺', 9796 => '𖠻', 9797 => '𖠼', 9798 => '𖠽', 9799 => '𖠾', 9800 => '𖠿', 9801 => '𖡀', 9802 => '𖡁', 9803 => '𖡂', 9804 => '𖡃', 9805 => '𖡄', 9806 => '𖡅', 9807 => '𖡆', 9808 => '𖡇', 9809 => '𖡈', 9810 => '𖡉', 9811 => '𖡊', 9812 => '𖡋', 9813 => '𖡌', 9814 => '𖡍', 9815 => '𖡎', 9816 => '𖡏', 9817 => '𖡐', 9818 => '𖡑', 9819 => '𖡒', 9820 => '𖡓', 9821 => '𖡔', 9822 => '𖡕', 9823 => '𖡖', 9824 => '𖡗', 9825 => '𖡘', 9826 => '𖡙', 9827 => '𖡚', 9828 => '𖡛', 9829 => '𖡜', 9830 => '𖡝', 9831 => '𖡞', 9832 => '𖡟', 9833 => '𖡠', 9834 => '𖡡', 9835 => '𖡢', 9836 => '𖡣', 9837 => '𖡤', 9838 => '𖡥', 9839 => '𖡦', 9840 => '𖡧', 9841 => '𖡨', 9842 => '𖡩', 9843 => '𖡪', 9844 => '𖡫', 9845 => '𖡬', 9846 => '𖡭', 9847 => '𖡮', 9848 => '𖡯', 9849 => '𖡰', 9850 => '𖡱', 9851 => '𖡲', 9852 => '𖡳', 9853 => '𖡴', 9854 => '𖡵', 9855 => '𖡶', 9856 => '𖡷', 9857 => '𖡸', 9858 => '𖡹', 9859 => '𖡺', 9860 => '𖡻', 9861 => '𖡼', 9862 => '𖡽', 9863 => '𖡾', 9864 => '𖡿', 9865 => '𖢀', 9866 => '𖢁', 9867 => '𖢂', 9868 => '𖢃', 9869 => '𖢄', 9870 => '𖢅', 9871 => '𖢆', 9872 => '𖢇', 9873 => '𖢈', 9874 => '𖢉', 9875 => '𖢊', 9876 => '𖢋', 9877 => '𖢌', 9878 => '𖢍', 9879 => '𖢎', 9880 => '𖢏', 9881 => '𖢐', 9882 => '𖢑', 9883 => '𖢒', 9884 => '𖢓', 9885 => '𖢔', 9886 => '𖢕', 9887 => '𖢖', 9888 => '𖢗', 9889 => '𖢘', 9890 => '𖢙', 9891 => '𖢚', 9892 => '𖢛', 9893 => '𖢜', 9894 => '𖢝', 9895 => '𖢞', 9896 => '𖢟', 9897 => '𖢠', 9898 => '𖢡', 9899 => '𖢢', 9900 => '𖢣', 9901 => '𖢤', 9902 => '𖢥', 9903 => '𖢦', 9904 => '𖢧', 9905 => '𖢨', 9906 => '𖢩', 9907 => '𖢪', 9908 => '𖢫', 9909 => '𖢬', 9910 => '𖢭', 9911 => '𖢮', 9912 => '𖢯', 9913 => '𖢰', 9914 => '𖢱', 9915 => '𖢲', 9916 => '𖢳', 9917 => '𖢴', 9918 => '𖢵', 9919 => '𖢶', 9920 => '𖢷', 9921 => '𖢸', 9922 => '𖢹', 9923 => '𖢺', 9924 => '𖢻', 9925 => '𖢼', 9926 => '𖢽', 9927 => '𖢾', 9928 => '𖢿', 9929 => '𖣀', 9930 => '𖣁', 9931 => '𖣂', 9932 => '𖣃', 9933 => '𖣄', 9934 => '𖣅', 9935 => '𖣆', 9936 => '𖣇', 9937 => '𖣈', 9938 => '𖣉', 9939 => '𖣊', 9940 => '𖣋', 9941 => '𖣌', 9942 => '𖣍', 9943 => '𖣎', 9944 => '𖣏', 9945 => '𖣐', 9946 => '𖣑', 9947 => '𖣒', 9948 => '𖣓', 9949 => '𖣔', 9950 => '𖣕', 9951 => '𖣖', 9952 => '𖣗', 9953 => '𖣘', 9954 => '𖣙', 9955 => '𖣚', 9956 => '𖣛', 9957 => '𖣜', 9958 => '𖣝', 9959 => '𖣞', 9960 => '𖣟', 9961 => '𖣠', 9962 => '𖣡', 9963 => '𖣢', 9964 => '𖣣', 9965 => '𖣤', 9966 => '𖣥', 9967 => '𖣦', 9968 => '𖣧', 9969 => '𖣨', 9970 => '𖣩', 9971 => '𖣪', 9972 => '𖣫', 9973 => '𖣬', 9974 => '𖣭', 9975 => '𖣮', 9976 => '𖣯', 9977 => '𖣰', 9978 => '𖣱', 9979 => '𖣲', 9980 => '𖣳', 9981 => '𖣴', 9982 => '𖣵', 9983 => '𖣶', 9984 => '𖣷', 9985 => '𖣸', 9986 => '𖣹', 9987 => '𖣺', 9988 => '𖣻', 9989 => '𖣼', 9990 => '𖣽', 9991 => '𖣾', 9992 => '𖣿', 9993 => '𖤀', 9994 => '𖤁', 9995 => '𖤂', 9996 => '𖤃', 9997 => '𖤄', 9998 => '𖤅', 9999 => '𖤆', 10000 => '𖤇', 10001 => '𖤈', 10002 => '𖤉', 10003 => '𖤊', 10004 => '𖤋', 10005 => '𖤌', 10006 => '𖤍', 10007 => '𖤎', 10008 => '𖤏', 10009 => '𖤐', 10010 => '𖤑', 10011 => '𖤒', 10012 => '𖤓', 10013 => '𖤔', 10014 => '𖤕', 10015 => '𖤖', 10016 => '𖤗', 10017 => '𖤘', 10018 => '𖤙', 10019 => '𖤚', 10020 => '𖤛', 10021 => '𖤜', 10022 => '𖤝', 10023 => '𖤞', 10024 => '𖤟', 10025 => '𖤠', 10026 => '𖤡', 10027 => '𖤢', 10028 => '𖤣', 10029 => '𖤤', 10030 => '𖤥', 10031 => '𖤦', 10032 => '𖤧', 10033 => '𖤨', 10034 => '𖤩', 10035 => '𖤪', 10036 => '𖤫', 10037 => '𖤬', 10038 => '𖤭', 10039 => '𖤮', 10040 => '𖤯', 10041 => '𖤰', 10042 => '𖤱', 10043 => '𖤲', 10044 => '𖤳', 10045 => '𖤴', 10046 => '𖤵', 10047 => '𖤶', 10048 => '𖤷', 10049 => '𖤸', 10050 => '𖤹', 10051 => '𖤺', 10052 => '𖤻', 10053 => '𖤼', 10054 => '𖤽', 10055 => '𖤾', 10056 => '𖤿', 10057 => '𖥀', 10058 => '𖥁', 10059 => '𖥂', 10060 => '𖥃', 10061 => '𖥄', 10062 => '𖥅', 10063 => '𖥆', 10064 => '𖥇', 10065 => '𖥈', 10066 => '𖥉', 10067 => '𖥊', 10068 => '𖥋', 10069 => '𖥌', 10070 => '𖥍', 10071 => '𖥎', 10072 => '𖥏', 10073 => '𖥐', 10074 => '𖥑', 10075 => '𖥒', 10076 => '𖥓', 10077 => '𖥔', 10078 => '𖥕', 10079 => '𖥖', 10080 => '𖥗', 10081 => '𖥘', 10082 => '𖥙', 10083 => '𖥚', 10084 => '𖥛', 10085 => '𖥜', 10086 => '𖥝', 10087 => '𖥞', 10088 => '𖥟', 10089 => '𖥠', 10090 => '𖥡', 10091 => '𖥢', 10092 => '𖥣', 10093 => '𖥤', 10094 => '𖥥', 10095 => '𖥦', 10096 => '𖥧', 10097 => '𖥨', 10098 => '𖥩', 10099 => '𖥪', 10100 => '𖥫', 10101 => '𖥬', 10102 => '𖥭', 10103 => '𖥮', 10104 => '𖥯', 10105 => '𖥰', 10106 => '𖥱', 10107 => '𖥲', 10108 => '𖥳', 10109 => '𖥴', 10110 => '𖥵', 10111 => '𖥶', 10112 => '𖥷', 10113 => '𖥸', 10114 => '𖥹', 10115 => '𖥺', 10116 => '𖥻', 10117 => '𖥼', 10118 => '𖥽', 10119 => '𖥾', 10120 => '𖥿', 10121 => '𖦀', 10122 => '𖦁', 10123 => '𖦂', 10124 => '𖦃', 10125 => '𖦄', 10126 => '𖦅', 10127 => '𖦆', 10128 => '𖦇', 10129 => '𖦈', 10130 => '𖦉', 10131 => '𖦊', 10132 => '𖦋', 10133 => '𖦌', 10134 => '𖦍', 10135 => '𖦎', 10136 => '𖦏', 10137 => '𖦐', 10138 => '𖦑', 10139 => '𖦒', 10140 => '𖦓', 10141 => '𖦔', 10142 => '𖦕', 10143 => '𖦖', 10144 => '𖦗', 10145 => '𖦘', 10146 => '𖦙', 10147 => '𖦚', 10148 => '𖦛', 10149 => '𖦜', 10150 => '𖦝', 10151 => '𖦞', 10152 => '𖦟', 10153 => '𖦠', 10154 => '𖦡', 10155 => '𖦢', 10156 => '𖦣', 10157 => '𖦤', 10158 => '𖦥', 10159 => '𖦦', 10160 => '𖦧', 10161 => '𖦨', 10162 => '𖦩', 10163 => '𖦪', 10164 => '𖦫', 10165 => '𖦬', 10166 => '𖦭', 10167 => '𖦮', 10168 => '𖦯', 10169 => '𖦰', 10170 => '𖦱', 10171 => '𖦲', 10172 => '𖦳', 10173 => '𖦴', 10174 => '𖦵', 10175 => '𖦶', 10176 => '𖦷', 10177 => '𖦸', 10178 => '𖦹', 10179 => '𖦺', 10180 => '𖦻', 10181 => '𖦼', 10182 => '𖦽', 10183 => '𖦾', 10184 => '𖦿', 10185 => '𖧀', 10186 => '𖧁', 10187 => '𖧂', 10188 => '𖧃', 10189 => '𖧄', 10190 => '𖧅', 10191 => '𖧆', 10192 => '𖧇', 10193 => '𖧈', 10194 => '𖧉', 10195 => '𖧊', 10196 => '𖧋', 10197 => '𖧌', 10198 => '𖧍', 10199 => '𖧎', 10200 => '𖧏', 10201 => '𖧐', 10202 => '𖧑', 10203 => '𖧒', 10204 => '𖧓', 10205 => '𖧔', 10206 => '𖧕', 10207 => '𖧖', 10208 => '𖧗', 10209 => '𖧘', 10210 => '𖧙', 10211 => '𖧚', 10212 => '𖧛', 10213 => '𖧜', 10214 => '𖧝', 10215 => '𖧞', 10216 => '𖧟', 10217 => '𖧠', 10218 => '𖧡', 10219 => '𖧢', 10220 => '𖧣', 10221 => '𖧤', 10222 => '𖧥', 10223 => '𖧦', 10224 => '𖧧', 10225 => '𖧨', 10226 => '𖧩', 10227 => '𖧪', 10228 => '𖧫', 10229 => '𖧬', 10230 => '𖧭', 10231 => '𖧮', 10232 => '𖧯', 10233 => '𖧰', 10234 => '𖧱', 10235 => '𖧲', 10236 => '𖧳', 10237 => '𖧴', 10238 => '𖧵', 10239 => '𖧶', 10240 => '𖧷', 10241 => '𖧸', 10242 => '𖧹', 10243 => '𖧺', 10244 => '𖧻', 10245 => '𖧼', 10246 => '𖧽', 10247 => '𖧾', 10248 => '𖧿', 10249 => '𖨀', 10250 => '𖨁', 10251 => '𖨂', 10252 => '𖨃', 10253 => '𖨄', 10254 => '𖨅', 10255 => '𖨆', 10256 => '𖨇', 10257 => '𖨈', 10258 => '𖨉', 10259 => '𖨊', 10260 => '𖨋', 10261 => '𖨌', 10262 => '𖨍', 10263 => '𖨎', 10264 => '𖨏', 10265 => '𖨐', 10266 => '𖨑', 10267 => '𖨒', 10268 => '𖨓', 10269 => '𖨔', 10270 => '𖨕', 10271 => '𖨖', 10272 => '𖨗', 10273 => '𖨘', 10274 => '𖨙', 10275 => '𖨚', 10276 => '𖨛', 10277 => '𖨜', 10278 => '𖨝', 10279 => '𖨞', 10280 => '𖨟', 10281 => '𖨠', 10282 => '𖨡', 10283 => '𖨢', 10284 => '𖨣', 10285 => '𖨤', 10286 => '𖨥', 10287 => '𖨦', 10288 => '𖨧', 10289 => '𖨨', 10290 => '𖨩', 10291 => '𖨪', 10292 => '𖨫', 10293 => '𖨬', 10294 => '𖨭', 10295 => '𖨮', 10296 => '𖨯', 10297 => '𖨰', 10298 => '𖨱', 10299 => '𖨲', 10300 => '𖨳', 10301 => '𖨴', 10302 => '𖨵', 10303 => '𖨶', 10304 => '𖨷', 10305 => '𖨸', 10306 => 'ᄀ', 10307 => 'ᄁ', 10308 => 'ᄂ', 10309 => 'ᄃ', 10310 => 'ᄄ', 10311 => 'ᄅ', 10312 => 'ᄆ', 10313 => 'ᄇ', 10314 => 'ᄈ', 10315 => 'ᄉ', 10316 => 'ᄊ', 10317 => 'ᄋ', 10318 => 'ᄌ', 10319 => 'ᄍ', 10320 => 'ᄎ', 10321 => 'ᄏ', 10322 => 'ᄐ', 10323 => 'ᄑ', 10324 => 'ᄒ', 10325 => 'ᄓ', 10326 => 'ᄔ', 10327 => 'ᄕ', 10328 => 'ᄖ', 10329 => 'ᄗ', 10330 => 'ᄘ', 10331 => 'ᄙ', 10332 => 'ᄚ', 10333 => 'ᄛ', 10334 => 'ᄜ', 10335 => 'ᄝ', 10336 => 'ᄞ', 10337 => 'ᄟ', 10338 => 'ᄠ', 10339 => 'ᄡ', 10340 => 'ᄢ', 10341 => 'ᄣ', 10342 => 'ᄤ', 10343 => 'ᄥ', 10344 => 'ᄦ', 10345 => 'ᄧ', 10346 => 'ᄨ', 10347 => 'ᄩ', 10348 => 'ᄪ', 10349 => 'ᄫ', 10350 => 'ᄬ', 10351 => 'ᄭ', 10352 => 'ᄮ', 10353 => 'ᄯ', 10354 => 'ᄰ', 10355 => 'ᄱ', 10356 => 'ᄲ', 10357 => 'ᄳ', 10358 => 'ᄴ', 10359 => 'ᄵ', 10360 => 'ᄶ', 10361 => 'ᄷ', 10362 => 'ᄸ', 10363 => 'ᄹ', 10364 => 'ᄺ', 10365 => 'ᄻ', 10366 => 'ᄼ', 10367 => 'ᄽ', 10368 => 'ᄾ', 10369 => 'ᄿ', 10370 => 'ᅀ', 10371 => 'ᅁ', 10372 => 'ᅂ', 10373 => 'ᅃ', 10374 => 'ᅄ', 10375 => 'ᅅ', 10376 => 'ᅆ', 10377 => 'ᅇ', 10378 => 'ᅈ', 10379 => 'ᅉ', 10380 => 'ᅊ', 10381 => 'ᅋ', 10382 => 'ᅌ', 10383 => 'ᅍ', 10384 => 'ᅎ', 10385 => 'ᅏ', 10386 => 'ᅐ', 10387 => 'ᅑ', 10388 => 'ᅒ', 10389 => 'ᅓ', 10390 => 'ᅔ', 10391 => 'ᅕ', 10392 => 'ᅖ', 10393 => 'ᅗ', 10394 => 'ᅘ', 10395 => 'ᅙ', 10396 => 'ᅚ', 10397 => 'ᅛ', 10398 => 'ᅜ', 10399 => 'ᅝ', 10400 => 'ᅞ', 10401 => 'ꥠ', 10402 => 'ꥡ', 10403 => 'ꥢ', 10404 => 'ꥣ', 10405 => 'ꥤ', 10406 => 'ꥥ', 10407 => 'ꥦ', 10408 => 'ꥧ', 10409 => 'ꥨ', 10410 => 'ꥩ', 10411 => 'ꥪ', 10412 => 'ꥫ', 10413 => 'ꥬ', 10414 => 'ꥭ', 10415 => 'ꥮ', 10416 => 'ꥯ', 10417 => 'ꥰ', 10418 => 'ꥱ', 10419 => 'ꥲ', 10420 => 'ꥳ', 10421 => 'ꥴ', 10422 => 'ꥵ', 10423 => 'ꥶ', 10424 => 'ꥷ', 10425 => 'ꥸ', 10426 => 'ꥹ', 10427 => 'ꥺ', 10428 => 'ꥻ', 10429 => 'ꥼ', 10430 => 'ᅟ', 10431 => 'ᅠ', 10432 => 'ᅡ', 10433 => 'ᅢ', 10434 => 'ᅣ', 10435 => 'ᅤ', 10436 => 'ᅥ', 10437 => 'ᅦ', 10438 => 'ᅧ', 10439 => 'ᅨ', 10440 => 'ᅩ', 10441 => 'ᅪ', 10442 => 'ᅫ', 10443 => 'ᅬ', 10444 => 'ᅭ', 10445 => 'ᅮ', 10446 => 'ᅯ', 10447 => 'ᅰ', 10448 => 'ᅱ', 10449 => 'ᅲ', 10450 => 'ᅳ', 10451 => 'ᅴ', 10452 => 'ᅵ', 10453 => 'ᅶ', 10454 => 'ᅷ', 10455 => 'ᅸ', 10456 => 'ᅹ', 10457 => 'ᅺ', 10458 => 'ᅻ', 10459 => 'ᅼ', 10460 => 'ᅽ', 10461 => 'ᅾ', 10462 => 'ᅿ', 10463 => 'ᆀ', 10464 => 'ᆁ', 10465 => 'ᆂ', 10466 => 'ᆃ', 10467 => 'ᆄ', 10468 => 'ᆅ', 10469 => 'ᆆ', 10470 => 'ᆇ', 10471 => 'ᆈ', 10472 => 'ᆉ', 10473 => 'ᆊ', 10474 => 'ᆋ', 10475 => 'ᆌ', 10476 => 'ᆍ', 10477 => 'ᆎ', 10478 => 'ᆏ', 10479 => 'ᆐ', 10480 => 'ᆑ', 10481 => 'ᆒ', 10482 => 'ᆓ', 10483 => 'ᆔ', 10484 => 'ᆕ', 10485 => 'ᆖ', 10486 => 'ᆗ', 10487 => 'ᆘ', 10488 => 'ᆙ', 10489 => 'ᆚ', 10490 => 'ᆛ', 10491 => 'ᆜ', 10492 => 'ᆝ', 10493 => 'ᆞ', 10494 => 'ᆟ', 10495 => 'ᆠ', 10496 => 'ᆡ', 10497 => 'ᆢ', 10498 => 'ᆣ', 10499 => 'ᆤ', 10500 => 'ᆥ', 10501 => 'ᆦ', 10502 => 'ᆧ', 10503 => 'ힰ', 10504 => 'ힱ', 10505 => 'ힲ', 10506 => 'ힳ', 10507 => 'ힴ', 10508 => 'ힵ', 10509 => 'ힶ', 10510 => 'ힷ', 10511 => 'ힸ', 10512 => 'ힹ', 10513 => 'ힺ', 10514 => 'ힻ', 10515 => 'ힼ', 10516 => 'ힽ', 10517 => 'ힾ', 10518 => 'ힿ', 10519 => 'ퟀ', 10520 => 'ퟁ', 10521 => 'ퟂ', 10522 => 'ퟃ', 10523 => 'ퟄ', 10524 => 'ퟅ', 10525 => 'ퟆ', 10526 => 'ᆨ', 10527 => 'ᆩ', 10528 => 'ᆪ', 10529 => 'ᆫ', 10530 => 'ᆬ', 10531 => 'ᆭ', 10532 => 'ᆮ', 10533 => 'ᆯ', 10534 => 'ᆰ', 10535 => 'ᆱ', 10536 => 'ᆲ', 10537 => 'ᆳ', 10538 => 'ᆴ', 10539 => 'ᆵ', 10540 => 'ᆶ', 10541 => 'ᆷ', 10542 => 'ᆸ', 10543 => 'ᆹ', 10544 => 'ᆺ', 10545 => 'ᆻ', 10546 => 'ᆼ', 10547 => 'ᆽ', 10548 => 'ᆾ', 10549 => 'ᆿ', 10550 => 'ᇀ', 10551 => 'ᇁ', 10552 => 'ᇂ', 10553 => 'ᇃ', 10554 => 'ᇄ', 10555 => 'ᇅ', 10556 => 'ᇆ', 10557 => 'ᇇ', 10558 => 'ᇈ', 10559 => 'ᇉ', 10560 => 'ᇊ', 10561 => 'ᇋ', 10562 => 'ᇌ', 10563 => 'ᇍ', 10564 => 'ᇎ', 10565 => 'ᇏ', 10566 => 'ᇐ', 10567 => 'ᇑ', 10568 => 'ᇒ', 10569 => 'ᇓ', 10570 => 'ᇔ', 10571 => 'ᇕ', 10572 => 'ᇖ', 10573 => 'ᇗ', 10574 => 'ᇘ', 10575 => 'ᇙ', 10576 => 'ᇚ', 10577 => 'ᇛ', 10578 => 'ᇜ', 10579 => 'ᇝ', 10580 => 'ᇞ', 10581 => 'ᇟ', 10582 => 'ᇠ', 10583 => 'ᇡ', 10584 => 'ᇢ', 10585 => 'ᇣ', 10586 => 'ᇤ', 10587 => 'ᇥ', 10588 => 'ᇦ', 10589 => 'ᇧ', 10590 => 'ᇨ', 10591 => 'ᇩ', 10592 => 'ᇪ', 10593 => 'ᇫ', 10594 => 'ᇬ', 10595 => 'ᇭ', 10596 => 'ᇮ', 10597 => 'ᇯ', 10598 => 'ᇰ', 10599 => 'ᇱ', 10600 => 'ᇲ', 10601 => 'ᇳ', 10602 => 'ᇴ', 10603 => 'ᇵ', 10604 => 'ᇶ', 10605 => 'ᇷ', 10606 => 'ᇸ', 10607 => 'ᇹ', 10608 => 'ᇺ', 10609 => 'ᇻ', 10610 => 'ᇼ', 10611 => 'ᇽ', 10612 => 'ᇾ', 10613 => 'ᇿ', 10614 => 'ퟋ', 10615 => 'ퟌ', 10616 => 'ퟍ', 10617 => 'ퟎ', 10618 => 'ퟏ', 10619 => 'ퟐ', 10620 => 'ퟑ', 10621 => 'ퟒ', 10622 => 'ퟓ', 10623 => 'ퟔ', 10624 => 'ퟕ', 10625 => 'ퟖ', 10626 => 'ퟗ', 10627 => 'ퟘ', 10628 => 'ퟙ', 10629 => 'ퟚ', 10630 => 'ퟛ', 10631 => 'ퟜ', 10632 => 'ퟝ', 10633 => 'ퟞ', 10634 => 'ퟟ', 10635 => 'ퟠ', 10636 => 'ퟡ', 10637 => 'ퟢ', 10638 => 'ퟣ', 10639 => 'ퟤ', 10640 => 'ퟥ', 10641 => 'ퟦ', 10642 => 'ퟧ', 10643 => 'ퟨ', 10644 => 'ퟩ', 10645 => 'ퟪ', 10646 => 'ퟫ', 10647 => 'ퟬ', 10648 => 'ퟭ', 10649 => 'ퟮ', 10650 => 'ퟯ', 10651 => 'ퟰ', 10652 => 'ퟱ', 10653 => 'ퟲ', 10654 => 'ퟳ', 10655 => 'ퟴ', 10656 => 'ퟵ', 10657 => 'ퟶ', 10658 => 'ퟷ', 10659 => 'ퟸ', 10660 => 'ퟹ', 10661 => 'ퟺ', 10662 => 'ퟻ', 10663 => 'あ', 10664 => 'い', 10665 => 'う', 10666 => '𛀀', 10667 => 'え', 10668 => 'お', 10669 => 'か', 10670 => 'き', 10671 => 'く', 10672 => 'け', 10673 => 'こ', 10674 => 'さ', 10675 => 'し', 10676 => 'す', 10677 => 'せ', 10678 => 'そ', 10679 => 'た', 10680 => 'ち', 10681 => 'つ', 10682 => 'て', 10683 => 'と', 10684 => 'な', 10685 => 'に', 10686 => 'ぬ', 10687 => 'ね', 10688 => 'の', 10689 => 'は', 10690 => 'ひ', 10691 => 'ふ', 10692 => 'へ', 10693 => 'ほ', 10694 => 'ま', 10695 => 'み', 10696 => 'む', 10697 => 'め', 10698 => 'も', 10699 => 'や', 10700 => 'ゆ', 10701 => '𛀁', 10702 => 'よ', 10703 => 'ら', 10704 => 'り', 10705 => 'る', 10706 => 'れ', 10707 => 'ろ', 10708 => 'わ', 10709 => 'ゐ', 10710 => 'ゑ', 10711 => 'を', 10712 => 'ん', 10713 => 'ㄅ', 10714 => 'ㄆ', 10715 => 'ㄇ', 10716 => 'ㄈ', 10717 => 'ㄪ', 10718 => 'ㄉ', 10719 => 'ㄊ', 10720 => 'ㄋ', 10721 => 'ㄌ', 10722 => 'ㄍ', 10723 => 'ㄎ', 10724 => 'ㄫ', 10725 => 'ㆭ', 10726 => 'ㄏ', 10727 => 'ㄐ', 10728 => 'ㄑ', 10729 => 'ㄒ', 10730 => 'ㄬ', 10731 => 'ㄓ', 10732 => 'ㄔ', 10733 => 'ㄕ', 10734 => 'ㄖ', 10735 => 'ㄗ', 10736 => 'ㄘ', 10737 => 'ㄙ', 10738 => 'ㆸ', 10739 => 'ㆹ', 10740 => 'ㆺ', 10741 => 'ㄚ', 10742 => 'ㄛ', 10743 => 'ㆦ', 10744 => 'ㄜ', 10745 => 'ㄝ', 10746 => 'ㆤ', 10747 => 'ㄞ', 10748 => 'ㄟ', 10749 => 'ㄠ', 10750 => 'ㄡ', 10751 => 'ㄢ', 10752 => 'ㄣ', 10753 => 'ㄤ', 10754 => 'ㆲ', 10755 => 'ㄥ', 10756 => 'ㆰ', 10757 => 'ㆱ', 10758 => 'ㆬ', 10759 => 'ㄦ', 10760 => 'ㄧ', 10761 => 'ㄨ', 10762 => 'ㄩ', 10763 => 'ㄭ', 10764 => 'ꀀ', 10765 => 'ꀁ', 10766 => 'ꀂ', 10767 => 'ꀃ', 10768 => 'ꀄ', 10769 => 'ꀅ', 10770 => 'ꀆ', 10771 => 'ꀇ', 10772 => 'ꀈ', 10773 => 'ꀉ', 10774 => 'ꀊ', 10775 => 'ꀋ', 10776 => 'ꀌ', 10777 => 'ꀍ', 10778 => 'ꀎ', 10779 => 'ꀏ', 10780 => 'ꀐ', 10781 => 'ꀑ', 10782 => 'ꀒ', 10783 => 'ꀓ', 10784 => 'ꀔ', 10785 => 'ꀕ', 10786 => 'ꀖ', 10787 => 'ꀗ', 10788 => 'ꀘ', 10789 => 'ꀙ', 10790 => 'ꀚ', 10791 => 'ꀛ', 10792 => 'ꀜ', 10793 => 'ꀝ', 10794 => 'ꀞ', 10795 => 'ꀟ', 10796 => 'ꀠ', 10797 => 'ꀡ', 10798 => 'ꀢ', 10799 => 'ꀣ', 10800 => 'ꀤ', 10801 => 'ꀥ', 10802 => 'ꀦ', 10803 => 'ꀧ', 10804 => 'ꀨ', 10805 => 'ꀩ', 10806 => 'ꀪ', 10807 => 'ꀫ', 10808 => 'ꀬ', 10809 => 'ꀭ', 10810 => 'ꀮ', 10811 => 'ꀯ', 10812 => 'ꀰ', 10813 => 'ꀱ', 10814 => 'ꀲ', 10815 => 'ꀳ', 10816 => 'ꀴ', 10817 => 'ꀵ', 10818 => 'ꀶ', 10819 => 'ꀷ', 10820 => 'ꀸ', 10821 => 'ꀹ', 10822 => 'ꀺ', 10823 => 'ꀻ', 10824 => 'ꀼ', 10825 => 'ꀽ', 10826 => 'ꀾ', 10827 => 'ꀿ', 10828 => 'ꁀ', 10829 => 'ꁁ', 10830 => 'ꁂ', 10831 => 'ꁃ', 10832 => 'ꁄ', 10833 => 'ꁅ', 10834 => 'ꁆ', 10835 => 'ꁇ', 10836 => 'ꁈ', 10837 => 'ꁉ', 10838 => 'ꁊ', 10839 => 'ꁋ', 10840 => 'ꁌ', 10841 => 'ꁍ', 10842 => 'ꁎ', 10843 => 'ꁏ', 10844 => 'ꁐ', 10845 => 'ꁑ', 10846 => 'ꁒ', 10847 => 'ꁓ', 10848 => 'ꁔ', 10849 => 'ꁕ', 10850 => 'ꁖ', 10851 => 'ꁗ', 10852 => 'ꁘ', 10853 => 'ꁙ', 10854 => 'ꁚ', 10855 => 'ꁛ', 10856 => 'ꁜ', 10857 => 'ꁝ', 10858 => 'ꁞ', 10859 => 'ꁟ', 10860 => 'ꁠ', 10861 => 'ꁡ', 10862 => 'ꁢ', 10863 => 'ꁣ', 10864 => 'ꁤ', 10865 => 'ꁥ', 10866 => 'ꁦ', 10867 => 'ꁧ', 10868 => 'ꁨ', 10869 => 'ꁩ', 10870 => 'ꁪ', 10871 => 'ꁫ', 10872 => 'ꁬ', 10873 => 'ꁭ', 10874 => 'ꁮ', 10875 => 'ꁯ', 10876 => 'ꁰ', 10877 => 'ꁱ', 10878 => 'ꁲ', 10879 => 'ꁳ', 10880 => 'ꁴ', 10881 => 'ꁵ', 10882 => 'ꁶ', 10883 => 'ꁷ', 10884 => 'ꁸ', 10885 => 'ꁹ', 10886 => 'ꁺ', 10887 => 'ꁻ', 10888 => 'ꁼ', 10889 => 'ꁽ', 10890 => 'ꁾ', 10891 => 'ꁿ', 10892 => 'ꂀ', 10893 => 'ꂁ', 10894 => 'ꂂ', 10895 => 'ꂃ', 10896 => 'ꂄ', 10897 => 'ꂅ', 10898 => 'ꂆ', 10899 => 'ꂇ', 10900 => 'ꂈ', 10901 => 'ꂉ', 10902 => 'ꂊ', 10903 => 'ꂋ', 10904 => 'ꂌ', 10905 => 'ꂍ', 10906 => 'ꂎ', 10907 => 'ꂏ', 10908 => 'ꂐ', 10909 => 'ꂑ', 10910 => 'ꂒ', 10911 => 'ꂓ', 10912 => 'ꂔ', 10913 => 'ꂕ', 10914 => 'ꂖ', 10915 => 'ꂗ', 10916 => 'ꂘ', 10917 => 'ꂙ', 10918 => 'ꂚ', 10919 => 'ꂛ', 10920 => 'ꂜ', 10921 => 'ꂝ', 10922 => 'ꂞ', 10923 => 'ꂟ', 10924 => 'ꂠ', 10925 => 'ꂡ', 10926 => 'ꂢ', 10927 => 'ꂣ', 10928 => 'ꂤ', 10929 => 'ꂥ', 10930 => 'ꂦ', 10931 => 'ꂧ', 10932 => 'ꂨ', 10933 => 'ꂩ', 10934 => 'ꂪ', 10935 => 'ꂫ', 10936 => 'ꂬ', 10937 => 'ꂭ', 10938 => 'ꂮ', 10939 => 'ꂯ', 10940 => 'ꂰ', 10941 => 'ꂱ', 10942 => 'ꂲ', 10943 => 'ꂳ', 10944 => 'ꂴ', 10945 => 'ꂵ', 10946 => 'ꂶ', 10947 => 'ꂷ', 10948 => 'ꂸ', 10949 => 'ꂹ', 10950 => 'ꂺ', 10951 => 'ꂻ', 10952 => 'ꂼ', 10953 => 'ꂽ', 10954 => 'ꂾ', 10955 => 'ꂿ', 10956 => 'ꃀ', 10957 => 'ꃁ', 10958 => 'ꃂ', 10959 => 'ꃃ', 10960 => 'ꃄ', 10961 => 'ꃅ', 10962 => 'ꃆ', 10963 => 'ꃇ', 10964 => 'ꃈ', 10965 => 'ꃉ', 10966 => 'ꃊ', 10967 => 'ꃋ', 10968 => 'ꃌ', 10969 => 'ꃍ', 10970 => 'ꃎ', 10971 => 'ꃏ', 10972 => 'ꃐ', 10973 => 'ꃑ', 10974 => 'ꃒ', 10975 => 'ꃓ', 10976 => 'ꃔ', 10977 => 'ꃕ', 10978 => 'ꃖ', 10979 => 'ꃗ', 10980 => 'ꃘ', 10981 => 'ꃙ', 10982 => 'ꃚ', 10983 => 'ꃛ', 10984 => 'ꃜ', 10985 => 'ꃝ', 10986 => 'ꃞ', 10987 => 'ꃟ', 10988 => 'ꃠ', 10989 => 'ꃡ', 10990 => 'ꃢ', 10991 => 'ꃣ', 10992 => 'ꃤ', 10993 => 'ꃥ', 10994 => 'ꃦ', 10995 => 'ꃧ', 10996 => 'ꃨ', 10997 => 'ꃩ', 10998 => 'ꃪ', 10999 => 'ꃫ', 11000 => 'ꃬ', 11001 => 'ꃭ', 11002 => 'ꃮ', 11003 => 'ꃯ', 11004 => 'ꃰ', 11005 => 'ꃱ', 11006 => 'ꃲ', 11007 => 'ꃳ', 11008 => 'ꃴ', 11009 => 'ꃵ', 11010 => 'ꃶ', 11011 => 'ꃷ', 11012 => 'ꃸ', 11013 => 'ꃹ', 11014 => 'ꃺ', 11015 => 'ꃻ', 11016 => 'ꃼ', 11017 => 'ꃽ', 11018 => 'ꃾ', 11019 => 'ꃿ', 11020 => 'ꄀ', 11021 => 'ꄁ', 11022 => 'ꄂ', 11023 => 'ꄃ', 11024 => 'ꄄ', 11025 => 'ꄅ', 11026 => 'ꄆ', 11027 => 'ꄇ', 11028 => 'ꄈ', 11029 => 'ꄉ', 11030 => 'ꄊ', 11031 => 'ꄋ', 11032 => 'ꄌ', 11033 => 'ꄍ', 11034 => 'ꄎ', 11035 => 'ꄏ', 11036 => 'ꄐ', 11037 => 'ꄑ', 11038 => 'ꄒ', 11039 => 'ꄓ', 11040 => 'ꄔ', 11041 => 'ꄕ', 11042 => 'ꄖ', 11043 => 'ꄗ', 11044 => 'ꄘ', 11045 => 'ꄙ', 11046 => 'ꄚ', 11047 => 'ꄛ', 11048 => 'ꄜ', 11049 => 'ꄝ', 11050 => 'ꄞ', 11051 => 'ꄟ', 11052 => 'ꄠ', 11053 => 'ꄡ', 11054 => 'ꄢ', 11055 => 'ꄣ', 11056 => 'ꄤ', 11057 => 'ꄥ', 11058 => 'ꄦ', 11059 => 'ꄧ', 11060 => 'ꄨ', 11061 => 'ꄩ', 11062 => 'ꄪ', 11063 => 'ꄫ', 11064 => 'ꄬ', 11065 => 'ꄭ', 11066 => 'ꄮ', 11067 => 'ꄯ', 11068 => 'ꄰ', 11069 => 'ꄱ', 11070 => 'ꄲ', 11071 => 'ꄳ', 11072 => 'ꄴ', 11073 => 'ꄵ', 11074 => 'ꄶ', 11075 => 'ꄷ', 11076 => 'ꄸ', 11077 => 'ꄹ', 11078 => 'ꄺ', 11079 => 'ꄻ', 11080 => 'ꄼ', 11081 => 'ꄽ', 11082 => 'ꄾ', 11083 => 'ꄿ', 11084 => 'ꅀ', 11085 => 'ꅁ', 11086 => 'ꅂ', 11087 => 'ꅃ', 11088 => 'ꅄ', 11089 => 'ꅅ', 11090 => 'ꅆ', 11091 => 'ꅇ', 11092 => 'ꅈ', 11093 => 'ꅉ', 11094 => 'ꅊ', 11095 => 'ꅋ', 11096 => 'ꅌ', 11097 => 'ꅍ', 11098 => 'ꅎ', 11099 => 'ꅏ', 11100 => 'ꅐ', 11101 => 'ꅑ', 11102 => 'ꅒ', 11103 => 'ꅓ', 11104 => 'ꅔ', 11105 => 'ꅕ', 11106 => 'ꅖ', 11107 => 'ꅗ', 11108 => 'ꅘ', 11109 => 'ꅙ', 11110 => 'ꅚ', 11111 => 'ꅛ', 11112 => 'ꅜ', 11113 => 'ꅝ', 11114 => 'ꅞ', 11115 => 'ꅟ', 11116 => 'ꅠ', 11117 => 'ꅡ', 11118 => 'ꅢ', 11119 => 'ꅣ', 11120 => 'ꅤ', 11121 => 'ꅥ', 11122 => 'ꅦ', 11123 => 'ꅧ', 11124 => 'ꅨ', 11125 => 'ꅩ', 11126 => 'ꅪ', 11127 => 'ꅫ', 11128 => 'ꅬ', 11129 => 'ꅭ', 11130 => 'ꅮ', 11131 => 'ꅯ', 11132 => 'ꅰ', 11133 => 'ꅱ', 11134 => 'ꅲ', 11135 => 'ꅳ', 11136 => 'ꅴ', 11137 => 'ꅵ', 11138 => 'ꅶ', 11139 => 'ꅷ', 11140 => 'ꅸ', 11141 => 'ꅹ', 11142 => 'ꅺ', 11143 => 'ꅻ', 11144 => 'ꅼ', 11145 => 'ꅽ', 11146 => 'ꅾ', 11147 => 'ꅿ', 11148 => 'ꆀ', 11149 => 'ꆁ', 11150 => 'ꆂ', 11151 => 'ꆃ', 11152 => 'ꆄ', 11153 => 'ꆅ', 11154 => 'ꆆ', 11155 => 'ꆇ', 11156 => 'ꆈ', 11157 => 'ꆉ', 11158 => 'ꆊ', 11159 => 'ꆋ', 11160 => 'ꆌ', 11161 => 'ꆍ', 11162 => 'ꆎ', 11163 => 'ꆏ', 11164 => 'ꆐ', 11165 => 'ꆑ', 11166 => 'ꆒ', 11167 => 'ꆓ', 11168 => 'ꆔ', 11169 => 'ꆕ', 11170 => 'ꆖ', 11171 => 'ꆗ', 11172 => 'ꆘ', 11173 => 'ꆙ', 11174 => 'ꆚ', 11175 => 'ꆛ', 11176 => 'ꆜ', 11177 => 'ꆝ', 11178 => 'ꆞ', 11179 => 'ꆟ', 11180 => 'ꆠ', 11181 => 'ꆡ', 11182 => 'ꆢ', 11183 => 'ꆣ', 11184 => 'ꆤ', 11185 => 'ꆥ', 11186 => 'ꆦ', 11187 => 'ꆧ', 11188 => 'ꆨ', 11189 => 'ꆩ', 11190 => 'ꆪ', 11191 => 'ꆫ', 11192 => 'ꆬ', 11193 => 'ꆭ', 11194 => 'ꆮ', 11195 => 'ꆯ', 11196 => 'ꆰ', 11197 => 'ꆱ', 11198 => 'ꆲ', 11199 => 'ꆳ', 11200 => 'ꆴ', 11201 => 'ꆵ', 11202 => 'ꆶ', 11203 => 'ꆷ', 11204 => 'ꆸ', 11205 => 'ꆹ', 11206 => 'ꆺ', 11207 => 'ꆻ', 11208 => 'ꆼ', 11209 => 'ꆽ', 11210 => 'ꆾ', 11211 => 'ꆿ', 11212 => 'ꇀ', 11213 => 'ꇁ', 11214 => 'ꇂ', 11215 => 'ꇃ', 11216 => 'ꇄ', 11217 => 'ꇅ', 11218 => 'ꇆ', 11219 => 'ꇇ', 11220 => 'ꇈ', 11221 => 'ꇉ', 11222 => 'ꇊ', 11223 => 'ꇋ', 11224 => 'ꇌ', 11225 => 'ꇍ', 11226 => 'ꇎ', 11227 => 'ꇏ', 11228 => 'ꇐ', 11229 => 'ꇑ', 11230 => 'ꇒ', 11231 => 'ꇓ', 11232 => 'ꇔ', 11233 => 'ꇕ', 11234 => 'ꇖ', 11235 => 'ꇗ', 11236 => 'ꇘ', 11237 => 'ꇙ', 11238 => 'ꇚ', 11239 => 'ꇛ', 11240 => 'ꇜ', 11241 => 'ꇝ', 11242 => 'ꇞ', 11243 => 'ꇟ', 11244 => 'ꇠ', 11245 => 'ꇡ', 11246 => 'ꇢ', 11247 => 'ꇣ', 11248 => 'ꇤ', 11249 => 'ꇥ', 11250 => 'ꇦ', 11251 => 'ꇧ', 11252 => 'ꇨ', 11253 => 'ꇩ', 11254 => 'ꇪ', 11255 => 'ꇫ', 11256 => 'ꇬ', 11257 => 'ꇭ', 11258 => 'ꇮ', 11259 => 'ꇯ', 11260 => 'ꇰ', 11261 => 'ꇱ', 11262 => 'ꇲ', 11263 => 'ꇳ', 11264 => 'ꇴ', 11265 => 'ꇵ', 11266 => 'ꇶ', 11267 => 'ꇷ', 11268 => 'ꇸ', 11269 => 'ꇹ', 11270 => 'ꇺ', 11271 => 'ꇻ', 11272 => 'ꇼ', 11273 => 'ꇽ', 11274 => 'ꇾ', 11275 => 'ꇿ', 11276 => 'ꈀ', 11277 => 'ꈁ', 11278 => 'ꈂ', 11279 => 'ꈃ', 11280 => 'ꈄ', 11281 => 'ꈅ', 11282 => 'ꈆ', 11283 => 'ꈇ', 11284 => 'ꈈ', 11285 => 'ꈉ', 11286 => 'ꈊ', 11287 => 'ꈋ', 11288 => 'ꈌ', 11289 => 'ꈍ', 11290 => 'ꈎ', 11291 => 'ꈏ', 11292 => 'ꈐ', 11293 => 'ꈑ', 11294 => 'ꈒ', 11295 => 'ꈓ', 11296 => 'ꈔ', 11297 => 'ꈕ', 11298 => 'ꈖ', 11299 => 'ꈗ', 11300 => 'ꈘ', 11301 => 'ꈙ', 11302 => 'ꈚ', 11303 => 'ꈛ', 11304 => 'ꈜ', 11305 => 'ꈝ', 11306 => 'ꈞ', 11307 => 'ꈟ', 11308 => 'ꈠ', 11309 => 'ꈡ', 11310 => 'ꈢ', 11311 => 'ꈣ', 11312 => 'ꈤ', 11313 => 'ꈥ', 11314 => 'ꈦ', 11315 => 'ꈧ', 11316 => 'ꈨ', 11317 => 'ꈩ', 11318 => 'ꈪ', 11319 => 'ꈫ', 11320 => 'ꈬ', 11321 => 'ꈭ', 11322 => 'ꈮ', 11323 => 'ꈯ', 11324 => 'ꈰ', 11325 => 'ꈱ', 11326 => 'ꈲ', 11327 => 'ꈳ', 11328 => 'ꈴ', 11329 => 'ꈵ', 11330 => 'ꈶ', 11331 => 'ꈷ', 11332 => 'ꈸ', 11333 => 'ꈹ', 11334 => 'ꈺ', 11335 => 'ꈻ', 11336 => 'ꈼ', 11337 => 'ꈽ', 11338 => 'ꈾ', 11339 => 'ꈿ', 11340 => 'ꉀ', 11341 => 'ꉁ', 11342 => 'ꉂ', 11343 => 'ꉃ', 11344 => 'ꉄ', 11345 => 'ꉅ', 11346 => 'ꉆ', 11347 => 'ꉇ', 11348 => 'ꉈ', 11349 => 'ꉉ', 11350 => 'ꉊ', 11351 => 'ꉋ', 11352 => 'ꉌ', 11353 => 'ꉍ', 11354 => 'ꉎ', 11355 => 'ꉏ', 11356 => 'ꉐ', 11357 => 'ꉑ', 11358 => 'ꉒ', 11359 => 'ꉓ', 11360 => 'ꉔ', 11361 => 'ꉕ', 11362 => 'ꉖ', 11363 => 'ꉗ', 11364 => 'ꉘ', 11365 => 'ꉙ', 11366 => 'ꉚ', 11367 => 'ꉛ', 11368 => 'ꉜ', 11369 => 'ꉝ', 11370 => 'ꉞ', 11371 => 'ꉟ', 11372 => 'ꉠ', 11373 => 'ꉡ', 11374 => 'ꉢ', 11375 => 'ꉣ', 11376 => 'ꉤ', 11377 => 'ꉥ', 11378 => 'ꉦ', 11379 => 'ꉧ', 11380 => 'ꉨ', 11381 => 'ꉩ', 11382 => 'ꉪ', 11383 => 'ꉫ', 11384 => 'ꉬ', 11385 => 'ꉭ', 11386 => 'ꉮ', 11387 => 'ꉯ', 11388 => 'ꉰ', 11389 => 'ꉱ', 11390 => 'ꉲ', 11391 => 'ꉳ', 11392 => 'ꉴ', 11393 => 'ꉵ', 11394 => 'ꉶ', 11395 => 'ꉷ', 11396 => 'ꉸ', 11397 => 'ꉹ', 11398 => 'ꉺ', 11399 => 'ꉻ', 11400 => 'ꉼ', 11401 => 'ꉽ', 11402 => 'ꉾ', 11403 => 'ꉿ', 11404 => 'ꊀ', 11405 => 'ꊁ', 11406 => 'ꊂ', 11407 => 'ꊃ', 11408 => 'ꊄ', 11409 => 'ꊅ', 11410 => 'ꊆ', 11411 => 'ꊇ', 11412 => 'ꊈ', 11413 => 'ꊉ', 11414 => 'ꊊ', 11415 => 'ꊋ', 11416 => 'ꊌ', 11417 => 'ꊍ', 11418 => 'ꊎ', 11419 => 'ꊏ', 11420 => 'ꊐ', 11421 => 'ꊑ', 11422 => 'ꊒ', 11423 => 'ꊓ', 11424 => 'ꊔ', 11425 => 'ꊕ', 11426 => 'ꊖ', 11427 => 'ꊗ', 11428 => 'ꊘ', 11429 => 'ꊙ', 11430 => 'ꊚ', 11431 => 'ꊛ', 11432 => 'ꊜ', 11433 => 'ꊝ', 11434 => 'ꊞ', 11435 => 'ꊟ', 11436 => 'ꊠ', 11437 => 'ꊡ', 11438 => 'ꊢ', 11439 => 'ꊣ', 11440 => 'ꊤ', 11441 => 'ꊥ', 11442 => 'ꊦ', 11443 => 'ꊧ', 11444 => 'ꊨ', 11445 => 'ꊩ', 11446 => 'ꊪ', 11447 => 'ꊫ', 11448 => 'ꊬ', 11449 => 'ꊭ', 11450 => 'ꊮ', 11451 => 'ꊯ', 11452 => 'ꊰ', 11453 => 'ꊱ', 11454 => 'ꊲ', 11455 => 'ꊳ', 11456 => 'ꊴ', 11457 => 'ꊵ', 11458 => 'ꊶ', 11459 => 'ꊷ', 11460 => 'ꊸ', 11461 => 'ꊹ', 11462 => 'ꊺ', 11463 => 'ꊻ', 11464 => 'ꊼ', 11465 => 'ꊽ', 11466 => 'ꊾ', 11467 => 'ꊿ', 11468 => 'ꋀ', 11469 => 'ꋁ', 11470 => 'ꋂ', 11471 => 'ꋃ', 11472 => 'ꋄ', 11473 => 'ꋅ', 11474 => 'ꋆ', 11475 => 'ꋇ', 11476 => 'ꋈ', 11477 => 'ꋉ', 11478 => 'ꋊ', 11479 => 'ꋋ', 11480 => 'ꋌ', 11481 => 'ꋍ', 11482 => 'ꋎ', 11483 => 'ꋏ', 11484 => 'ꋐ', 11485 => 'ꋑ', 11486 => 'ꋒ', 11487 => 'ꋓ', 11488 => 'ꋔ', 11489 => 'ꋕ', 11490 => 'ꋖ', 11491 => 'ꋗ', 11492 => 'ꋘ', 11493 => 'ꋙ', 11494 => 'ꋚ', 11495 => 'ꋛ', 11496 => 'ꋜ', 11497 => 'ꋝ', 11498 => 'ꋞ', 11499 => 'ꋟ', 11500 => 'ꋠ', 11501 => 'ꋡ', 11502 => 'ꋢ', 11503 => 'ꋣ', 11504 => 'ꋤ', 11505 => 'ꋥ', 11506 => 'ꋦ', 11507 => 'ꋧ', 11508 => 'ꋨ', 11509 => 'ꋩ', 11510 => 'ꋪ', 11511 => 'ꋫ', 11512 => 'ꋬ', 11513 => 'ꋭ', 11514 => 'ꋮ', 11515 => 'ꋯ', 11516 => 'ꋰ', 11517 => 'ꋱ', 11518 => 'ꋲ', 11519 => 'ꋳ', 11520 => 'ꋴ', 11521 => 'ꋵ', 11522 => 'ꋶ', 11523 => 'ꋷ', 11524 => 'ꋸ', 11525 => 'ꋹ', 11526 => 'ꋺ', 11527 => 'ꋻ', 11528 => 'ꋼ', 11529 => 'ꋽ', 11530 => 'ꋾ', 11531 => 'ꋿ', 11532 => 'ꌀ', 11533 => 'ꌁ', 11534 => 'ꌂ', 11535 => 'ꌃ', 11536 => 'ꌄ', 11537 => 'ꌅ', 11538 => 'ꌆ', 11539 => 'ꌇ', 11540 => 'ꌈ', 11541 => 'ꌉ', 11542 => 'ꌊ', 11543 => 'ꌋ', 11544 => 'ꌌ', 11545 => 'ꌍ', 11546 => 'ꌎ', 11547 => 'ꌏ', 11548 => 'ꌐ', 11549 => 'ꌑ', 11550 => 'ꌒ', 11551 => 'ꌓ', 11552 => 'ꌔ', 11553 => 'ꌕ', 11554 => 'ꌖ', 11555 => 'ꌗ', 11556 => 'ꌘ', 11557 => 'ꌙ', 11558 => 'ꌚ', 11559 => 'ꌛ', 11560 => 'ꌜ', 11561 => 'ꌝ', 11562 => 'ꌞ', 11563 => 'ꌟ', 11564 => 'ꌠ', 11565 => 'ꌡ', 11566 => 'ꌢ', 11567 => 'ꌣ', 11568 => 'ꌤ', 11569 => 'ꌥ', 11570 => 'ꌦ', 11571 => 'ꌧ', 11572 => 'ꌨ', 11573 => 'ꌩ', 11574 => 'ꌪ', 11575 => 'ꌫ', 11576 => 'ꌬ', 11577 => 'ꌭ', 11578 => 'ꌮ', 11579 => 'ꌯ', 11580 => 'ꌰ', 11581 => 'ꌱ', 11582 => 'ꌲ', 11583 => 'ꌳ', 11584 => 'ꌴ', 11585 => 'ꌵ', 11586 => 'ꌶ', 11587 => 'ꌷ', 11588 => 'ꌸ', 11589 => 'ꌹ', 11590 => 'ꌺ', 11591 => 'ꌻ', 11592 => 'ꌼ', 11593 => 'ꌽ', 11594 => 'ꌾ', 11595 => 'ꌿ', 11596 => 'ꍀ', 11597 => 'ꍁ', 11598 => 'ꍂ', 11599 => 'ꍃ', 11600 => 'ꍄ', 11601 => 'ꍅ', 11602 => 'ꍆ', 11603 => 'ꍇ', 11604 => 'ꍈ', 11605 => 'ꍉ', 11606 => 'ꍊ', 11607 => 'ꍋ', 11608 => 'ꍌ', 11609 => 'ꍍ', 11610 => 'ꍎ', 11611 => 'ꍏ', 11612 => 'ꍐ', 11613 => 'ꍑ', 11614 => 'ꍒ', 11615 => 'ꍓ', 11616 => 'ꍔ', 11617 => 'ꍕ', 11618 => 'ꍖ', 11619 => 'ꍗ', 11620 => 'ꍘ', 11621 => 'ꍙ', 11622 => 'ꍚ', 11623 => 'ꍛ', 11624 => 'ꍜ', 11625 => 'ꍝ', 11626 => 'ꍞ', 11627 => 'ꍟ', 11628 => 'ꍠ', 11629 => 'ꍡ', 11630 => 'ꍢ', 11631 => 'ꍣ', 11632 => 'ꍤ', 11633 => 'ꍥ', 11634 => 'ꍦ', 11635 => 'ꍧ', 11636 => 'ꍨ', 11637 => 'ꍩ', 11638 => 'ꍪ', 11639 => 'ꍫ', 11640 => 'ꍬ', 11641 => 'ꍭ', 11642 => 'ꍮ', 11643 => 'ꍯ', 11644 => 'ꍰ', 11645 => 'ꍱ', 11646 => 'ꍲ', 11647 => 'ꍳ', 11648 => 'ꍴ', 11649 => 'ꍵ', 11650 => 'ꍶ', 11651 => 'ꍷ', 11652 => 'ꍸ', 11653 => 'ꍹ', 11654 => 'ꍺ', 11655 => 'ꍻ', 11656 => 'ꍼ', 11657 => 'ꍽ', 11658 => 'ꍾ', 11659 => 'ꍿ', 11660 => 'ꎀ', 11661 => 'ꎁ', 11662 => 'ꎂ', 11663 => 'ꎃ', 11664 => 'ꎄ', 11665 => 'ꎅ', 11666 => 'ꎆ', 11667 => 'ꎇ', 11668 => 'ꎈ', 11669 => 'ꎉ', 11670 => 'ꎊ', 11671 => 'ꎋ', 11672 => 'ꎌ', 11673 => 'ꎍ', 11674 => 'ꎎ', 11675 => 'ꎏ', 11676 => 'ꎐ', 11677 => 'ꎑ', 11678 => 'ꎒ', 11679 => 'ꎓ', 11680 => 'ꎔ', 11681 => 'ꎕ', 11682 => 'ꎖ', 11683 => 'ꎗ', 11684 => 'ꎘ', 11685 => 'ꎙ', 11686 => 'ꎚ', 11687 => 'ꎛ', 11688 => 'ꎜ', 11689 => 'ꎝ', 11690 => 'ꎞ', 11691 => 'ꎟ', 11692 => 'ꎠ', 11693 => 'ꎡ', 11694 => 'ꎢ', 11695 => 'ꎣ', 11696 => 'ꎤ', 11697 => 'ꎥ', 11698 => 'ꎦ', 11699 => 'ꎧ', 11700 => 'ꎨ', 11701 => 'ꎩ', 11702 => 'ꎪ', 11703 => 'ꎫ', 11704 => 'ꎬ', 11705 => 'ꎭ', 11706 => 'ꎮ', 11707 => 'ꎯ', 11708 => 'ꎰ', 11709 => 'ꎱ', 11710 => 'ꎲ', 11711 => 'ꎳ', 11712 => 'ꎴ', 11713 => 'ꎵ', 11714 => 'ꎶ', 11715 => 'ꎷ', 11716 => 'ꎸ', 11717 => 'ꎹ', 11718 => 'ꎺ', 11719 => 'ꎻ', 11720 => 'ꎼ', 11721 => 'ꎽ', 11722 => 'ꎾ', 11723 => 'ꎿ', 11724 => 'ꏀ', 11725 => 'ꏁ', 11726 => 'ꏂ', 11727 => 'ꏃ', 11728 => 'ꏄ', 11729 => 'ꏅ', 11730 => 'ꏆ', 11731 => 'ꏇ', 11732 => 'ꏈ', 11733 => 'ꏉ', 11734 => 'ꏊ', 11735 => 'ꏋ', 11736 => 'ꏌ', 11737 => 'ꏍ', 11738 => 'ꏎ', 11739 => 'ꏏ', 11740 => 'ꏐ', 11741 => 'ꏑ', 11742 => 'ꏒ', 11743 => 'ꏓ', 11744 => 'ꏔ', 11745 => 'ꏕ', 11746 => 'ꏖ', 11747 => 'ꏗ', 11748 => 'ꏘ', 11749 => 'ꏙ', 11750 => 'ꏚ', 11751 => 'ꏛ', 11752 => 'ꏜ', 11753 => 'ꏝ', 11754 => 'ꏞ', 11755 => 'ꏟ', 11756 => 'ꏠ', 11757 => 'ꏡ', 11758 => 'ꏢ', 11759 => 'ꏣ', 11760 => 'ꏤ', 11761 => 'ꏥ', 11762 => 'ꏦ', 11763 => 'ꏧ', 11764 => 'ꏨ', 11765 => 'ꏩ', 11766 => 'ꏪ', 11767 => 'ꏫ', 11768 => 'ꏬ', 11769 => 'ꏭ', 11770 => 'ꏮ', 11771 => 'ꏯ', 11772 => 'ꏰ', 11773 => 'ꏱ', 11774 => 'ꏲ', 11775 => 'ꏳ', 11776 => 'ꏴ', 11777 => 'ꏵ', 11778 => 'ꏶ', 11779 => 'ꏷ', 11780 => 'ꏸ', 11781 => 'ꏹ', 11782 => 'ꏺ', 11783 => 'ꏻ', 11784 => 'ꏼ', 11785 => 'ꏽ', 11786 => 'ꏾ', 11787 => 'ꏿ', 11788 => 'ꐀ', 11789 => 'ꐁ', 11790 => 'ꐂ', 11791 => 'ꐃ', 11792 => 'ꐄ', 11793 => 'ꐅ', 11794 => 'ꐆ', 11795 => 'ꐇ', 11796 => 'ꐈ', 11797 => 'ꐉ', 11798 => 'ꐊ', 11799 => 'ꐋ', 11800 => 'ꐌ', 11801 => 'ꐍ', 11802 => 'ꐎ', 11803 => 'ꐏ', 11804 => 'ꐐ', 11805 => 'ꐑ', 11806 => 'ꐒ', 11807 => 'ꐓ', 11808 => 'ꐔ', 11809 => 'ꐕ', 11810 => 'ꐖ', 11811 => 'ꐗ', 11812 => 'ꐘ', 11813 => 'ꐙ', 11814 => 'ꐚ', 11815 => 'ꐛ', 11816 => 'ꐜ', 11817 => 'ꐝ', 11818 => 'ꐞ', 11819 => 'ꐟ', 11820 => 'ꐠ', 11821 => 'ꐡ', 11822 => 'ꐢ', 11823 => 'ꐣ', 11824 => 'ꐤ', 11825 => 'ꐥ', 11826 => 'ꐦ', 11827 => 'ꐧ', 11828 => 'ꐨ', 11829 => 'ꐩ', 11830 => 'ꐪ', 11831 => 'ꐫ', 11832 => 'ꐬ', 11833 => 'ꐭ', 11834 => 'ꐮ', 11835 => 'ꐯ', 11836 => 'ꐰ', 11837 => 'ꐱ', 11838 => 'ꐲ', 11839 => 'ꐳ', 11840 => 'ꐴ', 11841 => 'ꐵ', 11842 => 'ꐶ', 11843 => 'ꐷ', 11844 => 'ꐸ', 11845 => 'ꐹ', 11846 => 'ꐺ', 11847 => 'ꐻ', 11848 => 'ꐼ', 11849 => 'ꐽ', 11850 => 'ꐾ', 11851 => 'ꐿ', 11852 => 'ꑀ', 11853 => 'ꑁ', 11854 => 'ꑂ', 11855 => 'ꑃ', 11856 => 'ꑄ', 11857 => 'ꑅ', 11858 => 'ꑆ', 11859 => 'ꑇ', 11860 => 'ꑈ', 11861 => 'ꑉ', 11862 => 'ꑊ', 11863 => 'ꑋ', 11864 => 'ꑌ', 11865 => 'ꑍ', 11866 => 'ꑎ', 11867 => 'ꑏ', 11868 => 'ꑐ', 11869 => 'ꑑ', 11870 => 'ꑒ', 11871 => 'ꑓ', 11872 => 'ꑔ', 11873 => 'ꑕ', 11874 => 'ꑖ', 11875 => 'ꑗ', 11876 => 'ꑘ', 11877 => 'ꑙ', 11878 => 'ꑚ', 11879 => 'ꑛ', 11880 => 'ꑜ', 11881 => 'ꑝ', 11882 => 'ꑞ', 11883 => 'ꑟ', 11884 => 'ꑠ', 11885 => 'ꑡ', 11886 => 'ꑢ', 11887 => 'ꑣ', 11888 => 'ꑤ', 11889 => 'ꑥ', 11890 => 'ꑦ', 11891 => 'ꑧ', 11892 => 'ꑨ', 11893 => 'ꑩ', 11894 => 'ꑪ', 11895 => 'ꑫ', 11896 => 'ꑬ', 11897 => 'ꑭ', 11898 => 'ꑮ', 11899 => 'ꑯ', 11900 => 'ꑰ', 11901 => 'ꑱ', 11902 => 'ꑲ', 11903 => 'ꑳ', 11904 => 'ꑴ', 11905 => 'ꑵ', 11906 => 'ꑶ', 11907 => 'ꑷ', 11908 => 'ꑸ', 11909 => 'ꑹ', 11910 => 'ꑺ', 11911 => 'ꑻ', 11912 => 'ꑼ', 11913 => 'ꑽ', 11914 => 'ꑾ', 11915 => 'ꑿ', 11916 => 'ꒀ', 11917 => 'ꒁ', 11918 => 'ꒂ', 11919 => 'ꒃ', 11920 => 'ꒄ', 11921 => 'ꒅ', 11922 => 'ꒆ', 11923 => 'ꒇ', 11924 => 'ꒈ', 11925 => 'ꒉ', 11926 => 'ꒊ', 11927 => 'ꒋ', 11928 => 'ꒌ', 11929 => 'ꓸ', 11930 => 'ꓹ', 11931 => 'ꓺ', 11932 => 'ꓻ', 11933 => 'ꓽ', 11934 => 'ꓼ', 11935 => 'ꓐ', 11936 => 'ꓑ', 11937 => 'ꓒ', 11938 => 'ꓓ', 11939 => 'ꓔ', 11940 => 'ꓕ', 11941 => 'ꓖ', 11942 => 'ꓗ', 11943 => 'ꓘ', 11944 => 'ꓙ', 11945 => 'ꓚ', 11946 => 'ꓛ', 11947 => 'ꓜ', 11948 => 'ꓝ', 11949 => 'ꓞ', 11950 => 'ꓟ', 11951 => 'ꓠ', 11952 => 'ꓡ', 11953 => 'ꓢ', 11954 => 'ꓣ', 11955 => 'ꓤ', 11956 => 'ꓥ', 11957 => 'ꓦ', 11958 => 'ꓧ', 11959 => 'ꓨ', 11960 => 'ꓩ', 11961 => 'ꓫ', 11962 => 'ꓭ', 11963 => 'ꓪ', 11964 => 'ꓬ', 11965 => 'ꓮ', 11966 => 'ꓯ', 11967 => 'ꓰ', 11968 => 'ꓱ', 11969 => 'ꓲ', 11970 => 'ꓳ', 11971 => 'ꓴ', 11972 => 'ꓵ', 11973 => 'ꓶ', 11974 => 'ꓷ', 11975 => '𐊀', 11976 => '𐊁', 11977 => '𐊂', 11978 => '𐊃', 11979 => '𐊄', 11980 => '𐊅', 11981 => '𐊆', 11982 => '𐊇', 11983 => '𐊈', 11984 => '𐊉', 11985 => '𐊊', 11986 => '𐊋', 11987 => '𐊌', 11988 => '𐊍', 11989 => '𐊎', 11990 => '𐊏', 11991 => '𐊐', 11992 => '𐊑', 11993 => '𐊒', 11994 => '𐊓', 11995 => '𐊔', 11996 => '𐊕', 11997 => '𐊖', 11998 => '𐊗', 11999 => '𐊘', 12000 => '𐊙', 12001 => '𐊚', 12002 => '𐊛', 12003 => '𐊜', 12004 => '𐊠', 12005 => '𐊡', 12006 => '𐊢', 12007 => '𐊣', 12008 => '𐊤', 12009 => '𐊥', 12010 => '𐊦', 12011 => '𐊧', 12012 => '𐊨', 12013 => '𐊩', 12014 => '𐊪', 12015 => '𐊫', 12016 => '𐊬', 12017 => '𐊭', 12018 => '𐊮', 12019 => '𐊯', 12020 => '𐊰', 12021 => '𐊱', 12022 => '𐊲', 12023 => '𐊳', 12024 => '𐊴', 12025 => '𐊵', 12026 => '𐊶', 12027 => '𐊷', 12028 => '𐊸', 12029 => '𐊹', 12030 => '𐊺', 12031 => '𐊻', 12032 => '𐊼', 12033 => '𐊽', 12034 => '𐊾', 12035 => '𐊿', 12036 => '𐋀', 12037 => '𐋁', 12038 => '𐋂', 12039 => '𐋃', 12040 => '𐋄', 12041 => '𐋅', 12042 => '𐋆', 12043 => '𐋇', 12044 => '𐋈', 12045 => '𐋉', 12046 => '𐋊', 12047 => '𐋋', 12048 => '𐋌', 12049 => '𐋍', 12050 => '𐋎', 12051 => '𐋏', 12052 => '𐋐', 12053 => '𐤠', 12054 => '𐤡', 12055 => '𐤢', 12056 => '𐤣', 12057 => '𐤤', 12058 => '𐤥', 12059 => '𐤦', 12060 => '𐤧', 12061 => '𐤨', 12062 => '𐤩', 12063 => '𐤪', 12064 => '𐤫', 12065 => '𐤬', 12066 => '𐤭', 12067 => '𐤮', 12068 => '𐤯', 12069 => '𐤰', 12070 => '𐤱', 12071 => '𐤲', 12072 => '𐤳', 12073 => '𐤴', 12074 => '𐤵', 12075 => '𐤶', 12076 => '𐤷', 12077 => '𐤸', 12078 => '𐤹', 12079 => '𐌀', 12080 => '𐌁', 12081 => '𐌂', 12082 => '𐌃', 12083 => '𐌄', 12084 => '𐌅', 12085 => '𐌆', 12086 => '𐌇', 12087 => '𐌈', 12088 => '𐌉', 12089 => '𐌊', 12090 => '𐌋', 12091 => '𐌌', 12092 => '𐌍', 12093 => '𐌎', 12094 => '𐌏', 12095 => '𐌐', 12096 => '𐌑', 12097 => '𐌒', 12098 => '𐌓', 12099 => '𐌔', 12100 => '𐌕', 12101 => '𐌖', 12102 => '𐌗', 12103 => '𐌘', 12104 => '𐌙', 12105 => '𐌚', 12106 => '𐌛', 12107 => '𐌜', 12108 => '𐌝', 12109 => '𐌞', 12110 => '𐌰', 12111 => '𐌱', 12112 => '𐌲', 12113 => '𐌳', 12114 => '𐌴', 12115 => '𐌵', 12116 => '𐌶', 12117 => '𐌷', 12118 => '𐌸', 12119 => '𐌹', 12120 => '𐌺', 12121 => '𐌻', 12122 => '𐌼', 12123 => '𐌽', 12124 => '𐌾', 12125 => '𐌿', 12126 => '𐍀', 12127 => '𐍁', 12128 => '𐍂', 12129 => '𐍃', 12130 => '𐍄', 12131 => '𐍅', 12132 => '𐍆', 12133 => '𐍇', 12134 => '𐍈', 12135 => '𐍉', 12136 => '𐍊', 12137 => '𐐀', 12138 => '𐐁', 12139 => '𐐂', 12140 => '𐐃', 12141 => '𐐄', 12142 => '𐐅', 12143 => '𐐆', 12144 => '𐐇', 12145 => '𐐈', 12146 => '𐐉', 12147 => '𐐊', 12148 => '𐐋', 12149 => '𐐌', 12150 => '𐐍', 12151 => '𐐎', 12152 => '𐐏', 12153 => '𐐐', 12154 => '𐐑', 12155 => '𐐒', 12156 => '𐐓', 12157 => '𐐔', 12158 => '𐐕', 12159 => '𐐖', 12160 => '𐐗', 12161 => '𐐘', 12162 => '𐐙', 12163 => '𐐚', 12164 => '𐐛', 12165 => '𐐜', 12166 => '𐐝', 12167 => '𐐞', 12168 => '𐐟', 12169 => '𐐠', 12170 => '𐐡', 12171 => '𐐢', 12172 => '𐐣', 12173 => '𐐤', 12174 => '𐐥', 12175 => '𐐦', 12176 => '𐐧', 12177 => '𐑐', 12178 => '𐑑', 12179 => '𐑒', 12180 => '𐑓', 12181 => '𐑔', 12182 => '𐑕', 12183 => '𐑖', 12184 => '𐑗', 12185 => '𐑘', 12186 => '𐑙', 12187 => '𐑚', 12188 => '𐑛', 12189 => '𐑜', 12190 => '𐑝', 12191 => '𐑞', 12192 => '𐑟', 12193 => '𐑠', 12194 => '𐑡', 12195 => '𐑢', 12196 => '𐑣', 12197 => '𐑤', 12198 => '𐑥', 12199 => '𐑦', 12200 => '𐑧', 12201 => '𐑨', 12202 => '𐑩', 12203 => '𐑪', 12204 => '𐑫', 12205 => '𐑬', 12206 => '𐑭', 12207 => '𐑮', 12208 => '𐑯', 12209 => '𐑰', 12210 => '𐑱', 12211 => '𐑲', 12212 => '𐑳', 12213 => '𐑴', 12214 => '𐑵', 12215 => '𐑶', 12216 => '𐑷', 12217 => '𐑸', 12218 => '𐑹', 12219 => '𐑺', 12220 => '𐑻', 12221 => '𐑼', 12222 => '𐑽', 12223 => '𐑾', 12224 => '𐑿', 12225 => '𐒀', 12226 => '𐒁', 12227 => '𐒂', 12228 => '𐒃', 12229 => '𐒄', 12230 => '𐒅', 12231 => '𐒆', 12232 => '𐒇', 12233 => '𐒈', 12234 => '𐒉', 12235 => '𐒊', 12236 => '𐒋', 12237 => '𐒌', 12238 => '𐒍', 12239 => '𐒎', 12240 => '𐒏', 12241 => '𐒐', 12242 => '𐒑', 12243 => '𐒒', 12244 => '𐒓', 12245 => '𐒔', 12246 => '𐒕', 12247 => '𐒖', 12248 => '𐒗', 12249 => '𐒘', 12250 => '𐒙', 12251 => '𐒚', 12252 => '𐒛', 12253 => '𐒜', 12254 => '𐒝', 12255 => '𐀀', 12256 => '𐀁', 12257 => '𐀂', 12258 => '𐀃', 12259 => '𐀄', 12260 => '𐀅', 12261 => '𐀆', 12262 => '𐀇', 12263 => '𐀈', 12264 => '𐀉', 12265 => '𐀊', 12266 => '𐀋', 12267 => '𐀍', 12268 => '𐀎', 12269 => '𐀏', 12270 => '𐀐', 12271 => '𐀑', 12272 => '𐀒', 12273 => '𐀓', 12274 => '𐀔', 12275 => '𐀕', 12276 => '𐀖', 12277 => '𐀗', 12278 => '𐀘', 12279 => '𐀙', 12280 => '𐀚', 12281 => '𐀛', 12282 => '𐀜', 12283 => '𐀝', 12284 => '𐀞', 12285 => '𐀟', 12286 => '𐀠', 12287 => '𐀡', 12288 => '𐀢', 12289 => '𐀣', 12290 => '𐀤', 12291 => '𐀥', 12292 => '𐀦', 12293 => '𐀨', 12294 => '𐀩', 12295 => '𐀪', 12296 => '𐀫', 12297 => '𐀬', 12298 => '𐀭', 12299 => '𐀮', 12300 => '𐀯', 12301 => '𐀰', 12302 => '𐀱', 12303 => '𐀲', 12304 => '𐀳', 12305 => '𐀴', 12306 => '𐀵', 12307 => '𐀶', 12308 => '𐀷', 12309 => '𐀸', 12310 => '𐀹', 12311 => '𐀺', 12312 => '𐀼', 12313 => '𐀽', 12314 => '𐀿', 12315 => '𐁀', 12316 => '𐁁', 12317 => '𐁂', 12318 => '𐁃', 12319 => '𐁄', 12320 => '𐁅', 12321 => '𐁆', 12322 => '𐁇', 12323 => '𐁈', 12324 => '𐁉', 12325 => '𐁊', 12326 => '𐁋', 12327 => '𐁌', 12328 => '𐁍', 12329 => '𐁐', 12330 => '𐁑', 12331 => '𐁒', 12332 => '𐁓', 12333 => '𐁔', 12334 => '𐁕', 12335 => '𐁖', 12336 => '𐁗', 12337 => '𐁘', 12338 => '𐁙', 12339 => '𐁚', 12340 => '𐁛', 12341 => '𐁜', 12342 => '𐁝', 12343 => '𐂀', 12344 => '𐂁', 12345 => '𐂂', 12346 => '𐂃', 12347 => '𐂄', 12348 => '𐂅', 12349 => '𐂆', 12350 => '𐂇', 12351 => '𐂈', 12352 => '𐂉', 12353 => '𐂊', 12354 => '𐂋', 12355 => '𐂌', 12356 => '𐂍', 12357 => '𐂎', 12358 => '𐂏', 12359 => '𐂐', 12360 => '𐂑', 12361 => '𐂒', 12362 => '𐂓', 12363 => '𐂔', 12364 => '𐂕', 12365 => '𐂖', 12366 => '𐂗', 12367 => '𐂘', 12368 => '𐂙', 12369 => '𐂚', 12370 => '𐂛', 12371 => '𐂜', 12372 => '𐂝', 12373 => '𐂞', 12374 => '𐂟', 12375 => '𐂠', 12376 => '𐂡', 12377 => '𐂢', 12378 => '𐂣', 12379 => '𐂤', 12380 => '𐂥', 12381 => '𐂦', 12382 => '𐂧', 12383 => '𐂨', 12384 => '𐂩', 12385 => '𐂪', 12386 => '𐂫', 12387 => '𐂬', 12388 => '𐂭', 12389 => '𐂮', 12390 => '𐂯', 12391 => '𐂰', 12392 => '𐂱', 12393 => '𐂲', 12394 => '𐂳', 12395 => '𐂴', 12396 => '𐂵', 12397 => '𐂶', 12398 => '𐂷', 12399 => '𐂸', 12400 => '𐂹', 12401 => '𐂺', 12402 => '𐂻', 12403 => '𐂼', 12404 => '𐂽', 12405 => '𐂾', 12406 => '𐂿', 12407 => '𐃀', 12408 => '𐃁', 12409 => '𐃂', 12410 => '𐃃', 12411 => '𐃄', 12412 => '𐃅', 12413 => '𐃆', 12414 => '𐃇', 12415 => '𐃈', 12416 => '𐃉', 12417 => '𐃊', 12418 => '𐃋', 12419 => '𐃌', 12420 => '𐃍', 12421 => '𐃎', 12422 => '𐃏', 12423 => '𐃐', 12424 => '𐃑', 12425 => '𐃒', 12426 => '𐃓', 12427 => '𐃔', 12428 => '𐃕', 12429 => '𐃖', 12430 => '𐃗', 12431 => '𐃘', 12432 => '𐃙', 12433 => '𐃚', 12434 => '𐃛', 12435 => '𐃜', 12436 => '𐃝', 12437 => '𐃞', 12438 => '𐃟', 12439 => '𐃠', 12440 => '𐃡', 12441 => '𐃢', 12442 => '𐃣', 12443 => '𐃤', 12444 => '𐃥', 12445 => '𐃦', 12446 => '𐃧', 12447 => '𐃨', 12448 => '𐃩', 12449 => '𐃪', 12450 => '𐃫', 12451 => '𐃬', 12452 => '𐃭', 12453 => '𐃮', 12454 => '𐃯', 12455 => '𐃰', 12456 => '𐃱', 12457 => '𐃲', 12458 => '𐃳', 12459 => '𐃴', 12460 => '𐃵', 12461 => '𐃶', 12462 => '𐃷', 12463 => '𐃸', 12464 => '𐃹', 12465 => '𐃺', 12466 => '𐠀', 12467 => '𐠁', 12468 => '𐠂', 12469 => '𐠃', 12470 => '𐠄', 12471 => '𐠅', 12472 => '𐠈', 12473 => '𐠊', 12474 => '𐠋', 12475 => '𐠌', 12476 => '𐠍', 12477 => '𐠎', 12478 => '𐠏', 12479 => '𐠐', 12480 => '𐠑', 12481 => '𐠒', 12482 => '𐠓', 12483 => '𐠔', 12484 => '𐠕', 12485 => '𐠖', 12486 => '𐠗', 12487 => '𐠘', 12488 => '𐠙', 12489 => '𐠚', 12490 => '𐠛', 12491 => '𐠜', 12492 => '𐠝', 12493 => '𐠞', 12494 => '𐠟', 12495 => '𐠠', 12496 => '𐠡', 12497 => '𐠢', 12498 => '𐠣', 12499 => '𐠤', 12500 => '𐠥', 12501 => '𐠦', 12502 => '𐠧', 12503 => '𐠨', 12504 => '𐠩', 12505 => '𐠪', 12506 => '𐠫', 12507 => '𐠬', 12508 => '𐠭', 12509 => '𐠮', 12510 => '𐠯', 12511 => '𐠰', 12512 => '𐠱', 12513 => '𐠲', 12514 => '𐠳', 12515 => '𐠴', 12516 => '𐠵', 12517 => '𐠷', 12518 => '𐠸', 12519 => '𐠼', 12520 => '𐠿', 12521 => '𐩠', 12522 => '𐩡', 12523 => '𐩢', 12524 => '𐩣', 12525 => '𐩤', 12526 => '𐩥', 12527 => '𐩦', 12528 => '𐩧', 12529 => '𐩨', 12530 => '𐩩', 12531 => '𐩪', 12532 => '𐩫', 12533 => '𐩬', 12534 => '𐩭', 12535 => '𐩮', 12536 => '𐩯', 12537 => '𐩰', 12538 => '𐩱', 12539 => '𐩲', 12540 => '𐩳', 12541 => '𐩴', 12542 => '𐩵', 12543 => '𐩶', 12544 => '𐩷', 12545 => '𐩸', 12546 => '𐩹', 12547 => '𐩺', 12548 => '𐩻', 12549 => '𐩼', 12550 => '𐬀', 12551 => '𐬁', 12552 => '𐬂', 12553 => '𐬃', 12554 => '𐬄', 12555 => '𐬅', 12556 => '𐬆', 12557 => '𐬇', 12558 => '𐬈', 12559 => '𐬉', 12560 => '𐬊', 12561 => '𐬋', 12562 => '𐬌', 12563 => '𐬍', 12564 => '𐬎', 12565 => '𐬏', 12566 => '𐬐', 12567 => '𐬑', 12568 => '𐬒', 12569 => '𐬓', 12570 => '𐬔', 12571 => '𐬕', 12572 => '𐬖', 12573 => '𐬗', 12574 => '𐬘', 12575 => '𐬙', 12576 => '𐬚', 12577 => '𐬛', 12578 => '𐬜', 12579 => '𐬝', 12580 => '𐬞', 12581 => '𐬟', 12582 => '𐬠', 12583 => '𐬡', 12584 => '𐬢', 12585 => '𐬣', 12586 => '𐬤', 12587 => '𐬥', 12588 => '𐬦', 12589 => '𐬧', 12590 => '𐬨', 12591 => '𐬩', 12592 => '𐬪', 12593 => '𐬫', 12594 => '𐬬', 12595 => '𐬭', 12596 => '𐬯', 12597 => '𐬰', 12598 => '𐬱', 12599 => '𐬲', 12600 => '𐬳', 12601 => '𐬴', 12602 => '𐬵', 12603 => '𐡀', 12604 => '𐡁', 12605 => '𐡂', 12606 => '𐡃', 12607 => '𐡄', 12608 => '𐡅', 12609 => '𐡆', 12610 => '𐡇', 12611 => '𐡈', 12612 => '𐡉', 12613 => '𐡊', 12614 => '𐡋', 12615 => '𐡌', 12616 => '𐡍', 12617 => '𐡎', 12618 => '𐡏', 12619 => '𐡐', 12620 => '𐡑', 12621 => '𐡒', 12622 => '𐡓', 12623 => '𐡔', 12624 => '𐡕', 12625 => '𐭀', 12626 => '𐭁', 12627 => '𐭂', 12628 => '𐭃', 12629 => '𐭄', 12630 => '𐭅', 12631 => '𐭆', 12632 => '𐭇', 12633 => '𐭈', 12634 => '𐭉', 12635 => '𐭊', 12636 => '𐭋', 12637 => '𐭌', 12638 => '𐭍', 12639 => '𐭎', 12640 => '𐭏', 12641 => '𐭐', 12642 => '𐭑', 12643 => '𐭒', 12644 => '𐭓', 12645 => '𐭔', 12646 => '𐭕', 12647 => '𐭠', 12648 => '𐭡', 12649 => '𐭢', 12650 => '𐭣', 12651 => '𐭤', 12652 => '𐭥', 12653 => '𐭦', 12654 => '𐭧', 12655 => '𐭨', 12656 => '𐭩', 12657 => '𐭪', 12658 => '𐭫', 12659 => '𐭬', 12660 => '𐭭', 12661 => '𐭮', 12662 => '𐭯', 12663 => '𐭰', 12664 => '𐭱', 12665 => '𐭲', 12666 => '𐎀', 12667 => '𐎁', 12668 => '𐎂', 12669 => '𐎃', 12670 => '𐎄', 12671 => '𐎅', 12672 => '𐎆', 12673 => '𐎇', 12674 => '𐎈', 12675 => '𐎉', 12676 => '𐎊', 12677 => '𐎋', 12678 => '𐎌', 12679 => '𐎍', 12680 => '𐎎', 12681 => '𐎏', 12682 => '𐎐', 12683 => '𐎑', 12684 => '𐎒', 12685 => '𐎓', 12686 => '𐎔', 12687 => '𐎕', 12688 => '𐎖', 12689 => '𐎗', 12690 => '𐎘', 12691 => '𐎙', 12692 => '𐎚', 12693 => '𐎛', 12694 => '𐎜', 12695 => '𐎝', 12696 => '𐎠', 12697 => '𐎡', 12698 => '𐎢', 12699 => '𐎣', 12700 => '𐎤', 12701 => '𐎥', 12702 => '𐎦', 12703 => '𐎧', 12704 => '𐎨', 12705 => '𐎩', 12706 => '𐎪', 12707 => '𐎫', 12708 => '𐎬', 12709 => '𐎭', 12710 => '𐎮', 12711 => '𐎯', 12712 => '𐎰', 12713 => '𐎱', 12714 => '𐎲', 12715 => '𐎳', 12716 => '𐎴', 12717 => '𐎵', 12718 => '𐎶', 12719 => '𐎷', 12720 => '𐎸', 12721 => '𐎹', 12722 => '𐎺', 12723 => '𐎻', 12724 => '𐎼', 12725 => '𐎽', 12726 => '𐎾', 12727 => '𐎿', 12728 => '𐏀', 12729 => '𐏁', 12730 => '𐏂', 12731 => '𐏃', 12732 => '𐏈', 12733 => '𐏉', 12734 => '𐏊', 12735 => '𐏋', 12736 => '𐏌', 12737 => '𐏍', 12738 => '𐏎', 12739 => '𐏏', 12740 => '𒀀', 12741 => '𒀁', 12742 => '𒀂', 12743 => '𒀃', 12744 => '𒀄', 12745 => '𒀅', 12746 => '𒀆', 12747 => '𒀇', 12748 => '𒀈', 12749 => '𒀉', 12750 => '𒀊', 12751 => '𒀋', 12752 => '𒀌', 12753 => '𒀍', 12754 => '𒀎', 12755 => '𒀏', 12756 => '𒀐', 12757 => '𒀑', 12758 => '𒀒', 12759 => '𒀓', 12760 => '𒀔', 12761 => '𒀕', 12762 => '𒀖', 12763 => '𒀗', 12764 => '𒀘', 12765 => '𒀙', 12766 => '𒀚', 12767 => '𒀛', 12768 => '𒀜', 12769 => '𒀝', 12770 => '𒀞', 12771 => '𒀟', 12772 => '𒀠', 12773 => '𒀡', 12774 => '𒀢', 12775 => '𒀣', 12776 => '𒀤', 12777 => '𒀥', 12778 => '𒀦', 12779 => '𒀧', 12780 => '𒀨', 12781 => '𒀩', 12782 => '𒀪', 12783 => '𒀫', 12784 => '𒀬', 12785 => '𒀭', 12786 => '𒀮', 12787 => '𒀯', 12788 => '𒀰', 12789 => '𒀱', 12790 => '𒀲', 12791 => '𒀳', 12792 => '𒀴', 12793 => '𒀵', 12794 => '𒀶', 12795 => '𒀷', 12796 => '𒀸', 12797 => '𒀹', 12798 => '𒀺', 12799 => '𒀻', 12800 => '𒀼', 12801 => '𒀽', 12802 => '𒀾', 12803 => '𒀿', 12804 => '𒁀', 12805 => '𒁁', 12806 => '𒁂', 12807 => '𒁃', 12808 => '𒁄', 12809 => '𒁅', 12810 => '𒁆', 12811 => '𒁇', 12812 => '𒁈', 12813 => '𒁉', 12814 => '𒁊', 12815 => '𒁋', 12816 => '𒁌', 12817 => '𒁍', 12818 => '𒁎', 12819 => '𒁏', 12820 => '𒁐', 12821 => '𒁑', 12822 => '𒁒', 12823 => '𒁓', 12824 => '𒁔', 12825 => '𒁕', 12826 => '𒁖', 12827 => '𒁗', 12828 => '𒁘', 12829 => '𒁙', 12830 => '𒁚', 12831 => '𒁛', 12832 => '𒁜', 12833 => '𒁝', 12834 => '𒁞', 12835 => '𒁟', 12836 => '𒁠', 12837 => '𒁡', 12838 => '𒁢', 12839 => '𒁣', 12840 => '𒁤', 12841 => '𒁥', 12842 => '𒁦', 12843 => '𒁧', 12844 => '𒁨', 12845 => '𒁩', 12846 => '𒁪', 12847 => '𒁫', 12848 => '𒁬', 12849 => '𒁭', 12850 => '𒁮', 12851 => '𒁯', 12852 => '𒁰', 12853 => '𒁱', 12854 => '𒁲', 12855 => '𒁳', 12856 => '𒁴', 12857 => '𒁵', 12858 => '𒁶', 12859 => '𒁷', 12860 => '𒁸', 12861 => '𒁹', 12862 => '𒁺', 12863 => '𒁻', 12864 => '𒁼', 12865 => '𒁽', 12866 => '𒁾', 12867 => '𒁿', 12868 => '𒂀', 12869 => '𒂁', 12870 => '𒂂', 12871 => '𒂃', 12872 => '𒂄', 12873 => '𒂅', 12874 => '𒂆', 12875 => '𒂇', 12876 => '𒂈', 12877 => '𒂉', 12878 => '𒂊', 12879 => '𒂋', 12880 => '𒂌', 12881 => '𒂍', 12882 => '𒂎', 12883 => '𒂏', 12884 => '𒂐', 12885 => '𒂑', 12886 => '𒂒', 12887 => '𒂓', 12888 => '𒂔', 12889 => '𒂕', 12890 => '𒂖', 12891 => '𒂗', 12892 => '𒂘', 12893 => '𒂙', 12894 => '𒂚', 12895 => '𒂛', 12896 => '𒂜', 12897 => '𒂝', 12898 => '𒂞', 12899 => '𒂟', 12900 => '𒂠', 12901 => '𒂡', 12902 => '𒂢', 12903 => '𒂣', 12904 => '𒂤', 12905 => '𒂥', 12906 => '𒂦', 12907 => '𒂧', 12908 => '𒂨', 12909 => '𒂩', 12910 => '𒂪', 12911 => '𒂫', 12912 => '𒂬', 12913 => '𒂭', 12914 => '𒂮', 12915 => '𒂯', 12916 => '𒂰', 12917 => '𒂱', 12918 => '𒂲', 12919 => '𒂳', 12920 => '𒂴', 12921 => '𒂵', 12922 => '𒂶', 12923 => '𒂷', 12924 => '𒂸', 12925 => '𒂹', 12926 => '𒂺', 12927 => '𒂻', 12928 => '𒂼', 12929 => '𒂽', 12930 => '𒂾', 12931 => '𒂿', 12932 => '𒃀', 12933 => '𒃁', 12934 => '𒃂', 12935 => '𒃃', 12936 => '𒃄', 12937 => '𒃅', 12938 => '𒃆', 12939 => '𒃇', 12940 => '𒃈', 12941 => '𒃉', 12942 => '𒃊', 12943 => '𒃋', 12944 => '𒃌', 12945 => '𒃍', 12946 => '𒃎', 12947 => '𒃏', 12948 => '𒃐', 12949 => '𒃑', 12950 => '𒃒', 12951 => '𒃓', 12952 => '𒃔', 12953 => '𒃕', 12954 => '𒃖', 12955 => '𒃗', 12956 => '𒃘', 12957 => '𒃙', 12958 => '𒃚', 12959 => '𒃛', 12960 => '𒃜', 12961 => '𒃝', 12962 => '𒃞', 12963 => '𒃟', 12964 => '𒃠', 12965 => '𒃡', 12966 => '𒃢', 12967 => '𒃣', 12968 => '𒃤', 12969 => '𒃥', 12970 => '𒃦', 12971 => '𒃧', 12972 => '𒃨', 12973 => '𒃩', 12974 => '𒃪', 12975 => '𒃫', 12976 => '𒃬', 12977 => '𒃭', 12978 => '𒃮', 12979 => '𒃯', 12980 => '𒃰', 12981 => '𒃱', 12982 => '𒃲', 12983 => '𒃳', 12984 => '𒃴', 12985 => '𒃵', 12986 => '𒃶', 12987 => '𒃷', 12988 => '𒃸', 12989 => '𒃹', 12990 => '𒃺', 12991 => '𒃻', 12992 => '𒃼', 12993 => '𒃽', 12994 => '𒃾', 12995 => '𒃿', 12996 => '𒄀', 12997 => '𒄁', 12998 => '𒄂', 12999 => '𒄃', 13000 => '𒄄', 13001 => '𒄅', 13002 => '𒄆', 13003 => '𒄇', 13004 => '𒄈', 13005 => '𒄉', 13006 => '𒄊', 13007 => '𒄋', 13008 => '𒄌', 13009 => '𒄍', 13010 => '𒄎', 13011 => '𒄏', 13012 => '𒄐', 13013 => '𒄑', 13014 => '𒄒', 13015 => '𒄓', 13016 => '𒄔', 13017 => '𒄕', 13018 => '𒄖', 13019 => '𒄗', 13020 => '𒄘', 13021 => '𒄙', 13022 => '𒄚', 13023 => '𒄛', 13024 => '𒄜', 13025 => '𒄝', 13026 => '𒄞', 13027 => '𒄟', 13028 => '𒄠', 13029 => '𒄡', 13030 => '𒄢', 13031 => '𒄣', 13032 => '𒄤', 13033 => '𒄥', 13034 => '𒄦', 13035 => '𒄧', 13036 => '𒄨', 13037 => '𒄩', 13038 => '𒄪', 13039 => '𒄫', 13040 => '𒄬', 13041 => '𒄭', 13042 => '𒄮', 13043 => '𒄯', 13044 => '𒄰', 13045 => '𒄱', 13046 => '𒄲', 13047 => '𒄳', 13048 => '𒄴', 13049 => '𒄵', 13050 => '𒄶', 13051 => '𒄷', 13052 => '𒄸', 13053 => '𒄹', 13054 => '𒄺', 13055 => '𒄻', 13056 => '𒄼', 13057 => '𒄽', 13058 => '𒄾', 13059 => '𒄿', 13060 => '𒅀', 13061 => '𒅁', 13062 => '𒅂', 13063 => '𒅃', 13064 => '𒅄', 13065 => '𒅅', 13066 => '𒅆', 13067 => '𒅇', 13068 => '𒅈', 13069 => '𒅉', 13070 => '𒅊', 13071 => '𒅋', 13072 => '𒅌', 13073 => '𒅍', 13074 => '𒅎', 13075 => '𒅏', 13076 => '𒅐', 13077 => '𒅑', 13078 => '𒅒', 13079 => '𒅓', 13080 => '𒅔', 13081 => '𒅕', 13082 => '𒅖', 13083 => '𒅗', 13084 => '𒅘', 13085 => '𒅙', 13086 => '𒅚', 13087 => '𒅛', 13088 => '𒅜', 13089 => '𒅝', 13090 => '𒅞', 13091 => '𒅟', 13092 => '𒅠', 13093 => '𒅡', 13094 => '𒅢', 13095 => '𒅣', 13096 => '𒅤', 13097 => '𒅥', 13098 => '𒅦', 13099 => '𒅧', 13100 => '𒅨', 13101 => '𒅩', 13102 => '𒅪', 13103 => '𒅫', 13104 => '𒅬', 13105 => '𒅭', 13106 => '𒅮', 13107 => '𒅯', 13108 => '𒅰', 13109 => '𒅱', 13110 => '𒅲', 13111 => '𒅳', 13112 => '𒅴', 13113 => '𒅵', 13114 => '𒅶', 13115 => '𒅷', 13116 => '𒅸', 13117 => '𒅹', 13118 => '𒅺', 13119 => '𒅻', 13120 => '𒅼', 13121 => '𒅽', 13122 => '𒅾', 13123 => '𒅿', 13124 => '𒆀', 13125 => '𒆁', 13126 => '𒆂', 13127 => '𒆃', 13128 => '𒆄', 13129 => '𒆅', 13130 => '𒆆', 13131 => '𒆇', 13132 => '𒆈', 13133 => '𒆉', 13134 => '𒆊', 13135 => '𒆋', 13136 => '𒆌', 13137 => '𒆍', 13138 => '𒆎', 13139 => '𒆏', 13140 => '𒆐', 13141 => '𒆑', 13142 => '𒆒', 13143 => '𒆓', 13144 => '𒆔', 13145 => '𒆕', 13146 => '𒆖', 13147 => '𒆗', 13148 => '𒆘', 13149 => '𒆙', 13150 => '𒆚', 13151 => '𒆛', 13152 => '𒆜', 13153 => '𒆝', 13154 => '𒆞', 13155 => '𒆟', 13156 => '𒆠', 13157 => '𒆡', 13158 => '𒆢', 13159 => '𒆣', 13160 => '𒆤', 13161 => '𒆥', 13162 => '𒆦', 13163 => '𒆧', 13164 => '𒆨', 13165 => '𒆩', 13166 => '𒆪', 13167 => '𒆫', 13168 => '𒆬', 13169 => '𒆭', 13170 => '𒆮', 13171 => '𒆯', 13172 => '𒆰', 13173 => '𒆱', 13174 => '𒆲', 13175 => '𒆳', 13176 => '𒆴', 13177 => '𒆵', 13178 => '𒆶', 13179 => '𒆷', 13180 => '𒆸', 13181 => '𒆹', 13182 => '𒆺', 13183 => '𒆻', 13184 => '𒆼', 13185 => '𒆽', 13186 => '𒆾', 13187 => '𒆿', 13188 => '𒇀', 13189 => '𒇁', 13190 => '𒇂', 13191 => '𒇃', 13192 => '𒇄', 13193 => '𒇅', 13194 => '𒇆', 13195 => '𒇇', 13196 => '𒇈', 13197 => '𒇉', 13198 => '𒇊', 13199 => '𒇋', 13200 => '𒇌', 13201 => '𒇍', 13202 => '𒇎', 13203 => '𒇏', 13204 => '𒇐', 13205 => '𒇑', 13206 => '𒇒', 13207 => '𒇓', 13208 => '𒇔', 13209 => '𒇕', 13210 => '𒇖', 13211 => '𒇗', 13212 => '𒇘', 13213 => '𒇙', 13214 => '𒇚', 13215 => '𒇛', 13216 => '𒇜', 13217 => '𒇝', 13218 => '𒇞', 13219 => '𒇟', 13220 => '𒇠', 13221 => '𒇡', 13222 => '𒇢', 13223 => '𒇣', 13224 => '𒇤', 13225 => '𒇥', 13226 => '𒇦', 13227 => '𒇧', 13228 => '𒇨', 13229 => '𒇩', 13230 => '𒇪', 13231 => '𒇫', 13232 => '𒇬', 13233 => '𒇭', 13234 => '𒇮', 13235 => '𒇯', 13236 => '𒇰', 13237 => '𒇱', 13238 => '𒇲', 13239 => '𒇳', 13240 => '𒇴', 13241 => '𒇵', 13242 => '𒇶', 13243 => '𒇷', 13244 => '𒇸', 13245 => '𒇹', 13246 => '𒇺', 13247 => '𒇻', 13248 => '𒇼', 13249 => '𒇽', 13250 => '𒇾', 13251 => '𒇿', 13252 => '𒈀', 13253 => '𒈁', 13254 => '𒈂', 13255 => '𒈃', 13256 => '𒈄', 13257 => '𒈅', 13258 => '𒈆', 13259 => '𒈇', 13260 => '𒈈', 13261 => '𒈉', 13262 => '𒈊', 13263 => '𒈋', 13264 => '𒈌', 13265 => '𒈍', 13266 => '𒈎', 13267 => '𒈏', 13268 => '𒈐', 13269 => '𒈑', 13270 => '𒈒', 13271 => '𒈓', 13272 => '𒈔', 13273 => '𒈕', 13274 => '𒈖', 13275 => '𒈗', 13276 => '𒈘', 13277 => '𒈙', 13278 => '𒈚', 13279 => '𒈛', 13280 => '𒈜', 13281 => '𒈝', 13282 => '𒈞', 13283 => '𒈟', 13284 => '𒈠', 13285 => '𒈡', 13286 => '𒈢', 13287 => '𒈣', 13288 => '𒈤', 13289 => '𒈥', 13290 => '𒈦', 13291 => '𒈧', 13292 => '𒈨', 13293 => '𒈩', 13294 => '𒈪', 13295 => '𒈫', 13296 => '𒈬', 13297 => '𒈭', 13298 => '𒈮', 13299 => '𒈯', 13300 => '𒈰', 13301 => '𒈱', 13302 => '𒈲', 13303 => '𒈳', 13304 => '𒈴', 13305 => '𒈵', 13306 => '𒈶', 13307 => '𒈷', 13308 => '𒈸', 13309 => '𒈹', 13310 => '𒈺', 13311 => '𒈻', 13312 => '𒈼', 13313 => '𒈽', 13314 => '𒈾', 13315 => '𒈿', 13316 => '𒉀', 13317 => '𒉁', 13318 => '𒉂', 13319 => '𒉃', 13320 => '𒉄', 13321 => '𒉅', 13322 => '𒉆', 13323 => '𒉇', 13324 => '𒉈', 13325 => '𒉉', 13326 => '𒉊', 13327 => '𒉋', 13328 => '𒉌', 13329 => '𒉍', 13330 => '𒉎', 13331 => '𒉏', 13332 => '𒉐', 13333 => '𒉑', 13334 => '𒉒', 13335 => '𒉓', 13336 => '𒉔', 13337 => '𒉕', 13338 => '𒉖', 13339 => '𒉗', 13340 => '𒉘', 13341 => '𒉙', 13342 => '𒉚', 13343 => '𒉛', 13344 => '𒉜', 13345 => '𒉝', 13346 => '𒉞', 13347 => '𒉟', 13348 => '𒉠', 13349 => '𒉡', 13350 => '𒉢', 13351 => '𒉣', 13352 => '𒉤', 13353 => '𒉥', 13354 => '𒉦', 13355 => '𒉧', 13356 => '𒉨', 13357 => '𒉩', 13358 => '𒉪', 13359 => '𒉫', 13360 => '𒉬', 13361 => '𒉭', 13362 => '𒉮', 13363 => '𒉯', 13364 => '𒉰', 13365 => '𒉱', 13366 => '𒉲', 13367 => '𒉳', 13368 => '𒉴', 13369 => '𒉵', 13370 => '𒉶', 13371 => '𒉷', 13372 => '𒉸', 13373 => '𒉹', 13374 => '𒉺', 13375 => '𒉻', 13376 => '𒉼', 13377 => '𒉽', 13378 => '𒉾', 13379 => '𒉿', 13380 => '𒊀', 13381 => '𒊁', 13382 => '𒊂', 13383 => '𒊃', 13384 => '𒊄', 13385 => '𒊅', 13386 => '𒊆', 13387 => '𒊇', 13388 => '𒊈', 13389 => '𒊉', 13390 => '𒊊', 13391 => '𒊋', 13392 => '𒊌', 13393 => '𒊍', 13394 => '𒊎', 13395 => '𒊏', 13396 => '𒊐', 13397 => '𒊑', 13398 => '𒊒', 13399 => '𒊓', 13400 => '𒊔', 13401 => '𒊕', 13402 => '𒊖', 13403 => '𒊗', 13404 => '𒊘', 13405 => '𒊙', 13406 => '𒊚', 13407 => '𒊛', 13408 => '𒊜', 13409 => '𒊝', 13410 => '𒊞', 13411 => '𒊟', 13412 => '𒊠', 13413 => '𒊡', 13414 => '𒊢', 13415 => '𒊣', 13416 => '𒊤', 13417 => '𒊥', 13418 => '𒊦', 13419 => '𒊧', 13420 => '𒊨', 13421 => '𒊩', 13422 => '𒊪', 13423 => '𒊫', 13424 => '𒊬', 13425 => '𒊭', 13426 => '𒊮', 13427 => '𒊯', 13428 => '𒊰', 13429 => '𒊱', 13430 => '𒊲', 13431 => '𒊳', 13432 => '𒊴', 13433 => '𒊵', 13434 => '𒊶', 13435 => '𒊷', 13436 => '𒊸', 13437 => '𒊹', 13438 => '𒊺', 13439 => '𒊻', 13440 => '𒊼', 13441 => '𒊽', 13442 => '𒊾', 13443 => '𒊿', 13444 => '𒋀', 13445 => '𒋁', 13446 => '𒋂', 13447 => '𒋃', 13448 => '𒋄', 13449 => '𒋅', 13450 => '𒋆', 13451 => '𒋇', 13452 => '𒋈', 13453 => '𒋉', 13454 => '𒋊', 13455 => '𒋋', 13456 => '𒋌', 13457 => '𒋍', 13458 => '𒋎', 13459 => '𒋏', 13460 => '𒋐', 13461 => '𒋑', 13462 => '𒋒', 13463 => '𒋓', 13464 => '𒋔', 13465 => '𒋕', 13466 => '𒋖', 13467 => '𒋗', 13468 => '𒋘', 13469 => '𒋙', 13470 => '𒋚', 13471 => '𒋛', 13472 => '𒋜', 13473 => '𒋝', 13474 => '𒋞', 13475 => '𒋟', 13476 => '𒋠', 13477 => '𒋡', 13478 => '𒋢', 13479 => '𒋣', 13480 => '𒋤', 13481 => '𒋥', 13482 => '𒋦', 13483 => '𒋧', 13484 => '𒋨', 13485 => '𒋩', 13486 => '𒋪', 13487 => '𒋫', 13488 => '𒋬', 13489 => '𒋭', 13490 => '𒋮', 13491 => '𒋯', 13492 => '𒋰', 13493 => '𒋱', 13494 => '𒋲', 13495 => '𒋳', 13496 => '𒋴', 13497 => '𒋵', 13498 => '𒋶', 13499 => '𒋷', 13500 => '𒋸', 13501 => '𒋹', 13502 => '𒋺', 13503 => '𒋻', 13504 => '𒋼', 13505 => '𒋽', 13506 => '𒋾', 13507 => '𒋿', 13508 => '𒌀', 13509 => '𒌁', 13510 => '𒌂', 13511 => '𒌃', 13512 => '𒌄', 13513 => '𒌅', 13514 => '𒌆', 13515 => '𒌇', 13516 => '𒌈', 13517 => '𒌉', 13518 => '𒌊', 13519 => '𒌋', 13520 => '𒌌', 13521 => '𒌍', 13522 => '𒌎', 13523 => '𒌏', 13524 => '𒌐', 13525 => '𒌑', 13526 => '𒌒', 13527 => '𒌓', 13528 => '𒌔', 13529 => '𒌕', 13530 => '𒌖', 13531 => '𒌗', 13532 => '𒌘', 13533 => '𒌙', 13534 => '𒌚', 13535 => '𒌛', 13536 => '𒌜', 13537 => '𒌝', 13538 => '𒌞', 13539 => '𒌟', 13540 => '𒌠', 13541 => '𒌡', 13542 => '𒌢', 13543 => '𒌣', 13544 => '𒌤', 13545 => '𒌥', 13546 => '𒌦', 13547 => '𒌧', 13548 => '𒌨', 13549 => '𒌩', 13550 => '𒌪', 13551 => '𒌫', 13552 => '𒌬', 13553 => '𒌭', 13554 => '𒌮', 13555 => '𒌯', 13556 => '𒌰', 13557 => '𒌱', 13558 => '𒌲', 13559 => '𒌳', 13560 => '𒌴', 13561 => '𒌵', 13562 => '𒌶', 13563 => '𒌷', 13564 => '𒌸', 13565 => '𒌹', 13566 => '𒌺', 13567 => '𒌻', 13568 => '𒌼', 13569 => '𒌽', 13570 => '𒌾', 13571 => '𒌿', 13572 => '𒍀', 13573 => '𒍁', 13574 => '𒍂', 13575 => '𒍃', 13576 => '𒍄', 13577 => '𒍅', 13578 => '𒍆', 13579 => '𒍇', 13580 => '𒍈', 13581 => '𒍉', 13582 => '𒍊', 13583 => '𒍋', 13584 => '𒍌', 13585 => '𒍍', 13586 => '𒍎', 13587 => '𒍏', 13588 => '𒍐', 13589 => '𒍑', 13590 => '𒍒', 13591 => '𒍓', 13592 => '𒍔', 13593 => '𒍕', 13594 => '𒍖', 13595 => '𒍗', 13596 => '𒍘', 13597 => '𒍙', 13598 => '𒍚', 13599 => '𒍛', 13600 => '𒍜', 13601 => '𒍝', 13602 => '𒍞', 13603 => '𒍟', 13604 => '𒍠', 13605 => '𒍡', 13606 => '𒍢', 13607 => '𒍣', 13608 => '𒍤', 13609 => '𒍥', 13610 => '𒍦', 13611 => '𒍧', 13612 => '𒍨', 13613 => '𒍩', 13614 => '𒍪', 13615 => '𒍫', 13616 => '𒍬', 13617 => '𒍭', 13618 => '𒍮', 13619 => '𓀀', 13620 => '𓀁', 13621 => '𓀂', 13622 => '𓀃', 13623 => '𓀄', 13624 => '𓀅', 13625 => '𓀆', 13626 => '𓀇', 13627 => '𓀈', 13628 => '𓀉', 13629 => '𓀊', 13630 => '𓀋', 13631 => '𓀌', 13632 => '𓀍', 13633 => '𓀎', 13634 => '𓀏', 13635 => '𓀐', 13636 => '𓀑', 13637 => '𓀒', 13638 => '𓀓', 13639 => '𓀔', 13640 => '𓀕', 13641 => '𓀖', 13642 => '𓀗', 13643 => '𓀘', 13644 => '𓀙', 13645 => '𓀚', 13646 => '𓀛', 13647 => '𓀜', 13648 => '𓀝', 13649 => '𓀞', 13650 => '𓀟', 13651 => '𓀠', 13652 => '𓀡', 13653 => '𓀢', 13654 => '𓀣', 13655 => '𓀤', 13656 => '𓀥', 13657 => '𓀦', 13658 => '𓀧', 13659 => '𓀨', 13660 => '𓀩', 13661 => '𓀪', 13662 => '𓀫', 13663 => '𓀬', 13664 => '𓀭', 13665 => '𓀮', 13666 => '𓀯', 13667 => '𓀰', 13668 => '𓀱', 13669 => '𓀲', 13670 => '𓀳', 13671 => '𓀴', 13672 => '𓀵', 13673 => '𓀶', 13674 => '𓀷', 13675 => '𓀸', 13676 => '𓀹', 13677 => '𓀺', 13678 => '𓀻', 13679 => '𓀼', 13680 => '𓀽', 13681 => '𓀾', 13682 => '𓀿', 13683 => '𓁀', 13684 => '𓁁', 13685 => '𓁂', 13686 => '𓁃', 13687 => '𓁄', 13688 => '𓁅', 13689 => '𓁆', 13690 => '𓁇', 13691 => '𓁈', 13692 => '𓁉', 13693 => '𓁊', 13694 => '𓁋', 13695 => '𓁌', 13696 => '𓁍', 13697 => '𓁎', 13698 => '𓁏', 13699 => '𓁐', 13700 => '𓁑', 13701 => '𓁒', 13702 => '𓁓', 13703 => '𓁔', 13704 => '𓁕', 13705 => '𓁖', 13706 => '𓁗', 13707 => '𓁘', 13708 => '𓁙', 13709 => '𓁚', 13710 => '𓁛', 13711 => '𓁜', 13712 => '𓁝', 13713 => '𓁞', 13714 => '𓁟', 13715 => '𓁠', 13716 => '𓁡', 13717 => '𓁢', 13718 => '𓁣', 13719 => '𓁤', 13720 => '𓁥', 13721 => '𓁦', 13722 => '𓁧', 13723 => '𓁨', 13724 => '𓁩', 13725 => '𓁪', 13726 => '𓁫', 13727 => '𓁬', 13728 => '𓁭', 13729 => '𓁮', 13730 => '𓁯', 13731 => '𓁰', 13732 => '𓁱', 13733 => '𓁲', 13734 => '𓁳', 13735 => '𓁴', 13736 => '𓁵', 13737 => '𓁶', 13738 => '𓁷', 13739 => '𓁸', 13740 => '𓁹', 13741 => '𓁺', 13742 => '𓁻', 13743 => '𓁼', 13744 => '𓁽', 13745 => '𓁾', 13746 => '𓁿', 13747 => '𓂀', 13748 => '𓂁', 13749 => '𓂂', 13750 => '𓂃', 13751 => '𓂄', 13752 => '𓂅', 13753 => '𓂆', 13754 => '𓂇', 13755 => '𓂈', 13756 => '𓂉', 13757 => '𓂊', 13758 => '𓂋', 13759 => '𓂌', 13760 => '𓂍', 13761 => '𓂎', 13762 => '𓂏', 13763 => '𓂐', 13764 => '𓂑', 13765 => '𓂒', 13766 => '𓂓', 13767 => '𓂔', 13768 => '𓂕', 13769 => '𓂖', 13770 => '𓂗', 13771 => '𓂘', 13772 => '𓂙', 13773 => '𓂚', 13774 => '𓂛', 13775 => '𓂜', 13776 => '𓂝', 13777 => '𓂞', 13778 => '𓂟', 13779 => '𓂠', 13780 => '𓂡', 13781 => '𓂢', 13782 => '𓂣', 13783 => '𓂤', 13784 => '𓂥', 13785 => '𓂦', 13786 => '𓂧', 13787 => '𓂨', 13788 => '𓂩', 13789 => '𓂪', 13790 => '𓂫', 13791 => '𓂬', 13792 => '𓂭', 13793 => '𓂮', 13794 => '𓂯', 13795 => '𓂰', 13796 => '𓂱', 13797 => '𓂲', 13798 => '𓂳', 13799 => '𓂴', 13800 => '𓂵', 13801 => '𓂶', 13802 => '𓂷', 13803 => '𓂸', 13804 => '𓂹', 13805 => '𓂺', 13806 => '𓂻', 13807 => '𓂼', 13808 => '𓂽', 13809 => '𓂾', 13810 => '𓂿', 13811 => '𓃀', 13812 => '𓃁', 13813 => '𓃂', 13814 => '𓃃', 13815 => '𓃄', 13816 => '𓃅', 13817 => '𓃆', 13818 => '𓃇', 13819 => '𓃈', 13820 => '𓃉', 13821 => '𓃊', 13822 => '𓃋', 13823 => '𓃌', 13824 => '𓃍', 13825 => '𓃎', 13826 => '𓃏', 13827 => '𓃐', 13828 => '𓃑', 13829 => '𓃒', 13830 => '𓃓', 13831 => '𓃔', 13832 => '𓃕', 13833 => '𓃖', 13834 => '𓃗', 13835 => '𓃘', 13836 => '𓃙', 13837 => '𓃚', 13838 => '𓃛', 13839 => '𓃜', 13840 => '𓃝', 13841 => '𓃞', 13842 => '𓃟', 13843 => '𓃠', 13844 => '𓃡', 13845 => '𓃢', 13846 => '𓃣', 13847 => '𓃤', 13848 => '𓃥', 13849 => '𓃦', 13850 => '𓃧', 13851 => '𓃨', 13852 => '𓃩', 13853 => '𓃪', 13854 => '𓃫', 13855 => '𓃬', 13856 => '𓃭', 13857 => '𓃮', 13858 => '𓃯', 13859 => '𓃰', 13860 => '𓃱', 13861 => '𓃲', 13862 => '𓃳', 13863 => '𓃴', 13864 => '𓃵', 13865 => '𓃶', 13866 => '𓃷', 13867 => '𓃸', 13868 => '𓃹', 13869 => '𓃺', 13870 => '𓃻', 13871 => '𓃼', 13872 => '𓃽', 13873 => '𓃾', 13874 => '𓃿', 13875 => '𓄀', 13876 => '𓄁', 13877 => '𓄂', 13878 => '𓄃', 13879 => '𓄄', 13880 => '𓄅', 13881 => '𓄆', 13882 => '𓄇', 13883 => '𓄈', 13884 => '𓄉', 13885 => '𓄊', 13886 => '𓄋', 13887 => '𓄌', 13888 => '𓄍', 13889 => '𓄎', 13890 => '𓄏', 13891 => '𓄐', 13892 => '𓄑', 13893 => '𓄒', 13894 => '𓄓', 13895 => '𓄔', 13896 => '𓄕', 13897 => '𓄖', 13898 => '𓄗', 13899 => '𓄘', 13900 => '𓄙', 13901 => '𓄚', 13902 => '𓄛', 13903 => '𓄜', 13904 => '𓄝', 13905 => '𓄞', 13906 => '𓄟', 13907 => '𓄠', 13908 => '𓄡', 13909 => '𓄢', 13910 => '𓄣', 13911 => '𓄤', 13912 => '𓄥', 13913 => '𓄦', 13914 => '𓄧', 13915 => '𓄨', 13916 => '𓄩', 13917 => '𓄪', 13918 => '𓄫', 13919 => '𓄬', 13920 => '𓄭', 13921 => '𓄮', 13922 => '𓄯', 13923 => '𓄰', 13924 => '𓄱', 13925 => '𓄲', 13926 => '𓄳', 13927 => '𓄴', 13928 => '𓄵', 13929 => '𓄶', 13930 => '𓄷', 13931 => '𓄸', 13932 => '𓄹', 13933 => '𓄺', 13934 => '𓄻', 13935 => '𓄼', 13936 => '𓄽', 13937 => '𓄾', 13938 => '𓄿', 13939 => '𓅀', 13940 => '𓅁', 13941 => '𓅂', 13942 => '𓅃', 13943 => '𓅄', 13944 => '𓅅', 13945 => '𓅆', 13946 => '𓅇', 13947 => '𓅈', 13948 => '𓅉', 13949 => '𓅊', 13950 => '𓅋', 13951 => '𓅌', 13952 => '𓅍', 13953 => '𓅎', 13954 => '𓅏', 13955 => '𓅐', 13956 => '𓅑', 13957 => '𓅒', 13958 => '𓅓', 13959 => '𓅔', 13960 => '𓅕', 13961 => '𓅖', 13962 => '𓅗', 13963 => '𓅘', 13964 => '𓅙', 13965 => '𓅚', 13966 => '𓅛', 13967 => '𓅜', 13968 => '𓅝', 13969 => '𓅞', 13970 => '𓅟', 13971 => '𓅠', 13972 => '𓅡', 13973 => '𓅢', 13974 => '𓅣', 13975 => '𓅤', 13976 => '𓅥', 13977 => '𓅦', 13978 => '𓅧', 13979 => '𓅨', 13980 => '𓅩', 13981 => '𓅪', 13982 => '𓅫', 13983 => '𓅬', 13984 => '𓅭', 13985 => '𓅮', 13986 => '𓅯', 13987 => '𓅰', 13988 => '𓅱', 13989 => '𓅲', 13990 => '𓅳', 13991 => '𓅴', 13992 => '𓅵', 13993 => '𓅶', 13994 => '𓅷', 13995 => '𓅸', 13996 => '𓅹', 13997 => '𓅺', 13998 => '𓅻', 13999 => '𓅼', 14000 => '𓅽', 14001 => '𓅾', 14002 => '𓅿', 14003 => '𓆀', 14004 => '𓆁', 14005 => '𓆂', 14006 => '𓆃', 14007 => '𓆄', 14008 => '𓆅', 14009 => '𓆆', 14010 => '𓆇', 14011 => '𓆈', 14012 => '𓆉', 14013 => '𓆊', 14014 => '𓆋', 14015 => '𓆌', 14016 => '𓆍', 14017 => '𓆎', 14018 => '𓆏', 14019 => '𓆐', 14020 => '𓆑', 14021 => '𓆒', 14022 => '𓆓', 14023 => '𓆔', 14024 => '𓆕', 14025 => '𓆖', 14026 => '𓆗', 14027 => '𓆘', 14028 => '𓆙', 14029 => '𓆚', 14030 => '𓆛', 14031 => '𓆜', 14032 => '𓆝', 14033 => '𓆞', 14034 => '𓆟', 14035 => '𓆠', 14036 => '𓆡', 14037 => '𓆢', 14038 => '𓆣', 14039 => '𓆤', 14040 => '𓆥', 14041 => '𓆦', 14042 => '𓆧', 14043 => '𓆨', 14044 => '𓆩', 14045 => '𓆪', 14046 => '𓆫', 14047 => '𓆬', 14048 => '𓆭', 14049 => '𓆮', 14050 => '𓆯', 14051 => '𓆰', 14052 => '𓆱', 14053 => '𓆲', 14054 => '𓆳', 14055 => '𓆴', 14056 => '𓆵', 14057 => '𓆶', 14058 => '𓆷', 14059 => '𓆸', 14060 => '𓆹', 14061 => '𓆺', 14062 => '𓆻', 14063 => '𓆼', 14064 => '𓆽', 14065 => '𓆾', 14066 => '𓆿', 14067 => '𓇀', 14068 => '𓇁', 14069 => '𓇂', 14070 => '𓇃', 14071 => '𓇄', 14072 => '𓇅', 14073 => '𓇆', 14074 => '𓇇', 14075 => '𓇈', 14076 => '𓇉', 14077 => '𓇊', 14078 => '𓇋', 14079 => '𓇌', 14080 => '𓇍', 14081 => '𓇎', 14082 => '𓇏', 14083 => '𓇐', 14084 => '𓇑', 14085 => '𓇒', 14086 => '𓇓', 14087 => '𓇔', 14088 => '𓇕', 14089 => '𓇖', 14090 => '𓇗', 14091 => '𓇘', 14092 => '𓇙', 14093 => '𓇚', 14094 => '𓇛', 14095 => '𓇜', 14096 => '𓇝', 14097 => '𓇞', 14098 => '𓇟', 14099 => '𓇠', 14100 => '𓇡', 14101 => '𓇢', 14102 => '𓇣', 14103 => '𓇤', 14104 => '𓇥', 14105 => '𓇦', 14106 => '𓇧', 14107 => '𓇨', 14108 => '𓇩', 14109 => '𓇪', 14110 => '𓇫', 14111 => '𓇬', 14112 => '𓇭', 14113 => '𓇮', 14114 => '𓇯', 14115 => '𓇰', 14116 => '𓇱', 14117 => '𓇲', 14118 => '𓇳', 14119 => '𓇴', 14120 => '𓇵', 14121 => '𓇶', 14122 => '𓇷', 14123 => '𓇸', 14124 => '𓇹', 14125 => '𓇺', 14126 => '𓇻', 14127 => '𓇼', 14128 => '𓇽', 14129 => '𓇾', 14130 => '𓇿', 14131 => '𓈀', 14132 => '𓈁', 14133 => '𓈂', 14134 => '𓈃', 14135 => '𓈄', 14136 => '𓈅', 14137 => '𓈆', 14138 => '𓈇', 14139 => '𓈈', 14140 => '𓈉', 14141 => '𓈊', 14142 => '𓈋', 14143 => '𓈌', 14144 => '𓈍', 14145 => '𓈎', 14146 => '𓈏', 14147 => '𓈐', 14148 => '𓈑', 14149 => '𓈒', 14150 => '𓈓', 14151 => '𓈔', 14152 => '𓈕', 14153 => '𓈖', 14154 => '𓈗', 14155 => '𓈘', 14156 => '𓈙', 14157 => '𓈚', 14158 => '𓈛', 14159 => '𓈜', 14160 => '𓈝', 14161 => '𓈞', 14162 => '𓈟', 14163 => '𓈠', 14164 => '𓈡', 14165 => '𓈢', 14166 => '𓈣', 14167 => '𓈤', 14168 => '𓈥', 14169 => '𓈦', 14170 => '𓈧', 14171 => '𓈨', 14172 => '𓈩', 14173 => '𓈪', 14174 => '𓈫', 14175 => '𓈬', 14176 => '𓈭', 14177 => '𓈮', 14178 => '𓈯', 14179 => '𓈰', 14180 => '𓈱', 14181 => '𓈲', 14182 => '𓈳', 14183 => '𓈴', 14184 => '𓈵', 14185 => '𓈶', 14186 => '𓈷', 14187 => '𓈸', 14188 => '𓈹', 14189 => '𓈺', 14190 => '𓈻', 14191 => '𓈼', 14192 => '𓈽', 14193 => '𓈾', 14194 => '𓈿', 14195 => '𓉀', 14196 => '𓉁', 14197 => '𓉂', 14198 => '𓉃', 14199 => '𓉄', 14200 => '𓉅', 14201 => '𓉆', 14202 => '𓉇', 14203 => '𓉈', 14204 => '𓉉', 14205 => '𓉊', 14206 => '𓉋', 14207 => '𓉌', 14208 => '𓉍', 14209 => '𓉎', 14210 => '𓉏', 14211 => '𓉐', 14212 => '𓉑', 14213 => '𓉒', 14214 => '𓉓', 14215 => '𓉔', 14216 => '𓉕', 14217 => '𓉖', 14218 => '𓉗', 14219 => '𓉘', 14220 => '𓉙', 14221 => '𓉚', 14222 => '𓉛', 14223 => '𓉜', 14224 => '𓉝', 14225 => '𓉞', 14226 => '𓉟', 14227 => '𓉠', 14228 => '𓉡', 14229 => '𓉢', 14230 => '𓉣', 14231 => '𓉤', 14232 => '𓉥', 14233 => '𓉦', 14234 => '𓉧', 14235 => '𓉨', 14236 => '𓉩', 14237 => '𓉪', 14238 => '𓉫', 14239 => '𓉬', 14240 => '𓉭', 14241 => '𓉮', 14242 => '𓉯', 14243 => '𓉰', 14244 => '𓉱', 14245 => '𓉲', 14246 => '𓉳', 14247 => '𓉴', 14248 => '𓉵', 14249 => '𓉶', 14250 => '𓉷', 14251 => '𓉸', 14252 => '𓉹', 14253 => '𓉺', 14254 => '𓉻', 14255 => '𓉼', 14256 => '𓉽', 14257 => '𓉾', 14258 => '𓉿', 14259 => '𓊀', 14260 => '𓊁', 14261 => '𓊂', 14262 => '𓊃', 14263 => '𓊄', 14264 => '𓊅', 14265 => '𓊆', 14266 => '𓊇', 14267 => '𓊈', 14268 => '𓊉', 14269 => '𓊊', 14270 => '𓊋', 14271 => '𓊌', 14272 => '𓊍', 14273 => '𓊎', 14274 => '𓊏', 14275 => '𓊐', 14276 => '𓊑', 14277 => '𓊒', 14278 => '𓊓', 14279 => '𓊔', 14280 => '𓊕', 14281 => '𓊖', 14282 => '𓊗', 14283 => '𓊘', 14284 => '𓊙', 14285 => '𓊚', 14286 => '𓊛', 14287 => '𓊜', 14288 => '𓊝', 14289 => '𓊞', 14290 => '𓊟', 14291 => '𓊠', 14292 => '𓊡', 14293 => '𓊢', 14294 => '𓊣', 14295 => '𓊤', 14296 => '𓊥', 14297 => '𓊦', 14298 => '𓊧', 14299 => '𓊨', 14300 => '𓊩', 14301 => '𓊪', 14302 => '𓊫', 14303 => '𓊬', 14304 => '𓊭', 14305 => '𓊮', 14306 => '𓊯', 14307 => '𓊰', 14308 => '𓊱', 14309 => '𓊲', 14310 => '𓊳', 14311 => '𓊴', 14312 => '𓊵', 14313 => '𓊶', 14314 => '𓊷', 14315 => '𓊸', 14316 => '𓊹', 14317 => '𓊺', 14318 => '𓊻', 14319 => '𓊼', 14320 => '𓊽', 14321 => '𓊾', 14322 => '𓊿', 14323 => '𓋀', 14324 => '𓋁', 14325 => '𓋂', 14326 => '𓋃', 14327 => '𓋄', 14328 => '𓋅', 14329 => '𓋆', 14330 => '𓋇', 14331 => '𓋈', 14332 => '𓋉', 14333 => '𓋊', 14334 => '𓋋', 14335 => '𓋌', 14336 => '𓋍', 14337 => '𓋎', 14338 => '𓋏', 14339 => '𓋐', 14340 => '𓋑', 14341 => '𓋒', 14342 => '𓋓', 14343 => '𓋔', 14344 => '𓋕', 14345 => '𓋖', 14346 => '𓋗', 14347 => '𓋘', 14348 => '𓋙', 14349 => '𓋚', 14350 => '𓋛', 14351 => '𓋜', 14352 => '𓋝', 14353 => '𓋞', 14354 => '𓋟', 14355 => '𓋠', 14356 => '𓋡', 14357 => '𓋢', 14358 => '𓋣', 14359 => '𓋤', 14360 => '𓋥', 14361 => '𓋦', 14362 => '𓋧', 14363 => '𓋨', 14364 => '𓋩', 14365 => '𓋪', 14366 => '𓋫', 14367 => '𓋬', 14368 => '𓋭', 14369 => '𓋮', 14370 => '𓋯', 14371 => '𓋰', 14372 => '𓋱', 14373 => '𓋲', 14374 => '𓋳', 14375 => '𓋴', 14376 => '𓋵', 14377 => '𓋶', 14378 => '𓋷', 14379 => '𓋸', 14380 => '𓋹', 14381 => '𓋺', 14382 => '𓋻', 14383 => '𓋼', 14384 => '𓋽', 14385 => '𓋾', 14386 => '𓋿', 14387 => '𓌀', 14388 => '𓌁', 14389 => '𓌂', 14390 => '𓌃', 14391 => '𓌄', 14392 => '𓌅', 14393 => '𓌆', 14394 => '𓌇', 14395 => '𓌈', 14396 => '𓌉', 14397 => '𓌊', 14398 => '𓌋', 14399 => '𓌌', 14400 => '𓌍', 14401 => '𓌎', 14402 => '𓌏', 14403 => '𓌐', 14404 => '𓌑', 14405 => '𓌒', 14406 => '𓌓', 14407 => '𓌔', 14408 => '𓌕', 14409 => '𓌖', 14410 => '𓌗', 14411 => '𓌘', 14412 => '𓌙', 14413 => '𓌚', 14414 => '𓌛', 14415 => '𓌜', 14416 => '𓌝', 14417 => '𓌞', 14418 => '𓌟', 14419 => '𓌠', 14420 => '𓌡', 14421 => '𓌢', 14422 => '𓌣', 14423 => '𓌤', 14424 => '𓌥', 14425 => '𓌦', 14426 => '𓌧', 14427 => '𓌨', 14428 => '𓌩', 14429 => '𓌪', 14430 => '𓌫', 14431 => '𓌬', 14432 => '𓌭', 14433 => '𓌮', 14434 => '𓌯', 14435 => '𓌰', 14436 => '𓌱', 14437 => '𓌲', 14438 => '𓌳', 14439 => '𓌴', 14440 => '𓌵', 14441 => '𓌶', 14442 => '𓌷', 14443 => '𓌸', 14444 => '𓌹', 14445 => '𓌺', 14446 => '𓌻', 14447 => '𓌼', 14448 => '𓌽', 14449 => '𓌾', 14450 => '𓌿', 14451 => '𓍀', 14452 => '𓍁', 14453 => '𓍂', 14454 => '𓍃', 14455 => '𓍄', 14456 => '𓍅', 14457 => '𓍆', 14458 => '𓍇', 14459 => '𓍈', 14460 => '𓍉', 14461 => '𓍊', 14462 => '𓍋', 14463 => '𓍌', 14464 => '𓍍', 14465 => '𓍎', 14466 => '𓍏', 14467 => '𓍐', 14468 => '𓍑', 14469 => '𓍒', 14470 => '𓍓', 14471 => '𓍔', 14472 => '𓍕', 14473 => '𓍖', 14474 => '𓍗', 14475 => '𓍘', 14476 => '𓍙', 14477 => '𓍚', 14478 => '𓍛', 14479 => '𓍜', 14480 => '𓍝', 14481 => '𓍞', 14482 => '𓍟', 14483 => '𓍠', 14484 => '𓍡', 14485 => '𓍢', 14486 => '𓍣', 14487 => '𓍤', 14488 => '𓍥', 14489 => '𓍦', 14490 => '𓍧', 14491 => '𓍨', 14492 => '𓍩', 14493 => '𓍪', 14494 => '𓍫', 14495 => '𓍬', 14496 => '𓍭', 14497 => '𓍮', 14498 => '𓍯', 14499 => '𓍰', 14500 => '𓍱', 14501 => '𓍲', 14502 => '𓍳', 14503 => '𓍴', 14504 => '𓍵', 14505 => '𓍶', 14506 => '𓍷', 14507 => '𓍸', 14508 => '𓍹', 14509 => '𓍺', 14510 => '𓍻', 14511 => '𓍼', 14512 => '𓍽', 14513 => '𓍾', 14514 => '𓍿', 14515 => '𓎀', 14516 => '𓎁', 14517 => '𓎂', 14518 => '𓎃', 14519 => '𓎄', 14520 => '𓎅', 14521 => '𓎆', 14522 => '𓎇', 14523 => '𓎈', 14524 => '𓎉', 14525 => '𓎊', 14526 => '𓎋', 14527 => '𓎌', 14528 => '𓎍', 14529 => '𓎎', 14530 => '𓎏', 14531 => '𓎐', 14532 => '𓎑', 14533 => '𓎒', 14534 => '𓎓', 14535 => '𓎔', 14536 => '𓎕', 14537 => '𓎖', 14538 => '𓎗', 14539 => '𓎘', 14540 => '𓎙', 14541 => '𓎚', 14542 => '𓎛', 14543 => '𓎜', 14544 => '𓎝', 14545 => '𓎞', 14546 => '𓎟', 14547 => '𓎠', 14548 => '𓎡', 14549 => '𓎢', 14550 => '𓎣', 14551 => '𓎤', 14552 => '𓎥', 14553 => '𓎦', 14554 => '𓎧', 14555 => '𓎨', 14556 => '𓎩', 14557 => '𓎪', 14558 => '𓎫', 14559 => '𓎬', 14560 => '𓎭', 14561 => '𓎮', 14562 => '𓎯', 14563 => '𓎰', 14564 => '𓎱', 14565 => '𓎲', 14566 => '𓎳', 14567 => '𓎴', 14568 => '𓎵', 14569 => '𓎶', 14570 => '𓎷', 14571 => '𓎸', 14572 => '𓎹', 14573 => '𓎺', 14574 => '𓎻', 14575 => '𓎼', 14576 => '𓎽', 14577 => '𓎾', 14578 => '𓎿', 14579 => '𓏀', 14580 => '𓏁', 14581 => '𓏂', 14582 => '𓏃', 14583 => '𓏄', 14584 => '𓏅', 14585 => '𓏆', 14586 => '𓏇', 14587 => '𓏈', 14588 => '𓏉', 14589 => '𓏊', 14590 => '𓏋', 14591 => '𓏌', 14592 => '𓏍', 14593 => '𓏎', 14594 => '𓏏', 14595 => '𓏐', 14596 => '𓏑', 14597 => '𓏒', 14598 => '𓏓', 14599 => '𓏔', 14600 => '𓏕', 14601 => '𓏖', 14602 => '𓏗', 14603 => '𓏘', 14604 => '𓏙', 14605 => '𓏚', 14606 => '𓏛', 14607 => '𓏜', 14608 => '𓏝', 14609 => '𓏞', 14610 => '𓏟', 14611 => '𓏠', 14612 => '𓏡', 14613 => '𓏢', 14614 => '𓏣', 14615 => '𓏤', 14616 => '𓏥', 14617 => '𓏦', 14618 => '𓏧', 14619 => '𓏨', 14620 => '𓏩', 14621 => '𓏪', 14622 => '𓏫', 14623 => '𓏬', 14624 => '𓏭', 14625 => '𓏮', 14626 => '𓏯', 14627 => '𓏰', 14628 => '𓏱', 14629 => '𓏲', 14630 => '𓏳', 14631 => '𓏴', 14632 => '𓏵', 14633 => '𓏶', 14634 => '𓏷', 14635 => '𓏸', 14636 => '𓏹', 14637 => '𓏺', 14638 => '𓏻', 14639 => '𓏼', 14640 => '𓏽', 14641 => '𓏾', 14642 => '𓏿', 14643 => '𓐀', 14644 => '𓐁', 14645 => '𓐂', 14646 => '𓐃', 14647 => '𓐄', 14648 => '𓐅', 14649 => '𓐆', 14650 => '𓐇', 14651 => '𓐈', 14652 => '𓐉', 14653 => '𓐊', 14654 => '𓐋', 14655 => '𓐌', 14656 => '𓐍', 14657 => '𓐎', 14658 => '𓐏', 14659 => '𓐐', 14660 => '𓐑', 14661 => '𓐒', 14662 => '𓐓', 14663 => '𓐔', 14664 => '𓐕', 14665 => '𓐖', 14666 => '𓐗', 14667 => '𓐘', 14668 => '𓐙', 14669 => '𓐚', 14670 => '𓐛', 14671 => '𓐜', 14672 => '𓐝', 14673 => '𓐞', 14674 => '𓐟', 14675 => '𓐠', 14676 => '𓐡', 14677 => '𓐢', 14678 => '𓐣', 14679 => '𓐤', 14680 => '𓐥', 14681 => '𓐦', 14682 => '𓐧', 14683 => '𓐨', 14684 => '𓐩', 14685 => '𓐪', 14686 => '𓐫', 14687 => '𓐬', 14688 => '𓐭', 14689 => '𓐮', 14690 => '㆒', 14691 => '㆜', 14692 => '㆔', 14693 => '㆖', 14694 => '㆘', 14695 => '㆛', 14696 => '㆗', 14697 => '㆚', 14698 => '㆓', 14699 => '🈘', 14700 => '㆟', 14701 => '🈞', 14702 => '🈠', 14703 => '🈜', 14704 => '🈹', 14705 => '🈒', 14706 => '🉑', 14707 => '🈮', 14708 => '🈴', 14709 => '🈥', 14710 => '🈺', 14711 => '㆕', 14712 => '㆞', 14713 => '🈤', 14714 => '🈕', 14715 => '㆝', 14716 => '🈑', 14717 => '🈬', 14718 => '🈝', 14719 => '🉐', 14720 => '🈐', 14721 => '🈱', 14722 => '🈧', 14723 => '🈯', 14724 => '🈨', 14725 => '🈛', 14726 => '🈟', 14727 => '🈙', 14728 => '🈷', 14729 => '🈶', 14730 => '🈵', 14731 => '🈦', 14732 => '🈚', 14733 => '🈢', 14734 => '㆙', 14735 => '🈸', 14736 => '🈲', 14737 => '🈳', 14738 => '🈡', 14739 => '🈖', 14740 => '🈣', 14741 => '🈰', 14742 => '🈫',]
An object representing a primary or replica DB position in a replicated setup.
Internal interface between a database object and load balancer.
Advanced database interface for IDatabase handles that include maintenance methods.
A database connection without write operations.
getServerVersion()
A string describing the current software version.
$source