Commit
·
5aa2969
1
Parent(s):
9bdb7d4
Sanskrit tokenizer
Browse files- .gitignore +23 -0
- README.md +89 -0
- data/paired_tokens.bpe +4745 -0
- data/vocab.bpe +0 -0
- requirements.txt +5 -0
- src/app.py +119 -0
- src/playground.ipynb +593 -0
- src/tokenizer.py +129 -0
- static/mini_sanskrit.txt +0 -0
- static/sanskrit.txt +0 -0
- tests/__init__.py +0 -0
- tests/test_tokenizer.py +59 -0
.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Ignore Python cache files
|
2 |
+
__pycache__/
|
3 |
+
*.py[cod]
|
4 |
+
*$py.class
|
5 |
+
|
6 |
+
# Ignore virtual environment
|
7 |
+
venv/
|
8 |
+
env/
|
9 |
+
.venv/
|
10 |
+
|
11 |
+
|
12 |
+
# Ignore trained model files
|
13 |
+
model_mnist_*.pth
|
14 |
+
|
15 |
+
# Ignore Jupyter Notebook checkpoints
|
16 |
+
.ipynb_checkpoints/
|
17 |
+
|
18 |
+
# Ignore system files
|
19 |
+
.DS_Store
|
20 |
+
Thumbs.db
|
21 |
+
|
22 |
+
# Ignore logs
|
23 |
+
*.log
|
README.md
CHANGED
@@ -11,3 +11,92 @@ short_description: Sanskrit Tokenizer Demo
|
|
11 |
---
|
12 |
|
13 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
---
|
12 |
|
13 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
14 |
+
|
15 |
+
# Sanskrit BPE Tokenizer
|
16 |
+
|
17 |
+
This is a Byte-Pair Encoding (BPE) tokenizer specifically designed for Sanskrit text. It provides a web interface for both training the tokenizer and using it to encode/decode text.
|
18 |
+
|
19 |
+
## Features
|
20 |
+
|
21 |
+
- Train BPE tokenizer on custom Sanskrit text
|
22 |
+
- Tokenize Sanskrit text using the trained model
|
23 |
+
- Verify tokenization accuracy through decode/encode cycle
|
24 |
+
- User-friendly web interface
|
25 |
+
|
26 |
+
## Usage
|
27 |
+
|
28 |
+
1. Go to the "Train" tab and paste your Sanskrit training text
|
29 |
+
2. Click "Train Tokenizer" to train the model
|
30 |
+
3. Switch to the "Tokenize" tab to tokenize new text
|
31 |
+
4. Enter text and click "Tokenize" to see the results
|
32 |
+
|
33 |
+
## Example Text
|
34 |
+
```
|
35 |
+
चीराण्यपास्याज्जनकस्य कन्या नेयं प्रतिज्ञा मम दत्तपूर्वा।
|
36 |
+
यथासुखं गच्छतु राजपुत्री वनं समग्रा सह सर्वरत्नैः॥
|
37 |
+
```
|
38 |
+
|
39 |
+
# To deploy this to Hugging Face Spaces:
|
40 |
+
|
41 |
+
1. Create a new Space on Hugging Face:
|
42 |
+
```bash
|
43 |
+
huggingface-cli login
|
44 |
+
huggingface-cli repo create sanskrit-tokenizer-demo --type space
|
45 |
+
```
|
46 |
+
2. Initialize git and push your code:
|
47 |
+
```bash
|
48 |
+
git init
|
49 |
+
git add .
|
50 |
+
git commit -m "Initial commit"
|
51 |
+
git remote add origin https://huggingface.co/spaces/your-username/sanskrit-tokenizer-demo
|
52 |
+
git push -u origin main
|
53 |
+
```
|
54 |
+
|
55 |
+
# Steps to Run Locally
|
56 |
+
1. Create and activate a virtual environment:
|
57 |
+
```bash
|
58 |
+
python -m venv venv
|
59 |
+
source venv/bin/activate # On Windows: venv\Scripts\activate
|
60 |
+
```
|
61 |
+
|
62 |
+
2. Install the requirements and the Hugging Face CLI:
|
63 |
+
```bash
|
64 |
+
pip install -r requirements.txt
|
65 |
+
pip install --upgrade huggingface-hub
|
66 |
+
```
|
67 |
+
|
68 |
+
4. To run the app:
|
69 |
+
```bash
|
70 |
+
python src/app.py
|
71 |
+
```
|
72 |
+
The interface will be available at `http://localhost:7860` by default.
|
73 |
+
|
74 |
+
# Logs
|
75 |
+
|
76 |
+
Orignal (before Hugging Space code):
|
77 |
+
```
|
78 |
+
(venv) gitesh.grover@Giteshs-MacBook-Pro ai-era-assignment11 % python src/main.py
|
79 |
+
Reading file...
|
80 |
+
Length of training dataset for token 620958
|
81 |
+
UTF-8 tokens length (without considering regex) 1719701
|
82 |
+
Preprocessing tokens...
|
83 |
+
UTF-8 Split tokens length (due to regex) 77799
|
84 |
+
Training BPE...
|
85 |
+
Learning BPE: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████| 4744/4744 [06:21<00:00, 12.45it/s]
|
86 |
+
Tokenizer training completed in 381.08 seconds
|
87 |
+
Vocab size: 5000
|
88 |
+
Original tokens length 1719701, while updated tokens length 77799
|
89 |
+
Compression Ratio 22.10
|
90 |
+
Saving Tokenizer Vocab in files...
|
91 |
+
Testing the validity of tokenizer...
|
92 |
+
True
|
93 |
+
```
|
94 |
+
|
95 |
+
After Hugging Space implementation:
|
96 |
+
```
|
97 |
+
Learning BPE: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████| 4744/4744 [03:25<00:00, 23.07it/s]
|
98 |
+
|
99 |
+
(Huggingface app output)
|
100 |
+
Training completed! Vocabulary size: 5000 and Compression Ratio: 9.42
|
101 |
+
|
102 |
+
```
|
data/paired_tokens.bpe
ADDED
@@ -0,0 +1,4745 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Token version 1
|
2 |
+
(224, 164):256
|
3 |
+
(224, 165):257
|
4 |
+
(257, 141):258
|
5 |
+
(32, 256):259
|
6 |
+
(258, 256):260
|
7 |
+
(256, 190):261
|
8 |
+
(261, 256):262
|
9 |
+
(256, 191):263
|
10 |
+
(256, 164):264
|
11 |
+
(256, 176):265
|
12 |
+
(257, 129):266
|
13 |
+
(257, 135):267
|
14 |
+
(263, 256):268
|
15 |
+
(260, 175):269
|
16 |
+
(256, 168):270
|
17 |
+
(256, 174):271
|
18 |
+
(260, 176):272
|
19 |
+
(256, 130):273
|
20 |
+
(256, 184):274
|
21 |
+
(256, 181):275
|
22 |
+
(257, 139):276
|
23 |
+
(260, 164):277
|
24 |
+
(257, 164):278
|
25 |
+
(259, 184):279
|
26 |
+
(266, 256):280
|
27 |
+
(257, 165):281
|
28 |
+
(259, 170):282
|
29 |
+
(260, 181):283
|
30 |
+
(256, 131):284
|
31 |
+
(256, 149):285
|
32 |
+
(259, 164):286
|
33 |
+
(257, 128):287
|
34 |
+
(256, 175):288
|
35 |
+
(259, 181):289
|
36 |
+
(262, 168):290
|
37 |
+
(256, 166):291
|
38 |
+
(256, 185):292
|
39 |
+
(259, 149):293
|
40 |
+
(256, 182):294
|
41 |
+
(259, 174):295
|
42 |
+
(257, 131):296
|
43 |
+
(256, 170):297
|
44 |
+
(265, 260):298
|
45 |
+
(263, 264):299
|
46 |
+
(257, 136):300
|
47 |
+
(259, 168):301
|
48 |
+
(262, 174):302
|
49 |
+
(259, 154):303
|
50 |
+
(256, 183):304
|
51 |
+
(262, 130):305
|
52 |
+
(259, 166):306
|
53 |
+
(262, 176):307
|
54 |
+
(259, 176):308
|
55 |
+
(257, 130):309
|
56 |
+
(262, 164):310
|
57 |
+
(256, 163):311
|
58 |
+
(260, 174):312
|
59 |
+
(260, 183):313
|
60 |
+
(259, 182):314
|
61 |
+
(282, 272):315
|
62 |
+
(256, 165):316
|
63 |
+
(259, 173):317
|
64 |
+
(260, 154):318
|
65 |
+
(259, 175):319
|
66 |
+
(256, 178):320
|
67 |
+
(271, 258):321
|
68 |
+
(256, 173):322
|
69 |
+
(262, 184):323
|
70 |
+
(262, 131):324
|
71 |
+
(274, 277):325
|
72 |
+
(256, 154):326
|
73 |
+
(256, 151):327
|
74 |
+
(256, 156):328
|
75 |
+
(274, 269):329
|
76 |
+
(267, 270):330
|
77 |
+
(266, 265):331
|
78 |
+
(270, 277):332
|
79 |
+
(289, 268):333
|
80 |
+
(284, 278):334
|
81 |
+
(257, 140):335
|
82 |
+
(296, 264):336
|
83 |
+
(285, 313):337
|
84 |
+
(259, 185):338
|
85 |
+
(262, 175):339
|
86 |
+
(268, 168):340
|
87 |
+
(256, 167):341
|
88 |
+
(265, 283):342
|
89 |
+
(295, 292):343
|
90 |
+
(284, 281):344
|
91 |
+
(264, 272):345
|
92 |
+
(262, 166):346
|
93 |
+
(268, 183):347
|
94 |
+
(260, 167):348
|
95 |
+
(259, 151):349
|
96 |
+
(262, 170):350
|
97 |
+
(308, 262):351
|
98 |
+
(268, 181):352
|
99 |
+
(259, 172):353
|
100 |
+
(260, 168):354
|
101 |
+
(262, 163):355
|
102 |
+
(264, 263):356
|
103 |
+
(267, 275):357
|
104 |
+
(256, 189):358
|
105 |
+
(290, 258):359
|
106 |
+
(264, 267):360
|
107 |
+
(262, 182):361
|
108 |
+
(262, 154):362
|
109 |
+
(260, 159):363
|
110 |
+
(262, 181):364
|
111 |
+
(294, 318):365
|
112 |
+
(321, 281):366
|
113 |
+
(260, 165):367
|
114 |
+
(298, 174):368
|
115 |
+
(280, 166):369
|
116 |
+
(259, 156):370
|
117 |
+
(264, 258):371
|
118 |
+
(267, 304):372
|
119 |
+
(321, 278):373
|
120 |
+
(266, 264):374
|
121 |
+
(283, 261):375
|
122 |
+
(263, 265):376
|
123 |
+
(262, 149):377
|
124 |
+
(279, 271):378
|
125 |
+
(260, 166):379
|
126 |
+
(259, 133):380
|
127 |
+
(262, 178):381
|
128 |
+
(262, 185):382
|
129 |
+
(260, 170):383
|
130 |
+
(282, 265):384
|
131 |
+
(276, 358):385
|
132 |
+
(279, 342):386
|
133 |
+
(280, 149):387
|
134 |
+
(260, 155):388
|
135 |
+
(296, 304):389
|
136 |
+
(264, 269):390
|
137 |
+
(351, 156):391
|
138 |
+
(259, 167):392
|
139 |
+
(153, 260):393
|
140 |
+
(300, 275):394
|
141 |
+
(259, 137):395
|
142 |
+
(279, 273):396
|
143 |
+
(268, 182):397
|
144 |
+
(275, 362):398
|
145 |
+
(280, 183):399
|
146 |
+
(280, 170):400
|
147 |
+
(266, 271):401
|
148 |
+
(316, 261):402
|
149 |
+
(264, 277):403
|
150 |
+
(268, 166):404
|
151 |
+
(268, 170):405
|
152 |
+
(270, 269):406
|
153 |
+
(268, 131):407
|
154 |
+
(266, 270):408
|
155 |
+
(256, 172):409
|
156 |
+
(262, 151):410
|
157 |
+
(259, 178):411
|
158 |
+
(262, 167):412
|
159 |
+
(324, 278):413
|
160 |
+
(268, 175):414
|
161 |
+
(262, 173):415
|
162 |
+
(310, 312):416
|
163 |
+
(270, 258):417
|
164 |
+
(268, 174):418
|
165 |
+
(269, 273):419
|
166 |
+
(286, 283):420
|
167 |
+
(268, 149):421
|
168 |
+
(268, 130):422
|
169 |
+
(274, 312):423
|
170 |
+
(260, 184):424
|
171 |
+
(265, 277):425
|
172 |
+
(276, 285):426
|
173 |
+
(369, 348):427
|
174 |
+
(387, 277):428
|
175 |
+
(260, 161):429
|
176 |
+
(260, 158):430
|
177 |
+
(260, 160):431
|
178 |
+
(286, 267):432
|
179 |
+
(261, 278):433
|
180 |
+
(259, 135):434
|
181 |
+
(256, 133):435
|
182 |
+
(298, 183):436
|
183 |
+
(267, 291):437
|
184 |
+
(274, 273):438
|
185 |
+
(264, 276):439
|
186 |
+
(323, 277):440
|
187 |
+
(280, 131):441
|
188 |
+
(262, 156):442
|
189 |
+
(256, 393):443
|
190 |
+
(286, 266):444
|
191 |
+
(287, 264):445
|
192 |
+
(287, 265):446
|
193 |
+
(302, 258):447
|
194 |
+
(267, 264):448
|
195 |
+
(267, 294):449
|
196 |
+
(269, 271):450
|
197 |
+
(389, 363):451
|
198 |
+
(326, 388):452
|
199 |
+
(280, 163):453
|
200 |
+
(264, 284):454
|
201 |
+
(310, 258):455
|
202 |
+
(317, 275):456
|
203 |
+
(324, 281):457
|
204 |
+
(290, 305):458
|
205 |
+
(347, 269):459
|
206 |
+
(272, 275):460
|
207 |
+
(288, 261):461
|
208 |
+
(272, 271):462
|
209 |
+
(267, 311):463
|
210 |
+
(270, 273):464
|
211 |
+
(288, 276):465
|
212 |
+
(361, 318):466
|
213 |
+
(308, 302):467
|
214 |
+
(300, 284):468
|
215 |
+
(286, 291):469
|
216 |
+
(270, 354):470
|
217 |
+
(306, 357):471
|
218 |
+
(266, 275):472
|
219 |
+
(279, 292):473
|
220 |
+
(280, 167):474
|
221 |
+
(288, 273):475
|
222 |
+
(259, 143):476
|
223 |
+
(293, 336):477
|
224 |
+
(287, 271):478
|
225 |
+
(260, 149):479
|
226 |
+
(287, 275):480
|
227 |
+
(297, 272):481
|
228 |
+
(314, 272):482
|
229 |
+
(298, 163):483
|
230 |
+
(290, 263):484
|
231 |
+
(290, 277):485
|
232 |
+
(256, 150):486
|
233 |
+
(280, 178):487
|
234 |
+
(379, 272):488
|
235 |
+
(266, 345):489
|
236 |
+
(332, 263):490
|
237 |
+
(395, 398):491
|
238 |
+
(274, 367):492
|
239 |
+
(295, 267):493
|
240 |
+
(282, 331):494
|
241 |
+
(338, 263):495
|
242 |
+
(294, 269):496
|
243 |
+
(297, 263):497
|
244 |
+
(267, 278):498
|
245 |
+
(279, 283):499
|
246 |
+
(291, 269):500
|
247 |
+
(265, 273):501
|
248 |
+
(293, 313):502
|
249 |
+
(372, 266):503
|
250 |
+
(300, 265):504
|
251 |
+
(268, 173):505
|
252 |
+
(353, 272):506
|
253 |
+
(302, 263):507
|
254 |
+
(280, 182):508
|
255 |
+
(267, 281):509
|
256 |
+
(307, 367):510
|
257 |
+
(268, 163):511
|
258 |
+
(260, 173):512
|
259 |
+
(280, 173):513
|
260 |
+
(256, 152):514
|
261 |
+
(264, 273):515
|
262 |
+
(268, 185):516
|
263 |
+
(269, 276):517
|
264 |
+
(347, 431):518
|
265 |
+
(260, 163):519
|
266 |
+
(274, 283):520
|
267 |
+
(285, 277):521
|
268 |
+
(371, 281):522
|
269 |
+
(268, 184):523
|
270 |
+
(289, 269):524
|
271 |
+
(274, 263):525
|
272 |
+
(266, 273):526
|
273 |
+
(298, 182):527
|
274 |
+
(280, 150):528
|
275 |
+
(261, 281):529
|
276 |
+
(260, 156):530
|
277 |
+
(309, 297):531
|
278 |
+
(276, 297):532
|
279 |
+
(325, 266):533
|
280 |
+
(32, 281):534
|
281 |
+
(266, 298):535
|
282 |
+
(356, 281):536
|
283 |
+
(268, 167):537
|
284 |
+
(268, 151):538
|
285 |
+
(285, 272):539
|
286 |
+
(283, 265):540
|
287 |
+
(259, 134):541
|
288 |
+
(443, 149):542
|
289 |
+
(293, 272):543
|
290 |
+
(280, 151):544
|
291 |
+
(264, 424):545
|
292 |
+
(315, 264):546
|
293 |
+
(317, 309):547
|
294 |
+
(267, 288):548
|
295 |
+
(274, 271):549
|
296 |
+
(262, 172):550
|
297 |
+
(447, 278):551
|
298 |
+
(392, 368):552
|
299 |
+
(269, 267):553
|
300 |
+
(287, 270):554
|
301 |
+
(299, 273):555
|
302 |
+
(291, 258):556
|
303 |
+
(268, 154):557
|
304 |
+
(289, 300):558
|
305 |
+
(269, 261):559
|
306 |
+
(266, 398):560
|
307 |
+
(312, 311):561
|
308 |
+
(269, 275):562
|
309 |
+
(263, 298):563
|
310 |
+
(264, 305):564
|
311 |
+
(309, 265):565
|
312 |
+
(328, 430):566
|
313 |
+
(274, 261):567
|
314 |
+
(314, 265):568
|
315 |
+
(158, 318):569
|
316 |
+
(359, 278):570
|
317 |
+
(260, 172):571
|
318 |
+
(260, 178):572
|
319 |
+
(296, 292):573
|
320 |
+
(269, 339):574
|
321 |
+
(337, 269):575
|
322 |
+
(377, 313):576
|
323 |
+
(286, 345):577
|
324 |
+
(256, 143):578
|
325 |
+
(355, 263):579
|
326 |
+
(276, 291):580
|
327 |
+
(299, 272):581
|
328 |
+
(293, 381):582
|
329 |
+
(355, 429):583
|
330 |
+
(333, 182):584
|
331 |
+
(350, 263):585
|
332 |
+
(296, 297):586
|
333 |
+
(299, 261):587
|
334 |
+
(280, 185):588
|
335 |
+
(276, 304):589
|
336 |
+
(327, 272):590
|
337 |
+
(311, 429):591
|
338 |
+
(282, 408):592
|
339 |
+
(323, 269):593
|
340 |
+
(149, 313):594
|
341 |
+
(282, 489):595
|
342 |
+
(296, 294):596
|
343 |
+
(268, 178):597
|
344 |
+
(306, 451):598
|
345 |
+
(271, 270):599
|
346 |
+
(289, 261):600
|
347 |
+
(331, 283):601
|
348 |
+
(286, 329):602
|
349 |
+
(270, 379):603
|
350 |
+
(333, 166):604
|
351 |
+
(287, 297):605
|
352 |
+
(293, 422):606
|
353 |
+
(270, 348):607
|
354 |
+
(292, 273):608
|
355 |
+
(276, 341):609
|
356 |
+
(447, 281):610
|
357 |
+
(360, 278):611
|
358 |
+
(319, 291):612
|
359 |
+
(353, 292):613
|
360 |
+
(265, 267):614
|
361 |
+
(343, 307):615
|
362 |
+
(268, 156):616
|
363 |
+
(310, 272):617
|
364 |
+
(330, 488):618
|
365 |
+
(315, 390):619
|
366 |
+
(303, 278):620
|
367 |
+
(290, 273):621
|
368 |
+
(328, 288):622
|
369 |
+
(274, 272):623
|
370 |
+
(296, 291):624
|
371 |
+
(319, 402):625
|
372 |
+
(306, 283):626
|
373 |
+
(293, 316):627
|
374 |
+
(308, 316):628
|
375 |
+
(294, 283):629
|
376 |
+
(152, 275):630
|
377 |
+
(322, 309):631
|
378 |
+
(287, 304):632
|
379 |
+
(309, 320):633
|
380 |
+
(476, 275):634
|
381 |
+
(317, 307):635
|
382 |
+
(301, 265):636
|
383 |
+
(262, 183):637
|
384 |
+
(353, 320):638
|
385 |
+
(280, 154):639
|
386 |
+
(289, 326):640
|
387 |
+
(351, 594):641
|
388 |
+
(264, 261):642
|
389 |
+
(443, 151):643
|
390 |
+
(416, 270):644
|
391 |
+
(393, 151):645
|
392 |
+
(370, 270):646
|
393 |
+
(300, 298):647
|
394 |
+
(351, 630):648
|
395 |
+
(355, 305):649
|
396 |
+
(403, 271):650
|
397 |
+
(322, 269):651
|
398 |
+
(360, 281):652
|
399 |
+
(374, 375):653
|
400 |
+
(346, 258):654
|
401 |
+
(407, 278):655
|
402 |
+
(295, 271):656
|
403 |
+
(295, 270):657
|
404 |
+
(303, 394):658
|
405 |
+
(315, 275):659
|
406 |
+
(297, 265):660
|
407 |
+
(343, 550):661
|
408 |
+
(282, 583):662
|
409 |
+
(411, 426):663
|
410 |
+
(288, 267):664
|
411 |
+
(288, 302):665
|
412 |
+
(286, 402):666
|
413 |
+
(271, 428):667
|
414 |
+
(271, 400):668
|
415 |
+
(286, 423):669
|
416 |
+
(350, 277):670
|
417 |
+
(347, 363):671
|
418 |
+
(340, 354):672
|
419 |
+
(293, 307):673
|
420 |
+
(279, 367):674
|
421 |
+
(298, 165):675
|
422 |
+
(371, 278):676
|
423 |
+
(292, 312):677
|
424 |
+
(336, 277):678
|
425 |
+
(338, 269):679
|
426 |
+
(259, 152):680
|
427 |
+
(325, 272):681
|
428 |
+
(286, 272):682
|
429 |
+
(356, 278):683
|
430 |
+
(279, 312):684
|
431 |
+
(391, 261):685
|
432 |
+
(280, 156):686
|
433 |
+
(276, 265):687
|
434 |
+
(327, 275):688
|
435 |
+
(264, 344):689
|
436 |
+
(641, 274):690
|
437 |
+
(271, 290):691
|
438 |
+
(332, 267):692
|
439 |
+
(287, 288):693
|
440 |
+
(557, 388):694
|
441 |
+
(282, 309):695
|
442 |
+
(289, 446):696
|
443 |
+
(270, 366):697
|
444 |
+
(275, 269):698
|
445 |
+
(286, 275):699
|
446 |
+
(333, 181):700
|
447 |
+
(397, 318):701
|
448 |
+
(665, 323):702
|
449 |
+
(285, 307):703
|
450 |
+
(289, 265):704
|
451 |
+
(298, 156):705
|
452 |
+
(269, 305):706
|
453 |
+
(285, 336):707
|
454 |
+
(412, 574):708
|
455 |
+
(441, 486):709
|
456 |
+
(333, 168):710
|
457 |
+
(386, 267):711
|
458 |
+
(304, 363):712
|
459 |
+
(317, 272):713
|
460 |
+
(264, 334):714
|
461 |
+
(460, 287):715
|
462 |
+
(282, 299):716
|
463 |
+
(271, 269):717
|
464 |
+
(291, 272):718
|
465 |
+
(299, 269):719
|
466 |
+
(265, 442):720
|
467 |
+
(265, 311):721
|
468 |
+
(340, 287):722
|
469 |
+
(267, 292):723
|
470 |
+
(158, 530):724
|
471 |
+
(283, 273):725
|
472 |
+
(282, 264):726
|
473 |
+
(286, 273):727
|
474 |
+
(264, 281):728
|
475 |
+
(271, 267):729
|
476 |
+
(294, 272):730
|
477 |
+
(286, 297):731
|
478 |
+
(271, 357):732
|
479 |
+
(276, 292):733
|
480 |
+
(300, 334):734
|
481 |
+
(319, 316):735
|
482 |
+
(298, 167):736
|
483 |
+
(359, 281):737
|
484 |
+
(290, 269):738
|
485 |
+
(434, 275):739
|
486 |
+
(494, 399):740
|
487 |
+
(372, 431):741
|
488 |
+
(662, 275):742
|
489 |
+
(299, 276):743
|
490 |
+
(264, 375):744
|
491 |
+
(279, 277):745
|
492 |
+
(260, 151):746
|
493 |
+
(293, 368):747
|
494 |
+
(259, 150):748
|
495 |
+
(306, 272):749
|
496 |
+
(317, 265):750
|
497 |
+
(336, 269):751
|
498 |
+
(279, 445):752
|
499 |
+
(299, 258):753
|
500 |
+
(271, 383):754
|
501 |
+
(506, 677):755
|
502 |
+
(308, 337):756
|
503 |
+
(320, 273):757
|
504 |
+
(291, 527):758
|
505 |
+
(256, 159):759
|
506 |
+
(395, 297):760
|
507 |
+
(632, 312):761
|
508 |
+
(598, 375):762
|
509 |
+
(303, 281):763
|
510 |
+
(264, 287):764
|
511 |
+
(370, 327):765
|
512 |
+
(309, 304):766
|
513 |
+
(306, 352):767
|
514 |
+
(351, 181):768
|
515 |
+
(768, 311):769
|
516 |
+
(409, 715):770
|
517 |
+
(276, 326):771
|
518 |
+
(256, 135):772
|
519 |
+
(346, 269):773
|
520 |
+
(407, 281):774
|
521 |
+
(264, 325):775
|
522 |
+
(300, 365):776
|
523 |
+
(267, 358):777
|
524 |
+
(301, 302):778
|
525 |
+
(298, 170):779
|
526 |
+
(289, 377):780
|
527 |
+
(335, 278):781
|
528 |
+
(299, 334):782
|
529 |
+
(308, 311):783
|
530 |
+
(713, 310):784
|
531 |
+
(391, 417):785
|
532 |
+
(300, 344):786
|
533 |
+
(287, 337):787
|
534 |
+
(482, 653):788
|
535 |
+
(337, 561):789
|
536 |
+
(256, 161):790
|
537 |
+
(449, 540):791
|
538 |
+
(293, 331):792
|
539 |
+
(256, 569):793
|
540 |
+
(299, 263):794
|
541 |
+
(293, 265):795
|
542 |
+
(271, 352):796
|
543 |
+
(369, 272):797
|
544 |
+
(627, 273):798
|
545 |
+
(286, 454):799
|
546 |
+
(412, 405):800
|
547 |
+
(299, 413):801
|
548 |
+
(276, 322):802
|
549 |
+
(288, 417):803
|
550 |
+
(317, 478):804
|
551 |
+
(523, 277):805
|
552 |
+
(384, 271):806
|
553 |
+
(326, 318):807
|
554 |
+
(420, 273):808
|
555 |
+
(306, 709):809
|
556 |
+
(264, 271):810
|
557 |
+
(322, 275):811
|
558 |
+
(262, 165):812
|
559 |
+
(335, 265):813
|
560 |
+
(279, 331):814
|
561 |
+
(328, 270):815
|
562 |
+
(286, 316):816
|
563 |
+
(276, 271):817
|
564 |
+
(333, 183):818
|
565 |
+
(314, 345):819
|
566 |
+
(456, 459):820
|
567 |
+
(296, 316):821
|
568 |
+
(319, 427):822
|
569 |
+
(319, 474):823
|
570 |
+
(370, 480):824
|
571 |
+
(289, 270):825
|
572 |
+
(296, 311):826
|
573 |
+
(350, 269):827
|
574 |
+
(305, 365):828
|
575 |
+
(266, 325):829
|
576 |
+
(276, 311):830
|
577 |
+
(301, 299):831
|
578 |
+
(349, 453):832
|
579 |
+
(327, 354):833
|
580 |
+
(301, 586):834
|
581 |
+
(291, 357):835
|
582 |
+
(315, 414):836
|
583 |
+
(291, 283):837
|
584 |
+
(382, 561):838
|
585 |
+
(543, 427):839
|
586 |
+
(275, 267):840
|
587 |
+
(278, 278):841
|
588 |
+
(299, 366):842
|
589 |
+
(279, 291):843
|
590 |
+
(282, 793):844
|
591 |
+
(274, 383):845
|
592 |
+
(518, 376):846
|
593 |
+
(266, 368):847
|
594 |
+
(378, 383):848
|
595 |
+
(315, 322):849
|
596 |
+
(299, 373):850
|
597 |
+
(317, 688):851
|
598 |
+
(266, 274):852
|
599 |
+
(341, 368):853
|
600 |
+
(264, 278):854
|
601 |
+
(436, 322):855
|
602 |
+
(315, 292):856
|
603 |
+
(300, 285):857
|
604 |
+
(279, 390):858
|
605 |
+
(295, 461):859
|
606 |
+
(267, 285):860
|
607 |
+
(340, 277):861
|
608 |
+
(399, 363):862
|
609 |
+
(256, 137):863
|
610 |
+
(299, 375):864
|
611 |
+
(264, 385):865
|
612 |
+
(298, 185):866
|
613 |
+
(270, 373):867
|
614 |
+
(296, 327):868
|
615 |
+
(578, 275):869
|
616 |
+
(270, 271):870
|
617 |
+
(265, 531):871
|
618 |
+
(450, 290):872
|
619 |
+
(353, 427):873
|
620 |
+
(421, 313):874
|
621 |
+
(289, 274):875
|
622 |
+
(291, 348):876
|
623 |
+
(256, 162):877
|
624 |
+
(282, 496):878
|
625 |
+
(301, 352):879
|
626 |
+
(338, 265):880
|
627 |
+
(320, 426):881
|
628 |
+
(267, 326):882
|
629 |
+
(262, 645):883
|
630 |
+
(285, 273):884
|
631 |
+
(469, 261):885
|
632 |
+
(264, 283):886
|
633 |
+
(290, 302):887
|
634 |
+
(299, 344):888
|
635 |
+
(264, 329):889
|
636 |
+
(349, 452):890
|
637 |
+
(404, 273):891
|
638 |
+
(619, 560):892
|
639 |
+
(333, 149):893
|
640 |
+
(661, 320):894
|
641 |
+
(270, 488):895
|
642 |
+
(282, 510):896
|
643 |
+
(262, 189):897
|
644 |
+
(270, 312):898
|
645 |
+
(295, 305):899
|
646 |
+
(293, 425):900
|
647 |
+
(279, 401):901
|
648 |
+
(477, 375):902
|
649 |
+
(416, 261):903
|
650 |
+
(300, 342):904
|
651 |
+
(274, 330):905
|
652 |
+
(287, 273):906
|
653 |
+
(264, 454):907
|
654 |
+
(333, 170):908
|
655 |
+
(282, 350):909
|
656 |
+
(301, 376):910
|
657 |
+
(343, 644):911
|
658 |
+
(268, 172):912
|
659 |
+
(267, 328):913
|
660 |
+
(271, 355):914
|
661 |
+
(264, 297):915
|
662 |
+
(280, 172):916
|
663 |
+
(615, 442):917
|
664 |
+
(506, 838):918
|
665 |
+
(306, 294):919
|
666 |
+
(319, 276):920
|
667 |
+
(374, 424):921
|
668 |
+
(289, 341):922
|
669 |
+
(544, 272):923
|
670 |
+
(315, 274):924
|
671 |
+
(290, 265):925
|
672 |
+
(315, 670):926
|
673 |
+
(293, 302):927
|
674 |
+
(695, 342):928
|
675 |
+
(378, 614):929
|
676 |
+
(403, 283):930
|
677 |
+
(328, 269):931
|
678 |
+
(286, 330):932
|
679 |
+
(311, 305):933
|
680 |
+
(270, 283):934
|
681 |
+
(285, 361):935
|
682 |
+
(473, 623):936
|
683 |
+
(295, 307):937
|
684 |
+
(332, 272):938
|
685 |
+
(298, 151):939
|
686 |
+
(286, 439):940
|
687 |
+
(262, 150):941
|
688 |
+
(502, 345):942
|
689 |
+
(317, 761):943
|
690 |
+
(275, 323):944
|
691 |
+
(374, 277):945
|
692 |
+
(306, 331):946
|
693 |
+
(297, 264):947
|
694 |
+
(264, 479):948
|
695 |
+
(269, 310):949
|
696 |
+
(296, 496):950
|
697 |
+
(285, 276):951
|
698 |
+
(301, 271):952
|
699 |
+
(259, 171):953
|
700 |
+
(356, 265):954
|
701 |
+
(332, 276):955
|
702 |
+
(295, 290):956
|
703 |
+
(300, 294):957
|
704 |
+
(349, 331):958
|
705 |
+
(606, 326):959
|
706 |
+
(612, 263):960
|
707 |
+
(532, 271):961
|
708 |
+
(340, 334):962
|
709 |
+
(459, 507):963
|
710 |
+
(411, 789):964
|
711 |
+
(333, 174):965
|
712 |
+
(325, 402):966
|
713 |
+
(287, 483):967
|
714 |
+
(289, 437):968
|
715 |
+
(282, 291):969
|
716 |
+
(337, 311):970
|
717 |
+
(286, 371):971
|
718 |
+
(292, 263):972
|
719 |
+
(276, 650):973
|
720 |
+
(372, 283):974
|
721 |
+
(372, 305):975
|
722 |
+
(335, 281):976
|
723 |
+
(274, 292):977
|
724 |
+
(332, 273):978
|
725 |
+
(349, 264):979
|
726 |
+
(361, 283):980
|
727 |
+
(271, 571):981
|
728 |
+
(301, 563):982
|
729 |
+
(264, 383):983
|
730 |
+
(282, 821):984
|
731 |
+
(300, 406):985
|
732 |
+
(288, 271):986
|
733 |
+
(307, 379):987
|
734 |
+
(406, 276):988
|
735 |
+
(440, 272):989
|
736 |
+
(434, 536):990
|
737 |
+
(279, 528):991
|
738 |
+
(297, 489):992
|
739 |
+
(420, 461):993
|
740 |
+
(288, 284):994
|
741 |
+
(285, 265):995
|
742 |
+
(279, 385):996
|
743 |
+
(333, 154):997
|
744 |
+
(286, 305):998
|
745 |
+
(340, 258):999
|
746 |
+
(923, 480):1000
|
747 |
+
(275, 270):1001
|
748 |
+
(263, 342):1002
|
749 |
+
(547, 271):1003
|
750 |
+
(288, 366):1004
|
751 |
+
(269, 284):1005
|
752 |
+
(267, 390):1006
|
753 |
+
(279, 330):1007
|
754 |
+
(285, 368):1008
|
755 |
+
(363, 272):1009
|
756 |
+
(435, 316):1010
|
757 |
+
(279, 472):1011
|
758 |
+
(319, 428):1012
|
759 |
+
(314, 426):1013
|
760 |
+
(279, 261):1014
|
761 |
+
(297, 496):1015
|
762 |
+
(337, 511):1016
|
763 |
+
(263, 278):1017
|
764 |
+
(404, 348):1018
|
765 |
+
(680, 687):1019
|
766 |
+
(470, 327):1020
|
767 |
+
(626, 616):1021
|
768 |
+
(307, 269):1022
|
769 |
+
(285, 487):1023
|
770 |
+
(508, 318):1024
|
771 |
+
(290, 287):1025
|
772 |
+
(420, 305):1026
|
773 |
+
(274, 267):1027
|
774 |
+
(409, 379):1028
|
775 |
+
(300, 304):1029
|
776 |
+
(296, 337):1030
|
777 |
+
(270, 334):1031
|
778 |
+
(428, 375):1032
|
779 |
+
(391, 430):1033
|
780 |
+
(307, 311):1034
|
781 |
+
(615, 316):1035
|
782 |
+
(336, 273):1036
|
783 |
+
(339, 270):1037
|
784 |
+
(279, 269):1038
|
785 |
+
(403, 542):1039
|
786 |
+
(299, 284):1040
|
787 |
+
(333, 184):1041
|
788 |
+
(416, 328):1042
|
789 |
+
(426, 277):1043
|
790 |
+
(295, 310):1044
|
791 |
+
(380, 270):1045
|
792 |
+
(382, 273):1046
|
793 |
+
(264, 439):1047
|
794 |
+
(309, 270):1048
|
795 |
+
(295, 408):1049
|
796 |
+
(291, 273):1050
|
797 |
+
(338, 270):1051
|
798 |
+
(270, 344):1052
|
799 |
+
(315, 355):1053
|
800 |
+
(325, 283):1054
|
801 |
+
(831, 419):1055
|
802 |
+
(409, 348):1056
|
803 |
+
(263, 368):1057
|
804 |
+
(293, 335):1058
|
805 |
+
(333, 167):1059
|
806 |
+
(640, 464):1060
|
807 |
+
(279, 335):1061
|
808 |
+
(279, 412):1062
|
809 |
+
(272, 472):1063
|
810 |
+
(279, 1000):1064
|
811 |
+
(315, 291):1065
|
812 |
+
(319, 267):1066
|
813 |
+
(416, 290):1067
|
814 |
+
(288, 291):1068
|
815 |
+
(297, 331):1069
|
816 |
+
(298, 166):1070
|
817 |
+
(384, 273):1071
|
818 |
+
(270, 352):1072
|
819 |
+
(264, 423):1073
|
820 |
+
(787, 519):1074
|
821 |
+
(295, 406):1075
|
822 |
+
(430, 310):1076
|
823 |
+
(262, 159):1077
|
824 |
+
(306, 397):1078
|
825 |
+
(410, 272):1079
|
826 |
+
(289, 267):1080
|
827 |
+
(573, 269):1081
|
828 |
+
(325, 267):1082
|
829 |
+
(287, 790):1083
|
830 |
+
(273, 274):1084
|
831 |
+
(302, 292):1085
|
832 |
+
(301, 516):1086
|
833 |
+
(441, 281):1087
|
834 |
+
(271, 275):1088
|
835 |
+
(272, 273):1089
|
836 |
+
(282, 307):1090
|
837 |
+
(453, 429):1091
|
838 |
+
(823, 846):1092
|
839 |
+
(265, 316):1093
|
840 |
+
(353, 381):1094
|
841 |
+
(271, 323):1095
|
842 |
+
(265, 373):1096
|
843 |
+
(262, 724):1097
|
844 |
+
(267, 356):1098
|
845 |
+
(584, 283):1099
|
846 |
+
(315, 328):1100
|
847 |
+
(314, 513):1101
|
848 |
+
(325, 291):1102
|
849 |
+
(314, 285):1103
|
850 |
+
(297, 269):1104
|
851 |
+
(411, 542):1105
|
852 |
+
(634, 667):1106
|
853 |
+
(264, 302):1107
|
854 |
+
(337, 288):1108
|
855 |
+
(264, 291):1109
|
856 |
+
(661, 382):1110
|
857 |
+
(256, 134):1111
|
858 |
+
(301, 397):1112
|
859 |
+
(333, 156):1113
|
860 |
+
(309, 264):1114
|
861 |
+
(386, 273):1115
|
862 |
+
(750, 264):1116
|
863 |
+
(299, 267):1117
|
864 |
+
(269, 302):1118
|
865 |
+
(293, 586):1119
|
866 |
+
(455, 278):1120
|
867 |
+
(319, 345):1121
|
868 |
+
(262, 569):1122
|
869 |
+
(365, 394):1123
|
870 |
+
(282, 342):1124
|
871 |
+
(289, 925):1125
|
872 |
+
(309, 288):1126
|
873 |
+
(349, 607):1127
|
874 |
+
(282, 1020):1128
|
875 |
+
(361, 272):1129
|
876 |
+
(307, 288):1130
|
877 |
+
(384, 352):1131
|
878 |
+
(314, 264):1132
|
879 |
+
(320, 383):1133
|
880 |
+
(268, 645):1134
|
881 |
+
(303, 585):1135
|
882 |
+
(275, 404):1136
|
883 |
+
(396, 275):1137
|
884 |
+
(265, 637):1138
|
885 |
+
(293, 882):1139
|
886 |
+
(942, 414):1140
|
887 |
+
(275, 957):1141
|
888 |
+
(1141, 754):1142
|
889 |
+
(1142, 1037):1143
|
890 |
+
(857, 548):1144
|
891 |
+
(267, 475):1145
|
892 |
+
(295, 341):1146
|
893 |
+
(293, 418):1147
|
894 |
+
(848, 272):1148
|
895 |
+
(319, 271):1149
|
896 |
+
(271, 309):1150
|
897 |
+
(290, 270):1151
|
898 |
+
(745, 272):1152
|
899 |
+
(285, 302):1153
|
900 |
+
(343, 310):1154
|
901 |
+
(268, 150):1155
|
902 |
+
(323, 331):1156
|
903 |
+
(592, 265):1157
|
904 |
+
(274, 479):1158
|
905 |
+
(288, 373):1159
|
906 |
+
(264, 418):1160
|
907 |
+
(535, 166):1161
|
908 |
+
(350, 272):1162
|
909 |
+
(309, 483):1163
|
910 |
+
(299, 457):1164
|
911 |
+
(301, 405):1165
|
912 |
+
(301, 410):1166
|
913 |
+
(45, 39):1167
|
914 |
+
(293, 508):1168
|
915 |
+
(271, 891):1169
|
916 |
+
(288, 332):1170
|
917 |
+
(271, 322):1171
|
918 |
+
(901, 292):1172
|
919 |
+
(308, 531):1173
|
920 |
+
(268, 152):1174
|
921 |
+
(288, 335):1175
|
922 |
+
(309, 316):1176
|
923 |
+
(803, 281):1177
|
924 |
+
(340, 344):1178
|
925 |
+
(275, 294):1179
|
926 |
+
(360, 304):1180
|
927 |
+
(297, 277):1181
|
928 |
+
(289, 339):1182
|
929 |
+
(604, 269):1183
|
930 |
+
(288, 428):1184
|
931 |
+
(270, 276):1185
|
932 |
+
(311, 273):1186
|
933 |
+
(271, 512):1187
|
934 |
+
(319, 330):1188
|
935 |
+
(283, 320):1189
|
936 |
+
(305, 325):1190
|
937 |
+
(286, 271):1191
|
938 |
+
(303, 290):1192
|
939 |
+
(274, 650):1193
|
940 |
+
(730, 741):1194
|
941 |
+
(987, 633):1195
|
942 |
+
(469, 258):1196
|
943 |
+
(291, 512):1197
|
944 |
+
(684, 336):1198
|
945 |
+
(635, 854):1199
|
946 |
+
(635, 728):1200
|
947 |
+
(287, 278):1201
|
948 |
+
(287, 320):1202
|
949 |
+
(467, 284):1203
|
950 |
+
(392, 270):1204
|
951 |
+
(543, 609):1205
|
952 |
+
(315, 271):1206
|
953 |
+
(272, 485):1207
|
954 |
+
(409, 320):1208
|
955 |
+
(327, 271):1209
|
956 |
+
(309, 271):1210
|
957 |
+
(455, 281):1211
|
958 |
+
(259, 139):1212
|
959 |
+
(700, 537):1213
|
960 |
+
(275, 276):1214
|
961 |
+
(434, 356):1215
|
962 |
+
(264, 610):1216
|
963 |
+
(314, 565):1217
|
964 |
+
(271, 292):1218
|
965 |
+
(362, 318):1219
|
966 |
+
(289, 389):1220
|
967 |
+
(293, 1144):1221
|
968 |
+
(301, 414):1222
|
969 |
+
(291, 723):1223
|
970 |
+
(525, 278):1224
|
971 |
+
(770, 522):1225
|
972 |
+
(624, 348):1226
|
973 |
+
(288, 263):1227
|
974 |
+
(275, 273):1228
|
975 |
+
(270, 346):1229
|
976 |
+
(378, 332):1230
|
977 |
+
(275, 419):1231
|
978 |
+
(315, 294):1232
|
979 |
+
(326, 265):1233
|
980 |
+
(279, 369):1234
|
981 |
+
(315, 288):1235
|
982 |
+
(306, 394):1236
|
983 |
+
(288, 334):1237
|
984 |
+
(984, 352):1238
|
985 |
+
(349, 328):1239
|
986 |
+
(270, 267):1240
|
987 |
+
(467, 329):1241
|
988 |
+
(310, 263):1242
|
989 |
+
(279, 374):1243
|
990 |
+
(783, 267):1244
|
991 |
+
(476, 304):1245
|
992 |
+
(290, 312):1246
|
993 |
+
(289, 336):1247
|
994 |
+
(314, 521):1248
|
995 |
+
(1138, 1009):1249
|
996 |
+
(264, 367):1250
|
997 |
+
(456, 267):1251
|
998 |
+
(508, 272):1252
|
999 |
+
(274, 335):1253
|
1000 |
+
(289, 678):1254
|
1001 |
+
(415, 706):1255
|
1002 |
+
(301, 407):1256
|
1003 |
+
(401, 866):1257
|
1004 |
+
(309, 342):1258
|
1005 |
+
(437, 258):1259
|
1006 |
+
(267, 322):1260
|
1007 |
+
(314, 826):1261
|
1008 |
+
(467, 273):1262
|
1009 |
+
(421, 462):1263
|
1010 |
+
(869, 667):1264
|
1011 |
+
(307, 511):1265
|
1012 |
+
(288, 433):1266
|
1013 |
+
(380, 322):1267
|
1014 |
+
(696, 562):1268
|
1015 |
+
(289, 1030):1269
|
1016 |
+
(279, 307):1270
|
1017 |
+
(302, 269):1271
|
1018 |
+
(275, 446):1272
|
1019 |
+
(437, 273):1273
|
1020 |
+
(276, 398):1274
|
1021 |
+
(32, 278):1275
|
1022 |
+
(274, 346):1276
|
1023 |
+
(314, 539):1277
|
1024 |
+
(303, 264):1278
|
1025 |
+
(405, 272):1279
|
1026 |
+
(325, 273):1280
|
1027 |
+
(259, 155):1281
|
1028 |
+
(590, 302):1282
|
1029 |
+
(364, 285):1283
|
1030 |
+
(289, 291):1284
|
1031 |
+
(977, 623):1285
|
1032 |
+
(988, 406):1286
|
1033 |
+
(705, 408):1287
|
1034 |
+
(760, 708):1288
|
1035 |
+
(384, 269):1289
|
1036 |
+
(554, 305):1290
|
1037 |
+
(441, 278):1291
|
1038 |
+
(295, 588):1292
|
1039 |
+
(309, 425):1293
|
1040 |
+
(275, 436):1294
|
1041 |
+
(341, 269):1295
|
1042 |
+
(297, 310):1296
|
1043 |
+
(317, 718):1297
|
1044 |
+
(274, 374):1298
|
1045 |
+
(289, 381):1299
|
1046 |
+
(349, 376):1300
|
1047 |
+
(256, 171):1301
|
1048 |
+
(328, 274):1302
|
1049 |
+
(290, 267):1303
|
1050 |
+
(436, 311):1304
|
1051 |
+
(510, 273):1305
|
1052 |
+
(592, 284):1306
|
1053 |
+
(545, 269):1307
|
1054 |
+
(289, 323):1308
|
1055 |
+
(631, 275):1309
|
1056 |
+
(343, 364):1310
|
1057 |
+
(916, 348):1311
|
1058 |
+
(780, 450):1312
|
1059 |
+
(582, 267):1313
|
1060 |
+
(287, 285):1314
|
1061 |
+
(301, 290):1315
|
1062 |
+
(279, 985):1316
|
1063 |
+
(271, 410):1317
|
1064 |
+
(297, 291):1318
|
1065 |
+
(319, 371):1319
|
1066 |
+
(286, 310):1320
|
1067 |
+
(319, 294):1321
|
1068 |
+
(752, 261):1322
|
1069 |
+
(401, 307):1323
|
1070 |
+
(299, 433):1324
|
1071 |
+
(275, 265):1325
|
1072 |
+
(289, 464):1326
|
1073 |
+
(546, 405):1327
|
1074 |
+
(399, 383):1328
|
1075 |
+
(306, 527):1329
|
1076 |
+
(1097, 320):1330
|
1077 |
+
(275, 397):1331
|
1078 |
+
(680, 276):1332
|
1079 |
+
(271, 581):1333
|
1080 |
+
(303, 300):1334
|
1081 |
+
(256, 724):1335
|
1082 |
+
(290, 354):1336
|
1083 |
+
(396, 294):1337
|
1084 |
+
(289, 436):1338
|
1085 |
+
(385, 497):1339
|
1086 |
+
(349, 744):1340
|
1087 |
+
(298, 152):1341
|
1088 |
+
(325, 329):1342
|
1089 |
+
(274, 276):1343
|
1090 |
+
(547, 264):1344
|
1091 |
+
(317, 288):1345
|
1092 |
+
(780, 419):1346
|
1093 |
+
(285, 381):1347
|
1094 |
+
(264, 335):1348
|
1095 |
+
(442, 430):1349
|
1096 |
+
(291, 596):1350
|
1097 |
+
(283, 328):1351
|
1098 |
+
(282, 346):1352
|
1099 |
+
(362, 265):1353
|
1100 |
+
(299, 277):1354
|
1101 |
+
(292, 307):1355
|
1102 |
+
(323, 263):1356
|
1103 |
+
(290, 271):1357
|
1104 |
+
(417, 281):1358
|
1105 |
+
(432, 358):1359
|
1106 |
+
(289, 425):1360
|
1107 |
+
(295, 751):1361
|
1108 |
+
(341, 270):1362
|
1109 |
+
(357, 273):1363
|
1110 |
+
(264, 345):1364
|
1111 |
+
(289, 328):1365
|
1112 |
+
(749, 830):1366
|
1113 |
+
(1116, 855):1367
|
1114 |
+
(339, 305):1368
|
1115 |
+
(264, 655):1369
|
1116 |
+
(264, 266):1370
|
1117 |
+
(264, 354):1371
|
1118 |
+
(333, 185):1372
|
1119 |
+
(291, 451):1373
|
1120 |
+
(262, 152):1374
|
1121 |
+
(322, 364):1375
|
1122 |
+
(325, 263):1376
|
1123 |
+
(306, 535):1377
|
1124 |
+
(299, 324):1378
|
1125 |
+
(349, 271):1379
|
1126 |
+
(349, 573):1380
|
1127 |
+
(1176, 297):1381
|
1128 |
+
(302, 571):1382
|
1129 |
+
(300, 320):1383
|
1130 |
+
(269, 327):1384
|
1131 |
+
(372, 363):1385
|
1132 |
+
(467, 276):1386
|
1133 |
+
(332, 265):1387
|
1134 |
+
(279, 400):1388
|
1135 |
+
(317, 425):1389
|
1136 |
+
(306, 591):1390
|
1137 |
+
(396, 288):1391
|
1138 |
+
(399, 273):1392
|
1139 |
+
(370, 290):1393
|
1140 |
+
(287, 514):1394
|
1141 |
+
(322, 276):1395
|
1142 |
+
(295, 868):1396
|
1143 |
+
(343, 415):1397
|
1144 |
+
(287, 322):1398
|
1145 |
+
(404, 272):1399
|
1146 |
+
(675, 273):1400
|
1147 |
+
(295, 261):1401
|
1148 |
+
(303, 539):1402
|
1149 |
+
(482, 374):1403
|
1150 |
+
(338, 264):1404
|
1151 |
+
(286, 269):1405
|
1152 |
+
(258, 278):1406
|
1153 |
+
(300, 368):1407
|
1154 |
+
(275, 570):1408
|
1155 |
+
(639, 269):1409
|
1156 |
+
(279, 779):1410
|
1157 |
+
(340, 273):1411
|
1158 |
+
(822, 267):1412
|
1159 |
+
(265, 337):1413
|
1160 |
+
(288, 474):1414
|
1161 |
+
(908, 272):1415
|
1162 |
+
(289, 362):1416
|
1163 |
+
(299, 526):1417
|
1164 |
+
(282, 335):1418
|
1165 |
+
(287, 294):1419
|
1166 |
+
(317, 276):1420
|
1167 |
+
(274, 342):1421
|
1168 |
+
(332, 284):1422
|
1169 |
+
(535, 173):1423
|
1170 |
+
(804, 905):1424
|
1171 |
+
(370, 310):1425
|
1172 |
+
(469, 283):1426
|
1173 |
+
(945, 271):1427
|
1174 |
+
(341, 364):1428
|
1175 |
+
(319, 566):1429
|
1176 |
+
(350, 264):1430
|
1177 |
+
(289, 697):1431
|
1178 |
+
(1154, 913):1432
|
1179 |
+
(279, 265):1433
|
1180 |
+
(328, 530):1434
|
1181 |
+
(766, 311):1435
|
1182 |
+
(293, 297):1436
|
1183 |
+
(397, 269):1437
|
1184 |
+
(287, 1341):1438
|
1185 |
+
(293, 487):1439
|
1186 |
+
(605, 277):1440
|
1187 |
+
(327, 264):1441
|
1188 |
+
(353, 1309):1442
|
1189 |
+
(267, 271):1443
|
1190 |
+
(295, 302):1444
|
1191 |
+
(323, 266):1445
|
1192 |
+
(271, 307):1446
|
1193 |
+
(307, 277):1447
|
1194 |
+
(953, 320):1448
|
1195 |
+
(269, 285):1449
|
1196 |
+
(275, 344):1450
|
1197 |
+
(301, 347):1451
|
1198 |
+
(396, 1282):1452
|
1199 |
+
(340, 488):1453
|
1200 |
+
(264, 402):1454
|
1201 |
+
(288, 344):1455
|
1202 |
+
(296, 452):1456
|
1203 |
+
(333, 173):1457
|
1204 |
+
(275, 359):1458
|
1205 |
+
(293, 276):1459
|
1206 |
+
(264, 551):1460
|
1207 |
+
(816, 394):1461
|
1208 |
+
(285, 754):1462
|
1209 |
+
(629, 340):1463
|
1210 |
+
(1091, 320):1464
|
1211 |
+
(282, 310):1465
|
1212 |
+
(504, 497):1466
|
1213 |
+
(401, 694):1467
|
1214 |
+
(295, 300):1468
|
1215 |
+
(316, 597):1469
|
1216 |
+
(640, 870):1470
|
1217 |
+
(295, 733):1471
|
1218 |
+
(307, 453):1472
|
1219 |
+
(309, 933):1473
|
1220 |
+
(338, 624):1474
|
1221 |
+
(306, 862):1475
|
1222 |
+
(293, 377):1476
|
1223 |
+
(1080, 327):1477
|
1224 |
+
(417, 278):1478
|
1225 |
+
(315, 445):1479
|
1226 |
+
(378, 369):1480
|
1227 |
+
(295, 528):1481
|
1228 |
+
(303, 265):1482
|
1229 |
+
(294, 264):1483
|
1230 |
+
(422, 292):1484
|
1231 |
+
(1391, 544):1485
|
1232 |
+
(325, 345):1486
|
1233 |
+
(340, 379):1487
|
1234 |
+
(385, 316):1488
|
1235 |
+
(423, 263):1489
|
1236 |
+
(323, 312):1490
|
1237 |
+
(355, 302):1491
|
1238 |
+
(317, 472):1492
|
1239 |
+
(525, 281):1493
|
1240 |
+
(307, 273):1494
|
1241 |
+
(306, 589):1495
|
1242 |
+
(397, 272):1496
|
1243 |
+
(303, 861):1497
|
1244 |
+
(280, 175):1498
|
1245 |
+
(350, 424):1499
|
1246 |
+
(265, 276):1500
|
1247 |
+
(297, 500):1501
|
1248 |
+
(271, 369):1502
|
1249 |
+
(339, 273):1503
|
1250 |
+
(317, 596):1504
|
1251 |
+
(523, 273):1505
|
1252 |
+
(282, 813):1506
|
1253 |
+
(380, 316):1507
|
1254 |
+
(327, 573):1508
|
1255 |
+
(338, 288):1509
|
1256 |
+
(327, 453):1510
|
1257 |
+
(349, 272):1511
|
1258 |
+
(302, 383):1512
|
1259 |
+
(604, 331):1513
|
1260 |
+
(286, 364):1514
|
1261 |
+
(326, 861):1515
|
1262 |
+
(296, 877):1516
|
1263 |
+
(275, 346):1517
|
1264 |
+
(409, 272):1518
|
1265 |
+
(314, 1028):1519
|
1266 |
+
(332, 287):1520
|
1267 |
+
(264, 264):1521
|
1268 |
+
(290, 330):1522
|
1269 |
+
(758, 270):1523
|
1270 |
+
(338, 451):1524
|
1271 |
+
(765, 302):1525
|
1272 |
+
(440, 402):1526
|
1273 |
+
(290, 283):1527
|
1274 |
+
(410, 264):1528
|
1275 |
+
(440, 267):1529
|
1276 |
+
(289, 585):1530
|
1277 |
+
(267, 651):1531
|
1278 |
+
(279, 383):1532
|
1279 |
+
(309, 877):1533
|
1280 |
+
(289, 294):1534
|
1281 |
+
(716, 1085):1535
|
1282 |
+
(474, 261):1536
|
1283 |
+
(320, 789):1537
|
1284 |
+
(389, 519):1538
|
1285 |
+
(270, 505):1539
|
1286 |
+
(476, 285):1540
|
1287 |
+
(1127, 342):1541
|
1288 |
+
(543, 414):1542
|
1289 |
+
(314, 376):1543
|
1290 |
+
(339, 474):1544
|
1291 |
+
(264, 775):1545
|
1292 |
+
(282, 453):1546
|
1293 |
+
(269, 374):1547
|
1294 |
+
(404, 258):1548
|
1295 |
+
(784, 296):1549
|
1296 |
+
(270, 263):1550
|
1297 |
+
(399, 479):1551
|
1298 |
+
(294, 1195):1552
|
1299 |
+
(293, 291):1553
|
1300 |
+
(293, 601):1554
|
1301 |
+
(399, 269):1555
|
1302 |
+
(320, 572):1556
|
1303 |
+
(423, 999):1557
|
1304 |
+
(293, 813):1558
|
1305 |
+
(32, 39):1559
|
1306 |
+
(668, 708):1560
|
1307 |
+
(396, 622):1561
|
1308 |
+
(1311, 285):1562
|
1309 |
+
(302, 270):1563
|
1310 |
+
(337, 283):1564
|
1311 |
+
(355, 269):1565
|
1312 |
+
(275, 377):1566
|
1313 |
+
(563, 166):1567
|
1314 |
+
(461, 281):1568
|
1315 |
+
(306, 449):1569
|
1316 |
+
(415, 269):1570
|
1317 |
+
(322, 637):1571
|
1318 |
+
(1332, 501):1572
|
1319 |
+
(265, 344):1573
|
1320 |
+
(1122, 270):1574
|
1321 |
+
(631, 304):1575
|
1322 |
+
(300, 325):1576
|
1323 |
+
(409, 382):1577
|
1324 |
+
(459, 490):1578
|
1325 |
+
(299, 266):1579
|
1326 |
+
(301, 719):1580
|
1327 |
+
(279, 309):1581
|
1328 |
+
(275, 341):1582
|
1329 |
+
(314, 1394):1583
|
1330 |
+
(258, 281):1584
|
1331 |
+
(301, 307):1585
|
1332 |
+
(499, 939):1586
|
1333 |
+
(278, 257):1587
|
1334 |
+
(575, 507):1588
|
1335 |
+
(636, 800):1589
|
1336 |
+
(377, 487):1590
|
1337 |
+
(473, 567):1591
|
1338 |
+
(288, 864):1592
|
1339 |
+
(274, 287):1593
|
1340 |
+
(409, 427):1594
|
1341 |
+
(843, 261):1595
|
1342 |
+
(310, 277):1596
|
1343 |
+
(502, 271):1597
|
1344 |
+
(410, 271):1598
|
1345 |
+
(279, 565):1599
|
1346 |
+
(293, 807):1600
|
1347 |
+
(269, 330):1601
|
1348 |
+
(504, 352):1602
|
1349 |
+
(275, 284):1603
|
1350 |
+
(392, 336):1604
|
1351 |
+
(323, 287):1605
|
1352 |
+
(897, 358):1606
|
1353 |
+
(584, 1512):1607
|
1354 |
+
(278, 281):1608
|
1355 |
+
(731, 520):1609
|
1356 |
+
(293, 406):1610
|
1357 |
+
(380, 297):1611
|
1358 |
+
(420, 271):1612
|
1359 |
+
(1468, 1469):1613
|
1360 |
+
(306, 1516):1614
|
1361 |
+
(274, 385):1615
|
1362 |
+
(539, 427):1616
|
1363 |
+
(353, 382):1617
|
1364 |
+
(280, 569):1618
|
1365 |
+
(482, 478):1619
|
1366 |
+
(287, 281):1620
|
1367 |
+
(921, 367):1621
|
1368 |
+
(438, 935):1622
|
1369 |
+
(275, 290):1623
|
1370 |
+
(314, 283):1624
|
1371 |
+
(466, 394):1625
|
1372 |
+
(1301, 320):1626
|
1373 |
+
(592, 344):1627
|
1374 |
+
(343, 1067):1628
|
1375 |
+
(322, 352):1629
|
1376 |
+
(314, 681):1630
|
1377 |
+
(568, 446):1631
|
1378 |
+
(274, 331):1632
|
1379 |
+
(306, 950):1633
|
1380 |
+
(264, 312):1634
|
1381 |
+
(265, 364):1635
|
1382 |
+
(294, 344):1636
|
1383 |
+
(291, 270):1637
|
1384 |
+
(370, 1076):1638
|
1385 |
+
(268, 165):1639
|
1386 |
+
(279, 387):1640
|
1387 |
+
(350, 265):1641
|
1388 |
+
(276, 403):1642
|
1389 |
+
(290, 275):1643
|
1390 |
+
(295, 938):1644
|
1391 |
+
(271, 406):1645
|
1392 |
+
(831, 450):1646
|
1393 |
+
(275, 492):1647
|
1394 |
+
(271, 528):1648
|
1395 |
+
(275, 274):1649
|
1396 |
+
(336, 267):1650
|
1397 |
+
(392, 1063):1651
|
1398 |
+
(335, 810):1652
|
1399 |
+
(446, 269):1653
|
1400 |
+
(293, 320):1654
|
1401 |
+
(349, 291):1655
|
1402 |
+
(323, 305):1656
|
1403 |
+
(291, 403):1657
|
1404 |
+
(416, 621):1658
|
1405 |
+
(306, 758):1659
|
1406 |
+
(355, 273):1660
|
1407 |
+
(301, 266):1661
|
1408 |
+
(374, 383):1662
|
1409 |
+
(274, 266):1663
|
1410 |
+
(1365, 272):1664
|
1411 |
+
(452, 272):1665
|
1412 |
+
(1414, 846):1666
|
1413 |
+
(322, 761):1667
|
1414 |
+
(315, 311):1668
|
1415 |
+
(770, 676):1669
|
1416 |
+
(279, 264):1670
|
1417 |
+
(306, 292):1671
|
1418 |
+
(294, 802):1672
|
1419 |
+
(558, 1223):1673
|
1420 |
+
(264, 433):1674
|
1421 |
+
(506, 472):1675
|
1422 |
+
(294, 426):1676
|
1423 |
+
(267, 371):1677
|
1424 |
+
(722, 281):1678
|
1425 |
+
(301, 269):1679
|
1426 |
+
(465, 265):1680
|
1427 |
+
(294, 334):1681
|
1428 |
+
(339, 285):1682
|
1429 |
+
(1476, 1621):1683
|
1430 |
+
(1374, 272):1684
|
1431 |
+
(361, 462):1685
|
1432 |
+
(1051, 401):1686
|
1433 |
+
(279, 410):1687
|
1434 |
+
(580, 285):1688
|
1435 |
+
(279, 1181):1689
|
1436 |
+
(317, 364):1690
|
1437 |
+
(669, 455):1691
|
1438 |
+
(279, 1484):1692
|
1439 |
+
(459, 536):1693
|
1440 |
+
(1003, 335):1694
|
1441 |
+
(547, 744):1695
|
1442 |
+
(378, 400):1696
|
1443 |
+
(415, 376):1697
|
1444 |
+
(851, 359):1698
|
1445 |
+
(314, 639):1699
|
1446 |
+
(673, 269):1700
|
1447 |
+
(265, 366):1701
|
1448 |
+
(1212, 304):1702
|
1449 |
+
(445, 320):1703
|
1450 |
+
(481, 322):1704
|
1451 |
+
(474, 269):1705
|
1452 |
+
(803, 278):1706
|
1453 |
+
(485, 273):1707
|
1454 |
+
(310, 261):1708
|
1455 |
+
(267, 345):1709
|
1456 |
+
(338, 281):1710
|
1457 |
+
(286, 518):1711
|
1458 |
+
(273, 294):1712
|
1459 |
+
(400, 272):1713
|
1460 |
+
(1452, 267):1714
|
1461 |
+
(392, 478):1715
|
1462 |
+
(287, 425):1716
|
1463 |
+
(314, 1252):1717
|
1464 |
+
(319, 544):1718
|
1465 |
+
(896, 352):1719
|
1466 |
+
(385, 811):1720
|
1467 |
+
(367, 339):1721
|
1468 |
+
(267, 337):1722
|
1469 |
+
(465, 327):1723
|
1470 |
+
(485, 265):1724
|
1471 |
+
(315, 372):1725
|
1472 |
+
(956, 399):1726
|
1473 |
+
(279, 1018):1727
|
1474 |
+
(481, 414):1728
|
1475 |
+
(354, 276):1729
|
1476 |
+
(959, 404):1730
|
1477 |
+
(303, 376):1731
|
1478 |
+
(380, 292):1732
|
1479 |
+
(270, 498):1733
|
1480 |
+
(275, 340):1734
|
1481 |
+
(326, 539):1735
|
1482 |
+
(818, 519):1736
|
1483 |
+
(293, 283):1737
|
1484 |
+
(265, 1056):1738
|
1485 |
+
(482, 741):1739
|
1486 |
+
(296, 328):1740
|
1487 |
+
(319, 284):1741
|
1488 |
+
(315, 382):1742
|
1489 |
+
(314, 941):1743
|
1490 |
+
(438, 622):1744
|
1491 |
+
(368, 261):1745
|
1492 |
+
(729, 622):1746
|
1493 |
+
(946, 517):1747
|
1494 |
+
(343, 605):1748
|
1495 |
+
(920, 327):1749
|
1496 |
+
(306, 403):1750
|
1497 |
+
(297, 1258):1751
|
1498 |
+
(271, 448):1752
|
1499 |
+
(869, 273):1753
|
1500 |
+
(260, 182):1754
|
1501 |
+
(260, 185):1755
|
1502 |
+
(279, 266):1756
|
1503 |
+
(338, 332):1757
|
1504 |
+
(298, 154):1758
|
1505 |
+
(302, 581):1759
|
1506 |
+
(1292, 1293):1760
|
1507 |
+
(288, 522):1761
|
1508 |
+
(332, 269):1762
|
1509 |
+
(271, 339):1763
|
1510 |
+
(1297, 273):1764
|
1511 |
+
(265, 284):1765
|
1512 |
+
(308, 271):1766
|
1513 |
+
(340, 261):1767
|
1514 |
+
(299, 610):1768
|
1515 |
+
(293, 1574):1769
|
1516 |
+
(420, 265):1770
|
1517 |
+
(549, 383):1771
|
1518 |
+
(470, 273):1772
|
1519 |
+
(396, 486):1773
|
1520 |
+
(625, 281):1774
|
1521 |
+
(289, 376):1775
|
1522 |
+
(275, 326):1776
|
1523 |
+
(647, 168):1777
|
1524 |
+
(370, 430):1778
|
1525 |
+
(378, 797):1779
|
1526 |
+
(341, 307):1780
|
1527 |
+
(298, 173):1781
|
1528 |
+
(465, 284):1782
|
1529 |
+
(703, 311):1783
|
1530 |
+
(309, 972):1784
|
1531 |
+
(293, 330):1785
|
1532 |
+
(285, 462):1786
|
1533 |
+
(267, 465):1787
|
1534 |
+
(370, 339):1788
|
1535 |
+
(289, 545):1789
|
1536 |
+
(275, 261):1790
|
1537 |
+
(279, 588):1791
|
1538 |
+
(317, 323):1792
|
1539 |
+
(275, 545):1793
|
1540 |
+
(792, 266):1794
|
1541 |
+
(499, 475):1795
|
1542 |
+
(301, 291):1796
|
1543 |
+
(265, 269):1797
|
1544 |
+
(300, 390):1798
|
1545 |
+
(469, 433):1799
|
1546 |
+
(286, 975):1800
|
1547 |
+
(572, 275):1801
|
1548 |
+
(287, 575):1802
|
1549 |
+
(350, 288):1803
|
1550 |
+
(315, 346):1804
|
1551 |
+
(290, 348):1805
|
1552 |
+
(265, 334):1806
|
1553 |
+
(440, 345):1807
|
1554 |
+
(296, 931):1808
|
1555 |
+
(327, 607):1809
|
1556 |
+
(546, 538):1810
|
1557 |
+
(337, 312):1811
|
1558 |
+
(647, 151):1812
|
1559 |
+
(1419, 540):1813
|
1560 |
+
(286, 1074):1814
|
1561 |
+
(338, 744):1815
|
1562 |
+
(432, 328):1816
|
1563 |
+
(307, 530):1817
|
1564 |
+
(293, 400):1818
|
1565 |
+
(346, 272):1819
|
1566 |
+
(272, 292):1820
|
1567 |
+
(354, 261):1821
|
1568 |
+
(323, 273):1822
|
1569 |
+
(288, 290):1823
|
1570 |
+
(293, 1538):1824
|
1571 |
+
(487, 273):1825
|
1572 |
+
(264, 518):1826
|
1573 |
+
(1261, 266):1827
|
1574 |
+
(1168, 320):1828
|
1575 |
+
(314, 352):1829
|
1576 |
+
(1463, 335):1830
|
1577 |
+
(391, 618):1831
|
1578 |
+
(1418, 304):1832
|
1579 |
+
(919, 1093):1833
|
1580 |
+
(349, 332):1834
|
1581 |
+
(276, 264):1835
|
1582 |
+
(270, 261):1836
|
1583 |
+
(646, 285):1837
|
1584 |
+
(1321, 520):1838
|
1585 |
+
(275, 272):1839
|
1586 |
+
(341, 553):1840
|
1587 |
+
(299, 529):1841
|
1588 |
+
(285, 483):1842
|
1589 |
+
(450, 355):1843
|
1590 |
+
(494, 261):1844
|
1591 |
+
(353, 355):1845
|
1592 |
+
(747, 311):1846
|
1593 |
+
(287, 475):1847
|
1594 |
+
(1268, 570):1848
|
1595 |
+
(286, 307):1849
|
1596 |
+
(314, 1155):1850
|
1597 |
+
(265, 287):1851
|
1598 |
+
(643, 271):1852
|
1599 |
+
(1180, 305):1853
|
1600 |
+
(408, 603):1854
|
1601 |
+
(578, 264):1855
|
1602 |
+
(271, 497):1856
|
1603 |
+
(347, 266):1857
|
1604 |
+
(306, 1438):1858
|
1605 |
+
(319, 500):1859
|
1606 |
+
(1068, 263):1860
|
1607 |
+
(308, 797):1861
|
1608 |
+
(752, 305):1862
|
1609 |
+
(385, 475):1863
|
1610 |
+
(830, 299):1864
|
1611 |
+
(756, 274):1865
|
1612 |
+
(385, 1489):1866
|
1613 |
+
(279, 287):1867
|
1614 |
+
(303, 593):1868
|
1615 |
+
(873, 418):1869
|
1616 |
+
(270, 265):1870
|
1617 |
+
(494, 273):1871
|
1618 |
+
(300, 264):1872
|
1619 |
+
(267, 575):1873
|
1620 |
+
(297, 345):1874
|
1621 |
+
(310, 269):1875
|
1622 |
+
(353, 322):1876
|
1623 |
+
(296, 285):1877
|
1624 |
+
(270, 367):1878
|
1625 |
+
(370, 1189):1879
|
1626 |
+
(605, 489):1880
|
1627 |
+
(376, 267):1881
|
1628 |
+
(535, 168):1882
|
1629 |
+
(364, 336):1883
|
1630 |
+
(315, 377):1884
|
1631 |
+
(301, 394):1885
|
1632 |
+
(593, 507):1886
|
1633 |
+
(286, 930):1887
|
1634 |
+
(289, 521):1888
|
1635 |
+
(271, 794):1889
|
1636 |
+
(319, 556):1890
|
1637 |
+
(362, 388):1891
|
1638 |
+
(657, 567):1892
|
1639 |
+
(352, 449):1893
|
1640 |
+
(477, 273):1894
|
1641 |
+
(346, 339):1895
|
1642 |
+
(346, 357):1896
|
1643 |
+
(294, 265):1897
|
1644 |
+
(666, 278):1898
|
1645 |
+
(1163, 273):1899
|
1646 |
+
(1285, 579):1900
|
1647 |
+
(287, 356):1901
|
1648 |
+
(282, 912):1902
|
1649 |
+
(343, 377):1903
|
1650 |
+
(280, 724):1904
|
1651 |
+
(293, 483):1905
|
1652 |
+
(293, 1464):1906
|
1653 |
+
(1198, 344):1907
|
1654 |
+
(1607, 611):1908
|
1655 |
+
(1367, 278):1909
|
1656 |
+
(573, 845):1910
|
1657 |
+
(274, 779):1911
|
1658 |
+
(500, 401):1912
|
1659 |
+
(272, 276):1913
|
1660 |
+
(694, 437):1914
|
1661 |
+
(546, 616):1915
|
1662 |
+
(265, 302):1916
|
1663 |
+
(270, 288):1917
|
1664 |
+
(722, 278):1918
|
1665 |
+
(270, 266):1919
|
1666 |
+
(647, 173):1920
|
1667 |
+
(420, 1227):1921
|
1668 |
+
(581, 261):1922
|
1669 |
+
(323, 270):1923
|
1670 |
+
(549, 934):1924
|
1671 |
+
(294, 312):1925
|
1672 |
+
(279, 354):1926
|
1673 |
+
(377, 462):1927
|
1674 |
+
(295, 309):1928
|
1675 |
+
(590, 480):1929
|
1676 |
+
(1432, 261):1930
|
1677 |
+
(346, 299):1931
|
1678 |
+
(262, 393):1932
|
1679 |
+
(1124, 264):1933
|
1680 |
+
(387, 313):1934
|
1681 |
+
(322, 407):1935
|
1682 |
+
(470, 352):1936
|
1683 |
+
(372, 302):1937
|
1684 |
+
(287, 933):1938
|
1685 |
+
(576, 276):1939
|
1686 |
+
(1773, 553):1940
|
1687 |
+
(325, 725):1941
|
1688 |
+
(820, 356):1942
|
1689 |
+
(445, 261):1943
|
1690 |
+
(295, 291):1944
|
1691 |
+
(647, 166):1945
|
1692 |
+
(684, 265):1946
|
1693 |
+
(270, 415):1947
|
1694 |
+
(1105, 305):1948
|
1695 |
+
(338, 275):1949
|
1696 |
+
(167, 257):1950
|
1697 |
+
(308, 369):1951
|
1698 |
+
(800, 334):1952
|
1699 |
+
(279, 270):1953
|
1700 |
+
(271, 381):1954
|
1701 |
+
(506, 1784):1955
|
1702 |
+
(331, 531):1956
|
1703 |
+
(370, 288):1957
|
1704 |
+
(521, 375):1958
|
1705 |
+
(1379, 963):1959
|
1706 |
+
(337, 345):1960
|
1707 |
+
(327, 311):1961
|
1708 |
+
(333, 151):1962
|
1709 |
+
(673, 419):1963
|
1710 |
+
(590, 382):1964
|
1711 |
+
(264, 501):1965
|
1712 |
+
(440, 263):1966
|
1713 |
+
(562, 425):1967
|
1714 |
+
(343, 323):1968
|
1715 |
+
(289, 275):1969
|
1716 |
+
(374, 367):1970
|
1717 |
+
(316, 394):1971
|
1718 |
+
(485, 267):1972
|
1719 |
+
(322, 516):1973
|
1720 |
+
(663, 267):1974
|
1721 |
+
(306, 554):1975
|
1722 |
+
(584, 372):1976
|
1723 |
+
(966, 281):1977
|
1724 |
+
(541, 274):1978
|
1725 |
+
(731, 567):1979
|
1726 |
+
(295, 603):1980
|
1727 |
+
(279, 817):1981
|
1728 |
+
(315, 827):1982
|
1729 |
+
(469, 529):1983
|
1730 |
+
(315, 492):1984
|
1731 |
+
(599, 283):1985
|
1732 |
+
(750, 515):1986
|
1733 |
+
(1075, 267):1987
|
1734 |
+
(276, 545):1988
|
1735 |
+
(669, 346):1989
|
1736 |
+
(291, 433):1990
|
1737 |
+
(343, 764):1991
|
1738 |
+
(267, 265):1992
|
1739 |
+
(275, 347):1993
|
1740 |
+
(270, 330):1994
|
1741 |
+
(153, 312):1995
|
1742 |
+
(262, 162):1996
|
1743 |
+
(1139, 753):1997
|
1744 |
+
(343, 302):1998
|
1745 |
+
(286, 335):1999
|
1746 |
+
(285, 449):2000
|
1747 |
+
(271, 273):2001
|
1748 |
+
(319, 1381):2002
|
1749 |
+
(338, 325):2003
|
1750 |
+
(265, 453):2004
|
1751 |
+
(297, 342):2005
|
1752 |
+
(319, 609):2006
|
1753 |
+
(335, 514):2007
|
1754 |
+
(276, 337):2008
|
1755 |
+
(384, 845):2009
|
1756 |
+
(314, 320):2010
|
1757 |
+
(673, 311):2011
|
1758 |
+
(1071, 915):2012
|
1759 |
+
(1665, 653):2013
|
1760 |
+
(293, 597):2014
|
1761 |
+
(1558, 275):2015
|
1762 |
+
(266, 332):2016
|
1763 |
+
(749, 335):2017
|
1764 |
+
(726, 664):2018
|
1765 |
+
(954, 560):2019
|
1766 |
+
(434, 683):2020
|
1767 |
+
(276, 1039):2021
|
1768 |
+
(315, 326):2022
|
1769 |
+
(271, 382):2023
|
1770 |
+
(596, 273):2024
|
1771 |
+
(260, 171):2025
|
1772 |
+
(481, 264):2026
|
1773 |
+
(716, 501):2027
|
1774 |
+
(272, 328):2028
|
1775 |
+
(563, 173):2029
|
1776 |
+
(301, 364):2030
|
1777 |
+
(292, 267):2031
|
1778 |
+
(343, 642):2032
|
1779 |
+
(505, 774):2033
|
1780 |
+
(341, 265):2034
|
1781 |
+
(326, 307):2035
|
1782 |
+
(294, 1028):2036
|
1783 |
+
(286, 302):2037
|
1784 |
+
(700, 269):2038
|
1785 |
+
(631, 264):2039
|
1786 |
+
(434, 1050):2040
|
1787 |
+
(656, 278):2041
|
1788 |
+
(669, 999):2042
|
1789 |
+
(552, 903):2043
|
1790 |
+
(297, 381):2044
|
1791 |
+
(911, 334):2045
|
1792 |
+
(292, 264):2046
|
1793 |
+
(389, 431):2047
|
1794 |
+
(282, 1328):2048
|
1795 |
+
(314, 1383):2049
|
1796 |
+
(982, 166):2050
|
1797 |
+
(280, 161):2051
|
1798 |
+
(314, 802):2052
|
1799 |
+
(303, 738):2053
|
1800 |
+
(578, 304):2054
|
1801 |
+
(377, 307):2055
|
1802 |
+
(879, 425):2056
|
1803 |
+
(477, 1330):2057
|
1804 |
+
(405, 381):2058
|
1805 |
+
(319, 329):2059
|
1806 |
+
(646, 492):2060
|
1807 |
+
(476, 360):2061
|
1808 |
+
(301, 1002):2062
|
1809 |
+
(618, 414):2063
|
1810 |
+
(710, 361):2064
|
1811 |
+
(969, 312):2065
|
1812 |
+
(384, 1392):2066
|
1813 |
+
(346, 294):2067
|
1814 |
+
(280, 152):2068
|
1815 |
+
(300, 270):2069
|
1816 |
+
(271, 350):2070
|
1817 |
+
(264, 480):2071
|
1818 |
+
(315, 356):2072
|
1819 |
+
(1073, 672):2073
|
1820 |
+
(279, 382):2074
|
1821 |
+
(293, 1133):2075
|
1822 |
+
(473, 278):2076
|
1823 |
+
(966, 278):2077
|
1824 |
+
(772, 895):2078
|
1825 |
+
(894, 334):2079
|
1826 |
+
(306, 1440):2080
|
1827 |
+
(505, 655):2081
|
1828 |
+
(314, 542):2082
|
1829 |
+
(695, 483):2083
|
1830 |
+
(307, 733):2084
|
1831 |
+
(316, 267):2085
|
1832 |
+
(333, 178):2086
|
1833 |
+
(295, 336):2087
|
1834 |
+
(682, 404):2088
|
1835 |
+
(634, 273):2089
|
1836 |
+
(448, 291):2090
|
1837 |
+
(613, 1214):2091
|
1838 |
+
(493, 281):2092
|
1839 |
+
(748, 320):2093
|
1840 |
+
(291, 261):2094
|
1841 |
+
(809, 271):2095
|
1842 |
+
(286, 865):2096
|
1843 |
+
(290, 424):2097
|
1844 |
+
(378, 323):2098
|
1845 |
+
(839, 284):2099
|
1846 |
+
(576, 274):2100
|
1847 |
+
(275, 382):2101
|
1848 |
+
(546, 350):2102
|
1849 |
+
(301, 1057):2103
|
1850 |
+
(289, 382):2104
|
1851 |
+
(400, 277):2105
|
1852 |
+
(288, 310):2106
|
1853 |
+
(264, 725):2107
|
1854 |
+
(292, 373):2108
|
1855 |
+
(749, 712):2109
|
1856 |
+
(924, 346):2110
|
1857 |
+
(1499, 269):2111
|
1858 |
+
(1518, 677):2112
|
1859 |
+
(338, 278):2113
|
1860 |
+
(259, 183):2114
|
1861 |
+
(275, 437):2115
|
1862 |
+
(474, 376):2116
|
1863 |
+
(349, 275):2117
|
1864 |
+
(316, 273):2118
|
1865 |
+
(795, 275):2119
|
1866 |
+
(928, 273):2120
|
1867 |
+
(270, 686):2121
|
1868 |
+
(290, 288):2122
|
1869 |
+
(360, 358):2123
|
1870 |
+
(390, 261):2124
|
1871 |
+
(343, 339):2125
|
1872 |
+
(502, 311):2126
|
1873 |
+
(1251, 522):2127
|
1874 |
+
(445, 273):2128
|
1875 |
+
(486, 591):2129
|
1876 |
+
(1754, 283):2130
|
1877 |
+
(657, 1555):2131
|
1878 |
+
(421, 336):2132
|
1879 |
+
(588, 269):2133
|
1880 |
+
(322, 655):2134
|
1881 |
+
(314, 485):2135
|
1882 |
+
(1006, 1032):2136
|
1883 |
+
(735, 364):2137
|
1884 |
+
(317, 686):2138
|
1885 |
+
(341, 1351):2139
|
1886 |
+
(349, 1652):2140
|
1887 |
+
(271, 294):2141
|
1888 |
+
(392, 464):2142
|
1889 |
+
(1492, 270):2143
|
1890 |
+
(343, 791):2144
|
1891 |
+
(395, 1039):2145
|
1892 |
+
(1912, 354):2146
|
1893 |
+
(1256, 629):2147
|
1894 |
+
(1670, 515):2148
|
1895 |
+
(1837, 1042):2149
|
1896 |
+
(722, 366):2150
|
1897 |
+
(1470, 1225):2151
|
1898 |
+
(285, 527):2152
|
1899 |
+
(824, 555):2153
|
1900 |
+
(291, 271):2154
|
1901 |
+
(995, 276):2155
|
1902 |
+
(1078, 284):2156
|
1903 |
+
(295, 339):2157
|
1904 |
+
(328, 276):2158
|
1905 |
+
(568, 1294):2159
|
1906 |
+
(1061, 1333):2160
|
1907 |
+
(286, 775):2161
|
1908 |
+
(659, 425):2162
|
1909 |
+
(772, 390):2163
|
1910 |
+
(279, 1682):2164
|
1911 |
+
(339, 261):2165
|
1912 |
+
(445, 375):2166
|
1913 |
+
(274, 412):2167
|
1914 |
+
(319, 1175):2168
|
1915 |
+
(280, 159):2169
|
1916 |
+
(275, 505):2170
|
1917 |
+
(410, 354):2171
|
1918 |
+
(617, 261):2172
|
1919 |
+
(306, 565):2173
|
1920 |
+
(327, 1081):2174
|
1921 |
+
(748, 265):2175
|
1922 |
+
(288, 365):2176
|
1923 |
+
(288, 330):2177
|
1924 |
+
(289, 433):2178
|
1925 |
+
(314, 309):2179
|
1926 |
+
(541, 1634):2180
|
1927 |
+
(1579, 366):2181
|
1928 |
+
(817, 292):2182
|
1929 |
+
(2182, 1304):2183
|
1930 |
+
(377, 419):2184
|
1931 |
+
(297, 1083):2185
|
1932 |
+
(269, 329):2186
|
1933 |
+
(301, 327):2187
|
1934 |
+
(332, 614):2188
|
1935 |
+
(303, 437):2189
|
1936 |
+
(331, 276):2190
|
1937 |
+
(878, 507):2191
|
1938 |
+
(434, 390):2192
|
1939 |
+
(690, 618):2193
|
1940 |
+
(936, 579):2194
|
1941 |
+
(279, 408):2195
|
1942 |
+
(275, 483):2196
|
1943 |
+
(729, 285):2197
|
1944 |
+
(722, 373):2198
|
1945 |
+
(1152, 414):2199
|
1946 |
+
(338, 554):2200
|
1947 |
+
(660, 269):2201
|
1948 |
+
(270, 307):2202
|
1949 |
+
(1791, 624):2203
|
1950 |
+
(411, 1260):2204
|
1951 |
+
(274, 284):2205
|
1952 |
+
(308, 617):2206
|
1953 |
+
(325, 330):2207
|
1954 |
+
(303, 703):2208
|
1955 |
+
(769, 329):2209
|
1956 |
+
(1035, 334):2210
|
1957 |
+
(264, 457):2211
|
1958 |
+
(404, 269):2212
|
1959 |
+
(514, 354):2213
|
1960 |
+
(168, 257):2214
|
1961 |
+
(297, 320):2215
|
1962 |
+
(418, 528):2216
|
1963 |
+
(647, 185):2217
|
1964 |
+
(497, 281):2218
|
1965 |
+
(270, 347):2219
|
1966 |
+
(839, 276):2220
|
1967 |
+
(459, 683):2221
|
1968 |
+
(694, 507):2222
|
1969 |
+
(271, 271):2223
|
1970 |
+
(396, 270):2224
|
1971 |
+
(502, 405):2225
|
1972 |
+
(339, 311):2226
|
1973 |
+
(385, 608):2227
|
1974 |
+
(299, 498):2228
|
1975 |
+
(308, 2116):2229
|
1976 |
+
(285, 422):2230
|
1977 |
+
(394, 667):2231
|
1978 |
+
(282, 1801):2232
|
1979 |
+
(386, 324):2233
|
1980 |
+
(1012, 273):2234
|
1981 |
+
(326, 753):2235
|
1982 |
+
(532, 708):2236
|
1983 |
+
(327, 312):2237
|
1984 |
+
(282, 1283):2238
|
1985 |
+
(391, 419):2239
|
1986 |
+
(572, 374):2240
|
1987 |
+
(272, 414):2241
|
1988 |
+
(271, 633):2242
|
1989 |
+
(385, 270):2243
|
1990 |
+
(288, 490):2244
|
1991 |
+
(1553, 362):2245
|
1992 |
+
(287, 326):2246
|
1993 |
+
(291, 950):2247
|
1994 |
+
(440, 266):2248
|
1995 |
+
(879, 449):2249
|
1996 |
+
(1310, 446):2250
|
1997 |
+
(292, 271):2251
|
1998 |
+
(392, 451):2252
|
1999 |
+
(364, 269):2253
|
2000 |
+
(340, 305):2254
|
2001 |
+
(325, 316):2255
|
2002 |
+
(1069, 273):2256
|
2003 |
+
(290, 276):2257
|
2004 |
+
(335, 285):2258
|
2005 |
+
(580, 348):2259
|
2006 |
+
(303, 827):2260
|
2007 |
+
(263, 281):2261
|
2008 |
+
(274, 334):2262
|
2009 |
+
(504, 269):2263
|
2010 |
+
(315, 536):2264
|
2011 |
+
(306, 723):2265
|
2012 |
+
(269, 652):2266
|
2013 |
+
(378, 512):2267
|
2014 |
+
(592, 334):2268
|
2015 |
+
(293, 1716):2269
|
2016 |
+
(290, 544):2270
|
2017 |
+
(286, 337):2271
|
2018 |
+
(571, 347):2272
|
2019 |
+
(937, 374):2273
|
2020 |
+
(535, 151):2274
|
2021 |
+
(293, 2016):2275
|
2022 |
+
(2142, 622):2276
|
2023 |
+
(1110, 276):2277
|
2024 |
+
(270, 410):2278
|
2025 |
+
(314, 459):2279
|
2026 |
+
(1906, 267):2280
|
2027 |
+
(477, 275):2281
|
2028 |
+
(1561, 278):2282
|
2029 |
+
(264, 330):2283
|
2030 |
+
(1564, 377):2284
|
2031 |
+
(1095, 773):2285
|
2032 |
+
(314, 462):2286
|
2033 |
+
(297, 470):2287
|
2034 |
+
(378, 312):2288
|
2035 |
+
(695, 328):2289
|
2036 |
+
(434, 271):2290
|
2037 |
+
(295, 1227):2291
|
2038 |
+
(648, 284):2292
|
2039 |
+
(292, 299):2293
|
2040 |
+
(338, 299):2294
|
2041 |
+
(285, 261):2295
|
2042 |
+
(415, 505):2296
|
2043 |
+
(346, 348):2297
|
2044 |
+
(511, 287):2298
|
2045 |
+
(1477, 330):2299
|
2046 |
+
(825, 267):2300
|
2047 |
+
(322, 272):2301
|
2048 |
+
(912, 609):2302
|
2049 |
+
(256, 139):2303
|
2050 |
+
(349, 588):2304
|
2051 |
+
(365, 585):2305
|
2052 |
+
(276, 948):2306
|
2053 |
+
(308, 514):2307
|
2054 |
+
(493, 514):2308
|
2055 |
+
(898, 292):2309
|
2056 |
+
(287, 436):2310
|
2057 |
+
(370, 320):2311
|
2058 |
+
(1265, 334):2312
|
2059 |
+
(482, 1126):2313
|
2060 |
+
(269, 365):2314
|
2061 |
+
(1629, 773):2315
|
2062 |
+
(784, 261):2316
|
2063 |
+
(306, 291):2317
|
2064 |
+
(299, 305):2318
|
2065 |
+
(173, 841):2319
|
2066 |
+
(327, 348):2320
|
2067 |
+
(406, 267):2321
|
2068 |
+
(315, 341):2322
|
2069 |
+
(389, 269):2323
|
2070 |
+
(947, 354):2324
|
2071 |
+
(298, 168):2325
|
2072 |
+
(270, 278):2326
|
2073 |
+
(271, 329):2327
|
2074 |
+
(1613, 287):2328
|
2075 |
+
(295, 437):2329
|
2076 |
+
(399, 312):2330
|
2077 |
+
(386, 261):2331
|
2078 |
+
(772, 356):2332
|
2079 |
+
(671, 261):2333
|
2080 |
+
(314, 368):2334
|
2081 |
+
(1397, 410):2335
|
2082 |
+
(438, 294):2336
|
2083 |
+
(1270, 348):2337
|
2084 |
+
(294, 323):2338
|
2085 |
+
(471, 287):2339
|
2086 |
+
(1490, 263):2340
|
2087 |
+
(459, 356):2341
|
2088 |
+
(295, 288):2342
|
2089 |
+
(1867, 360):2343
|
2090 |
+
(330, 379):2344
|
2091 |
+
(292, 325):2345
|
2092 |
+
(434, 895):2346
|
2093 |
+
(380, 271):2347
|
2094 |
+
(969, 310):2348
|
2095 |
+
(287, 311):2349
|
2096 |
+
(306, 1016):2350
|
2097 |
+
(264, 529):2351
|
2098 |
+
(280, 645):2352
|
2099 |
+
(637, 383):2353
|
2100 |
+
(872, 261):2354
|
2101 |
+
(575, 356):2355
|
2102 |
+
(1033, 276):2356
|
2103 |
+
(326, 352):2357
|
2104 |
+
(537, 693):2358
|
2105 |
+
(2093, 266):2359
|
2106 |
+
(309, 328):2360
|
2107 |
+
(327, 302):2361
|
2108 |
+
(770, 556):2362
|
2109 |
+
(408, 261):2363
|
2110 |
+
(1102, 433):2364
|
2111 |
+
(1007, 305):2365
|
2112 |
+
(293, 365):2366
|
2113 |
+
(386, 290):2367
|
2114 |
+
(346, 512):2368
|
2115 |
+
(1131, 1022):2369
|
2116 |
+
(296, 643):2370
|
2117 |
+
(1180, 266):2371
|
2118 |
+
(378, 382):2372
|
2119 |
+
(1008, 311):2373
|
2120 |
+
(364, 397):2374
|
2121 |
+
(262, 161):2375
|
2122 |
+
(264, 324):2376
|
2123 |
+
(386, 975):2377
|
2124 |
+
(293, 423):2378
|
2125 |
+
(269, 324):2379
|
2126 |
+
(290, 400):2380
|
2127 |
+
(656, 281):2381
|
2128 |
+
(603, 462):2382
|
2129 |
+
(1583, 1089):2383
|
2130 |
+
(291, 746):2384
|
2131 |
+
(299, 335):2385
|
2132 |
+
(572, 426):2386
|
2133 |
+
(1717, 766):2387
|
2134 |
+
(317, 410):2388
|
2135 |
+
(306, 1551):2389
|
2136 |
+
(638, 275):2390
|
2137 |
+
(297, 460):2391
|
2138 |
+
(1011, 272):2392
|
2139 |
+
(292, 270):2393
|
2140 |
+
(893, 462):2394
|
2141 |
+
(338, 1443):2395
|
2142 |
+
(275, 1263):2396
|
2143 |
+
(385, 533):2397
|
2144 |
+
(340, 610):2398
|
2145 |
+
(361, 270):2399
|
2146 |
+
(347, 882):2400
|
2147 |
+
(380, 275):2401
|
2148 |
+
(282, 587):2402
|
2149 |
+
(288, 371):2403
|
2150 |
+
(343, 556):2404
|
2151 |
+
(1953, 310):2405
|
2152 |
+
(307, 291):2406
|
2153 |
+
(953, 757):2407
|
2154 |
+
(279, 274):2408
|
2155 |
+
(270, 281):2409
|
2156 |
+
(937, 2246):2410
|
2157 |
+
(1051, 1210):2411
|
2158 |
+
(729, 341):2412
|
2159 |
+
(1246, 292):2413
|
2160 |
+
(289, 307):2414
|
2161 |
+
(274, 498):2415
|
2162 |
+
(286, 359):2416
|
2163 |
+
(476, 264):2417
|
2164 |
+
(301, 701):2418
|
2165 |
+
(293, 1323):2419
|
2166 |
+
(376, 442):2420
|
2167 |
+
(332, 335):2421
|
2168 |
+
(405, 269):2422
|
2169 |
+
(300, 464):2423
|
2170 |
+
(1260, 517):2424
|
2171 |
+
(1173, 273):2425
|
2172 |
+
(269, 337):2426
|
2173 |
+
(910, 269):2427
|
2174 |
+
(386, 2039):2428
|
2175 |
+
(349, 601):2429
|
2176 |
+
(521, 273):2430
|
2177 |
+
(1299, 287):2431
|
2178 |
+
(279, 302):2432
|
2179 |
+
(698, 1684):2433
|
2180 |
+
(726, 299):2434
|
2181 |
+
(784, 265):2435
|
2182 |
+
(301, 361):2436
|
2183 |
+
(341, 538):2437
|
2184 |
+
(309, 417):2438
|
2185 |
+
(283, 394):2439
|
2186 |
+
(294, 376):2440
|
2187 |
+
(285, 324):2441
|
2188 |
+
(376, 311):2442
|
2189 |
+
(322, 376):2443
|
2190 |
+
(396, 274):2444
|
2191 |
+
(275, 678):2445
|
2192 |
+
(306, 588):2446
|
2193 |
+
(275, 278):2447
|
2194 |
+
(343, 1896):2448
|
2195 |
+
(275, 334):2449
|
2196 |
+
(1334, 464):2450
|
2197 |
+
(404, 527):2451
|
2198 |
+
(353, 1910):2452
|
2199 |
+
(295, 1307):2453
|
2200 |
+
(646, 1746):2454
|
2201 |
+
(400, 708):2455
|
2202 |
+
(496, 297):2456
|
2203 |
+
(422, 294):2457
|
2204 |
+
(320, 1562):2458
|
2205 |
+
(319, 261):2459
|
2206 |
+
(566, 261):2460
|
2207 |
+
(434, 292):2461
|
2208 |
+
(295, 624):2462
|
2209 |
+
(264, 930):2463
|
2210 |
+
(274, 320):2464
|
2211 |
+
(492, 267):2465
|
2212 |
+
(1427, 366):2466
|
2213 |
+
(301, 346):2467
|
2214 |
+
(364, 270):2468
|
2215 |
+
(1756, 438):2469
|
2216 |
+
(291, 460):2470
|
2217 |
+
(1571, 728):2471
|
2218 |
+
(299, 551):2472
|
2219 |
+
(1757, 526):2473
|
2220 |
+
(450, 269):2474
|
2221 |
+
(364, 513):2475
|
2222 |
+
(314, 597):2476
|
2223 |
+
(264, 365):2477
|
2224 |
+
(648, 334):2478
|
2225 |
+
(388, 672):2479
|
2226 |
+
(319, 337):2480
|
2227 |
+
(1174, 354):2481
|
2228 |
+
(396, 341):2482
|
2229 |
+
(456, 490):2483
|
2230 |
+
(2038, 412):2484
|
2231 |
+
(936, 576):2485
|
2232 |
+
(295, 265):2486
|
2233 |
+
(765, 312):2487
|
2234 |
+
(1099, 1759):2488
|
2235 |
+
(325, 454):2489
|
2236 |
+
(257, 169):2490
|
2237 |
+
(1928, 736):2491
|
2238 |
+
(350, 273):2492
|
2239 |
+
(286, 807):2493
|
2240 |
+
(1093, 273):2494
|
2241 |
+
(286, 276):2495
|
2242 |
+
(347, 479):2496
|
2243 |
+
(648, 329):2497
|
2244 |
+
(301, 1202):2498
|
2245 |
+
(924, 470):2499
|
2246 |
+
(514, 310):2500
|
2247 |
+
(295, 403):2501
|
2248 |
+
(486, 269):2502
|
2249 |
+
(275, 425):2503
|
2250 |
+
(279, 486):2504
|
2251 |
+
(309, 292):2505
|
2252 |
+
(270, 361):2506
|
2253 |
+
(279, 285):2507
|
2254 |
+
(541, 294):2508
|
2255 |
+
(269, 448):2509
|
2256 |
+
(290, 553):2510
|
2257 |
+
(440, 283):2511
|
2258 |
+
(438, 341):2512
|
2259 |
+
(595, 284):2513
|
2260 |
+
(663, 503):2514
|
2261 |
+
(1575, 311):2515
|
2262 |
+
(824, 299):2516
|
2263 |
+
(820, 683):2517
|
2264 |
+
(638, 273):2518
|
2265 |
+
(372, 269):2519
|
2266 |
+
(485, 284):2520
|
2267 |
+
(303, 307):2521
|
2268 |
+
(415, 407):2522
|
2269 |
+
(659, 449):2523
|
2270 |
+
(327, 452):2524
|
2271 |
+
(2075, 288):2525
|
2272 |
+
(1402, 267):2526
|
2273 |
+
(267, 970):2527
|
2274 |
+
(288, 402):2528
|
2275 |
+
(380, 294):2529
|
2276 |
+
(301, 562):2530
|
2277 |
+
(286, 465):2531
|
2278 |
+
(396, 1616):2532
|
2279 |
+
(403, 725):2533
|
2280 |
+
(735, 290):2534
|
2281 |
+
(941, 949):2535
|
2282 |
+
(915, 277):2536
|
2283 |
+
(286, 270):2537
|
2284 |
+
(343, 1703):2538
|
2285 |
+
(279, 508):2539
|
2286 |
+
(269, 264):2540
|
2287 |
+
(1033, 284):2541
|
2288 |
+
(1405, 1958):2542
|
2289 |
+
(401, 921):2543
|
2290 |
+
(317, 337):2544
|
2291 |
+
(809, 273):2545
|
2292 |
+
(301, 309):2546
|
2293 |
+
(824, 842):2547
|
2294 |
+
(292, 261):2548
|
2295 |
+
(306, 269):2549
|
2296 |
+
(1792, 479):2550
|
2297 |
+
(376, 509):2551
|
2298 |
+
(320, 771):2552
|
2299 |
+
(340, 551):2553
|
2300 |
+
(2095, 439):2554
|
2301 |
+
(863, 297):2555
|
2302 |
+
(288, 316):2556
|
2303 |
+
(282, 316):2557
|
2304 |
+
(299, 283):2558
|
2305 |
+
(595, 276):2559
|
2306 |
+
(2088, 294):2560
|
2307 |
+
(822, 273):2561
|
2308 |
+
(292, 623):2562
|
2309 |
+
(328, 290):2563
|
2310 |
+
(406, 273):2564
|
2311 |
+
(306, 1798):2565
|
2312 |
+
(524, 316):2566
|
2313 |
+
(1373, 375):2567
|
2314 |
+
(443, 152):2568
|
2315 |
+
(628, 273):2569
|
2316 |
+
(302, 352):2570
|
2317 |
+
(271, 265):2571
|
2318 |
+
(1139, 404):2572
|
2319 |
+
(563, 152):2573
|
2320 |
+
(1078, 276):2574
|
2321 |
+
(1230, 714):2575
|
2322 |
+
(392, 1130):2576
|
2323 |
+
(858, 273):2577
|
2324 |
+
(460, 478):2578
|
2325 |
+
(836, 273):2579
|
2326 |
+
(326, 448):2580
|
2327 |
+
(453, 273):2581
|
2328 |
+
(780, 269):2582
|
2329 |
+
(391, 621):2583
|
2330 |
+
(479, 591):2584
|
2331 |
+
(391, 270):2585
|
2332 |
+
(1788, 692):2586
|
2333 |
+
(325, 913):2587
|
2334 |
+
(267, 327):2588
|
2335 |
+
(386, 881):2589
|
2336 |
+
(485, 285):2590
|
2337 |
+
(291, 294):2591
|
2338 |
+
(314, 372):2592
|
2339 |
+
(1146, 331):2593
|
2340 |
+
(295, 428):2594
|
2341 |
+
(338, 436):2595
|
2342 |
+
(2204, 267):2596
|
2343 |
+
(332, 796):2597
|
2344 |
+
(1158, 751):2598
|
2345 |
+
(471, 261):2599
|
2346 |
+
(395, 403):2600
|
2347 |
+
(309, 311):2601
|
2348 |
+
(385, 1104):2602
|
2349 |
+
(900, 526):2603
|
2350 |
+
(290, 497):2604
|
2351 |
+
(1065, 1016):2605
|
2352 |
+
(275, 736):2606
|
2353 |
+
(314, 270):2607
|
2354 |
+
(757, 707):2608
|
2355 |
+
(659, 1893):2609
|
2356 |
+
(305, 294):2610
|
2357 |
+
(2125, 294):2611
|
2358 |
+
(270, 413):2612
|
2359 |
+
(513, 701):2613
|
2360 |
+
(1387, 874):2614
|
2361 |
+
(613, 1536):2615
|
2362 |
+
(517, 264):2616
|
2363 |
+
(1599, 269):2617
|
2364 |
+
(297, 462):2618
|
2365 |
+
(288, 427):2619
|
2366 |
+
(400, 265):2620
|
2367 |
+
(428, 273):2621
|
2368 |
+
(309, 326):2622
|
2369 |
+
(396, 291):2623
|
2370 |
+
(319, 385):2624
|
2371 |
+
(319, 328):2625
|
2372 |
+
(262, 1995):2626
|
2373 |
+
(2626, 528):2627
|
2374 |
+
(381, 287):2628
|
2375 |
+
(432, 281):2629
|
2376 |
+
(267, 360):2630
|
2377 |
+
(828, 394):2631
|
2378 |
+
(477, 424):2632
|
2379 |
+
(471, 458):2633
|
2380 |
+
(538, 348):2634
|
2381 |
+
(613, 472):2635
|
2382 |
+
(380, 274):2636
|
2383 |
+
(471, 1156):2637
|
2384 |
+
(319, 423):2638
|
2385 |
+
(806, 273):2639
|
2386 |
+
(317, 1108):2640
|
2387 |
+
(314, 508):2641
|
2388 |
+
(300, 337):2642
|
2389 |
+
(505, 407):2643
|
2390 |
+
(482, 414):2644
|
2391 |
+
(435, 1286):2645
|
2392 |
+
(302, 528):2646
|
2393 |
+
(325, 310):2647
|
2394 |
+
(343, 410):2648
|
2395 |
+
(351, 183):2649
|
2396 |
+
(538, 1820):2650
|
2397 |
+
(315, 707):2651
|
2398 |
+
(440, 460):2652
|
2399 |
+
(408, 348):2653
|
2400 |
+
(385, 329):2654
|
2401 |
+
(411, 1134):2655
|
2402 |
+
(1192, 553):2656
|
2403 |
+
(578, 285):2657
|
2404 |
+
(330, 273):2658
|
2405 |
+
(306, 332):2659
|
2406 |
+
(308, 405):2660
|
2407 |
+
(399, 283):2661
|
2408 |
+
(493, 358):2662
|
2409 |
+
(267, 284):2663
|
2410 |
+
(311, 519):2664
|
2411 |
+
(395, 326):2665
|
2412 |
+
(271, 336):2666
|
2413 |
+
(264, 421):2667
|
2414 |
+
(341, 336):2668
|
2415 |
+
(283, 501):2669
|
2416 |
+
(335, 718):2670
|
2417 |
+
(378, 571):2671
|
2418 |
+
(314, 771):2672
|
2419 |
+
(1604, 1249):2673
|
2420 |
+
(346, 288):2674
|
2421 |
+
(282, 1025):2675
|
2422 |
+
(2675, 475):2676
|
2423 |
+
(314, 989):2677
|
2424 |
+
(1253, 2019):2678
|
2425 |
+
(264, 1560):2679
|
2426 |
+
(482, 548):2680
|
2427 |
+
(945, 542):2681
|
2428 |
+
(450, 621):2682
|
2429 |
+
(568, 468):2683
|
2430 |
+
(1335, 288):2684
|
2431 |
+
(295, 718):2685
|
2432 |
+
(834, 278):2686
|
2433 |
+
(943, 276):2687
|
2434 |
+
(1850, 591):2688
|
2435 |
+
(1511, 1878):2689
|
2436 |
+
(411, 1562):2690
|
2437 |
+
(303, 446):2691
|
2438 |
+
(959, 753):2692
|
2439 |
+
(1043, 273):2693
|
2440 |
+
(471, 263):2694
|
2441 |
+
(392, 307):2695
|
2442 |
+
(698, 274):2696
|
2443 |
+
(256, 155):2697
|
2444 |
+
(310, 526):2698
|
2445 |
+
(297, 299):2699
|
2446 |
+
(465, 341):2700
|
2447 |
+
(282, 1922):2701
|
2448 |
+
(1426, 326):2702
|
2449 |
+
(510, 339):2703
|
2450 |
+
(1264, 375):2704
|
2451 |
+
(317, 504):2705
|
2452 |
+
(550, 320):2706
|
2453 |
+
(338, 406):2707
|
2454 |
+
(295, 264):2708
|
2455 |
+
(1331, 283):2709
|
2456 |
+
(1230, 689):2710
|
2457 |
+
(1619, 290):2711
|
2458 |
+
(1029, 261):2712
|
2459 |
+
(922, 269):2713
|
2460 |
+
(1377, 167):2714
|
2461 |
+
(428, 284):2715
|
2462 |
+
(328, 381):2716
|
2463 |
+
(404, 797):2717
|
2464 |
+
(291, 529):2718
|
2465 |
+
(309, 622):2719
|
2466 |
+
(396, 292):2720
|
2467 |
+
(746, 311):2721
|
2468 |
+
(322, 336):2722
|
2469 |
+
(900, 1231):2723
|
2470 |
+
(669, 672):2724
|
2471 |
+
(516, 390):2725
|
2472 |
+
(346, 719):2726
|
2473 |
+
(1064, 284):2727
|
2474 |
+
(1686, 359):2728
|
2475 |
+
(289, 787):2729
|
2476 |
+
(1526, 278):2730
|
2477 |
+
(1523, 457):2731
|
2478 |
+
(674, 299):2732
|
2479 |
+
(2307, 1854):2733
|
2480 |
+
(306, 401):2734
|
2481 |
+
(377, 361):2735
|
2482 |
+
(315, 935):2736
|
2483 |
+
(264, 413):2737
|
2484 |
+
(265, 457):2738
|
2485 |
+
(302, 273):2739
|
2486 |
+
(286, 1937):2740
|
2487 |
+
(290, 686):2741
|
2488 |
+
(494, 287):2742
|
2489 |
+
(1673, 287):2743
|
2490 |
+
(769, 273):2744
|
2491 |
+
(272, 374):2745
|
2492 |
+
(349, 643):2746
|
2493 |
+
(257, 2319):2747
|
2494 |
+
(395, 983):2748
|
2495 |
+
(282, 294):2749
|
2496 |
+
(271, 500):2750
|
2497 |
+
(948, 336):2751
|
2498 |
+
(690, 458):2752
|
2499 |
+
(1580, 1681):2753
|
2500 |
+
(492, 273):2754
|
2501 |
+
(294, 273):2755
|
2502 |
+
(644, 334):2756
|
2503 |
+
(1393, 285):2757
|
2504 |
+
(626, 2067):2758
|
2505 |
+
(294, 1864):2759
|
2506 |
+
(315, 1274):2760
|
2507 |
+
(485, 283):2761
|
2508 |
+
(538, 1081):2762
|
2509 |
+
(271, 291):2763
|
2510 |
+
(411, 322):2764
|
2511 |
+
(593, 356):2765
|
2512 |
+
(325, 269):2766
|
2513 |
+
(339, 324):2767
|
2514 |
+
(703, 269):2768
|
2515 |
+
(288, 264):2769
|
2516 |
+
(578, 2073):2770
|
2517 |
+
(301, 1399):2771
|
2518 |
+
(420, 302):2772
|
2519 |
+
(265, 328):2773
|
2520 |
+
(1638, 375):2774
|
2521 |
+
(851, 417):2775
|
2522 |
+
(264, 275):2776
|
2523 |
+
(1390, 1783):2777
|
2524 |
+
(306, 1435):2778
|
2525 |
+
(1526, 281):2779
|
2526 |
+
(2534, 574):2780
|
2527 |
+
(1485, 498):2781
|
2528 |
+
(271, 621):2782
|
2529 |
+
(286, 545):2783
|
2530 |
+
(1161, 294):2784
|
2531 |
+
(467, 463):2785
|
2532 |
+
(435, 270):2786
|
2533 |
+
(329, 593):2787
|
2534 |
+
(288, 329):2788
|
2535 |
+
(319, 273):2789
|
2536 |
+
(1871, 291):2790
|
2537 |
+
(510, 267):2791
|
2538 |
+
(326, 895):2792
|
2539 |
+
(616, 430):2793
|
2540 |
+
(1112, 1353):2794
|
2541 |
+
(2543, 292):2795
|
2542 |
+
(418, 1354):2796
|
2543 |
+
(276, 327):2797
|
2544 |
+
(279, 322):2798
|
2545 |
+
(514, 589):2799
|
2546 |
+
(511, 334):2800
|
2547 |
+
(460, 311):2801
|
2548 |
+
(289, 475):2802
|
2549 |
+
(449, 312):2803
|
2550 |
+
(758, 697):2804
|
2551 |
+
(262, 129):2805
|
2552 |
+
(448, 526):2806
|
2553 |
+
(301, 2302):2807
|
2554 |
+
(300, 1109):2808
|
2555 |
+
(826, 305):2809
|
2556 |
+
(330, 394):2810
|
2557 |
+
(499, 986):2811
|
2558 |
+
(270, 324):2812
|
2559 |
+
(628, 330):2813
|
2560 |
+
(659, 397):2814
|
2561 |
+
(285, 1133):2815
|
2562 |
+
(287, 1298):2816
|
2563 |
+
(595, 329):2817
|
2564 |
+
(418, 1406):2818
|
2565 |
+
(275, 537):2819
|
2566 |
+
(158, 388):2820
|
2567 |
+
(485, 263):2821
|
2568 |
+
(666, 281):2822
|
2569 |
+
(385, 297):2823
|
2570 |
+
(1635, 311):2824
|
2571 |
+
(270, 693):2825
|
2572 |
+
(872, 276):2826
|
2573 |
+
(1451, 383):2827
|
2574 |
+
(276, 320):2828
|
2575 |
+
(257, 171):2829
|
2576 |
+
(275, 498):2830
|
2577 |
+
(353, 2578):2831
|
2578 |
+
(820, 536):2832
|
2579 |
+
(1251, 676):2833
|
2580 |
+
(271, 651):2834
|
2581 |
+
(591, 320):2835
|
2582 |
+
(293, 860):2836
|
2583 |
+
(275, 753):2837
|
2584 |
+
(343, 436):2838
|
2585 |
+
(391, 470):2839
|
2586 |
+
(264, 373):2840
|
2587 |
+
(818, 288):2841
|
2588 |
+
(633, 273):2842
|
2589 |
+
(285, 366):2843
|
2590 |
+
(671, 273):2844
|
2591 |
+
(275, 421):2845
|
2592 |
+
(557, 307):2846
|
2593 |
+
(415, 516):2847
|
2594 |
+
(319, 362):2848
|
2595 |
+
(307, 271):2849
|
2596 |
+
(265, 2051):2850
|
2597 |
+
(946, 323):2851
|
2598 |
+
(2851, 291):2852
|
2599 |
+
(365, 617):2853
|
2600 |
+
(319, 472):2854
|
2601 |
+
(843, 596):2855
|
2602 |
+
(288, 299):2856
|
2603 |
+
(301, 276):2857
|
2604 |
+
(346, 596):2858
|
2605 |
+
(259, 138):2859
|
2606 |
+
(1598, 522):2860
|
2607 |
+
(951, 1136):2861
|
2608 |
+
(340, 284):2862
|
2609 |
+
(411, 1811):2863
|
2610 |
+
(279, 474):2864
|
2611 |
+
(1725, 702):2865
|
2612 |
+
(1197, 374):2866
|
2613 |
+
(346, 270):2867
|
2614 |
+
(847, 292):2868
|
2615 |
+
(301, 415):2869
|
2616 |
+
(322, 265):2870
|
2617 |
+
(291, 591):2871
|
2618 |
+
(721, 273):2872
|
2619 |
+
(265, 261):2873
|
2620 |
+
(282, 2047):2874
|
2621 |
+
(1453, 414):2875
|
2622 |
+
(275, 376):2876
|
2623 |
+
(435, 500):2877
|
2624 |
+
(856, 274):2878
|
2625 |
+
(305, 274):2879
|
2626 |
+
(1729, 356):2880
|
2627 |
+
(325, 439):2881
|
2628 |
+
(467, 339):2882
|
2629 |
+
(392, 721):2883
|
2630 |
+
(558, 278):2884
|
2631 |
+
(264, 352):2885
|
2632 |
+
(346, 702):2886
|
2633 |
+
(590, 292):2887
|
2634 |
+
(547, 288):2888
|
2635 |
+
(271, 316):2889
|
2636 |
+
(1090, 2130):2890
|
2637 |
+
(271, 297):2891
|
2638 |
+
(819, 2068):2892
|
2639 |
+
(755, 292):2893
|
2640 |
+
(538, 354):2894
|
2641 |
+
(276, 281):2895
|
2642 |
+
(1804, 460):2896
|
2643 |
+
(492, 299):2897
|
2644 |
+
(314, 294):2898
|
2645 |
+
(301, 310):2899
|
2646 |
+
(415, 275):2900
|
2647 |
+
(298, 149):2901
|
2648 |
+
(292, 624):2902
|
2649 |
+
(767, 263):2903
|
2650 |
+
(1019, 261):2904
|
2651 |
+
(1416, 261):2905
|
2652 |
+
(1165, 310):2906
|
2653 |
+
(740, 284):2907
|
2654 |
+
(293, 374):2908
|
2655 |
+
(285, 807):2909
|
2656 |
+
(800, 278):2910
|
2657 |
+
(301, 723):2911
|
2658 |
+
(647, 172):2912
|
2659 |
+
(282, 1083):2913
|
2660 |
+
(306, 460):2914
|
2661 |
+
(322, 418):2915
|
2662 |
+
(279, 576):2916
|
2663 |
+
(274, 265):2917
|
2664 |
+
(748, 327):2918
|
2665 |
+
(303, 1150):2919
|
2666 |
+
(384, 2058):2920
|
2667 |
+
(422, 274):2921
|
2668 |
+
(340, 312):2922
|
2669 |
+
(291, 589):2923
|
2670 |
+
(317, 833):2924
|
2671 |
+
(2649, 1009):2925
|
2672 |
+
(532, 448):2926
|
2673 |
+
(577, 394):2927
|
2674 |
+
(691, 261):2928
|
2675 |
+
(1038, 654):2929
|
2676 |
+
(423, 672):2930
|
2677 |
+
(1734, 361):2931
|
2678 |
+
(325, 423):2932
|
2679 |
+
(387, 487):2933
|
2680 |
+
(421, 261):2934
|
2681 |
+
(409, 292):2935
|
2682 |
+
(341, 376):2936
|
2683 |
+
(319, 288):2937
|
2684 |
+
(343, 290):2938
|
2685 |
+
(691, 276):2939
|
2686 |
+
(415, 721):2940
|
2687 |
+
(674, 633):2941
|
2688 |
+
(297, 583):2942
|
2689 |
+
(1137, 336):2943
|
2690 |
+
(293, 466):2944
|
2691 |
+
(362, 1564):2945
|
2692 |
+
(292, 366):2946
|
2693 |
+
(1041, 312):2947
|
2694 |
+
(2014, 2272):2948
|
2695 |
+
(297, 821):2949
|
2696 |
+
(2668, 1249):2950
|
2697 |
+
(1090, 313):2951
|
2698 |
+
(1327, 500):2952
|
2699 |
+
(322, 688):2953
|
2700 |
+
(332, 548):2954
|
2701 |
+
(635, 746):2955
|
2702 |
+
(347, 519):2956
|
2703 |
+
(275, 737):2957
|
2704 |
+
(1513, 276):2958
|
2705 |
+
(1092, 334):2959
|
2706 |
+
(552, 720):2960
|
2707 |
+
(322, 478):2961
|
2708 |
+
(301, 1023):2962
|
2709 |
+
(473, 835):2963
|
2710 |
+
(353, 1398):2964
|
2711 |
+
(2964, 545):2965
|
2712 |
+
(612, 261):2966
|
2713 |
+
(1193, 278):2967
|
2714 |
+
(282, 1122):2968
|
2715 |
+
(293, 437):2969
|
2716 |
+
(2969, 307):2970
|
2717 |
+
(2970, 2129):2971
|
2718 |
+
(380, 406):2972
|
2719 |
+
(296, 2684):2973
|
2720 |
+
(471, 288):2974
|
2721 |
+
(742, 468):2975
|
2722 |
+
(1747, 341):2976
|
2723 |
+
(1747, 1362):2977
|
2724 |
+
(982, 151):2978
|
2725 |
+
(338, 448):2979
|
2726 |
+
(1748, 1369):2980
|
2727 |
+
(303, 1914):2981
|
2728 |
+
(325, 305):2982
|
2729 |
+
(293, 329):2983
|
2730 |
+
(795, 276):2984
|
2731 |
+
(1146, 553):2985
|
2732 |
+
(442, 530):2986
|
2733 |
+
(270, 285):2987
|
2734 |
+
(391, 992):2988
|
2735 |
+
(341, 271):2989
|
2736 |
+
(271, 868):2990
|
2737 |
+
(487, 572):2991
|
2738 |
+
(657, 520):2992
|
2739 |
+
(322, 347):2993
|
2740 |
+
(323, 554):2994
|
2741 |
+
(1058, 2464):2995
|
2742 |
+
(289, 1226):2996
|
2743 |
+
(1257, 525):2997
|
2744 |
+
(601, 326):2998
|
2745 |
+
(690, 287):2999
|
2746 |
+
(395, 291):3000
|
2747 |
+
(1760, 273):3001
|
2748 |
+
(517, 297):3002
|
2749 |
+
(893, 1207):3003
|
2750 |
+
(478, 352):3004
|
2751 |
+
(282, 1296):3005
|
2752 |
+
(1062, 266):3006
|
2753 |
+
(322, 405):3007
|
2754 |
+
(863, 398):3008
|
2755 |
+
(302, 299):3009
|
2756 |
+
(293, 596):3010
|
2757 |
+
(595, 359):3011
|
2758 |
+
(660, 1927):3012
|
2759 |
+
(755, 417):3013
|
2760 |
+
(274, 366):3014
|
2761 |
+
(2488, 273):3015
|
2762 |
+
(340, 348):3016
|
2763 |
+
(328, 334):3017
|
2764 |
+
(1380, 2166):3018
|
2765 |
+
(320, 981):3019
|
2766 |
+
(269, 484):3020
|
2767 |
+
(299, 359):3021
|
2768 |
+
(271, 1225):3022
|
2769 |
+
(1271, 608):3023
|
2770 |
+
(470, 357):3024
|
2771 |
+
(326, 337):3025
|
2772 |
+
(617, 267):3026
|
2773 |
+
(983, 272):3027
|
2774 |
+
(306, 605):3028
|
2775 |
+
(269, 692):3029
|
2776 |
+
(578, 360):3030
|
2777 |
+
(713, 2172):3031
|
2778 |
+
(1521, 533):3032
|
2779 |
+
(1302, 334):3033
|
2780 |
+
(343, 773):3034
|
2781 |
+
(1053, 359):3035
|
2782 |
+
(894, 413):3036
|
2783 |
+
(276, 790):3037
|
2784 |
+
(178, 322):3038
|
2785 |
+
(1129, 719):3039
|
2786 |
+
(349, 617):3040
|
2787 |
+
(1531, 284):3041
|
2788 |
+
(1485, 509):3042
|
2789 |
+
(1633, 360):3043
|
2790 |
+
(326, 580):3044
|
2791 |
+
(412, 271):3045
|
2792 |
+
(2757, 287):3046
|
2793 |
+
(640, 334):3047
|
2794 |
+
(582, 330):3048
|
2795 |
+
(286, 324):3049
|
2796 |
+
(769, 276):3050
|
2797 |
+
(303, 721):3051
|
2798 |
+
(1676, 1001):3052
|
2799 |
+
(769, 330):3053
|
2800 |
+
(710, 379):3054
|
2801 |
+
(384, 299):3055
|
2802 |
+
(613, 508):3056
|
2803 |
+
(2770, 2188):3057
|
2804 |
+
(380, 608):3058
|
2805 |
+
(286, 265):3059
|
2806 |
+
(257, 1950):3060
|
2807 |
+
(288, 374):3061
|
2808 |
+
(2344, 462):3062
|
2809 |
+
(467, 1537):3063
|
2810 |
+
(438, 270):3064
|
2811 |
+
(301, 323):3065
|
2812 |
+
(648, 273):3066
|
2813 |
+
(295, 1639):3067
|
2814 |
+
(370, 292):3068
|
2815 |
+
(481, 452):3069
|
2816 |
+
(657, 276):3070
|
2817 |
+
(894, 373):3071
|
2818 |
+
(1865, 305):3072
|
2819 |
+
(340, 433):3073
|
2820 |
+
(317, 521):3074
|
2821 |
+
(543, 565):3075
|
2822 |
+
(492, 290):3076
|
2823 |
+
(353, 2353):3077
|
2824 |
+
(1221, 287):3078
|
2825 |
+
(349, 439):3079
|
2826 |
+
(293, 261):3080
|
2827 |
+
(1033, 261):3081
|
2828 |
+
(293, 271):3082
|
2829 |
+
(369, 283):3083
|
2830 |
+
(270, 291):3084
|
2831 |
+
(730, 288):3085
|
2832 |
+
(2546, 464):3086
|
2833 |
+
(639, 388):3087
|
2834 |
+
(301, 1709):3088
|
2835 |
+
(378, 605):3089
|
2836 |
+
(834, 264):3090
|
2837 |
+
(524, 274):3091
|
2838 |
+
(314, 342):3092
|
2839 |
+
(1794, 360):3093
|
2840 |
+
(873, 422):3094
|
2841 |
+
(552, 273):3095
|
2842 |
+
(289, 1588):3096
|
2843 |
+
(589, 273):3097
|
2844 |
+
(549, 512):3098
|
2845 |
+
(285, 967):3099
|
2846 |
+
(435, 292):3100
|
2847 |
+
(299, 468):3101
|
2848 |
+
(382, 264):3102
|
2849 |
+
(319, 264):3103
|
2850 |
+
(613, 1956):3104
|
2851 |
+
(2557, 263):3105
|
2852 |
+
(572, 449):3106
|
2853 |
+
(471, 276):3107
|
2854 |
+
(272, 302):3108
|
2855 |
+
(376, 498):3109
|
2856 |
+
(1413, 274):3110
|
2857 |
+
(1270, 316):3111
|
2858 |
+
(310, 383):3112
|
2859 |
+
(1315, 1162):3113
|
2860 |
+
(292, 721):3114
|
2861 |
+
(629, 341):3115
|
2862 |
+
(566, 267):3116
|
2863 |
+
(756, 276):3117
|
2864 |
+
(541, 265):3118
|
2865 |
+
(481, 291):3119
|
2866 |
+
(380, 651):3120
|
2867 |
+
(303, 382):3121
|
2868 |
+
(290, 364):3122
|
2869 |
+
(378, 265):3123
|
2870 |
+
(376, 269):3124
|
2871 |
+
(563, 151):3125
|
2872 |
+
(1277, 329):3126
|
2873 |
+
(919, 1929):3127
|
2874 |
+
(2102, 1408):3128
|
2875 |
+
(275, 310):3129
|
2876 |
+
(1065, 1440):3130
|
2877 |
+
(776, 394):3131
|
2878 |
+
(401, 512):3132
|
2879 |
+
(1349, 339):3133
|
2880 |
+
(1407, 292):3134
|
2881 |
+
(327, 717):3135
|
2882 |
+
(290, 383):3136
|
2883 |
+
(303, 581):3137
|
2884 |
+
(361, 266):3138
|
2885 |
+
(1150, 736):3139
|
2886 |
+
(274, 344):3140
|
2887 |
+
(298, 172):3141
|
2888 |
+
(1546, 269):3142
|
2889 |
+
(349, 360):3143
|
2890 |
+
(291, 709):3144
|
2891 |
+
(1651, 273):3145
|
2892 |
+
(303, 2382):3146
|
2893 |
+
(310, 273):3147
|
2894 |
+
(1010, 1790):3148
|
2895 |
+
(349, 717):3149
|
2896 |
+
(2109, 526):3150
|
2897 |
+
(420, 291):3151
|
2898 |
+
(663, 329):3152
|
2899 |
+
(566, 276):3153
|
2900 |
+
(1165, 1296):3154
|
2901 |
+
(712, 335):3155
|
2902 |
+
(1140, 261):3156
|
2903 |
+
(397, 372):3157
|
2904 |
+
(341, 267):3158
|
2905 |
+
(1337, 1455):3159
|
2906 |
+
(319, 1371):3160
|
2907 |
+
(926, 273):3161
|
2908 |
+
(1312, 1225):3162
|
2909 |
+
(332, 365):3163
|
2910 |
+
(386, 439):3164
|
2911 |
+
(575, 360):3165
|
2912 |
+
(292, 265):3166
|
2913 |
+
(282, 565):3167
|
2914 |
+
(1095, 1721):3168
|
2915 |
+
(1007, 261):3169
|
2916 |
+
(287, 1350):3170
|
2917 |
+
(1179, 419):3171
|
2918 |
+
(823, 263):3172
|
2919 |
+
(502, 299):3173
|
2920 |
+
(265, 2100):3174
|
2921 |
+
(840, 337):3175
|
2922 |
+
(307, 276):3176
|
2923 |
+
(1154, 297):3177
|
2924 |
+
(2780, 273):3178
|
2925 |
+
(856, 451):3179
|
2926 |
+
(1496, 741):3180
|
2927 |
+
(894, 457):3181
|
2928 |
+
(275, 978):3182
|
2929 |
+
(538, 311):3183
|
2930 |
+
(1072, 425):3184
|
2931 |
+
(411, 981):3185
|
2932 |
+
(767, 377):3186
|
2933 |
+
(265, 509):3187
|
2934 |
+
(400, 381):3188
|
2935 |
+
(1474, 475):3189
|
2936 |
+
(435, 608):3190
|
2937 |
+
(364, 425):3191
|
2938 |
+
(289, 442):3192
|
2939 |
+
(604, 348):3193
|
2940 |
+
(286, 522):3194
|
2941 |
+
(640, 270):3195
|
2942 |
+
(355, 287):3196
|
2943 |
+
(331, 269):3197
|
2944 |
+
(640, 284):3198
|
2945 |
+
(499, 273):3199
|
2946 |
+
(326, 404):3200
|
2947 |
+
(327, 328):3201
|
2948 |
+
(395, 837):3202
|
2949 |
+
(287, 465):3203
|
2950 |
+
(294, 540):3204
|
2951 |
+
(288, 963):3205
|
2952 |
+
(377, 336):3206
|
2953 |
+
(1232, 1084):3207
|
2954 |
+
(1816, 567):3208
|
2955 |
+
(279, 275):3209
|
2956 |
+
(477, 283):3210
|
2957 |
+
(335, 304):3211
|
2958 |
+
(784, 501):3212
|
2959 |
+
(303, 350):3213
|
2960 |
+
(1720, 522):3214
|
2961 |
+
(297, 408):3215
|
2962 |
+
(295, 401):3216
|
2963 |
+
(446, 273):3217
|
2964 |
+
(310, 331):3218
|
2965 |
+
(871, 273):3219
|
2966 |
+
(421, 277):3220
|
2967 |
+
(982, 156):3221
|
2968 |
+
(819, 266):3222
|
2969 |
+
(1506, 399):3223
|
2970 |
+
(1932, 594):3224
|
2971 |
+
(2203, 305):3225
|
2972 |
+
(572, 671):3226
|
2973 |
+
(2892, 354):3227
|
2974 |
+
(486, 597):3228
|
2975 |
+
(1247, 272):3229
|
2976 |
+
(279, 930):3230
|
2977 |
+
(264, 865):3231
|
2978 |
+
(538, 717):3232
|
2979 |
+
(550, 715):3233
|
2980 |
+
(306, 601):3234
|
2981 |
+
(481, 390):3235
|
2982 |
+
(1508, 445):3236
|
2983 |
+
(418, 359):3237
|
2984 |
+
(2616, 347):3238
|
2985 |
+
(303, 895):3239
|
2986 |
+
(795, 459):3240
|
2987 |
+
(265, 271):3241
|
2988 |
+
(492, 276):3242
|
2989 |
+
(730, 653):3243
|
2990 |
+
(636, 618):3244
|
2991 |
+
(974, 323):3245
|
2992 |
+
(294, 989):3246
|
2993 |
+
(285, 320):3247
|
2994 |
+
(541, 297):3248
|
2995 |
+
(302, 276):3249
|
2996 |
+
(285, 267):3250
|
2997 |
+
(851, 290):3251
|
2998 |
+
(849, 1291):3252
|
2999 |
+
(269, 503):3253
|
3000 |
+
(582, 276):3254
|
3001 |
+
(315, 1722):3255
|
3002 |
+
(1234, 1472):3256
|
3003 |
+
(920, 815):3257
|
3004 |
+
(470, 284):3258
|
3005 |
+
(499, 330):3259
|
3006 |
+
(288, 360):3260
|
3007 |
+
(1302, 433):3261
|
3008 |
+
(322, 462):3262
|
3009 |
+
(438, 1539):3263
|
3010 |
+
(288, 305):3264
|
3011 |
+
(804, 273):3265
|
3012 |
+
(302, 265):3266
|
3013 |
+
(911, 344):3267
|
3014 |
+
(511, 344):3268
|
3015 |
+
(265, 786):3269
|
3016 |
+
(898, 271):3270
|
3017 |
+
(308, 1371):3271
|
3018 |
+
(739, 281):3272
|
3019 |
+
(386, 329):3273
|
3020 |
+
(1388, 277):3274
|
3021 |
+
(289, 292):3275
|
3022 |
+
(301, 284):3276
|
3023 |
+
(306, 290):3277
|
3024 |
+
(1184, 273):3278
|
3025 |
+
(314, 443):3279
|
3026 |
+
(3279, 150):3280
|
3027 |
+
(279, 334):3281
|
3028 |
+
(537, 464):3282
|
3029 |
+
(1337, 1237):3283
|
3030 |
+
(909, 273):3284
|
3031 |
+
(2635, 537):3285
|
3032 |
+
(1292, 847):3286
|
3033 |
+
(3286, 588):3287
|
3034 |
+
(1064, 273):3288
|
3035 |
+
(270, 275):3289
|
3036 |
+
(513, 407):3290
|
3037 |
+
(271, 299):3291
|
3038 |
+
(341, 1210):3292
|
3039 |
+
(740, 273):3293
|
3040 |
+
(1737, 2235):3294
|
3041 |
+
(740, 2433):3295
|
3042 |
+
(563, 168):3296
|
3043 |
+
(639, 318):3297
|
3044 |
+
(942, 853):3298
|
3045 |
+
(289, 410):3299
|
3046 |
+
(304, 263):3300
|
3047 |
+
(752, 302):3301
|
3048 |
+
(299, 330):3302
|
3049 |
+
(613, 266):3303
|
3050 |
+
(396, 1441):3304
|
3051 |
+
(670, 273):3305
|
3052 |
+
(264, 350):3306
|
3053 |
+
(381, 261):3307
|
3054 |
+
(952, 2397):3308
|
3055 |
+
(386, 579):3309
|
3056 |
+
(392, 934):3310
|
3057 |
+
(308, 771):3311
|
3058 |
+
(384, 1174):3312
|
3059 |
+
(845, 527):3313
|
3060 |
+
(783, 498):3314
|
3061 |
+
(514, 290):3315
|
3062 |
+
(549, 339):3316
|
3063 |
+
(295, 311):3317
|
3064 |
+
(505, 701):3318
|
3065 |
+
(502, 297):3319
|
3066 |
+
(319, 589):3320
|
3067 |
+
(264, 2013):3321
|
3068 |
+
(602, 305):3322
|
3069 |
+
(306, 2320):3323
|
3070 |
+
(315, 316):3324
|
3071 |
+
(1038, 455):3325
|
3072 |
+
(1048, 305):3326
|
3073 |
+
(292, 288):3327
|
3074 |
+
(1165, 264):3328
|
3075 |
+
(365, 539):3329
|
3076 |
+
(2275, 1880):3330
|
3077 |
+
(386, 359):3331
|
3078 |
+
(266, 373):3332
|
3079 |
+
(449, 2669):3333
|
3080 |
+
(704, 1050):3334
|
3081 |
+
(2143, 791):3335
|
3082 |
+
(664, 676):3336
|
3083 |
+
(1058, 2954):3337
|
3084 |
+
(2117, 305):3338
|
3085 |
+
(275, 413):3339
|
3086 |
+
(1170, 269):3340
|
3087 |
+
(308, 2670):3341
|
3088 |
+
(290, 284):3342
|
3089 |
+
(456, 356):3343
|
3090 |
+
(265, 463):3344
|
3091 |
+
(524, 323):3345
|
3092 |
+
(288, 337):3346
|
3093 |
+
(1232, 354):3347
|
3094 |
+
(682, 538):3348
|
3095 |
+
(3348, 425):3349
|
3096 |
+
(1288, 330):3350
|
3097 |
+
(392, 335):3351
|
3098 |
+
(349, 261):3352
|
3099 |
+
(282, 480):3353
|
3100 |
+
(1832, 1005):3354
|
3101 |
+
(1166, 720):3355
|
3102 |
+
(314, 350):3356
|
3103 |
+
(863, 1039):3357
|
3104 |
+
(299, 440):3358
|
3105 |
+
(805, 402):3359
|
3106 |
+
(2247, 332):3360
|
3107 |
+
(317, 868):3361
|
3108 |
+
(1447, 1249):3362
|
3109 |
+
(279, 2973):3363
|
3110 |
+
(349, 2850):3364
|
3111 |
+
(265, 359):3365
|
3112 |
+
(386, 1636):3366
|
3113 |
+
(1059, 693):3367
|
3114 |
+
(590, 609):3368
|
3115 |
+
(275, 676):3369
|
3116 |
+
(1913, 294):3370
|
3117 |
+
(552, 267):3371
|
3118 |
+
(2147, 329):3372
|
3119 |
+
(589, 519):3373
|
3120 |
+
(269, 455):3374
|
3121 |
+
(420, 288):3375
|
3122 |
+
(448, 371):3376
|
3123 |
+
(312, 421):3377
|
3124 |
+
(274, 410):3378
|
3125 |
+
(343, 618):3379
|
3126 |
+
(270, 287):3380
|
3127 |
+
(307, 1755):3381
|
3128 |
+
(289, 2028):3382
|
3129 |
+
(1042, 334):3383
|
3130 |
+
(315, 1330):3384
|
3131 |
+
(1058, 294):3385
|
3132 |
+
(275, 450):3386
|
3133 |
+
(314, 1923):3387
|
3134 |
+
(795, 963):3388
|
3135 |
+
(353, 876):3389
|
3136 |
+
(295, 862):3390
|
3137 |
+
(964, 273):3391
|
3138 |
+
(306, 1472):3392
|
3139 |
+
(412, 436):3393
|
3140 |
+
(355, 267):3394
|
3141 |
+
(257, 145):3395
|
3142 |
+
(290, 261):3396
|
3143 |
+
(729, 514):3397
|
3144 |
+
(289, 736):3398
|
3145 |
+
(305, 525):3399
|
3146 |
+
(2714, 436):3400
|
3147 |
+
(495, 278):3401
|
3148 |
+
(275, 451):3402
|
3149 |
+
(1062, 283):3403
|
3150 |
+
(731, 276):3404
|
3151 |
+
(288, 278):3405
|
3152 |
+
(408, 433):3406
|
3153 |
+
(535, 185):3407
|
3154 |
+
(712, 261):3408
|
3155 |
+
(439, 304):3409
|
3156 |
+
(354, 263):3410
|
3157 |
+
(308, 815):3411
|
3158 |
+
(301, 320):3412
|
3159 |
+
(265, 579):3413
|
3160 |
+
(291, 565):3414
|
3161 |
+
(418, 320):3415
|
3162 |
+
(276, 294):3416
|
3163 |
+
(937, 746):3417
|
3164 |
+
(647, 156):3418
|
3165 |
+
(1103, 408):3419
|
3166 |
+
(271, 624):3420
|
3167 |
+
(1932, 149):3421
|
3168 |
+
(386, 454):3422
|
3169 |
+
(632, 266):3423
|
3170 |
+
(273, 1209):3424
|
3171 |
+
(275, 464):3425
|
3172 |
+
(275, 405):3426
|
3173 |
+
(1041, 277):3427
|
3174 |
+
(265, 413):3428
|
3175 |
+
(679, 372):3429
|
3176 |
+
(470, 261):3430
|
3177 |
+
(379, 1437):3431
|
3178 |
+
(648, 278):3432
|
3179 |
+
(481, 311):3433
|
3180 |
+
(299, 644):3434
|
3181 |
+
(315, 2174):3435
|
3182 |
+
(1272, 269):3436
|
3183 |
+
(356, 368):3437
|
3184 |
+
(1439, 267):3438
|
3185 |
+
(607, 276):3439
|
3186 |
+
(619, 337):3440
|
3187 |
+
(904, 261):3441
|
3188 |
+
(276, 575):3442
|
3189 |
+
(308, 589):3443
|
3190 |
+
(303, 337):3444
|
3191 |
+
(288, 1259):3445
|
3192 |
+
(288, 437):3446
|
3193 |
+
(1105, 261):3447
|
3194 |
+
(1390, 285):3448
|
3195 |
+
(306, 779):3449
|
3196 |
+
(524, 297):3450
|
3197 |
+
(1344, 458):3451
|
3198 |
+
(264, 316):3452
|
3199 |
+
(272, 712):3453
|
3200 |
+
(340, 529):3454
|
3201 |
+
(353, 607):3455
|
3202 |
+
(332, 266):3456
|
3203 |
+
(274, 2759):3457
|
3204 |
+
(440, 329):3458
|
3205 |
+
(794, 278):3459
|
3206 |
+
(341, 725):3460
|
3207 |
+
(274, 357):3461
|
3208 |
+
(883, 287):3462
|
3209 |
+
(997, 448):3463
|
3210 |
+
(315, 337):3464
|
3211 |
+
(471, 618):3465
|
3212 |
+
(336, 261):3466
|
3213 |
+
(274, 433):3467
|
3214 |
+
(288, 270):3468
|
3215 |
+
(1583, 462):3469
|
3216 |
+
(659, 1437):3470
|
3217 |
+
(314, 326):3471
|
3218 |
+
(969, 512):3472
|
3219 |
+
(852, 401):3473
|
3220 |
+
(315, 683):3474
|
3221 |
+
(659, 678):3475
|
3222 |
+
(315, 287):3476
|
3223 |
+
(343, 903):3477
|
3224 |
+
(285, 365):3478
|
3225 |
+
(675, 267):3479
|
3226 |
+
(659, 671):3480
|
3227 |
+
(428, 261):3481
|
3228 |
+
(401, 400):3482
|
3229 |
+
(326, 1786):3483
|
3230 |
+
(381, 576):3484
|
3231 |
+
(673, 312):3485
|
3232 |
+
(322, 475):3486
|
3233 |
+
(326, 299):3487
|
3234 |
+
(270, 394):3488
|
3235 |
+
(456, 1259):3489
|
3236 |
+
(384, 347):3490
|
3237 |
+
(322, 1279):3491
|
3238 |
+
(1542, 564):3492
|
3239 |
+
(306, 766):3493
|
3240 |
+
(418, 352):3494
|
3241 |
+
(275, 373):3495
|
3242 |
+
(315, 1873):3496
|
3243 |
+
(297, 1163):3497
|
3244 |
+
(285, 373):3498
|
3245 |
+
(293, 916):3499
|
3246 |
+
(338, 374):3500
|
3247 |
+
(718, 830):3501
|
3248 |
+
(279, 2357):3502
|
3249 |
+
(300, 533):3503
|
3250 |
+
(301, 344):3504
|
3251 |
+
(648, 463):3505
|
3252 |
+
(289, 1004):3506
|
3253 |
+
(415, 1114):3507
|
3254 |
+
(326, 264):3508
|
3255 |
+
(311, 431):3509
|
3256 |
+
(378, 1006):3510
|
3257 |
+
(750, 889):3511
|
3258 |
+
(271, 719):3512
|
3259 |
+
(991, 273):3513
|
3260 |
+
(301, 340):3514
|
3261 |
+
(482, 1835):3515
|
3262 |
+
(669, 654):3516
|
3263 |
+
(370, 759):3517
|
3264 |
+
(353, 412):3518
|
3265 |
+
(301, 972):3519
|
3266 |
+
(699, 278):3520
|
3267 |
+
(954, 269):3521
|
3268 |
+
(338, 515):3522
|
3269 |
+
(524, 1647):3523
|
3270 |
+
(775, 329):3524
|
3271 |
+
(1117, 970):3525
|
3272 |
+
(3113, 3114):3526
|
3273 |
+
(301, 2481):3527
|
3274 |
+
(517, 2564):3528
|
3275 |
+
(257, 2214):3529
|
3276 |
+
(604, 283):3530
|
3277 |
+
(270, 457):3531
|
3278 |
+
(265, 797):3532
|
3279 |
+
(282, 1001):3533
|
3280 |
+
(767, 419):3534
|
3281 |
+
(499, 288):3535
|
3282 |
+
(1501, 728):3536
|
3283 |
+
(1316, 273):3537
|
3284 |
+
(297, 307):3538
|
3285 |
+
(314, 397):3539
|
3286 |
+
(275, 1637):3540
|
3287 |
+
(289, 501):3541
|
3288 |
+
(343, 570):3542
|
3289 |
+
(411, 1056):3543
|
3290 |
+
(1432, 324):3544
|
3291 |
+
(841, 278):3545
|
3292 |
+
(271, 608):3546
|
3293 |
+
(299, 329):3547
|
3294 |
+
(1715, 689):3548
|
3295 |
+
(264, 487):3549
|
3296 |
+
(691, 329):3550
|
3297 |
+
(274, 291):3551
|
3298 |
+
(1297, 267):3552
|
3299 |
+
(948, 1650):3553
|
3300 |
+
(391, 853):3554
|
3301 |
+
(275, 2111):3555
|
3302 |
+
(997, 581):3556
|
3303 |
+
(1157, 357):3557
|
3304 |
+
(378, 1802):3558
|
3305 |
+
(518, 273):3559
|
3306 |
+
(1622, 273):3560
|
3307 |
+
(2584, 548):3561
|
3308 |
+
(386, 271):3562
|
3309 |
+
(1102, 261):3563
|
3310 |
+
(421, 273):3564
|
3311 |
+
(319, 807):3565
|
3312 |
+
(660, 2226):3566
|
3313 |
+
(1193, 281):3567
|
3314 |
+
(691, 267):3568
|
3315 |
+
(740, 855):3569
|
3316 |
+
(636, 855):3570
|
3317 |
+
(380, 500):3571
|
3318 |
+
(2225, 1089):3572
|
3319 |
+
(1640, 336):3573
|
3320 |
+
(1100, 261):3574
|
3321 |
+
(352, 736):3575
|
3322 |
+
(289, 483):3576
|
3323 |
+
(385, 345):3577
|
3324 |
+
(563, 172):3578
|
3325 |
+
(299, 2063):3579
|
3326 |
+
(1809, 342):3580
|
3327 |
+
(322, 288):3581
|
3328 |
+
(456, 642):3582
|
3329 |
+
(1217, 324):3583
|
3330 |
+
(1061, 717):3584
|
3331 |
+
(941, 269):3585
|
3332 |
+
(271, 694):3586
|
3333 |
+
(1888, 526):3587
|
3334 |
+
(370, 1382):3588
|
3335 |
+
(400, 489):3589
|
3336 |
+
(1217, 649):3590
|
3337 |
+
(409, 607):3591
|
3338 |
+
(1810, 1081):3592
|
3339 |
+
(456, 290):3593
|
3340 |
+
(1532, 451):3594
|
3341 |
+
(603, 267):3595
|
3342 |
+
(1597, 261):3596
|
3343 |
+
(271, 261):3597
|
3344 |
+
(421, 413):3598
|
3345 |
+
(339, 466):3599
|
3346 |
+
(1427, 373):3600
|
3347 |
+
(755, 1657):3601
|
3348 |
+
(270, 603):3602
|
3349 |
+
(510, 276):3603
|
3350 |
+
(1085, 267):3604
|
3351 |
+
(834, 360):3605
|
3352 |
+
(378, 1226):3606
|
3353 |
+
(415, 2400):3607
|
3354 |
+
(295, 1618):3608
|
3355 |
+
(1044, 487):3609
|
3356 |
+
(319, 310):3610
|
3357 |
+
(271, 364):3611
|
3358 |
+
(1095, 367):3612
|
3359 |
+
(1504, 273):3613
|
3360 |
+
(1991, 273):3614
|
3361 |
+
(1405, 328):3615
|
3362 |
+
(295, 369):3616
|
3363 |
+
(878, 356):3617
|
3364 |
+
(286, 290):3618
|
3365 |
+
(1067, 276):3619
|
3366 |
+
(663, 458):3620
|
3367 |
+
(350, 2880):3621
|
3368 |
+
(681, 323):3622
|
3369 |
+
(339, 302):3623
|
3370 |
+
(353, 505):3624
|
3371 |
+
(726, 555):3625
|
3372 |
+
(444, 278):3626
|
3373 |
+
(1110, 441):3627
|
3374 |
+
(914, 276):3628
|
3375 |
+
(2060, 621):3629
|
3376 |
+
(297, 346):3630
|
3377 |
+
(1506, 1392):3631
|
3378 |
+
(486, 949):3632
|
3379 |
+
(285, 284):3633
|
3380 |
+
(305, 533):3634
|
3381 |
+
(310, 424):3635
|
3382 |
+
(303, 448):3636
|
3383 |
+
(767, 269):3637
|
3384 |
+
(364, 274):3638
|
3385 |
+
(535, 167):3639
|
3386 |
+
(317, 637):3640
|
3387 |
+
(911, 551):3641
|
3388 |
+
(471, 324):3642
|
3389 |
+
(297, 2719):3643
|
3390 |
+
(256, 136):3644
|
3391 |
+
(343, 416):3645
|
3392 |
+
(1466, 278):3646
|
3393 |
+
(275, 281):3647
|
3394 |
+
(521, 272):3648
|
3395 |
+
(1998, 408):3649
|
3396 |
+
(967, 273):3650
|
3397 |
+
(873, 559):3651
|
3398 |
+
(410, 452):3652
|
3399 |
+
(2611, 413):3653
|
3400 |
+
(295, 545):3654
|
3401 |
+
(1352, 335):3655
|
3402 |
+
(965, 320):3656
|
3403 |
+
(274, 509):3657
|
3404 |
+
(547, 465):3658
|
3405 |
+
(471, 835):3659
|
3406 |
+
(282, 445):3660
|
3407 |
+
(492, 801):3661
|
3408 |
+
(283, 347):3662
|
3409 |
+
(282, 705):3663
|
3410 |
+
(271, 1304):3664
|
3411 |
+
(576, 273):3665
|
3412 |
+
(287, 328):3666
|
3413 |
+
(396, 1738):3667
|
3414 |
+
(293, 267):3668
|
3415 |
+
(343, 350):3669
|
3416 |
+
(778, 1821):3670
|
3417 |
+
(343, 1162):3671
|
3418 |
+
(343, 361):3672
|
3419 |
+
(421, 361):3673
|
3420 |
+
(378, 675):3674
|
3421 |
+
(414, 273):3675
|
3422 |
+
(291, 719):3676
|
3423 |
+
(669, 300):3677
|
3424 |
+
(704, 334):3678
|
3425 |
+
(625, 278):3679
|
3426 |
+
(1248, 284):3680
|
3427 |
+
(338, 553):3681
|
3428 |
+
(282, 365):3682
|
3429 |
+
(295, 581):3683
|
3430 |
+
(267, 403):3684
|
3431 |
+
(303, 267):3685
|
3432 |
+
(840, 327):3686
|
3433 |
+
(949, 375):3687
|
3434 |
+
(301, 738):3688
|
3435 |
+
(295, 2008):3689
|
3436 |
+
(1113, 288):3690
|
3437 |
+
(286, 1899):3691
|
3438 |
+
(856, 325):3692
|
3439 |
+
(482, 1787):3693
|
3440 |
+
(287, 707):3694
|
3441 |
+
(340, 276):3695
|
3442 |
+
(837, 307):3696
|
3443 |
+
(481, 1160):3697
|
3444 |
+
(274, 307):3698
|
3445 |
+
(299, 458):3699
|
3446 |
+
(2313, 360):3700
|
3447 |
+
(520, 264):3701
|
3448 |
+
(707, 273):3702
|
3449 |
+
(732, 415):3703
|
3450 |
+
(340, 366):3704
|
3451 |
+
(364, 352):3705
|
3452 |
+
(563, 156):3706
|
3453 |
+
(914, 273):3707
|
3454 |
+
(580, 512):3708
|
3455 |
+
(341, 451):3709
|
3456 |
+
(421, 2310):3710
|
3457 |
+
(832, 275):3711
|
3458 |
+
(282, 1091):3712
|
3459 |
+
(291, 847):3713
|
3460 |
+
(275, 291):3714
|
3461 |
+
(293, 357):3715
|
3462 |
+
(2836, 288):3716
|
3463 |
+
(279, 344):3717
|
3464 |
+
(1072, 449):3718
|
3465 |
+
(875, 1536):3719
|
3466 |
+
(546, 505):3720
|
3467 |
+
(456, 437):3721
|
3468 |
+
(1428, 287):3722
|
3469 |
+
(2435, 335):3723
|
3470 |
+
(410, 515):3724
|
3471 |
+
(292, 448):3725
|
3472 |
+
(426, 269):3726
|
3473 |
+
(1344, 484):3727
|
3474 |
+
(1161, 357):3728
|
3475 |
+
(1194, 273):3729
|
3476 |
+
(276, 345):3730
|
3477 |
+
(394, 273):3731
|
3478 |
+
(274, 382):3732
|
3479 |
+
(314, 633):3733
|
3480 |
+
(343, 522):3734
|
3481 |
+
(352, 269):3735
|
3482 |
+
(541, 288):3736
|
3483 |
+
(1206, 812):3737
|
3484 |
+
(340, 373):3738
|
3485 |
+
(300, 360):3739
|
3486 |
+
(438, 1023):3740
|
3487 |
+
(276, 328):3741
|
3488 |
+
(2442, 312):3742
|
3489 |
+
(282, 337):3743
|
3490 |
+
(554, 488):3744
|
3491 |
+
(315, 510):3745
|
3492 |
+
(274, 309):3746
|
3493 |
+
(382, 265):3747
|
3494 |
+
(766, 519):3748
|
3495 |
+
(2078, 414):3749
|
3496 |
+
(285, 601):3750
|
3497 |
+
(1884, 336):3751
|
3498 |
+
(1496, 374):3752
|
3499 |
+
(2665, 2266):3753
|
3500 |
+
(660, 2650):3754
|
3501 |
+
(465, 344):3755
|
3502 |
+
(315, 410):3756
|
3503 |
+
(927, 273):3757
|
3504 |
+
(275, 1034):3758
|
3505 |
+
(293, 532):3759
|
3506 |
+
(399, 261):3760
|
3507 |
+
(1420, 327):3761
|
3508 |
+
(1810, 573):3762
|
3509 |
+
(293, 449):3763
|
3510 |
+
(589, 431):3764
|
3511 |
+
(288, 423):3765
|
3512 |
+
(3330, 276):3766
|
3513 |
+
(674, 355):3767
|
3514 |
+
(2017, 311):3768
|
3515 |
+
(265, 339):3769
|
3516 |
+
(952, 334):3770
|
3517 |
+
(275, 389):3771
|
3518 |
+
(326, 368):3772
|
3519 |
+
(392, 1351):3773
|
3520 |
+
(674, 364):3774
|
3521 |
+
(957, 540):3775
|
3522 |
+
(1409, 652):3776
|
3523 |
+
(269, 611):3777
|
3524 |
+
(267, 341):3778
|
3525 |
+
(266, 652):3779
|
3526 |
+
(279, 305):3780
|
3527 |
+
(256, 160):3781
|
3528 |
+
(1817, 408):3782
|
3529 |
+
(322, 774):3783
|
3530 |
+
(1600, 753):3784
|
3531 |
+
(1254, 422):3785
|
3532 |
+
(499, 1008):3786
|
3533 |
+
(301, 574):3787
|
3534 |
+
(777, 1557):3788
|
3535 |
+
(2012, 281):3789
|
3536 |
+
(1106, 284):3790
|
3537 |
+
(349, 381):3791
|
3538 |
+
(282, 405):3792
|
3539 |
+
(816, 2136):3793
|
3540 |
+
(1058, 692):3794
|
3541 |
+
(2961, 905):3795
|
3542 |
+
(1012, 276):3796
|
3543 |
+
(664, 522):3797
|
3544 |
+
(2114, 790):3798
|
3545 |
+
(3351, 717):3799
|
3546 |
+
(297, 1456):3800
|
3547 |
+
(2119, 579):3801
|
3548 |
+
(961, 988):3802
|
3549 |
+
(2679, 284):3803
|
3550 |
+
(3353, 290):3804
|
3551 |
+
(437, 269):3805
|
3552 |
+
(531, 267):3806
|
3553 |
+
(364, 1830):3807
|
3554 |
+
(1131, 425):3808
|
3555 |
+
(415, 1118):3809
|
3556 |
+
(295, 744):3810
|
3557 |
+
(325, 337):3811
|
3558 |
+
(293, 2456):3812
|
3559 |
+
(1238, 605):3813
|
3560 |
+
(314, 874):3814
|
3561 |
+
(2006, 261):3815
|
3562 |
+
(294, 387):3816
|
3563 |
+
(392, 446):3817
|
3564 |
+
(308, 274):3818
|
3565 |
+
(2974, 1025):3819
|
3566 |
+
(844, 381):3820
|
3567 |
+
(742, 359):3821
|
3568 |
+
(310, 1449):3822
|
3569 |
+
(392, 3362):3823
|
3570 |
+
(270, 1314):3824
|
3571 |
+
(742, 458):3825
|
3572 |
+
(937, 347):3826
|
3573 |
+
(285, 448):3827
|
3574 |
+
(290, 365):3828
|
3575 |
+
(326, 1547):3829
|
3576 |
+
(315, 1015):3830
|
3577 |
+
(523, 981):3831
|
3578 |
+
(2978, 453):3832
|
3579 |
+
(405, 424):3833
|
3580 |
+
(1679, 3368):3834
|
3581 |
+
(271, 1669):3835
|
3582 |
+
(553, 356):3836
|
3583 |
+
(1041, 273):3837
|
3584 |
+
(1915, 430):3838
|
3585 |
+
(890, 1370):3839
|
3586 |
+
(297, 1328):3840
|
3587 |
+
(264, 1263):3841
|
3588 |
+
(2995, 559):3842
|
3589 |
+
(1044, 261):3843
|
3590 |
+
(1170, 287):3844
|
3591 |
+
(1013, 2152):3845
|
3592 |
+
(267, 522):3846
|
3593 |
+
(271, 408):3847
|
3594 |
+
(1614, 1839):3848
|
3595 |
+
(3385, 421):3849
|
3596 |
+
(911, 433):3850
|
3597 |
+
(1615, 608):3851
|
3598 |
+
(1077, 285):3852
|
3599 |
+
(370, 269):3853
|
3600 |
+
(2155, 371):3854
|
3601 |
+
(289, 297):3855
|
3602 |
+
(317, 446):3856
|
3603 |
+
(1474, 288):3857
|
3604 |
+
(946, 3393):3858
|
3605 |
+
(1152, 287):3859
|
3606 |
+
(303, 323):3860
|
3607 |
+
(467, 267):3861
|
3608 |
+
(1758, 388):3862
|
3609 |
+
(349, 705):3863
|
3610 |
+
(539, 609):3864
|
3611 |
+
(648, 344):3865
|
3612 |
+
(294, 597):3866
|
3613 |
+
(546, 352):3867
|
3614 |
+
(322, 686):3868
|
3615 |
+
(965, 1618):3869
|
3616 |
+
(381, 267):3870
|
3617 |
+
(2717, 364):3871
|
3618 |
+
(980, 329):3872
|
3619 |
+
(858, 3012):3873
|
3620 |
+
(1172, 371):3874
|
3621 |
+
(1372, 339):3875
|
3622 |
+
(3411, 287):3876
|
3623 |
+
(326, 284):3877
|
3624 |
+
(1042, 344):3878
|
3625 |
+
(333, 172):3879
|
3626 |
+
(1232, 329):3880
|
3627 |
+
(691, 284):3881
|
3628 |
+
(264, 533):3882
|
3629 |
+
(696, 276):3883
|
3630 |
+
(288, 1381):3884
|
3631 |
+
(328, 320):3885
|
3632 |
+
(285, 460):3886
|
3633 |
+
(3886, 377):3887
|
3634 |
+
(382, 307):3888
|
3635 |
+
(291, 332):3889
|
3636 |
+
(759, 2306):3890
|
3637 |
+
(290, 352):3891
|
3638 |
+
(1467, 507):3892
|
3639 |
+
(1058, 264):3893
|
3640 |
+
(3893, 2505):3894
|
3641 |
+
(2702, 464):3895
|
3642 |
+
(1685, 273):3896
|
3643 |
+
(380, 345):3897
|
3644 |
+
(438, 275):3898
|
3645 |
+
(336, 373):3899
|
3646 |
+
(392, 1210):3900
|
3647 |
+
(964, 330):3901
|
3648 |
+
(1690, 3434):3902
|
3649 |
+
(2057, 655):3903
|
3650 |
+
(271, 341):3904
|
3651 |
+
(982, 173):3905
|
3652 |
+
(331, 352):3906
|
3653 |
+
(320, 334):3907
|
3654 |
+
(1076, 276):3908
|
3655 |
+
(682, 1857):3909
|
3656 |
+
(584, 2745):3910
|
3657 |
+
(1425, 284):3911
|
3658 |
+
(315, 1043):3912
|
3659 |
+
(405, 462):3913
|
3660 |
+
(1631, 273):3914
|
3661 |
+
(301, 322):3915
|
3662 |
+
(1389, 261):3916
|
3663 |
+
(1103, 559):3917
|
3664 |
+
(271, 1295):3918
|
3665 |
+
(2324, 287):3919
|
3666 |
+
(749, 575):3920
|
3667 |
+
(566, 273):3921
|
3668 |
+
(288, 520):3922
|
3669 |
+
(1106, 375):3923
|
3670 |
+
(308, 2183):3924
|
3671 |
+
(283, 305):3925
|
3672 |
+
(315, 310):3926
|
3673 |
+
(269, 490):3927
|
3674 |
+
(1775, 531):3928
|
3675 |
+
(899, 3457):3929
|
3676 |
+
(384, 562):3930
|
3677 |
+
(421, 302):3931
|
3678 |
+
(279, 2761):3932
|
3679 |
+
(1534, 273):3933
|
3680 |
+
(282, 361):3934
|
3681 |
+
(405, 277):3935
|
3682 |
+
(644, 261):3936
|
3683 |
+
(380, 1015):3937
|
3684 |
+
(1398, 407):3938
|
3685 |
+
(690, 359):3939
|
3686 |
+
(471, 284):3940
|
3687 |
+
(770, 371):3941
|
3688 |
+
(523, 312):3942
|
3689 |
+
(299, 509):3943
|
3690 |
+
(499, 1159):3944
|
3691 |
+
(1466, 281):3945
|
3692 |
+
(1160, 1584):3946
|
3693 |
+
(286, 484):3947
|
3694 |
+
(265, 1077):3948
|
3695 |
+
(384, 516):3949
|
3696 |
+
(410, 689):3950
|
3697 |
+
(1750, 273):3951
|
3698 |
+
(369, 512):3952
|
3699 |
+
(599, 261):3953
|
3700 |
+
(938, 269):3954
|
3701 |
+
(641, 567):3955
|
3702 |
+
(2175, 365):3956
|
3703 |
+
(1086, 454):3957
|
3704 |
+
(3482, 3483):3958
|
3705 |
+
(326, 350):3959
|
3706 |
+
(568, 359):3960
|
3707 |
+
(1278, 2784):3961
|
3708 |
+
(1086, 264):3962
|
3709 |
+
(857, 330):3963
|
3710 |
+
(412, 421):3964
|
3711 |
+
(384, 505):3965
|
3712 |
+
(341, 273):3966
|
3713 |
+
(331, 521):3967
|
3714 |
+
(1268, 737):3968
|
3715 |
+
(299, 419):3969
|
3716 |
+
(471, 264):3970
|
3717 |
+
(341, 450):3971
|
3718 |
+
(635, 559):3972
|
3719 |
+
(386, 503):3973
|
3720 |
+
(1173, 463):3974
|
3721 |
+
(271, 516):3975
|
3722 |
+
(690, 791):3976
|
3723 |
+
(294, 521):3977
|
3724 |
+
(1086, 515):3978
|
3725 |
+
(1257, 1493):3979
|
3726 |
+
(307, 519):3980
|
3727 |
+
(311, 363):3981
|
3728 |
+
(326, 1265):3982
|
3729 |
+
(292, 554):3983
|
3730 |
+
(2795, 509):3984
|
3731 |
+
(434, 452):3985
|
3732 |
+
(353, 1705):3986
|
3733 |
+
(1221, 559):3987
|
3734 |
+
(1439, 273):3988
|
3735 |
+
(270, 812):3989
|
3736 |
+
(3082, 320):3990
|
3737 |
+
(349, 689):3991
|
3738 |
+
(275, 1226):3992
|
3739 |
+
(1234, 709):3993
|
3740 |
+
(1160, 1406):3994
|
3741 |
+
(829, 267):3995
|
3742 |
+
(385, 986):3996
|
3743 |
+
(481, 274):3997
|
3744 |
+
(349, 454):3998
|
3745 |
+
(752, 461):3999
|
3746 |
+
(485, 261):4000
|
3747 |
+
(879, 678):4001
|
3748 |
+
(1528, 413):4002
|
3749 |
+
(997, 861):4003
|
3750 |
+
(337, 664):4004
|
3751 |
+
(843, 433):4005
|
3752 |
+
(295, 1369):4006
|
3753 |
+
(293, 485):4007
|
3754 |
+
(269, 360):4008
|
3755 |
+
(617, 273):4009
|
3756 |
+
(275, 517):4010
|
3757 |
+
(1222, 264):4011
|
3758 |
+
(264, 1639):4012
|
3759 |
+
(289, 310):4013
|
3760 |
+
(287, 759):4014
|
3761 |
+
(285, 468):4015
|
3762 |
+
(274, 985):4016
|
3763 |
+
(898, 267):4017
|
3764 |
+
(615, 1755):4018
|
3765 |
+
(376, 352):4019
|
3766 |
+
(797, 472):4020
|
3767 |
+
(660, 442):4021
|
3768 |
+
(322, 1967):4022
|
3769 |
+
(378, 811):4023
|
3770 |
+
(1465, 702):4024
|
3771 |
+
(290, 479):4025
|
3772 |
+
(262, 2820):4026
|
3773 |
+
(409, 757):4027
|
3774 |
+
(628, 284):4028
|
3775 |
+
(669, 422):4029
|
3776 |
+
(2372, 801):4030
|
3777 |
+
(331, 733):4031
|
3778 |
+
(411, 2183):4032
|
3779 |
+
(276, 500):4033
|
3780 |
+
(1502, 746):4034
|
3781 |
+
(2538, 498):4035
|
3782 |
+
(783, 509):4036
|
3783 |
+
(331, 327):4037
|
3784 |
+
(296, 341):4038
|
3785 |
+
(1590, 433):4039
|
3786 |
+
(405, 310):4040
|
3787 |
+
(2573, 589):4041
|
3788 |
+
(264, 1971):4042
|
3789 |
+
(1414, 269):4043
|
3790 |
+
(297, 2352):4044
|
3791 |
+
(459, 267):4045
|
3792 |
+
(274, 390):4046
|
3793 |
+
(859, 281):4047
|
3794 |
+
(274, 528):4048
|
3795 |
+
(285, 1716):4049
|
3796 |
+
(596, 1084):4050
|
3797 |
+
(1752, 556):4051
|
3798 |
+
(546, 421):4052
|
3799 |
+
(1624, 274):4053
|
3800 |
+
(409, 1063):4054
|
3801 |
+
(1101, 273):4055
|
3802 |
+
(544, 267):4056
|
3803 |
+
(380, 853):4057
|
3804 |
+
(1587, 1950):4058
|
3805 |
+
(309, 515):4059
|
3806 |
+
(738, 357):4060
|
3807 |
+
(1108, 498):4061
|
3808 |
+
(306, 847):4062
|
3809 |
+
(552, 463):4063
|
3810 |
+
(282, 381):4064
|
3811 |
+
(636, 1194):4065
|
3812 |
+
(271, 337):4066
|
3813 |
+
(1600, 404):4067
|
3814 |
+
(1317, 689):4068
|
3815 |
+
(481, 294):4069
|
3816 |
+
(384, 511):4070
|
3817 |
+
(505, 1002):4071
|
3818 |
+
(310, 276):4072
|
3819 |
+
(805, 266):4073
|
3820 |
+
(352, 425):4074
|
3821 |
+
(286, 452):4075
|
3822 |
+
(690, 1952):4076
|
3823 |
+
(546, 414):4077
|
3824 |
+
(1418, 345):4078
|
3825 |
+
(535, 156):4079
|
3826 |
+
(992, 276):4080
|
3827 |
+
(291, 276):4081
|
3828 |
+
(576, 511):4082
|
3829 |
+
(704, 453):4083
|
3830 |
+
(285, 309):4084
|
3831 |
+
(1080, 688):4085
|
3832 |
+
(1168, 1947):4086
|
3833 |
+
(1715, 714):4087
|
3834 |
+
(1610, 361):4088
|
3835 |
+
(699, 281):4089
|
3836 |
+
(477, 373):4090
|
3837 |
+
(259, 144):4091
|
3838 |
+
(740, 329):4092
|
3839 |
+
(332, 271):4093
|
3840 |
+
(2582, 2861):4094
|
3841 |
+
(291, 335):4095
|
3842 |
+
(748, 949):4096
|
3843 |
+
(720, 276):4097
|
3844 |
+
(477, 1458):4098
|
3845 |
+
(473, 299):4099
|
3846 |
+
(264, 1087):4100
|
3847 |
+
(1049, 3180):4101
|
3848 |
+
(271, 335):4102
|
3849 |
+
(494, 2598):4103
|
3850 |
+
(323, 540):4104
|
3851 |
+
(314, 860):4105
|
3852 |
+
(1429, 273):4106
|
3853 |
+
(1301, 757):4107
|
3854 |
+
(338, 418):4108
|
3855 |
+
(731, 609):4109
|
3856 |
+
(282, 1016):4110
|
3857 |
+
(314, 830):4111
|
3858 |
+
(282, 3069):4112
|
3859 |
+
(961, 373):4113
|
3860 |
+
(340, 603):4114
|
3861 |
+
(1388, 272):4115
|
3862 |
+
(453, 261):4116
|
3863 |
+
(593, 490):4117
|
3864 |
+
(456, 1370):4118
|
3865 |
+
(2296, 637):4119
|
3866 |
+
(2405, 1052):4120
|
3867 |
+
(716, 829):4121
|
3868 |
+
(901, 581):4122
|
3869 |
+
(270, 509):4123
|
3870 |
+
(549, 571):4124
|
3871 |
+
(1554, 355):4125
|
3872 |
+
(352, 281):4126
|
3873 |
+
(1731, 273):4127
|
3874 |
+
(900, 261):4128
|
3875 |
+
(396, 265):4129
|
3876 |
+
(329, 273):4130
|
3877 |
+
(322, 537):4131
|
3878 |
+
(411, 514):4132
|
3879 |
+
(1011, 483):4133
|
3880 |
+
(330, 357):4134
|
3881 |
+
(340, 361):4135
|
3882 |
+
(267, 297):4136
|
3883 |
+
(275, 1030):4137
|
3884 |
+
(568, 786):4138
|
3885 |
+
(378, 346):4139
|
3886 |
+
(545, 265):4140
|
3887 |
+
(840, 575):4141
|
3888 |
+
(276, 983):4142
|
3889 |
+
(271, 1662):4143
|
3890 |
+
(2410, 276):4144
|
3891 |
+
(1818, 299):4145
|
3892 |
+
(764, 935):4146
|
3893 |
+
(568, 973):4147
|
3894 |
+
(368, 311):4148
|
3895 |
+
(317, 475):4149
|
3896 |
+
(3221, 587):4150
|
3897 |
+
(315, 811):4151
|
3898 |
+
(481, 670):4152
|
3899 |
+
(295, 1070):4153
|
3900 |
+
(385, 500):4154
|
3901 |
+
(2163, 1363):4155
|
3902 |
+
(673, 450):4156
|
3903 |
+
(282, 401):4157
|
3904 |
+
(323, 346):4158
|
3905 |
+
(294, 2801):4159
|
3906 |
+
(338, 360):4160
|
3907 |
+
(2893, 390):4161
|
3908 |
+
(582, 273):4162
|
3909 |
+
(687, 327):4163
|
3910 |
+
(423, 340):4164
|
3911 |
+
(1569, 273):4165
|
3912 |
+
(442, 2237):4166
|
3913 |
+
(629, 2412):4167
|
3914 |
+
(636, 791):4168
|
3915 |
+
(378, 1501):4169
|
3916 |
+
(328, 413):4170
|
3917 |
+
(384, 2627):4171
|
3918 |
+
(306, 408):4172
|
3919 |
+
(4172, 379):4173
|
3920 |
+
(639, 376):4174
|
3921 |
+
(384, 1272):4175
|
3922 |
+
(274, 1350):4176
|
3923 |
+
(307, 479):4177
|
3924 |
+
(513, 637):4178
|
3925 |
+
(270, 407):4179
|
3926 |
+
(333, 152):4180
|
3927 |
+
(849, 2895):4181
|
3928 |
+
(320, 970):4182
|
3929 |
+
(292, 269):4183
|
3930 |
+
(1252, 741):4184
|
3931 |
+
(1235, 1175):4185
|
3932 |
+
(286, 492):4186
|
3933 |
+
(863, 1250):4187
|
3934 |
+
(721, 267):4188
|
3935 |
+
(1054, 461):4189
|
3936 |
+
(297, 276):4190
|
3937 |
+
(349, 1996):4191
|
3938 |
+
(748, 643):4192
|
3939 |
+
(497, 278):4193
|
3940 |
+
(374, 283):4194
|
3941 |
+
(290, 399):4195
|
3942 |
+
(1579, 373):4196
|
3943 |
+
(1535, 344):4197
|
3944 |
+
(377, 1207):4198
|
3945 |
+
(1624, 448):4199
|
3946 |
+
(315, 3236):4200
|
3947 |
+
(427, 267):4201
|
3948 |
+
(341, 405):4202
|
3949 |
+
(384, 1927):4203
|
3950 |
+
(2087, 517):4204
|
3951 |
+
(997, 265):4205
|
3952 |
+
(638, 330):4206
|
3953 |
+
(339, 330):4207
|
3954 |
+
(1125, 649):4208
|
3955 |
+
(2258, 274):4209
|
3956 |
+
(2219, 357):4210
|
3957 |
+
(423, 265):4211
|
3958 |
+
(338, 300):4212
|
3959 |
+
(1194, 276):4213
|
3960 |
+
(304, 712):4214
|
3961 |
+
(302, 272):4215
|
3962 |
+
(1134, 320):4216
|
3963 |
+
(1540, 857):4217
|
3964 |
+
(285, 339):4218
|
3965 |
+
(1238, 906):4219
|
3966 |
+
(301, 412):4220
|
3967 |
+
(1776, 284):4221
|
3968 |
+
(308, 387):4222
|
3969 |
+
(4222, 312):4223
|
3970 |
+
(280, 393):4224
|
3971 |
+
(890, 490):4225
|
3972 |
+
(878, 490):4226
|
3973 |
+
(279, 1537):4227
|
3974 |
+
(330, 312):4228
|
3975 |
+
(287, 366):4229
|
3976 |
+
(1945, 357):4230
|
3977 |
+
(513, 267):4231
|
3978 |
+
(307, 318):4232
|
3979 |
+
(314, 2370):4233
|
3980 |
+
(1988, 382):4234
|
3981 |
+
(1112, 299):4235
|
3982 |
+
(265, 427):4236
|
3983 |
+
(292, 555):4237
|
3984 |
+
(1692, 1229):4238
|
3985 |
+
(626, 347):4239
|
3986 |
+
(374, 276):4240
|
3987 |
+
(293, 1776):4241
|
3988 |
+
(378, 1449):4242
|
3989 |
+
(2641, 1063):4243
|
3990 |
+
(328, 283):4244
|
3991 |
+
(1829, 261):4245
|
3992 |
+
(401, 487):4246
|
3993 |
+
(395, 322):4247
|
3994 |
+
(301, 3282):4248
|
3995 |
+
(1403, 273):4249
|
3996 |
+
(1549, 1935):4250
|
3997 |
+
(434, 2284):4251
|
3998 |
+
(370, 972):4252
|
3999 |
+
(1029, 511):4253
|
4000 |
+
(2187, 265):4254
|
4001 |
+
(275, 297):4255
|
4002 |
+
(279, 294):4256
|
4003 |
+
(328, 272):4257
|
4004 |
+
(314, 1864):4258
|
4005 |
+
(350, 496):4259
|
4006 |
+
(279, 3292):4260
|
4007 |
+
(382, 840):4261
|
4008 |
+
(288, 955):4262
|
4009 |
+
(523, 650):4263
|
4010 |
+
(926, 324):4264
|
4011 |
+
(2031, 439):4265
|
4012 |
+
(1012, 261):4266
|
4013 |
+
(636, 284):4267
|
4014 |
+
(765, 371):4268
|
4015 |
+
(1073, 999):4269
|
4016 |
+
(384, 305):4270
|
4017 |
+
(286, 503):4271
|
4018 |
+
(504, 400):4272
|
4019 |
+
(275, 418):4273
|
4020 |
+
(1038, 346):4274
|
4021 |
+
(327, 515):4275
|
4022 |
+
(820, 490):4276
|
4023 |
+
(1035, 781):4277
|
4024 |
+
(378, 1384):4278
|
4025 |
+
(451, 273):4279
|
4026 |
+
(269, 290):4280
|
4027 |
+
(1497, 702):4281
|
4028 |
+
(2811, 512):4282
|
4029 |
+
(262, 630):4283
|
4030 |
+
(276, 1209):4284
|
4031 |
+
(293, 721):4285
|
4032 |
+
(449, 284):4286
|
4033 |
+
(323, 1721):4287
|
4034 |
+
(2137, 537):4288
|
4035 |
+
(265, 515):4289
|
4036 |
+
(294, 515):4290
|
4037 |
+
(451, 324):4291
|
4038 |
+
(360, 334):4292
|
4039 |
+
(282, 759):4293
|
4040 |
+
(1915, 1964):4294
|
4041 |
+
(568, 504):4295
|
4042 |
+
(378, 275):4296
|
4043 |
+
(384, 3115):4297
|
4044 |
+
(314, 299):4298
|
4045 |
+
(1819, 401):4299
|
4046 |
+
(1149, 1276):4300
|
4047 |
+
(370, 3315):4301
|
4048 |
+
(936, 273):4302
|
4049 |
+
(1165, 448):4303
|
4050 |
+
(309, 291):4304
|
4051 |
+
(541, 292):4305
|
4052 |
+
(406, 261):4306
|
4053 |
+
(286, 470):4307
|
4054 |
+
(3316, 428):4308
|
4055 |
+
(270, 734):4309
|
4056 |
+
(327, 331):4310
|
4057 |
+
(1190, 345):4311
|
4058 |
+
(286, 1656):4312
|
4059 |
+
(338, 267):4313
|
4060 |
+
(629, 323):4314
|
4061 |
+
(256, 138):4315
|
4062 |
+
(403, 375):4316
|
4063 |
+
(3215, 365):4317
|
4064 |
+
(323, 261):4318
|
4065 |
+
(710, 701):4319
|
4066 |
+
(595, 273):4320
|
4067 |
+
(469, 348):4321
|
4068 |
+
(287, 291):4322
|
4069 |
+
(566, 290):4323
|
4070 |
+
(3270, 2945):4324
|
4071 |
+
(1887, 330):4325
|
4072 |
+
(364, 276):4326
|
4073 |
+
(2805, 1556):4327
|
4074 |
+
(1183, 360):4328
|
4075 |
+
(566, 364):4329
|
4076 |
+
(285, 2118):4330
|
4077 |
+
(271, 1104):4331
|
4078 |
+
(345, 288):4332
|
4079 |
+
(288, 556):4333
|
4080 |
+
(286, 376):4334
|
4081 |
+
(317, 437):4335
|
4082 |
+
(465, 334):4336
|
4083 |
+
(524, 521):4337
|
4084 |
+
(276, 590):4338
|
4085 |
+
(644, 263):4339
|
4086 |
+
(1663, 281):4340
|
4087 |
+
(405, 390):4341
|
4088 |
+
(1743, 302):4342
|
4089 |
+
(449, 273):4343
|
4090 |
+
(314, 445):4344
|
4091 |
+
(320, 1077):4345
|
4092 |
+
(295, 320):4346
|
4093 |
+
(952, 3329):4347
|
4094 |
+
(341, 934):4348
|
4095 |
+
(646, 312):4349
|
4096 |
+
(265, 324):4350
|
4097 |
+
(1061, 271):4351
|
4098 |
+
(777, 608):4352
|
4099 |
+
(1113, 430):4353
|
4100 |
+
(493, 3722):4354
|
4101 |
+
(1778, 548):4355
|
4102 |
+
(674, 864):4356
|
4103 |
+
(315, 465):4357
|
4104 |
+
(267, 461):4358
|
4105 |
+
(1366, 267):4359
|
4106 |
+
(384, 366):4360
|
4107 |
+
(1367, 281):4361
|
4108 |
+
(435, 1287):4362
|
4109 |
+
(314, 980):4363
|
4110 |
+
(341, 501):4364
|
4111 |
+
(271, 751):4365
|
4112 |
+
(1332, 614):4366
|
4113 |
+
(343, 3245):4367
|
4114 |
+
(378, 273):4368
|
4115 |
+
(323, 652):4369
|
4116 |
+
(291, 339):4370
|
4117 |
+
(270, 339):4371
|
4118 |
+
(568, 311):4372
|
4119 |
+
(317, 327):4373
|
4120 |
+
(1278, 331):4374
|
4121 |
+
(294, 1155):4375
|
4122 |
+
(613, 1048):4376
|
4123 |
+
(265, 274):4377
|
4124 |
+
(1663, 278):4378
|
4125 |
+
(355, 271):4379
|
4126 |
+
(319, 533):4380
|
4127 |
+
(354, 3779):4381
|
4128 |
+
(282, 3781):4382
|
4129 |
+
(755, 881):4383
|
4130 |
+
(448, 556):4384
|
4131 |
+
(764, 390):4385
|
4132 |
+
(487, 479):4386
|
4133 |
+
(456, 359):4387
|
4134 |
+
(275, 468):4388
|
4135 |
+
(1797, 346):4389
|
4136 |
+
(915, 489):4390
|
4137 |
+
(295, 1819):4391
|
4138 |
+
(270, 1023):4392
|
4139 |
+
(438, 3085):4393
|
4140 |
+
(362, 287):4394
|
4141 |
+
(290, 401):4395
|
4142 |
+
(1877, 580):4396
|
4143 |
+
(552, 510):4397
|
4144 |
+
(473, 281):4398
|
4145 |
+
(279, 346):4399
|
4146 |
+
(819, 1473):4400
|
4147 |
+
(490, 278):4401
|
4148 |
+
(353, 474):4402
|
4149 |
+
(524, 1533):4403
|
4150 |
+
(265, 448):4404
|
4151 |
+
(4404, 1096):4405
|
4152 |
+
(3349, 458):4406
|
4153 |
+
(628, 340):4407
|
4154 |
+
(477, 989):4408
|
4155 |
+
(2454, 284):4409
|
4156 |
+
(815, 1746):4410
|
4157 |
+
(733, 299):4411
|
4158 |
+
(314, 271):4412
|
4159 |
+
(794, 281):4413
|
4160 |
+
(271, 1015):4414
|
4161 |
+
(2968, 381):4415
|
4162 |
+
(1334, 270):4416
|
4163 |
+
(456, 332):4417
|
4164 |
+
(1793, 3802):4418
|
4165 |
+
(317, 2642):4419
|
4166 |
+
(293, 3806):4420
|
4167 |
+
(328, 335):4421
|
4168 |
+
(327, 335):4422
|
4169 |
+
(378, 270):4423
|
4170 |
+
(1463, 364):4424
|
4171 |
+
(349, 1781):4425
|
4172 |
+
(820, 1593):4426
|
4173 |
+
(918, 273):4427
|
4174 |
+
(1010, 2021):4428
|
4175 |
+
(2429, 675):4429
|
4176 |
+
(730, 548):4430
|
4177 |
+
(1702, 322):4431
|
4178 |
+
(892, 281):4432
|
4179 |
+
(2681, 284):4433
|
4180 |
+
(905, 365):4434
|
4181 |
+
(1723, 267):4435
|
4182 |
+
(2358, 1216):4436
|
4183 |
+
(1035, 413):4437
|
4184 |
+
(1399, 374):4438
|
4185 |
+
(421, 678):4439
|
4186 |
+
(1589, 278):4440
|
4187 |
+
(2252, 2146):4441
|
4188 |
+
(1217, 261):4442
|
4189 |
+
(698, 521):4443
|
4190 |
+
(470, 276):4444
|
4191 |
+
(2437, 452):4445
|
4192 |
+
(296, 332):4446
|
4193 |
+
(2017, 1318):4447
|
4194 |
+
(293, 754):4448
|
4195 |
+
(2549, 1114):4449
|
4196 |
+
(790, 418):4450
|
4197 |
+
(4450, 571):4451
|
4198 |
+
(279, 3822):4452
|
4199 |
+
(319, 1498):4453
|
4200 |
+
(848, 448):4454
|
4201 |
+
(2748, 310):4455
|
4202 |
+
(1287, 273):4456
|
4203 |
+
(915, 342):4457
|
4204 |
+
(1044, 1825):4458
|
4205 |
+
(2281, 1745):4459
|
4206 |
+
(3709, 2146):4460
|
4207 |
+
(2688, 287):4461
|
4208 |
+
(513, 655):4462
|
4209 |
+
(435, 629):4463
|
4210 |
+
(984, 327):4464
|
4211 |
+
(392, 2653):4465
|
4212 |
+
(331, 560):4466
|
4213 |
+
(1532, 527):4467
|
4214 |
+
(370, 332):4468
|
4215 |
+
(317, 672):4469
|
4216 |
+
(2671, 607):4470
|
4217 |
+
(2451, 867):4471
|
4218 |
+
(742, 548):4472
|
4219 |
+
(411, 3833):4473
|
4220 |
+
(646, 2910):4474
|
4221 |
+
(264, 717):4475
|
4222 |
+
(673, 1186):4476
|
4223 |
+
(1743, 305):4477
|
4224 |
+
(301, 812):4478
|
4225 |
+
(482, 876):4479
|
4226 |
+
(644, 344):4480
|
4227 |
+
(1221, 263):4481
|
4228 |
+
(274, 387):4482
|
4229 |
+
(772, 475):4483
|
4230 |
+
(753, 281):4484
|
4231 |
+
(735, 323):4485
|
4232 |
+
(328, 480):4486
|
4233 |
+
(301, 2024):4487
|
4234 |
+
(286, 898):4488
|
4235 |
+
(1202, 261):4489
|
4236 |
+
(1289, 670):4490
|
4237 |
+
(275, 352):4491
|
4238 |
+
(1119, 311):4492
|
4239 |
+
(1514, 371):4493
|
4240 |
+
(2691, 944):4494
|
4241 |
+
(1838, 1918):4495
|
4242 |
+
(349, 866):4496
|
4243 |
+
(270, 305):4497
|
4244 |
+
(547, 994):4498
|
4245 |
+
(695, 931):4499
|
4246 |
+
(267, 342):4500
|
4247 |
+
(716, 2998):4501
|
4248 |
+
(270, 327):4502
|
4249 |
+
(396, 1223):4503
|
4250 |
+
(327, 276):4504
|
4251 |
+
(1518, 838):4505
|
4252 |
+
(1569, 329):4506
|
4253 |
+
(401, 369):4507
|
4254 |
+
(286, 480):4508
|
4255 |
+
(1519, 330):4509
|
4256 |
+
(1205, 1150):4510
|
4257 |
+
(274, 336):4511
|
4258 |
+
(893, 336):4512
|
4259 |
+
(1151, 551):4513
|
4260 |
+
(323, 421):4514
|
4261 |
+
(979, 422):4515
|
4262 |
+
(467, 732):4516
|
4263 |
+
(308, 2158):4517
|
4264 |
+
(2475, 781):4518
|
4265 |
+
(1566, 376):4519
|
4266 |
+
(436, 273):4520
|
4267 |
+
(2159, 463):4521
|
4268 |
+
(282, 345):4522
|
4269 |
+
(384, 538):4523
|
4270 |
+
(1470, 1669):4524
|
4271 |
+
(2162, 652):4525
|
4272 |
+
(1329, 288):4526
|
4273 |
+
(1683, 273):4527
|
4274 |
+
(466, 827):4528
|
4275 |
+
(481, 445):4529
|
4276 |
+
(550, 1063):4530
|
4277 |
+
(369, 2721):4531
|
4278 |
+
(1100, 350):4532
|
4279 |
+
(695, 622):4533
|
4280 |
+
(1049, 352):4534
|
4281 |
+
(2491, 3410):4535
|
4282 |
+
(310, 267):4536
|
4283 |
+
(395, 944):4537
|
4284 |
+
(270, 1017):4538
|
4285 |
+
(270, 2725):4539
|
4286 |
+
(274, 1018):4540
|
4287 |
+
(320, 305):4541
|
4288 |
+
(2303, 304):4542
|
4289 |
+
(293, 2496):4543
|
4290 |
+
(4543, 3016):4544
|
4291 |
+
(1064, 276):4545
|
4292 |
+
(964, 329):4546
|
4293 |
+
(2729, 914):4547
|
4294 |
+
(322, 307):4548
|
4295 |
+
(1687, 501):4549
|
4296 |
+
(275, 300):4550
|
4297 |
+
(759, 377):4551
|
4298 |
+
(275, 504):4552
|
4299 |
+
(314, 387):4553
|
4300 |
+
(766, 299):4554
|
4301 |
+
(1372, 3424):4555
|
4302 |
+
(2487, 441):4556
|
4303 |
+
(777, 316):4557
|
4304 |
+
(3427, 967):4558
|
4305 |
+
(1222, 515):4559
|
4306 |
+
(297, 1016):4560
|
4307 |
+
(326, 2312):4561
|
4308 |
+
(319, 777):4562
|
4309 |
+
(288, 1936):4563
|
4310 |
+
(2736, 692):4564
|
4311 |
+
(271, 325):4565
|
4312 |
+
(285, 413):4566
|
4313 |
+
(552, 416):4567
|
4314 |
+
(964, 334):4568
|
4315 |
+
(691, 274):4569
|
4316 |
+
(819, 276):4570
|
4317 |
+
(516, 281):4571
|
4318 |
+
(816, 1043):4572
|
4319 |
+
(858, 2512):4573
|
4320 |
+
(601, 397):4574
|
4321 |
+
(3034, 374):4575
|
4322 |
+
(314, 288):4576
|
4323 |
+
(1388, 483):4577
|
4324 |
+
(2515, 413):4578
|
4325 |
+
(275, 1295):4579
|
4326 |
+
(385, 525):4580
|
4327 |
+
(294, 372):4581
|
4328 |
+
(309, 273):4582
|
4329 |
+
(1377, 3038):4583
|
4330 |
+
(979, 274):4584
|
4331 |
+
(415, 364):4585
|
4332 |
+
(638, 1211):4586
|
4333 |
+
(1184, 276):4587
|
4334 |
+
(270, 2519):4588
|
4335 |
+
(1068, 261):4589
|
4336 |
+
(582, 1179):4590
|
4337 |
+
(271, 305):4591
|
4338 |
+
(271, 591):4592
|
4339 |
+
(1021, 310):4593
|
4340 |
+
(309, 642):4594
|
4341 |
+
(271, 1070):4595
|
4342 |
+
(338, 1084):4596
|
4343 |
+
(306, 310):4597
|
4344 |
+
(640, 344):4598
|
4345 |
+
(294, 826):4599
|
4346 |
+
(837, 2184):4600
|
4347 |
+
(295, 323):4601
|
4348 |
+
(317, 302):4602
|
4349 |
+
(301, 1570):4603
|
4350 |
+
(340, 1017):4604
|
4351 |
+
(769, 284):4605
|
4352 |
+
(311, 334):4606
|
4353 |
+
(294, 1394):4607
|
4354 |
+
(329, 276):4608
|
4355 |
+
(1523, 413):4609
|
4356 |
+
(1395, 815):4610
|
4357 |
+
(320, 269):4611
|
4358 |
+
(2329, 2150):4612
|
4359 |
+
(319, 2330):4613
|
4360 |
+
(1131, 307):4614
|
4361 |
+
(444, 281):4615
|
4362 |
+
(386, 1153):4616
|
4363 |
+
(776, 585):4617
|
4364 |
+
(2149, 433):4618
|
4365 |
+
(524, 1684):4619
|
4366 |
+
(682, 325):4620
|
4367 |
+
(2764, 360):4621
|
4368 |
+
(409, 876):4622
|
4369 |
+
(1535, 278):4623
|
4370 |
+
(1132, 539):4624
|
4371 |
+
(352, 272):4625
|
4372 |
+
(384, 404):4626
|
4373 |
+
(2336, 1159):4627
|
4374 |
+
(2187, 1851):4628
|
4375 |
+
(275, 642):4629
|
4376 |
+
(292, 436):4630
|
4377 |
+
(264, 774):4631
|
4378 |
+
(1699, 3942):4632
|
4379 |
+
(339, 419):4633
|
4380 |
+
(384, 397):4634
|
4381 |
+
(1393, 507):4635
|
4382 |
+
(320, 1134):4636
|
4383 |
+
(274, 445):4637
|
4384 |
+
(605, 1369):4638
|
4385 |
+
(337, 519):4639
|
4386 |
+
(1951, 764):4640
|
4387 |
+
(805, 283):4641
|
4388 |
+
(282, 465):4642
|
4389 |
+
(772, 2071):4643
|
4390 |
+
(320, 651):4644
|
4391 |
+
(288, 498):4645
|
4392 |
+
(384, 405):4646
|
4393 |
+
(397, 376):4647
|
4394 |
+
(682, 405):4648
|
4395 |
+
(1576, 1074):4649
|
4396 |
+
(291, 1435):4650
|
4397 |
+
(448, 261):4651
|
4398 |
+
(1916, 329):4652
|
4399 |
+
(308, 521):4653
|
4400 |
+
(704, 2084):4654
|
4401 |
+
(1541, 287):4655
|
4402 |
+
(974, 497):4656
|
4403 |
+
(699, 290):4657
|
4404 |
+
(635, 269):4658
|
4405 |
+
(598, 283):4659
|
4406 |
+
(339, 276):4660
|
4407 |
+
(283, 267):4661
|
4408 |
+
(265, 771):4662
|
4409 |
+
(1003, 405):4663
|
4410 |
+
(576, 287):4664
|
4411 |
+
(1153, 261):4665
|
4412 |
+
(391, 450):4666
|
4413 |
+
(301, 1046):4667
|
4414 |
+
(411, 1311):4668
|
4415 |
+
(414, 2797):4669
|
4416 |
+
(297, 424):4670
|
4417 |
+
(329, 290):4671
|
4418 |
+
(364, 671):4672
|
4419 |
+
(283, 931):4673
|
4420 |
+
(710, 261):4674
|
4421 |
+
(756, 490):4675
|
4422 |
+
(338, 261):4676
|
4423 |
+
(1013, 438):4677
|
4424 |
+
(396, 264):4678
|
4425 |
+
(1147, 1400):4679
|
4426 |
+
(1118, 284):4680
|
4427 |
+
(377, 273):4681
|
4428 |
+
(1619, 359):4682
|
4429 |
+
(414, 366):4683
|
4430 |
+
(886, 461):4684
|
4431 |
+
(467, 365):4685
|
4432 |
+
(908, 487):4686
|
4433 |
+
(290, 603):4687
|
4434 |
+
(681, 414):4688
|
4435 |
+
(1389, 296):4689
|
4436 |
+
(911, 529):4690
|
4437 |
+
(275, 2803):4691
|
4438 |
+
(327, 360):4692
|
4439 |
+
(400, 492):4693
|
4440 |
+
(4003, 269):4694
|
4441 |
+
(3092, 265):4695
|
4442 |
+
(1962, 866):4696
|
4443 |
+
(1447, 261):4697
|
4444 |
+
(270, 551):4698
|
4445 |
+
(1107, 372):4699
|
4446 |
+
(825, 944):4700
|
4447 |
+
(322, 2358):4701
|
4448 |
+
(3515, 526):4702
|
4449 |
+
(809, 1965):4703
|
4450 |
+
(320, 264):4704
|
4451 |
+
(3981, 285):4705
|
4452 |
+
(1382, 265):4706
|
4453 |
+
(341, 1034):4707
|
4454 |
+
(294, 284):4708
|
4455 |
+
(900, 698):4709
|
4456 |
+
(376, 273):4710
|
4457 |
+
(282, 1878):4711
|
4458 |
+
(289, 296):4712
|
4459 |
+
(562, 323):4713
|
4460 |
+
(275, 559):4714
|
4461 |
+
(285, 501):4715
|
4462 |
+
(317, 423):4716
|
4463 |
+
(890, 356):4717
|
4464 |
+
(1298, 276):4718
|
4465 |
+
(370, 1170):4719
|
4466 |
+
(2368, 374):4720
|
4467 |
+
(1243, 273):4721
|
4468 |
+
(2098, 773):4722
|
4469 |
+
(3110, 551):4723
|
4470 |
+
(817, 528):4724
|
4471 |
+
(264, 270):4725
|
4472 |
+
(1300, 397):4726
|
4473 |
+
(316, 587):4727
|
4474 |
+
(663, 324):4728
|
4475 |
+
(396, 328):4729
|
4476 |
+
(364, 264):4730
|
4477 |
+
(297, 614):4731
|
4478 |
+
(282, 487):4732
|
4479 |
+
(361, 273):4733
|
4480 |
+
(329, 812):4734
|
4481 |
+
(481, 292):4735
|
4482 |
+
(1131, 336):4736
|
4483 |
+
(1968, 283):4737
|
4484 |
+
(767, 559):4738
|
4485 |
+
(1397, 478):4739
|
4486 |
+
(279, 1434):4740
|
4487 |
+
(343, 442):4741
|
4488 |
+
(301, 437):4742
|
4489 |
+
(513, 376):4743
|
4490 |
+
(399, 284):4744
|
4491 |
+
(2828, 479):4745
|
4492 |
+
(415, 2216):4746
|
4493 |
+
(992, 273):4747
|
4494 |
+
(3535, 732):4748
|
4495 |
+
(462, 269):4749
|
4496 |
+
(1475, 903):4750
|
4497 |
+
(3133, 264):4751
|
4498 |
+
(427, 273):4752
|
4499 |
+
(265, 734):4753
|
4500 |
+
(604, 272):4754
|
4501 |
+
(1102, 529):4755
|
4502 |
+
(910, 1802):4756
|
4503 |
+
(1236, 264):4757
|
4504 |
+
(323, 283):4758
|
4505 |
+
(1931, 562):4759
|
4506 |
+
(342, 273):4760
|
4507 |
+
(679, 322):4761
|
4508 |
+
(286, 732):4762
|
4509 |
+
(657, 686):4763
|
4510 |
+
(290, 307):4764
|
4511 |
+
(777, 497):4765
|
4512 |
+
(674, 1803):4766
|
4513 |
+
(350, 354):4767
|
4514 |
+
(1599, 517):4768
|
4515 |
+
(382, 271):4769
|
4516 |
+
(301, 4050):4770
|
4517 |
+
(2110, 702):4771
|
4518 |
+
(2837, 278):4772
|
4519 |
+
(1593, 291):4773
|
4520 |
+
(3555, 1224):4774
|
4521 |
+
(401, 528):4775
|
4522 |
+
(2992, 962):4776
|
4523 |
+
(872, 284):4777
|
4524 |
+
(809, 330):4778
|
4525 |
+
(1644, 511):4779
|
4526 |
+
(289, 302):4780
|
4527 |
+
(835, 273):4781
|
4528 |
+
(301, 300):4782
|
4529 |
+
(1446, 3561):4783
|
4530 |
+
(1585, 291):4784
|
4531 |
+
(599, 1713):4785
|
4532 |
+
(2057, 774):4786
|
4533 |
+
(275, 671):4787
|
4534 |
+
(926, 276):4788
|
4535 |
+
(1069, 261):4789
|
4536 |
+
(798, 326):4790
|
4537 |
+
(755, 631):4791
|
4538 |
+
(696, 269):4792
|
4539 |
+
(815, 312):4793
|
4540 |
+
(303, 310):4794
|
4541 |
+
(729, 884):4795
|
4542 |
+
(1703, 498):4796
|
4543 |
+
(1980, 273):4797
|
4544 |
+
(469, 512):4798
|
4545 |
+
(340, 518):4799
|
4546 |
+
(853, 463):4800
|
4547 |
+
(1598, 676):4801
|
4548 |
+
(2179, 718):4802
|
4549 |
+
(328, 339):4803
|
4550 |
+
(1531, 681):4804
|
4551 |
+
(818, 664):4805
|
4552 |
+
(356, 2325):4806
|
4553 |
+
(319, 1242):4807
|
4554 |
+
(317, 328):4808
|
4555 |
+
(2389, 1036):4809
|
4556 |
+
(580, 283):4810
|
4557 |
+
(526, 688):4811
|
4558 |
+
(638, 267):4812
|
4559 |
+
(301, 445):4813
|
4560 |
+
(364, 404):4814
|
4561 |
+
(302, 357):4815
|
4562 |
+
(382, 263):4816
|
4563 |
+
(1007, 1430):4817
|
4564 |
+
(2854, 433):4818
|
4565 |
+
(961, 413):4819
|
4566 |
+
(1692, 438):4820
|
4567 |
+
(1086, 439):4821
|
4568 |
+
(1492, 263):4822
|
4569 |
+
(2060, 290):4823
|
4570 |
+
(887, 352):4824
|
4571 |
+
(370, 517):4825
|
4572 |
+
(265, 329):4826
|
4573 |
+
(341, 518):4827
|
4574 |
+
(1543, 802):4828
|
4575 |
+
(4828, 701):4829
|
4576 |
+
(916, 607):4830
|
4577 |
+
(410, 717):4831
|
4578 |
+
(306, 621):4832
|
4579 |
+
(2396, 344):4833
|
4580 |
+
(1569, 267):4834
|
4581 |
+
(552, 518):4835
|
4582 |
+
(3177, 413):4836
|
4583 |
+
(370, 1964):4837
|
4584 |
+
(1962, 264):4838
|
4585 |
+
(274, 817):4839
|
4586 |
+
(275, 906):4840
|
4587 |
+
(382, 354):4841
|
4588 |
+
(539, 414):4842
|
4589 |
+
(322, 616):4843
|
4590 |
+
(397, 1195):4844
|
4591 |
+
(606, 995):4845
|
4592 |
+
(566, 1803):4846
|
4593 |
+
(636, 1552):4847
|
4594 |
+
(271, 459):4848
|
4595 |
+
(876, 263):4849
|
4596 |
+
(322, 4104):4850
|
4597 |
+
(288, 1417):4851
|
4598 |
+
(289, 2803):4852
|
4599 |
+
(771, 318):4853
|
4600 |
+
(297, 337):4854
|
4601 |
+
(1253, 1333):4855
|
4602 |
+
(1887, 714):4856
|
4603 |
+
(627, 702):4857
|
4604 |
+
(301, 1155):4858
|
4605 |
+
(271, 389):4859
|
4606 |
+
(289, 325):4860
|
4607 |
+
(319, 1886):4861
|
4608 |
+
(319, 470):4862
|
4609 |
+
(306, 500):4863
|
4610 |
+
(2022, 580):4864
|
4611 |
+
(980, 323):4865
|
4612 |
+
(338, 272):4866
|
4613 |
+
(875, 474):4867
|
4614 |
+
(730, 2601):4868
|
4615 |
+
(1597, 273):4869
|
4616 |
+
(264, 299):4870
|
4617 |
+
(1679, 947):4871
|
4618 |
+
(299, 321):4872
|
4619 |
+
(295, 1266):4873
|
4620 |
+
(1730, 1376):4874
|
4621 |
+
(343, 403):4875
|
4622 |
+
(289, 1307):4876
|
4623 |
+
(361, 1084):4877
|
4624 |
+
(665, 269):4878
|
4625 |
+
(716, 433):4879
|
4626 |
+
(1451, 479):4880
|
4627 |
+
(576, 284):4881
|
4628 |
+
(1616, 284):4882
|
4629 |
+
(391, 269):4883
|
4630 |
+
(387, 302):4884
|
4631 |
+
(329, 357):4885
|
4632 |
+
(1281, 345):4886
|
4633 |
+
(328, 464):4887
|
4634 |
+
(305, 966):4888
|
4635 |
+
(294, 1084):4889
|
4636 |
+
(1042, 366):4890
|
4637 |
+
(270, 329):4891
|
4638 |
+
(707, 1406):4892
|
4639 |
+
(682, 288):4893
|
4640 |
+
(4893, 1491):4894
|
4641 |
+
(4894, 497):4895
|
4642 |
+
(1814, 273):4896
|
4643 |
+
(2777, 553):4897
|
4644 |
+
(2111, 525):4898
|
4645 |
+
(749, 401):4899
|
4646 |
+
(909, 329):4900
|
4647 |
+
(747, 933):4901
|
4648 |
+
(297, 350):4902
|
4649 |
+
(604, 307):4903
|
4650 |
+
(494, 529):4904
|
4651 |
+
(735, 377):4905
|
4652 |
+
(1148, 670):4906
|
4653 |
+
(275, 366):4907
|
4654 |
+
(432, 278):4908
|
4655 |
+
(380, 2614):4909
|
4656 |
+
(681, 352):4910
|
4657 |
+
(314, 307):4911
|
4658 |
+
(286, 948):4912
|
4659 |
+
(3216, 771):4913
|
4660 |
+
(2240, 269):4914
|
4661 |
+
(664, 371):4915
|
4662 |
+
(338, 614):4916
|
4663 |
+
(641, 438):4917
|
4664 |
+
(1735, 267):4918
|
4665 |
+
(272, 508):4919
|
4666 |
+
(328, 373):4920
|
4667 |
+
(370, 864):4921
|
4668 |
+
(399, 431):4922
|
4669 |
+
(865, 423):4923
|
4670 |
+
(279, 1626):4924
|
4671 |
+
(1495, 276):4925
|
4672 |
+
(1779, 329):4926
|
4673 |
+
(314, 572):4927
|
4674 |
+
(338, 555):4928
|
4675 |
+
(537, 261):4929
|
4676 |
+
(315, 3632):4930
|
4677 |
+
(520, 287):4931
|
4678 |
+
(301, 1966):4932
|
4679 |
+
(657, 284):4933
|
4680 |
+
(270, 972):4934
|
4681 |
+
(288, 390):4935
|
4682 |
+
(730, 374):4936
|
4683 |
+
(301, 712):4937
|
4684 |
+
(1622, 261):4938
|
4685 |
+
(274, 354):4939
|
4686 |
+
(693, 914):4940
|
4687 |
+
(317, 986):4941
|
4688 |
+
(471, 440):4942
|
4689 |
+
(1278, 2190):4943
|
4690 |
+
(386, 1990):4944
|
4691 |
+
(319, 335):4945
|
4692 |
+
(295, 389):4946
|
4693 |
+
(1284, 525):4947
|
4694 |
+
(3644, 1350):4948
|
4695 |
+
(681, 579):4949
|
4696 |
+
(1675, 356):4950
|
4697 |
+
(2475, 335):4951
|
4698 |
+
(270, 335):4952
|
4699 |
+
(550, 382):4953
|
4700 |
+
(648, 281):4954
|
4701 |
+
(856, 283):4955
|
4702 |
+
(412, 263):4956
|
4703 |
+
(634, 271):4957
|
4704 |
+
(667, 375):4958
|
4705 |
+
(317, 1242):4959
|
4706 |
+
(314, 1084):4960
|
4707 |
+
(756, 299):4961
|
4708 |
+
(2417, 371):4962
|
4709 |
+
(513, 1118):4963
|
4710 |
+
(631, 288):4964
|
4711 |
+
(1243, 1074):4965
|
4712 |
+
(845, 950):4966
|
4713 |
+
(833, 263):4967
|
4714 |
+
(3247, 312):4968
|
4715 |
+
(4968, 304):4969
|
4716 |
+
(302, 284):4970
|
4717 |
+
(2632, 354):4971
|
4718 |
+
(2121, 1076):4972
|
4719 |
+
(319, 364):4973
|
4720 |
+
(1514, 291):4974
|
4721 |
+
(511, 261):4975
|
4722 |
+
(2337, 273):4976
|
4723 |
+
(299, 484):4977
|
4724 |
+
(953, 2991):4978
|
4725 |
+
(2255, 2136):4979
|
4726 |
+
(513, 335):4980
|
4727 |
+
(1771, 470):4981
|
4728 |
+
(511, 433):4982
|
4729 |
+
(2699, 1085):4983
|
4730 |
+
(553, 358):4984
|
4731 |
+
(377, 3224):4985
|
4732 |
+
(384, 4198):4986
|
4733 |
+
(271, 1129):4987
|
4734 |
+
(1125, 344):4988
|
4735 |
+
(865, 270):4989
|
4736 |
+
(264, 983):4990
|
4737 |
+
(478, 1114):4991
|
4738 |
+
(1505, 1738):4992
|
4739 |
+
(880, 1813):4993
|
4740 |
+
(314, 300):4994
|
4741 |
+
(1183, 611):4995
|
4742 |
+
(384, 442):4996
|
4743 |
+
(558, 4159):4997
|
4744 |
+
(1766, 360):4998
|
4745 |
+
(973, 334):4999
|
data/vocab.bpe
ADDED
The diff for this file is too large to render.
See raw diff
|
|
requirements.txt
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
gradio
|
2 |
+
regex
|
3 |
+
tqdm
|
4 |
+
huggingface-hub
|
5 |
+
pytest
|
src/app.py
ADDED
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
from tokenizer import sanskrit_token_preprocessor, bpeAlgo, create_vocab, save_paired_tokens_vocab, save_vocab, encode, decode
|
3 |
+
|
4 |
+
# Created a `TokenizerModel` class to maintain state between calls
|
5 |
+
# - Added a web interface with separate tabs for training and tokenization
|
6 |
+
# - Included example texts and documentation
|
7 |
+
# - Made the interface more user-friendly with clear labels and instructions
|
8 |
+
# - Added JSON output for better visualization of results
|
9 |
+
|
10 |
+
# The app provides two main functionalities:
|
11 |
+
# 1. Training the tokenizer on custom text
|
12 |
+
# 2. Tokenizing new text using the trained model
|
13 |
+
class TokenizerModel:
|
14 |
+
def __init__(self, vocab_size=5000):
|
15 |
+
self.vocab_size = vocab_size
|
16 |
+
self.paired_tokens_vocab = None
|
17 |
+
self.vocab = None
|
18 |
+
|
19 |
+
def train(self, text):
|
20 |
+
# Preprocess tokens
|
21 |
+
tokens = sanskrit_token_preprocessor(text)
|
22 |
+
tokens = [list(tok.encode('utf-8')) for tok in tokens]
|
23 |
+
orig_tokens_len = len([tok for toks in tokens for tok in toks])
|
24 |
+
print(type(orig_tokens_len))
|
25 |
+
|
26 |
+
# Train BPE
|
27 |
+
try:
|
28 |
+
self.paired_tokens_vocab, encoded_tokens = bpeAlgo(tokens, self.vocab_size - 256, 256)
|
29 |
+
self.vocab = create_vocab(self.paired_tokens_vocab)
|
30 |
+
except ValueError as e:
|
31 |
+
# Display the error message in your UI
|
32 |
+
return f"Error during training: {str(e)}"
|
33 |
+
|
34 |
+
# save_paired_tokens_vocab("data/paired_tokens.bpe", self.paired_tokens_vocab)
|
35 |
+
# save_vocab( "data/vocab.bpe", self.vocab)
|
36 |
+
|
37 |
+
# Calculate compression ratio
|
38 |
+
compression_ratio = orig_tokens_len / len(encoded_tokens)
|
39 |
+
|
40 |
+
return f"Training completed! Vocabulary size: {len(self.vocab)} and Compression Ratio: {compression_ratio:.2f}"
|
41 |
+
|
42 |
+
def tokenize(self, text):
|
43 |
+
if self.paired_tokens_vocab is None:
|
44 |
+
# try:
|
45 |
+
# with open("data/paired_tokens.bpe", "r") as f:
|
46 |
+
# self.paired_tokens_vocab = eval(f.read())
|
47 |
+
# with open("data/vocab.bpe", "r") as f:
|
48 |
+
# self.vocab = eval(f.read())
|
49 |
+
# except FileNotFoundError as fe:
|
50 |
+
# return {"Error":f"Please train the tokenizer first or ensure vocabulary files exist! {fe}"}
|
51 |
+
# except SyntaxError as se:
|
52 |
+
# return {"Error":f"Please train the tokenizer first or ensure vocabulary files exist! {se}"}
|
53 |
+
# except Exception as e:
|
54 |
+
# return {"Error": str(e)}
|
55 |
+
return {"Error": "Please train it first to create vocab. Training smaples can be found in the data dir"}
|
56 |
+
|
57 |
+
encoded = encode(text, self.paired_tokens_vocab)
|
58 |
+
decoded = decode(encoded, self.vocab)
|
59 |
+
|
60 |
+
return {
|
61 |
+
"Encoded tokens": encoded,
|
62 |
+
"Decoded text": decoded,
|
63 |
+
"Matches original": decoded == text
|
64 |
+
}
|
65 |
+
|
66 |
+
# Create global tokenizer instance
|
67 |
+
tokenizer = TokenizerModel()
|
68 |
+
|
69 |
+
def train_tokenizer(text):
|
70 |
+
return tokenizer.train(text)
|
71 |
+
|
72 |
+
def process_text(text):
|
73 |
+
return tokenizer.tokenize(text)
|
74 |
+
|
75 |
+
# Create the Gradio interface
|
76 |
+
with gr.Blocks(title="Sanskrit BPE Tokenizer") as demo:
|
77 |
+
gr.Markdown("# Sanskrit BPE Tokenizer")
|
78 |
+
gr.Markdown("This tokenizer implements Byte-Pair Encoding (BPE) for Sanskrit text.")
|
79 |
+
|
80 |
+
with gr.Tab("Train"):
|
81 |
+
train_input = gr.Textbox(
|
82 |
+
label="Training Text",
|
83 |
+
placeholder="Enter Sanskrit text for training...",
|
84 |
+
lines=5
|
85 |
+
)
|
86 |
+
train_button = gr.Button("Train Tokenizer")
|
87 |
+
train_output = gr.Textbox(label="Training Result")
|
88 |
+
|
89 |
+
train_button.click(
|
90 |
+
train_tokenizer,
|
91 |
+
inputs=train_input,
|
92 |
+
outputs=train_output
|
93 |
+
)
|
94 |
+
|
95 |
+
with gr.Tab("Tokenize"):
|
96 |
+
text_input = gr.Textbox(
|
97 |
+
label="Input Text",
|
98 |
+
placeholder="Enter Sanskrit text to tokenize...",
|
99 |
+
lines=3
|
100 |
+
)
|
101 |
+
tokenize_button = gr.Button("Tokenize")
|
102 |
+
result_output = gr.JSON(label="Results")
|
103 |
+
|
104 |
+
tokenize_button.click(
|
105 |
+
process_text,
|
106 |
+
inputs=text_input,
|
107 |
+
outputs=result_output
|
108 |
+
)
|
109 |
+
|
110 |
+
gr.Markdown("""
|
111 |
+
### Example texts:
|
112 |
+
```
|
113 |
+
चीराण्यपास्याज्जनकस्य कन्या नेयं प्रतिज्ञा मम दत्तपूर्वा।
|
114 |
+
यथासुखं गच्छतु राजपुत्री वनं समग्रा सह सर्वरत्नैः॥
|
115 |
+
```
|
116 |
+
""")
|
117 |
+
|
118 |
+
if __name__ == "__main__":
|
119 |
+
demo.launch()
|
src/playground.ipynb
ADDED
@@ -0,0 +1,593 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": null,
|
6 |
+
"metadata": {},
|
7 |
+
"outputs": [],
|
8 |
+
"source": []
|
9 |
+
},
|
10 |
+
{
|
11 |
+
"cell_type": "code",
|
12 |
+
"execution_count": 3,
|
13 |
+
"metadata": {},
|
14 |
+
"outputs": [
|
15 |
+
{
|
16 |
+
"name": "stdout",
|
17 |
+
"output_type": "stream",
|
18 |
+
"text": [
|
19 |
+
"Length of dataset 620958\n"
|
20 |
+
]
|
21 |
+
}
|
22 |
+
],
|
23 |
+
"source": [
|
24 |
+
"with open('../static/sanskrit.txt', 'r', encoding='utf-8') as f: \n",
|
25 |
+
" text = f.read()\n",
|
26 |
+
"\n",
|
27 |
+
"print(f'Length of dataset {len(text)}')"
|
28 |
+
]
|
29 |
+
},
|
30 |
+
{
|
31 |
+
"cell_type": "code",
|
32 |
+
"execution_count": 4,
|
33 |
+
"metadata": {},
|
34 |
+
"outputs": [
|
35 |
+
{
|
36 |
+
"name": "stdout",
|
37 |
+
"output_type": "stream",
|
38 |
+
"text": [
|
39 |
+
"तस्यां चीरं वसानायां नाथवत्यामनाथवत्। प्रचुक्रोश जनः सर्वो धिक् त्वां दशरथं त्विति ॥\n",
|
40 |
+
"तेन तत्र प्रणादेन दुःखितः स महीपतिः। चिच्छेद जीविते श्रद्धां धर्मे यशसि चात्मनः॥ स निःश्वस्योष्णमैक्ष्वाकस्तां भार्यामिदमब्रवीत्। कैकेयि कुशचीरेण न सीता गन्तुमर्हति॥\n",
|
41 |
+
"सुकुमारी च बाला च सततं च सुखोचिता। नेयं वनस्य योग्येति सत्यमाह गुरुर्मम ॥\n",
|
42 |
+
"इयं हि कस्यापि करोति किंचित् तपस्विनी राजवरस्य पुत्री। या चीरमासाद्य वनस्य मध्ये जाता विसंज्ञा श्रमणीव काचित्॥\n",
|
43 |
+
"चीराण्यपास्याज्जनकस्य कन्या नेयं प्रतिज्ञा मम दत्तपूर्वा। यथासुखं गच्छतु राजपुत्री वनं समग्रा सह सर्वरत्नैः॥\n",
|
44 |
+
"अजीवनाहेण मया नृशंसा कृता प्रतिज्ञा नियमेन तावत्। त्वया हि बाल्यात् प्रतिपन्नमेतत् तन्मा दहेद् वेणुमिवात्मपुष्पम्॥\n",
|
45 |
+
"रामेण यदि ते पापे किंचित्कृतमशोभनम्। अपकारः क इह ते वैदेह्या दर्शितोऽधमे॥\n",
|
46 |
+
"मृगीवोत्फुल्लनयना मृदुशीला मनस्विनी। अपकारं कमिव ते करोति जनकात्मजा॥\n",
|
47 |
+
"ननु पर्याप्तमेवं ते पापे रामविवासनम्। किमेभिः कृपणैर्भूयः पातकैरपि ते कृतैः॥\n",
|
48 |
+
"प्रतिज्ञातं मया तावत् त्वयोक्तं देवि शृण्वता। रामं यदभिषेकाय त्वमिहागतमब्रवीः॥\n",
|
49 |
+
"तत्त्वेतत् समतिक्रम्य निरयं गन्तुमिच्छसि।\n"
|
50 |
+
]
|
51 |
+
}
|
52 |
+
],
|
53 |
+
"source": [
|
54 |
+
"print(text[:1000])"
|
55 |
+
]
|
56 |
+
},
|
57 |
+
{
|
58 |
+
"cell_type": "code",
|
59 |
+
"execution_count": 8,
|
60 |
+
"metadata": {},
|
61 |
+
"outputs": [
|
62 |
+
{
|
63 |
+
"name": "stdout",
|
64 |
+
"output_type": "stream",
|
65 |
+
"text": [
|
66 |
+
"99\n",
|
67 |
+
"\n",
|
68 |
+
" ! ' ( ) , - . : ? [ _ ā ँ ं ः अ आ इ ई उ ऊ ऋ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ऱ ल ळ व श ष स ह ़ ऽ ा ि ी ु ू ृ ॄ ॅ े ै ॊ ो ौ ् ॐ ॑ ॒ क़ । ॥ ० १ २ ३ ४ ५ ६ ७ ८ ९ — ‘ ” •\n"
|
69 |
+
]
|
70 |
+
}
|
71 |
+
],
|
72 |
+
"source": [
|
73 |
+
"uniqueChars = sorted(list(set(text)))\n",
|
74 |
+
"print(len(uniqueChars))\n",
|
75 |
+
"print(' '.join(uniqueChars))"
|
76 |
+
]
|
77 |
+
},
|
78 |
+
{
|
79 |
+
"cell_type": "code",
|
80 |
+
"execution_count": 11,
|
81 |
+
"metadata": {},
|
82 |
+
"outputs": [
|
83 |
+
{
|
84 |
+
"data": {
|
85 |
+
"text/plain": [
|
86 |
+
"2384"
|
87 |
+
]
|
88 |
+
},
|
89 |
+
"execution_count": 11,
|
90 |
+
"metadata": {},
|
91 |
+
"output_type": "execute_result"
|
92 |
+
}
|
93 |
+
],
|
94 |
+
"source": [
|
95 |
+
"ord('ॐ')\n"
|
96 |
+
]
|
97 |
+
},
|
98 |
+
{
|
99 |
+
"cell_type": "code",
|
100 |
+
"execution_count": 34,
|
101 |
+
"metadata": {},
|
102 |
+
"outputs": [
|
103 |
+
{
|
104 |
+
"data": {
|
105 |
+
"text/plain": [
|
106 |
+
"([10, 32, 32, 32, 33, 32, 39, 32, 40, 32], [224, 165, 144])"
|
107 |
+
]
|
108 |
+
},
|
109 |
+
"execution_count": 34,
|
110 |
+
"metadata": {},
|
111 |
+
"output_type": "execute_result"
|
112 |
+
}
|
113 |
+
],
|
114 |
+
"source": [
|
115 |
+
"l = list(' '.join(uniqueChars).encode('utf-8'))\n",
|
116 |
+
"m = list(\"ॐ\".encode('utf-8'))\n",
|
117 |
+
"l[:10], m"
|
118 |
+
]
|
119 |
+
},
|
120 |
+
{
|
121 |
+
"cell_type": "code",
|
122 |
+
"execution_count": 26,
|
123 |
+
"metadata": {},
|
124 |
+
"outputs": [
|
125 |
+
{
|
126 |
+
"data": {
|
127 |
+
"text/plain": [
|
128 |
+
"[224, 164, 164, 224, 164, 184, 224, 165, 141, 224]"
|
129 |
+
]
|
130 |
+
},
|
131 |
+
"execution_count": 26,
|
132 |
+
"metadata": {},
|
133 |
+
"output_type": "execute_result"
|
134 |
+
}
|
135 |
+
],
|
136 |
+
"source": [
|
137 |
+
"dictionary = list(text.encode('utf-8'))\n",
|
138 |
+
"dictionary[:10]"
|
139 |
+
]
|
140 |
+
},
|
141 |
+
{
|
142 |
+
"cell_type": "code",
|
143 |
+
"execution_count": 38,
|
144 |
+
"metadata": {},
|
145 |
+
"outputs": [
|
146 |
+
{
|
147 |
+
"data": {
|
148 |
+
"text/plain": [
|
149 |
+
"[(10, 32), (32, 32), (32, 32), (32, 33), (33, 32)]"
|
150 |
+
]
|
151 |
+
},
|
152 |
+
"execution_count": 38,
|
153 |
+
"metadata": {},
|
154 |
+
"output_type": "execute_result"
|
155 |
+
}
|
156 |
+
],
|
157 |
+
"source": [
|
158 |
+
"lz = list(zip(l , l[1:]))\n",
|
159 |
+
"lz [:5]"
|
160 |
+
]
|
161 |
+
},
|
162 |
+
{
|
163 |
+
"cell_type": "code",
|
164 |
+
"execution_count": 59,
|
165 |
+
"metadata": {},
|
166 |
+
"outputs": [
|
167 |
+
{
|
168 |
+
"data": {
|
169 |
+
"text/plain": [
|
170 |
+
"226"
|
171 |
+
]
|
172 |
+
},
|
173 |
+
"execution_count": 59,
|
174 |
+
"metadata": {},
|
175 |
+
"output_type": "execute_result"
|
176 |
+
}
|
177 |
+
],
|
178 |
+
"source": [
|
179 |
+
"tokens = list(text.encode('utf-8'))\n",
|
180 |
+
"max(tokens)"
|
181 |
+
]
|
182 |
+
},
|
183 |
+
{
|
184 |
+
"cell_type": "code",
|
185 |
+
"execution_count": 74,
|
186 |
+
"metadata": {},
|
187 |
+
"outputs": [
|
188 |
+
{
|
189 |
+
"name": "stdout",
|
190 |
+
"output_type": "stream",
|
191 |
+
"text": [
|
192 |
+
"{408270: (224, 164), 38329: (164, 164), 38039: (164, 224), 20281: (164, 184), 19343: (184, 224), 141095: (224, 165), 70708: (165, 141), 67426: (141, 224), 22626: (164, 175), 19459: (175, 224), 44980: (164, 190), 38855: (190, 224), 13816: (164, 130), 11423: (130, 32), 64948: (32, 224), 9404: (164, 154), 6005: (154, 224), 5475: (165, 128), 4738: (128, 224), 33267: (164, 176), 32359: (176, 224), 24535: (164, 181), 22815: (181, 224), 24346: (164, 168), 21955: (168, 224), 4024: (164, 165), 3793: (165, 224), 23375: (164, 174), 22769: (174, 224), 7530: (165, 164), 7060: (164, 32), 15009: (164, 170), 14942: (170, 224), 14835: (165, 129), 13336: (129, 224), 12754: (164, 149), 12679: (149, 224), 8616: (165, 139), 5171: (139, 224), 9649: (164, 182), 119: (182, 32), 5673: (164, 156), 5529: (156, 224), 9445: (164, 131), 4620: (131, 32), 3578: (139, 32), 5366: (164, 167), 5340: (167, 224), 24038: (164, 191), 19693: (191, 224), 3257: (141, 32), 13007: (164, 166), 12921: (166, 224), 9527: (182, 224), 4289: (191, 32), 7079: (165, 165), 5361: (165, 10), 6142: (10, 224), 14554: (165, 135), 10727: (135, 224), 2385: (168, 32), 900: (176, 32), 5444: (164, 163), 5007: (163, 224), 9050: (131, 224), 1006: (164, 150), 994: (150, 224), 929: (184, 32), 8202: (164, 185), 7905: (185, 224), 882: (164, 155), 830: (155, 224), 102: (166, 32), 4351: (135, 32), 1948: (165, 32), 8466: (164, 183), 8284: (183, 224), 3607: (165, 136), 3344: (136, 224), 6617: (164, 173), 6628: (173, 224), 2771: (164, 172), 2768: (172, 224), 428: (163, 32), 6057: (190, 32), 5214: (164, 151), 5173: (151, 224), 722: (128, 32), 3378: (154, 32), 4477: (164, 178), 4393: (178, 224), 3161: (175, 32), 295: (185, 32), 607: (174, 32), 539: (164, 135), 5105: (130, 224), 1049: (164, 158), 1019: (158, 224), 1711: (181, 32), 2715: (165, 130), 1505: (129, 32), 1504: (164, 133), 1506: (133, 224), 4251: (165, 131), 71: (149, 32), 1347: (189, 224), 230: (164, 171), 245: (171, 224), 689: (143, 224), 1493: (165, 140), 799: (140, 224), 1378: (164, 159), 1363: (159, 224), 746: (164, 152), 737: (152, 224), 115: (164, 162), 108: (162, 224), 688: (153, 224), 851: (137, 224), 18: (164, 129), 11: (150, 32), 2: (33, 10), 65: (167, 32), 691: (140, 32), 717: (164, 10), 22: (191, 44), 13: (169, 224), 28: (165, 168), 141: (156, 32), 140: (164, 139), 655: (164, 160), 579: (160, 224), 815: (164, 161), 811: (161, 224), 181: (183, 32), 12: (152, 32), 391: (164, 134), 389: (134, 224), 294: (136, 32), 24: (165, 173), 14: (159, 32), 45: (58, 224), 51: (155, 32), 41: (165, 167), 17: (191, 39), 174: (58, 32), 15: (157, 224), 7: (175, 58), 5: (131, 10), 20: (165, 166), 4: (168, 10), 10: (141, 39), 9: (173, 32), 6: (165, 138), 3: (170, 10), 77: (170, 32), 76: (160, 32), 69: (178, 32), 40: (164, 138), 43: (138, 224), 37: (151, 32), 32: (164, 136), 1: (149, 58), 55: (190, 58), 35: (164, 58), 25: (168, 58), 19: (32, 39), 53: (39, 224), 52: (44, 32), 46: (39, 32), 29: (45, 39), 8: (162, 32), 30: (158, 32)}\n",
|
193 |
+
"[(408270, (224, 164)), (141095, (224, 165)), (70708, (165, 141)), (67426, (141, 224)), (64948, (32, 224)), (44980, (164, 190)), (38855, (190, 224)), (38329, (164, 164)), (38039, (164, 224)), (33267, (164, 176)), (32359, (176, 224)), (24535, (164, 181)), (24346, (164, 168)), (24038, (164, 191)), (23375, (164, 174)), (22815, (181, 224)), (22769, (174, 224)), (22626, (164, 175)), (21955, (168, 224)), (20281, (164, 184)), (19693, (191, 224)), (19459, (175, 224)), (19343, (184, 224)), (15009, (164, 170)), (14942, (170, 224)), (14835, (165, 129)), (14554, (165, 135)), (13816, (164, 130)), (13336, (129, 224)), (13007, (164, 166)), (12921, (166, 224)), (12754, (164, 149)), (12679, (149, 224)), (11423, (130, 32)), (10727, (135, 224)), (9649, (164, 182)), (9527, (182, 224)), (9445, (164, 131)), (9404, (164, 154)), (9050, (131, 224)), (8616, (165, 139)), (8466, (164, 183)), (8284, (183, 224)), (8202, (164, 185)), (7905, (185, 224)), (7530, (165, 164)), (7079, (165, 165)), (7060, (164, 32)), (6628, (173, 224)), (6617, (164, 173)), (6142, (10, 224)), (6057, (190, 32)), (6005, (154, 224)), (5673, (164, 156)), (5529, (156, 224)), (5475, (165, 128)), (5444, (164, 163)), (5366, (164, 167)), (5361, (165, 10)), (5340, (167, 224)), (5214, (164, 151)), (5173, (151, 224)), (5171, (139, 224)), (5105, (130, 224)), (5007, (163, 224)), (4738, (128, 224)), (4620, (131, 32)), (4477, (164, 178)), (4393, (178, 224)), (4351, (135, 32)), (4289, (191, 32)), (4251, (165, 131)), (4024, (164, 165)), (3793, (165, 224)), (3607, (165, 136)), (3578, (139, 32)), (3378, (154, 32)), (3344, (136, 224)), (3257, (141, 32)), (3161, (175, 32)), (2771, (164, 172)), (2768, (172, 224)), (2715, (165, 130)), (2385, (168, 32)), (1948, (165, 32)), (1711, (181, 32)), (1506, (133, 224)), (1505, (129, 32)), (1504, (164, 133)), (1493, (165, 140)), (1378, (164, 159)), (1363, (159, 224)), (1347, (189, 224)), (1347, (164, 189)), (1049, (164, 158)), (1019, (158, 224)), (1006, (164, 150)), (994, (150, 224)), (929, (184, 32)), (900, (176, 32)), (882, (164, 155)), (851, (164, 137)), (851, (137, 224)), (830, (155, 224)), (815, (164, 161)), (811, (161, 224)), (799, (140, 224)), (746, (164, 152)), (737, (152, 224)), (722, (128, 32)), (717, (164, 10)), (691, (140, 32)), (689, (164, 143)), (689, (143, 224)), (688, (164, 153)), (688, (153, 224)), (655, (164, 160)), (607, (174, 32)), (579, (160, 224)), (539, (164, 135)), (428, (163, 32)), (391, (164, 134)), (389, (134, 224)), (295, (185, 32)), (294, (136, 32)), (245, (171, 224)), (230, (164, 171)), (181, (183, 32)), (174, (58, 32)), (141, (156, 32)), (140, (164, 139)), (119, (182, 32)), (115, (164, 162)), (108, (162, 224)), (102, (166, 32)), (77, (170, 32)), (76, (160, 32)), (71, (149, 32)), (69, (178, 32)), (65, (167, 32)), (55, (190, 58)), (53, (39, 224)), (52, (44, 32)), (51, (155, 32)), (46, (39, 32)), (45, (58, 224)), (43, (138, 224)), (41, (165, 167)), (40, (164, 138)), (37, (151, 32)), (35, (164, 58)), (32, (164, 136)), (30, (158, 32)), (29, (45, 39)), (28, (165, 168)), (25, (168, 58)), (24, (165, 173)), (22, (191, 44)), (22, (165, 171)), (22, (165, 169)), (20, (165, 166)), (19, (32, 39)), (18, (164, 129)), (17, (191, 39)), (17, (165, 170)), (17, (154, 45)), (17, (33, 32)), (15, (164, 157)), (15, (157, 224)), (14, (191, 58)), (14, (178, 58)), (14, (159, 32)), (13, (169, 224)), (12, (152, 32)), (11, (165, 145)), (11, (165, 132)), (11, (150, 32)), (11, (132, 224)), (11, (128, 58)), (10, (165, 175)), (10, (141, 39)), (9, (173, 32)), (9, (165, 174)), (9, (164, 144)), (9, (145, 224)), (9, (144, 224)), (9, (131, 39)), (8, (162, 32)), (8, (141, 44)), (8, (45, 224)), (7, (175, 58)), (7, (169, 10)), (7, (164, 147)), (7, (163, 58)), (7, (148, 224)), (7, (147, 224)), (7, (129, 58)), (7, (32, 58)), (6, (226, 128)), (6, (176, 58)), (6, (172, 32)), (6, (165, 172)), (6, (165, 138)), (6, (164, 148)), (6, (135, 10)), (6, (131, 44)), (5, (181, 58)), (5, (171, 10)), (5, (131, 10)), (5, (46, 32)), (4, (190, 10)), (4, (175, 10)), (4, (168, 10)), (4, (166, 10)), (4, (161, 32)), (4, (151, 58)), (4, (141, 45)), (4, (139, 33)), (4, (135, 58)), (4, (135, 44)), (4, (63, 224)), (3, (184, 58)), (3, (175, 44)), (3, (174, 58)), (3, (174, 10)), (3, (172, 10)), (3, (170, 10)), (3, (164, 39)), (3, (156, 58)), (3, (138, 32)), (3, (131, 45)), (3, (131, 33)), (3, (129, 10)), (3, (46, 224)), (3, (40, 224)), (3, (33, 224)), (3, (10, 39)), (2, (190, 226)), (2, (190, 46)), (2, (184, 44)), (2, (176, 45)), (2, (174, 33)), (2, (173, 58)), (2, (173, 10)), (2, (171, 32)), (2, (170, 58)), (2, (170, 33)), (2, (169, 32)), (2, (168, 39)), (2, (167, 10)), (2, (165, 133)), (2, (164, 46)), (2, (164, 41)), (2, (157, 32)), (2, (154, 39)), (2, (154, 10)), (2, (145, 32)), (2, (141, 10)), (2, (134, 32)), (2, (130, 58)), (2, (128, 157)), (2, (128, 152)), (2, (95, 224)), (2, (58, 45)), (2, (46, 10)), (2, (44, 224)), (2, (41, 10)), (2, (33, 10)), (2, (32, 226)), (2, (32, 46)), (2, (10, 40)), (1, (196, 129)), (1, (191, 63)), (1, (191, 45)), (1, (191, 33)), (1, (190, 196)), (1, (190, 95)), (1, (190, 63)), (1, (190, 45)), (1, (190, 33)), (1, (188, 32)), (1, (185, 45)), (1, (185, 39)), (1, (184, 46)), (1, (184, 45)), (1, (184, 33)), (1, (184, 10)), (1, (183, 10)), (1, (182, 58)), (1, (182, 45)), (1, (182, 10)), (1, (181, 46)), (1, (181, 45)), (1, (181, 44)), (1, (181, 39)), (1, (179, 224)), (1, (178, 44)), (1, (177, 224)), (1, (175, 45)), (1, (175, 39)), (1, (168, 226)), (1, (168, 46)), (1, (168, 33)), (1, (165, 152)), (1, (165, 146)), (1, (165, 144)), (1, (165, 46)), (1, (164, 188)), (1, (164, 179)), (1, (164, 177)), (1, (164, 33)), (1, (163, 44)), (1, (163, 10)), (1, (159, 58)), (1, (155, 44)), (1, (150, 58)), (1, (149, 58)), (1, (149, 45)), (1, (149, 44)), (1, (149, 33)), (1, (146, 224)), (1, (144, 32)), (1, (141, 33)), (1, (140, 44)), (1, (140, 39)), (1, (140, 33)), (1, (139, 226)), (1, (139, 58)), (1, (139, 10)), (1, (136, 33)), (1, (135, 33)), (1, (130, 44)), (1, (129, 63)), (1, (129, 45)), (1, (129, 39)), (1, (128, 162)), (1, (128, 148)), (1, (128, 95)), (1, (128, 63)), (1, (128, 44)), (1, (128, 33)), (1, (91, 224)), (1, (63, 32)), (1, (32, 91)), (1, (32, 63)), (1, (32, 44)), (1, (32, 40))]\n",
|
194 |
+
"[((224, 164), 408270), ((224, 165), 141095), ((165, 141), 70708), ((141, 224), 67426), ((32, 224), 64948), ((164, 190), 44980), ((190, 224), 38855), ((164, 164), 38329), ((164, 224), 38039), ((164, 176), 33267), ((176, 224), 32359), ((164, 181), 24535), ((164, 168), 24346), ((164, 191), 24038), ((164, 174), 23375), ((181, 224), 22815), ((174, 224), 22769), ((164, 175), 22626), ((168, 224), 21955), ((164, 184), 20281), ((191, 224), 19693), ((175, 224), 19459), ((184, 224), 19343), ((164, 170), 15009), ((170, 224), 14942), ((165, 129), 14835), ((165, 135), 14554), ((164, 130), 13816), ((129, 224), 13336), ((164, 166), 13007), ((166, 224), 12921), ((164, 149), 12754), ((149, 224), 12679), ((130, 32), 11423), ((135, 224), 10727), ((164, 182), 9649), ((182, 224), 9527), ((164, 131), 9445), ((164, 154), 9404), ((131, 224), 9050), ((165, 139), 8616), ((164, 183), 8466), ((183, 224), 8284), ((164, 185), 8202), ((185, 224), 7905), ((165, 164), 7530), ((165, 165), 7079), ((164, 32), 7060), ((173, 224), 6628), ((164, 173), 6617), ((10, 224), 6142), ((190, 32), 6057), ((154, 224), 6005), ((164, 156), 5673), ((156, 224), 5529), ((165, 128), 5475), ((164, 163), 5444), ((164, 167), 5366), ((165, 10), 5361), ((167, 224), 5340), ((164, 151), 5214), ((151, 224), 5173), ((139, 224), 5171), ((130, 224), 5105), ((163, 224), 5007), ((128, 224), 4738), ((131, 32), 4620), ((164, 178), 4477), ((178, 224), 4393), ((135, 32), 4351), ((191, 32), 4289), ((165, 131), 4251), ((164, 165), 4024), ((165, 224), 3793), ((165, 136), 3607), ((139, 32), 3578), ((154, 32), 3378), ((136, 224), 3344), ((141, 32), 3257), ((175, 32), 3161), ((164, 172), 2771), ((172, 224), 2768), ((165, 130), 2715), ((168, 32), 2385), ((165, 32), 1948), ((181, 32), 1711), ((133, 224), 1506), ((129, 32), 1505), ((164, 133), 1504), ((165, 140), 1493), ((164, 159), 1378), ((159, 224), 1363), ((164, 189), 1347), ((189, 224), 1347), ((164, 158), 1049), ((158, 224), 1019), ((164, 150), 1006), ((150, 224), 994), ((184, 32), 929), ((176, 32), 900), ((164, 155), 882), ((164, 137), 851), ((137, 224), 851), ((155, 224), 830), ((164, 161), 815), ((161, 224), 811), ((140, 224), 799), ((164, 152), 746), ((152, 224), 737), ((128, 32), 722), ((164, 10), 717), ((140, 32), 691), ((164, 143), 689), ((143, 224), 689), ((164, 153), 688), ((153, 224), 688), ((164, 160), 655), ((174, 32), 607), ((160, 224), 579), ((164, 135), 539), ((163, 32), 428), ((164, 134), 391), ((134, 224), 389), ((185, 32), 295), ((136, 32), 294), ((171, 224), 245), ((164, 171), 230), ((183, 32), 181), ((58, 32), 174), ((156, 32), 141), ((164, 139), 140), ((182, 32), 119), ((164, 162), 115), ((162, 224), 108), ((166, 32), 102), ((170, 32), 77), ((160, 32), 76), ((149, 32), 71), ((178, 32), 69), ((167, 32), 65), ((190, 58), 55), ((39, 224), 53), ((44, 32), 52), ((155, 32), 51), ((39, 32), 46), ((58, 224), 45), ((138, 224), 43), ((165, 167), 41), ((164, 138), 40), ((151, 32), 37), ((164, 58), 35), ((164, 136), 32), ((158, 32), 30), ((45, 39), 29), ((165, 168), 28), ((168, 58), 25), ((165, 173), 24), ((165, 169), 22), ((165, 171), 22), ((191, 44), 22), ((165, 166), 20), ((32, 39), 19), ((164, 129), 18), ((165, 170), 17), ((33, 32), 17), ((154, 45), 17), ((191, 39), 17), ((164, 157), 15), ((157, 224), 15), ((191, 58), 14), ((178, 58), 14), ((159, 32), 14), ((169, 224), 13), ((152, 32), 12), ((165, 145), 11), ((165, 132), 11), ((132, 224), 11), ((128, 58), 11), ((150, 32), 11), ((165, 175), 10), ((141, 39), 10), ((145, 224), 9), ((165, 174), 9), ((164, 144), 9), ((144, 224), 9), ((131, 39), 9), ((173, 32), 9), ((141, 44), 8), ((45, 224), 8), ((162, 32), 8), ((129, 58), 7), ((32, 58), 7), ((148, 224), 7), ((169, 10), 7), ((164, 147), 7), ((147, 224), 7), ((163, 58), 7), ((175, 58), 7), ((165, 172), 6), ((164, 148), 6), ((176, 58), 6), ((226, 128), 6), ((172, 32), 6), ((131, 44), 6), ((135, 10), 6), ((165, 138), 6), ((171, 10), 5), ((46, 32), 5), ((181, 58), 5), ((131, 10), 5), ((166, 10), 4), ((151, 58), 4), ((161, 32), 4), ((63, 224), 4), ((190, 10), 4), ((175, 10), 4), ((135, 44), 4), ((139, 33), 4), ((141, 45), 4), ((135, 58), 4), ((168, 10), 4), ((172, 10), 3), ((174, 10), 3), ((131, 33), 3), ((46, 224), 3), ((40, 224), 3), ((33, 224), 3), ((156, 58), 3), ((164, 39), 3), ((175, 44), 3), ((10, 39), 3), ((131, 45), 3), ((174, 58), 3), ((184, 58), 3), ((129, 10), 3), ((138, 32), 3), ((170, 10), 3), ((145, 32), 2), ((130, 58), 2), ((167, 10), 2), ((171, 32), 2), ((190, 46), 2), ((10, 40), 2), ((164, 41), 2), ((41, 10), 2), ((169, 32), 2), ((46, 10), 2), ((190, 226), 2), ((128, 157), 2), ((157, 32), 2), ((95, 224), 2), ((173, 10), 2), ((154, 10), 2), ((32, 46), 2), ((170, 33), 2), ((174, 33), 2), ((168, 39), 2), ((32, 226), 2), ((128, 152), 2), ((154, 39), 2), ((176, 45), 2), ((184, 44), 2), ((58, 45), 2), ((164, 46), 2), ((165, 133), 2), ((173, 58), 2), ((141, 10), 2), ((134, 32), 2), ((170, 58), 2), ((44, 224), 2), ((33, 10), 2), ((182, 58), 1), ((181, 46), 1), ((165, 152), 1), ((165, 46), 1), ((183, 10), 1), ((164, 188), 1), ((188, 32), 1), ((128, 63), 1), ((128, 33), 1), ((128, 95), 1), ((141, 33), 1), ((184, 46), 1), ((129, 63), 1), ((185, 39), 1), ((128, 44), 1), ((184, 10), 1), ((129, 39), 1), ((155, 44), 1), ((181, 44), 1), ((175, 45), 1), ((184, 45), 1), ((181, 39), 1), ((168, 33), 1), ((184, 33), 1), ((140, 39), 1), ((175, 39), 1), ((140, 44), 1), ((182, 45), 1), ((149, 44), 1), ((149, 33), 1), ((129, 45), 1), ((130, 44), 1), ((164, 177), 1), ((177, 224), 1), ((191, 33), 1), ((185, 45), 1), ((163, 44), 1), ((140, 33), 1), ((32, 91), 1), ((91, 224), 1), ((191, 63), 1), ((178, 44), 1), ((165, 146), 1), ((146, 224), 1), ((165, 144), 1), ((144, 32), 1), ((190, 33), 1), ((164, 33), 1), ((139, 58), 1), ((32, 40), 1), ((136, 33), 1), ((164, 179), 1), ((179, 224), 1), ((32, 63), 1), ((139, 226), 1), ((128, 162), 1), ((182, 10), 1), ((190, 45), 1), ((168, 46), 1), ((159, 58), 1), ((150, 58), 1), ((190, 63), 1), ((63, 32), 1), ((139, 10), 1), ((168, 226), 1), ((128, 148), 1), ((191, 45), 1), ((32, 44), 1), ((190, 196), 1), ((196, 129), 1), ((163, 10), 1), ((135, 33), 1), ((190, 95), 1), ((149, 45), 1), ((181, 45), 1), ((149, 58), 1)]\n"
|
195 |
+
]
|
196 |
+
}
|
197 |
+
],
|
198 |
+
"source": [
|
199 |
+
"def get_pair_stats(toks): \n",
|
200 |
+
" pair_stats = {}\n",
|
201 |
+
" for pair in zip(toks, toks[1:]):\n",
|
202 |
+
" pair_stats[pair] = pair_stats.get(pair, 0) + 1\n",
|
203 |
+
" \n",
|
204 |
+
" return pair_stats\n",
|
205 |
+
"\n",
|
206 |
+
"stats = get_pair_stats(tokens)\n",
|
207 |
+
"reverse_stats = {v:k for (k,v) in stats.items()}\n",
|
208 |
+
"type(reverse_stats)\n",
|
209 |
+
"print(reverse_stats)\n",
|
210 |
+
"print (sorted(((v,k) for k,v in stats.items()), reverse=True))\n",
|
211 |
+
"print(sorted(stats.items(), key=lambda item: item[1], reverse=True))"
|
212 |
+
]
|
213 |
+
},
|
214 |
+
{
|
215 |
+
"cell_type": "code",
|
216 |
+
"execution_count": 56,
|
217 |
+
"metadata": {},
|
218 |
+
"outputs": [
|
219 |
+
{
|
220 |
+
"data": {
|
221 |
+
"text/plain": [
|
222 |
+
"(224, 164)"
|
223 |
+
]
|
224 |
+
},
|
225 |
+
"execution_count": 56,
|
226 |
+
"metadata": {},
|
227 |
+
"output_type": "execute_result"
|
228 |
+
}
|
229 |
+
],
|
230 |
+
"source": [
|
231 |
+
"top_pair = max(stats, key=stats.get) \n",
|
232 |
+
"# top_pair = max(reverse_stats)\n",
|
233 |
+
"top_pair"
|
234 |
+
]
|
235 |
+
},
|
236 |
+
{
|
237 |
+
"cell_type": "code",
|
238 |
+
"execution_count": 57,
|
239 |
+
"metadata": {},
|
240 |
+
"outputs": [
|
241 |
+
{
|
242 |
+
"data": {
|
243 |
+
"text/plain": [
|
244 |
+
"('à', '¤')"
|
245 |
+
]
|
246 |
+
},
|
247 |
+
"execution_count": 57,
|
248 |
+
"metadata": {},
|
249 |
+
"output_type": "execute_result"
|
250 |
+
}
|
251 |
+
],
|
252 |
+
"source": [
|
253 |
+
"chr(224),chr(164)"
|
254 |
+
]
|
255 |
+
},
|
256 |
+
{
|
257 |
+
"cell_type": "code",
|
258 |
+
"execution_count": 72,
|
259 |
+
"metadata": {},
|
260 |
+
"outputs": [
|
261 |
+
{
|
262 |
+
"data": {
|
263 |
+
"text/plain": [
|
264 |
+
"(1719701, 1311431, 408270)"
|
265 |
+
]
|
266 |
+
},
|
267 |
+
"execution_count": 72,
|
268 |
+
"metadata": {},
|
269 |
+
"output_type": "execute_result"
|
270 |
+
}
|
271 |
+
],
|
272 |
+
"source": [
|
273 |
+
"# def merge(toks, pair, newTok):\n",
|
274 |
+
"# newToks = [newTok if x == pair else x[0] for x in zip(toks, toks[1:]) ]\n",
|
275 |
+
"# return newToks\n",
|
276 |
+
"\n",
|
277 |
+
"def merge(toks, pair, newTok):\n",
|
278 |
+
" newToks = []\n",
|
279 |
+
" i = 0\n",
|
280 |
+
" while i < len(toks):\n",
|
281 |
+
" if i < len(toks) - 1 and (toks[i], toks[i+1]) == pair:\n",
|
282 |
+
" newToks.append(pair)\n",
|
283 |
+
" i += 2\n",
|
284 |
+
" else:\n",
|
285 |
+
" newToks.append(toks[i])\n",
|
286 |
+
" i +=1\n",
|
287 |
+
" return newToks\n",
|
288 |
+
"\n",
|
289 |
+
"\n",
|
290 |
+
"updatedTokens = merge(tokens, (224, 164), 256)\n",
|
291 |
+
"len(tokens), len(updatedTokens), len(tokens)-len(updatedTokens)"
|
292 |
+
]
|
293 |
+
},
|
294 |
+
{
|
295 |
+
"cell_type": "code",
|
296 |
+
"execution_count": 6,
|
297 |
+
"metadata": {},
|
298 |
+
"outputs": [
|
299 |
+
{
|
300 |
+
"name": "stdout",
|
301 |
+
"output_type": "stream",
|
302 |
+
"text": [
|
303 |
+
"replaced topPair (224, 164)'s 449 occurrences with 256\n",
|
304 |
+
"replaced topPair (224, 165)'s 150 occurrences with 257\n",
|
305 |
+
"replaced topPair (32, 256)'s 74 occurrences with 258\n",
|
306 |
+
"replaced topPair (257, 141)'s 67 occurrences with 259\n",
|
307 |
+
"replaced topPair (259, 256)'s 55 occurrences with 260\n",
|
308 |
+
"replaced topPair (256, 190)'s 46 occurrences with 261\n",
|
309 |
+
"replaced topPair (256, 164)'s 34 occurrences with 262\n",
|
310 |
+
"replaced topPair (256, 191)'s 33 occurrences with 263\n",
|
311 |
+
"replaced topPair (256, 174)'s 31 occurrences with 264\n",
|
312 |
+
"replaced topPair (256, 168)'s 22 occurrences with 265\n",
|
313 |
+
"replaced topPair (257, 135)'s 22 occurrences with 266\n",
|
314 |
+
"replaced topPair (261, 256)'s 20 occurrences with 267\n",
|
315 |
+
"replaced topPair (263, 256)'s 18 occurrences with 268\n",
|
316 |
+
"replaced topPair (261, 258)'s 14 occurrences with 269\n",
|
317 |
+
"replaced topPair (256, 130)'s 14 occurrences with 270\n",
|
318 |
+
"replaced topPair (257, 128)'s 13 occurrences with 271\n",
|
319 |
+
"replaced topPair (270, 258)'s 13 occurrences with 272\n",
|
320 |
+
"replaced topPair (256, 176)'s 12 occurrences with 273\n",
|
321 |
+
"replaced topPair (260, 176)'s 11 occurrences with 274\n",
|
322 |
+
"replaced topPair (256, 181)'s 11 occurrences with 275\n",
|
323 |
+
"replaced topPair (256, 170)'s 10 occurrences with 276\n",
|
324 |
+
"replaced topPair (257, 129)'s 10 occurrences with 277\n",
|
325 |
+
"replaced topPair (258, 164)'s 10 occurrences with 278\n",
|
326 |
+
"replaced topPair (260, 181)'s 9 occurrences with 279\n",
|
327 |
+
"replaced topPair (260, 175)'s 8 occurrences with 280\n",
|
328 |
+
"replaced topPair (256, 149)'s 8 occurrences with 281\n",
|
329 |
+
"replaced topPair (256, 175)'s 8 occurrences with 282\n",
|
330 |
+
"replaced topPair (257, 164)'s 8 occurrences with 283\n",
|
331 |
+
"replaced topPair (257, 165)'s 8 occurrences with 284\n",
|
332 |
+
"replaced topPair (257, 131)'s 8 occurrences with 285\n",
|
333 |
+
"replaced topPair (266, 258)'s 8 occurrences with 286\n",
|
334 |
+
"replaced topPair (256, 184)'s 7 occurrences with 287\n",
|
335 |
+
"replaced topPair (262, 260)'s 7 occurrences with 288\n",
|
336 |
+
"replaced topPair (283, 258)'s 7 occurrences with 289\n",
|
337 |
+
"replaced topPair (284, 10)'s 7 occurrences with 290\n",
|
338 |
+
"replaced topPair (257, 136)'s 6 occurrences with 291\n",
|
339 |
+
"replaced topPair (256, 131)'s 6 occurrences with 292\n",
|
340 |
+
"replaced topPair (266, 256)'s 6 occurrences with 293\n",
|
341 |
+
"replaced topPair (262, 259)'s 6 occurrences with 294\n",
|
342 |
+
"replaced topPair (257, 139)'s 6 occurrences with 295\n",
|
343 |
+
"replaced topPair (267, 184)'s 5 occurrences with 296\n",
|
344 |
+
"replaced topPair (262, 268)'s 5 occurrences with 297\n",
|
345 |
+
"replaced topPair (264, 268)'s 5 occurrences with 298\n",
|
346 |
+
"replaced topPair (264, 259)'s 5 occurrences with 299\n",
|
347 |
+
"[256, 154, 271, 273, 267, 163, 280, 276, 296, 280, 267, 156, 260, 156, 265, 281, 287, 280, 258, 149, 265, 280, 269, 168, 266, 282, 272, 170, 274, 297, 156, 260, 158, 269, 174, 264, 258, 166, 288, 164, 276, 257, 130, 273, 279, 261, 289, 175, 256, 165, 296, 277, 256, 150, 272, 151, 256, 154, 260, 155, 262, 277, 258, 176, 267, 156, 276, 277, 262, 274, 271, 258, 181, 265, 272, 184, 264, 256, 151, 274, 269, 184, 256, 185, 258, 184, 273, 279, 273, 288, 168, 291, 292, 290, 256, 133, 256, 156, 271, 275, 265, 267, 185, 293, 163, 258, 174, 282, 269, 168, 285, 256, 182, 270, 287, 269, 149, 285, 262, 269, 170, 274, 297, 156, 260, 158, 269, 168, 268, 175, 264, 266, 265, 278, 267, 181, 294, 283, 278, 279, 282, 269, 185, 263, 258, 172, 267, 178, 280, 261, 294, 258, 170, 274, 297, 170, 265, 260, 168, 264, 266, 262, 294, 278, 265, 260, 174, 269, 166, 256, 185, 293, 166, 259, 258, 181, 293, 163, 277, 298, 181, 261, 288, 174, 276, 277, 256, 183, 260, 170, 299, 290, 273, 261, 264, 293, 163, 258, 175, 256, 166, 263, 278, 286, 170, 267, 170, 286, 149, 268, 130, 256, 154, 263, 288, 149, 285, 262, 264, 256, 182, 295, 256, 173, 265, 299, 289, 133, 276, 281, 267, 176, 292, 258, 149, 258, 135, 256, 185, 278, 286, 181, 291, 256, 166, 293, 185, 280, 269, 166, 273, 260, 182, 263, 262, 295, 256, 189, 256, 167, 264, 266, 290, 264, 285, 256, 151, 271, 275, 295, 288, 171, 277, 256, 178, 260, 178, 265, 282, 265, 269, 174, 285, 256, 166, 277, 256, 182, 271, 256, 178, 269, 174, 265, 287, 279, 263, 265, 271, 289, 133, 276, 281, 267, 176, 272, 149, 298, 181, 278, 286, 149, 273, 295, 262, 263, 258, 156, 265, 281, 261, 288, 174, 256, 156, 261, 290, 265, 265, 277, 258, 170, 273, 280, 267, 170, 260, 164, 264, 266, 275, 272, 164, 286, 170, 267, 170, 286, 176, 261, 264, 275, 268, 181, 296, 265, 299, 289, 149, 263, 264, 293, 173, 268, 131, 258, 149, 285, 276, 256, 163, 291, 273, 260, 173, 257, 130, 282, 292, 258, 170, 261, 262, 281, 291, 273, 276, 263, 278, 286, 149, 285, 262, 291, 292, 290, 276, 274, 297, 156, 260, 158, 261, 262, 272, 174, 282, 269, 164, 267, 181, 294, 278, 279, 282, 295, 281, 260, 164, 272, 166, 266, 275, 263, 258, 182, 285, 256, 163, 279, 262, 261, 289, 176, 261, 264, 272, 175, 256, 166, 256, 173, 268, 183, 266, 281, 267, 175, 278, 279, 298, 185, 267, 151, 262, 264, 256, 172, 274, 275, 271, 292, 290, 262, 288, 164, 279, 266, 262, 294, 258, 184, 264, 297, 149, 274, 264, 280, 258, 168, 268, 176, 282, 272, 151, 265, 260, 164, 277, 298, 154, 260, 155, 287, 263, 289, 174, 291, 256, 165, 268, 178, 271, 264, 276, 263, 258, 175, 269, 185, 263, 278, 279, 264, 271, 281, 260, 183, 287, 286, 154, 271, 273, 275, 296, 263, 265, 271, 299, 290, 256, 143, 275, 272, 172, 274, 277, 275, 265, 260, 164, 272, 170, 263, 262, 273, 272, 176, 261, 264, 292, 258, 184, 264, 260, 170, 274, 287, 260, 165, 263, 262, 295, 258, 181, 265, 299, 289, 133, 275, 267, 149, 260, 182, 268, 176, 287, 264, 296, 271, 265, 298, 166, 272, 181, 256, 154, 265, 264, 256, 172, 274, 275, 271, 294, 284]\n",
|
348 |
+
"Original tokens length 1878, while updated tokens length 596\n",
|
349 |
+
"Compression Ratio 3.15\n",
|
350 |
+
"{0: b'\\x00', 1: b'\\x01', 2: b'\\x02', 3: b'\\x03', 4: b'\\x04', 5: b'\\x05', 6: b'\\x06', 7: b'\\x07', 8: b'\\x08', 9: b'\\t', 10: b'\\n', 11: b'\\x0b', 12: b'\\x0c', 13: b'\\r', 14: b'\\x0e', 15: b'\\x0f', 16: b'\\x10', 17: b'\\x11', 18: b'\\x12', 19: b'\\x13', 20: b'\\x14', 21: b'\\x15', 22: b'\\x16', 23: b'\\x17', 24: b'\\x18', 25: b'\\x19', 26: b'\\x1a', 27: b'\\x1b', 28: b'\\x1c', 29: b'\\x1d', 30: b'\\x1e', 31: b'\\x1f', 32: b' ', 33: b'!', 34: b'\"', 35: b'#', 36: b'$', 37: b'%', 38: b'&', 39: b\"'\", 40: b'(', 41: b')', 42: b'*', 43: b'+', 44: b',', 45: b'-', 46: b'.', 47: b'/', 48: b'0', 49: b'1', 50: b'2', 51: b'3', 52: b'4', 53: b'5', 54: b'6', 55: b'7', 56: b'8', 57: b'9', 58: b':', 59: b';', 60: b'<', 61: b'=', 62: b'>', 63: b'?', 64: b'@', 65: b'A', 66: b'B', 67: b'C', 68: b'D', 69: b'E', 70: b'F', 71: b'G', 72: b'H', 73: b'I', 74: b'J', 75: b'K', 76: b'L', 77: b'M', 78: b'N', 79: b'O', 80: b'P', 81: b'Q', 82: b'R', 83: b'S', 84: b'T', 85: b'U', 86: b'V', 87: b'W', 88: b'X', 89: b'Y', 90: b'Z', 91: b'[', 92: b'\\\\', 93: b']', 94: b'^', 95: b'_', 96: b'`', 97: b'a', 98: b'b', 99: b'c', 100: b'd', 101: b'e', 102: b'f', 103: b'g', 104: b'h', 105: b'i', 106: b'j', 107: b'k', 108: b'l', 109: b'm', 110: b'n', 111: b'o', 112: b'p', 113: b'q', 114: b'r', 115: b's', 116: b't', 117: b'u', 118: b'v', 119: b'w', 120: b'x', 121: b'y', 122: b'z', 123: b'{', 124: b'|', 125: b'}', 126: b'~', 127: b'\\x7f', 128: b'\\x80', 129: b'\\x81', 130: b'\\x82', 131: b'\\x83', 132: b'\\x84', 133: b'\\x85', 134: b'\\x86', 135: b'\\x87', 136: b'\\x88', 137: b'\\x89', 138: b'\\x8a', 139: b'\\x8b', 140: b'\\x8c', 141: b'\\x8d', 142: b'\\x8e', 143: b'\\x8f', 144: b'\\x90', 145: b'\\x91', 146: b'\\x92', 147: b'\\x93', 148: b'\\x94', 149: b'\\x95', 150: b'\\x96', 151: b'\\x97', 152: b'\\x98', 153: b'\\x99', 154: b'\\x9a', 155: b'\\x9b', 156: b'\\x9c', 157: b'\\x9d', 158: b'\\x9e', 159: b'\\x9f', 160: b'\\xa0', 161: b'\\xa1', 162: b'\\xa2', 163: b'\\xa3', 164: b'\\xa4', 165: b'\\xa5', 166: b'\\xa6', 167: b'\\xa7', 168: b'\\xa8', 169: b'\\xa9', 170: b'\\xaa', 171: b'\\xab', 172: b'\\xac', 173: b'\\xad', 174: b'\\xae', 175: b'\\xaf', 176: b'\\xb0', 177: b'\\xb1', 178: b'\\xb2', 179: b'\\xb3', 180: b'\\xb4', 181: b'\\xb5', 182: b'\\xb6', 183: b'\\xb7', 184: b'\\xb8', 185: b'\\xb9', 186: b'\\xba', 187: b'\\xbb', 188: b'\\xbc', 189: b'\\xbd', 190: b'\\xbe', 191: b'\\xbf', 192: b'\\xc0', 193: b'\\xc1', 194: b'\\xc2', 195: b'\\xc3', 196: b'\\xc4', 197: b'\\xc5', 198: b'\\xc6', 199: b'\\xc7', 200: b'\\xc8', 201: b'\\xc9', 202: b'\\xca', 203: b'\\xcb', 204: b'\\xcc', 205: b'\\xcd', 206: b'\\xce', 207: b'\\xcf', 208: b'\\xd0', 209: b'\\xd1', 210: b'\\xd2', 211: b'\\xd3', 212: b'\\xd4', 213: b'\\xd5', 214: b'\\xd6', 215: b'\\xd7', 216: b'\\xd8', 217: b'\\xd9', 218: b'\\xda', 219: b'\\xdb', 220: b'\\xdc', 221: b'\\xdd', 222: b'\\xde', 223: b'\\xdf', 224: b'\\xe0', 225: b'\\xe1', 226: b'\\xe2', 227: b'\\xe3', 228: b'\\xe4', 229: b'\\xe5', 230: b'\\xe6', 231: b'\\xe7', 232: b'\\xe8', 233: b'\\xe9', 234: b'\\xea', 235: b'\\xeb', 236: b'\\xec', 237: b'\\xed', 238: b'\\xee', 239: b'\\xef', 240: b'\\xf0', 241: b'\\xf1', 242: b'\\xf2', 243: b'\\xf3', 244: b'\\xf4', 245: b'\\xf5', 246: b'\\xf6', 247: b'\\xf7', 248: b'\\xf8', 249: b'\\xf9', 250: b'\\xfa', 251: b'\\xfb', 252: b'\\xfc', 253: b'\\xfd', 254: b'\\xfe', 255: b'\\xff', 256: b'\\xe0\\xa4', 257: b'\\xe0\\xa5', 258: b' \\xe0\\xa4', 259: b'\\xe0\\xa5\\x8d', 260: b'\\xe0\\xa5\\x8d\\xe0\\xa4', 261: b'\\xe0\\xa4\\xbe', 262: b'\\xe0\\xa4\\xa4', 263: b'\\xe0\\xa4\\xbf', 264: b'\\xe0\\xa4\\xae', 265: b'\\xe0\\xa4\\xa8', 266: b'\\xe0\\xa5\\x87', 267: b'\\xe0\\xa4\\xbe\\xe0\\xa4', 268: b'\\xe0\\xa4\\xbf\\xe0\\xa4', 269: b'\\xe0\\xa4\\xbe \\xe0\\xa4', 270: b'\\xe0\\xa4\\x82', 271: b'\\xe0\\xa5\\x80', 272: b'\\xe0\\xa4\\x82 \\xe0\\xa4', 273: b'\\xe0\\xa4\\xb0', 274: b'\\xe0\\xa5\\x8d\\xe0\\xa4\\xb0', 275: b'\\xe0\\xa4\\xb5', 276: b'\\xe0\\xa4\\xaa', 277: b'\\xe0\\xa5\\x81', 278: b' \\xe0\\xa4\\xa4', 279: b'\\xe0\\xa5\\x8d\\xe0\\xa4\\xb5', 280: b'\\xe0\\xa5\\x8d\\xe0\\xa4\\xaf', 281: b'\\xe0\\xa4\\x95', 282: b'\\xe0\\xa4\\xaf', 283: b'\\xe0\\xa5\\xa4', 284: b'\\xe0\\xa5\\xa5', 285: b'\\xe0\\xa5\\x83', 286: b'\\xe0\\xa5\\x87 \\xe0\\xa4', 287: b'\\xe0\\xa4\\xb8', 288: b'\\xe0\\xa4\\xa4\\xe0\\xa5\\x8d\\xe0\\xa4', 289: b'\\xe0\\xa5\\xa4 \\xe0\\xa4', 290: b'\\xe0\\xa5\\xa5\\n', 291: b'\\xe0\\xa5\\x88', 292: b'\\xe0\\xa4\\x83', 293: b'\\xe0\\xa5\\x87\\xe0\\xa4', 294: b'\\xe0\\xa4\\xa4\\xe0\\xa5\\x8d', 295: b'\\xe0\\xa5\\x8b', 296: b'\\xe0\\xa4\\xbe\\xe0\\xa4\\xb8', 297: b'\\xe0\\xa4\\xa4\\xe0\\xa4\\xbf\\xe0\\xa4', 298: b'\\xe0\\xa4\\xae\\xe0\\xa4\\xbf\\xe0\\xa4', 299: b'\\xe0\\xa4\\xae\\xe0\\xa5\\x8d'}\n",
|
351 |
+
"{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38: 38, 39: 39, 40: 40, 41: 41, 42: 42, 43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49, 50: 50, 51: 51, 52: 52, 53: 53, 54: 54, 55: 55, 56: 56, 57: 57, 58: 58, 59: 59, 60: 60, 61: 61, 62: 62, 63: 63, 64: 64, 65: 65, 66: 66, 67: 67, 68: 68, 69: 69, 70: 70, 71: 71, 72: 72, 73: 73, 74: 74, 75: 75, 76: 76, 77: 77, 78: 78, 79: 79, 80: 80, 81: 81, 82: 82, 83: 83, 84: 84, 85: 85, 86: 86, 87: 87, 88: 88, 89: 89, 90: 90, 91: 91, 92: 92, 93: 93, 94: 94, 95: 95, 96: 96, 97: 97, 98: 98, 99: 99, 100: 100, 101: 101, 102: 102, 103: 103, 104: 104, 105: 105, 106: 106, 107: 107, 108: 108, 109: 109, 110: 110, 111: 111, 112: 112, 113: 113, 114: 114, 115: 115, 116: 116, 117: 117, 118: 118, 119: 119, 120: 120, 121: 121, 122: 122, 123: 123, 124: 124, 125: 125, 126: 126, 127: 127, 128: 128, 129: 129, 130: 130, 131: 131, 132: 132, 133: 133, 134: 134, 135: 135, 136: 136, 137: 137, 138: 138, 139: 139, 140: 140, 141: 141, 142: 142, 143: 143, 144: 144, 145: 145, 146: 146, 147: 147, 148: 148, 149: 149, 150: 150, 151: 151, 152: 152, 153: 153, 154: 154, 155: 155, 156: 156, 157: 157, 158: 158, 159: 159, 160: 160, 161: 161, 162: 162, 163: 163, 164: 164, 165: 165, 166: 166, 167: 167, 168: 168, 169: 169, 170: 170, 171: 171, 172: 172, 173: 173, 174: 174, 175: 175, 176: 176, 177: 177, 178: 178, 179: 179, 180: 180, 181: 181, 182: 182, 183: 183, 184: 184, 185: 185, 186: 186, 187: 187, 188: 188, 189: 189, 190: 190, 191: 191, 192: 192, 193: 193, 194: 194, 195: 195, 196: 196, 197: 197, 198: 198, 199: 199, 200: 200, 201: 201, 202: 202, 203: 203, 204: 204, 205: 205, 206: 206, 207: 207, 208: 208, 209: 209, 210: 210, 211: 211, 212: 212, 213: 213, 214: 214, 215: 215, 216: 216, 217: 217, 218: 218, 219: 219, 220: 220, 221: 221, 222: 222, 223: 223, 224: 224, 225: 225, 226: 226, 227: 227, 228: 228, 229: 229, 230: 230, 231: 231, 232: 232, 233: 233, 234: 234, 235: 235, 236: 236, 237: 237, 238: 238, 239: 239, 240: 240, 241: 241, 242: 242, 243: 243, 244: 244, 245: 245, 246: 246, 247: 247, 248: 248, 249: 249, 250: 250, 251: 251, 252: 252, 253: 253, 254: 254, 255: 255, 256: 42208, 257: 42464, 258: 10805280, 259: 9283040, 260: 708142015968, 261: 12494048, 262: 10790112, 263: 12559584, 264: 11445472, 265: 11052256, 266: 8889824, 267: 708145226976, 268: 708145292512, 269: 181282528994528, 270: 8561888, 271: 8431072, 272: 181282525062368, 273: 11576544, 274: 194222188504544, 275: 11904224, 276: 11183328, 277: 8496608, 278: 2762268704, 279: 199719746643424, 280: 193122676876768, 281: 9807072, 282: 11511008, 283: 10790368, 284: 10855904, 285: 8627680, 286: 181282525390304, 287: 12100832, 288: 11880651560581375200, 289: 181282527290848, 290: 178628064, 291: 8955360, 292: 8627424, 293: 708141622752, 294: 155743578006752, 295: 9151968, 296: 203018284737760, 297: 11880706531867796704, 298: 11880706531868452064, 299: 155743578662112}\n"
|
352 |
+
]
|
353 |
+
},
|
354 |
+
{
|
355 |
+
"data": {
|
356 |
+
"text/plain": [
|
357 |
+
"regex.Regex(\"\\n |[\\\\u0900-\\\\u097F](?![\\\\u0964\\\\u0965])+ # Match Hindi words (Devanagari script)\\n |[\\\\u0966-\\\\u096F]+ # Match Hindi digits (०-९)\\n |[a-zA-Z]+ # Match English words (Latin script)\\n |[0-9]+ # Match Latin digits (0-9)\\n |\\\\s+ # Match whitespace (spaces, tabs, newlines)\\n |'[^\\\\r\\\\n\\\\p{L}\\\\p{N}]*\\\\p{L}+ # Match apostrophes followed by letters\\n |\\\\p{N}{1,3} # Match numbers (1 to 3 digits)\\n |[^\\\\s\\\\p{L}\\\\p{N}]+ # Match non-letter, non-number special characters\\n |\\\\s*[\\\\r\\\\n] # Match line breaks and leading spaces\\n |\\\\s+(?!\\\\S) # Match trailing whitespace\\n \", flags=regex.X | regex.V0)"
|
358 |
+
]
|
359 |
+
},
|
360 |
+
"execution_count": 6,
|
361 |
+
"metadata": {},
|
362 |
+
"output_type": "execute_result"
|
363 |
+
}
|
364 |
+
],
|
365 |
+
"source": [
|
366 |
+
"#### Following methods are needed to create a vocab using BPA Algo ####\n",
|
367 |
+
"\n",
|
368 |
+
"# Get dictonary with key as token pairs and value as number of occurence\n",
|
369 |
+
"def get_pair_stats(toks): \n",
|
370 |
+
" pair_stats = {}\n",
|
371 |
+
" for pair in zip(toks, toks[1:]):\n",
|
372 |
+
" pair_stats[pair] = pair_stats.get(pair, 0) + 1\n",
|
373 |
+
" \n",
|
374 |
+
" return pair_stats\n",
|
375 |
+
"\n",
|
376 |
+
"# Replaces all the occurences of pair in the tokens list with a new token\n",
|
377 |
+
"def merge(toks, pair, newTok):\n",
|
378 |
+
" newToks = []\n",
|
379 |
+
" i = 0\n",
|
380 |
+
" while i < len(toks):\n",
|
381 |
+
" if i < len(toks) - 1 and (toks[i], toks[i+1]) == pair:\n",
|
382 |
+
" newToks.append(newTok)\n",
|
383 |
+
" i += 2\n",
|
384 |
+
" else:\n",
|
385 |
+
" newToks.append(toks[i])\n",
|
386 |
+
" i +=1\n",
|
387 |
+
" return newToks\n",
|
388 |
+
"\n",
|
389 |
+
"# paired_tokens_vocab - key as integer pairs (p0 & p1 would be between 0 & max_vocab_size) and value would be integer val between 0 - max_vocab_size\n",
|
390 |
+
"def bpaAlgo(toks, vocab_size):\n",
|
391 |
+
" total_run = vocab_size - 256\n",
|
392 |
+
"\n",
|
393 |
+
" paired_tokens_vocab = {}\n",
|
394 |
+
" newToks = list(toks)\n",
|
395 |
+
" for i in range(0, total_run):\n",
|
396 |
+
" pair_stats = get_pair_stats(newToks)\n",
|
397 |
+
" top_pair = max(pair_stats, key=pair_stats.get)\n",
|
398 |
+
" newToks = merge(newToks, top_pair, len(paired_tokens_vocab)+256)\n",
|
399 |
+
" print(f\"replaced topPair {top_pair}'s {pair_stats.get(top_pair)} occurrences with {len(paired_tokens_vocab)+256}\")\n",
|
400 |
+
" paired_tokens_vocab[top_pair] = len(paired_tokens_vocab)+256\n",
|
401 |
+
" \n",
|
402 |
+
" print(newToks)\n",
|
403 |
+
" print(f\"Original tokens length {len(toks)}, while updated tokens length {len(newToks)}\")\n",
|
404 |
+
" print(f\"Compression Ratio {len(toks)/len(newToks):.2f}\")\n",
|
405 |
+
" return paired_tokens_vocab\n",
|
406 |
+
"\n",
|
407 |
+
"# vocab - key as int values from 0 - max(vocabSize) and values are bytes\n",
|
408 |
+
"def create_vocab(paired_tokens_vocab):\n",
|
409 |
+
" vocab = {i: bytes([i]) for i in range(256)} # 0-255 bytes as is\n",
|
410 |
+
"\n",
|
411 |
+
" for (p0, p1), i in paired_tokens_vocab.items():\n",
|
412 |
+
" vocab[i] = vocab[p0] + vocab[p1] # as we are iterating in order, we are deriving the values of later vocab from previous vocab value bytes\n",
|
413 |
+
"\n",
|
414 |
+
" return vocab\n",
|
415 |
+
"\n",
|
416 |
+
"small_text = \"\"\"चीराण्यपास्याज्जनकस्य कन्या नेयं प्रतिज्ञा मम दत्तपूर्वा। यथासुखं गच्छतु राजपुत्री वनं समग्रा सह सर्वरत्नैः॥\n",
|
417 |
+
"अजीवनाहेण मया नृशंसा कृता प्रतिज्ञा नियमेन तावत्। त्वया हि बाल्यात् प्रतिपन्नमेतत् तन्मा दहेद् वेणुमिवात्मपुष्पम्॥\n",
|
418 |
+
"रामेण यदि ते पापे किंचित्कृतमशोभनम्। अपकारः क इह ते वैदेह्या दर्शितोऽधमे॥\n",
|
419 |
+
"मृगीवोत्फुल्लनयना मृदुशीला मनस्विनी। अपकारं कमिव ते करोति जनकात्मजा॥\n",
|
420 |
+
"ननु पर्याप्तमेवं ते पापे रामविवासनम्। किमेभिः कृपणैर्भूयः पातकैरपि ते कृतैः॥\n",
|
421 |
+
"प्रतिज्ञातं मया तावत् त्वयोक्तं देवि शृण्वता। रामं यदभिषेकाय त्वमिहागतमब्रवीः॥\n",
|
422 |
+
"तत्त्वेतत् समतिक्रम्य निरयं गन्तुमिच्छसि। मैथिलीमपि या हि त्वमीक्षसे चीरवासिनीम्॥\n",
|
423 |
+
"एवं ब्रुवन्तं पितरं रामः सम्प्रस्थितो वनम्। अवाक्शिरसमासीनमिदं वचनमब्रवीत्॥\"\"\"\n",
|
424 |
+
"small_tokens = list(small_text.encode(\"utf-8\"))\n",
|
425 |
+
"paired_tokens_vocab = bpaAlgo(small_tokens, 300)\n",
|
426 |
+
"# print(f\"paired_tokens_vocab: {paired_tokens_vocab}\")\n",
|
427 |
+
"# vocab - key as int values from 0 - max(vocabSize) and values are bytes\n",
|
428 |
+
"vocab = create_vocab(paired_tokens_vocab)\n",
|
429 |
+
"print(vocab)\n",
|
430 |
+
"print({k:int.from_bytes(v, byteorder='little') for (k,v) in vocab.items()})\n"
|
431 |
+
]
|
432 |
+
},
|
433 |
+
{
|
434 |
+
"cell_type": "code",
|
435 |
+
"execution_count": 28,
|
436 |
+
"metadata": {},
|
437 |
+
"outputs": [
|
438 |
+
{
|
439 |
+
"name": "stdout",
|
440 |
+
"output_type": "stream",
|
441 |
+
"text": [
|
442 |
+
"(256, 154)\n",
|
443 |
+
"चीराण्यपास्याज्जनकस्य कन्या नेयं प्रतिज्ञा मम दत्तपूर्वा। यथासुखं गच्छतु राजपुत्री वनं समग्रा सह सर्वरत्नैः॥\n",
|
444 |
+
"अजीवनाहेण मया नृशंसा कृता प्रतिज्ञा नियमेन तावत्। त्वया हि बाल्यात् प्रतिपन्नमेतत् तन्मा दहेद् वेणुमिवात्मपुष्पम्॥\n",
|
445 |
+
"रामेण यदि ते पापे किंचित्कृतमशोभनम्। अपकारः क इह ते वैदेह्या दर्शितोऽधमे॥\n",
|
446 |
+
"मृगीवोत्फुल्लनयना मृदुशीला मनस्विनी। अपकारं कमिव ते करोति जनकात्मजा॥\n",
|
447 |
+
"ननु पर्याप्तमेवं ते पापे रामविवासनम्। किमेभिः कृपणैर्भूयः पातकैरपि ते कृतैः॥\n",
|
448 |
+
"प्रतिज्ञातं मया तावत् त्वयोक्तं देवि शृण्वता। रामं यदभिषेकाय त्वमिहागतमब्रवीः॥\n",
|
449 |
+
"तत्त्वेतत् समतिक्रम्य निरयं गन्तुमिच्छसि। मैथिलीमपि या हि त्वमीक्षसे चीरवासिनीम्॥\n",
|
450 |
+
"एवं ब्रुवन्तं पितरं रामः सम्प्रस्थितो वनम्। अवाक्शिरसमासीनमिदं वचनमब्रवीत्॥\n",
|
451 |
+
"True\n"
|
452 |
+
]
|
453 |
+
}
|
454 |
+
],
|
455 |
+
"source": [
|
456 |
+
"##### Following methods are used to use the already created vocab ####\n",
|
457 |
+
"# paired_tokens_vocab - key as integer pairs (p0 & p1 would be between 0 & max_vocab_size) and value would be integer val between 0 - max_vocab_size\n",
|
458 |
+
"# vocab - key as int values from 0 - max(vocabSize) and values are bytes\n",
|
459 |
+
"\n",
|
460 |
+
"def gg_decode(intTokens):\n",
|
461 |
+
" vocalTokenVals = b\"\".join(vocab[vocabKey] for vocabKey in intTokens) # join actual byte values of the keys from vocab\n",
|
462 |
+
" return vocalTokenVals.decode(\"utf-8\") # Decode the utf-code byte sequemces back to String\n",
|
463 |
+
"\n",
|
464 |
+
"def gg_encode(text):\n",
|
465 |
+
" tokens = list(text.encode('utf-8'))\n",
|
466 |
+
"\n",
|
467 |
+
" while len(tokens) > 1: # as long as the token values can be paired. It will break within loop below\n",
|
468 |
+
" pair_stats = get_pair_stats(tokens)\n",
|
469 |
+
" # Get the matching pair from the vocab with least value. That way, if it is not found, we can stop the iteration\n",
|
470 |
+
" pair = min(pair_stats, key=lambda k : paired_tokens_vocab.get(k, float(\"inf\"))) # find min pair whose min value is decided based on the value found in paired_tokens_vocab\n",
|
471 |
+
" if pair not in paired_tokens_vocab:\n",
|
472 |
+
" print(pair)\n",
|
473 |
+
" return tokens\n",
|
474 |
+
" newTok = paired_tokens_vocab[pair]\n",
|
475 |
+
" tokens = merge(tokens, pair, newTok)\n",
|
476 |
+
"small_text2 = gg_decode(gg_encode(small_text))\n",
|
477 |
+
"print(small_text2)\n",
|
478 |
+
"print(small_text2 == small_text)\n",
|
479 |
+
" "
|
480 |
+
]
|
481 |
+
},
|
482 |
+
{
|
483 |
+
"cell_type": "code",
|
484 |
+
"execution_count": 2,
|
485 |
+
"metadata": {},
|
486 |
+
"outputs": [],
|
487 |
+
"source": [
|
488 |
+
"import regex as re\n"
|
489 |
+
]
|
490 |
+
},
|
491 |
+
{
|
492 |
+
"cell_type": "code",
|
493 |
+
"execution_count": 59,
|
494 |
+
"metadata": {},
|
495 |
+
"outputs": [
|
496 |
+
{
|
497 |
+
"name": "stdout",
|
498 |
+
"output_type": "stream",
|
499 |
+
"text": [
|
500 |
+
"['\\n', 'Hello', \"'ve\", ' world', '123', ' how', \"'s\", ' are', ' you', '!!!?', '\\n', '\\n', 'IA', ' m', ' fine', '\\n']\n"
|
501 |
+
]
|
502 |
+
}
|
503 |
+
],
|
504 |
+
"source": [
|
505 |
+
"gpt2pat = re.compile(r\"\"\"'s|'t|'re|'ve|'m|'ll|'d| ?\\p{L}+| ?\\p{N}+| ?[^\\s\\p{L}\\p{N}]+|\\s+(?!\\S)|\\s+\"\"\")\n",
|
506 |
+
"\n",
|
507 |
+
"txt = \"\"\"\n",
|
508 |
+
"Hello've world123 how's are you!!!?\n",
|
509 |
+
"\n",
|
510 |
+
"IA m fine\n",
|
511 |
+
"\"\"\"\n",
|
512 |
+
"output = re.findall(gpt2pat, txt)\n",
|
513 |
+
"\n",
|
514 |
+
"print(output)"
|
515 |
+
]
|
516 |
+
},
|
517 |
+
{
|
518 |
+
"cell_type": "code",
|
519 |
+
"execution_count": 62,
|
520 |
+
"metadata": {},
|
521 |
+
"outputs": [
|
522 |
+
{
|
523 |
+
"name": "stdout",
|
524 |
+
"output_type": "stream",
|
525 |
+
"text": [
|
526 |
+
"['चीराण्यपास्याज्जनकस्य', ' कन्या', ' नेयं', ' प्रतिज्ञा', ' मम', ' दत्तपूर्वा।', ' यथासुखं', ' गच्छतु', ' राजपुत्री', ' वनं', ' समग्रा', ' सह', ' सर्वरत्नैः॥', '\\n', '\\n', 'प्रतिज्ञातं', ' मया', ' तावत्', ' त्वयोक्तं', ' देवि', ' शृण्वता।', ' 123', ' 4', ' 5', ' I', ' am', ' going', ' रामं', ' यदभिषेकाय', ' त्वमिहागतमब्रवीः॥']\n"
|
527 |
+
]
|
528 |
+
}
|
529 |
+
],
|
530 |
+
"source": [
|
531 |
+
"# U+090x\n",
|
532 |
+
"# ऀ ँ ऄ अ आ इ ई उ ऊ ऋ ऌ ऍ ऎ ए\n",
|
533 |
+
"\n",
|
534 |
+
"# U+091x\n",
|
535 |
+
"# ऐ ऑ ऒ ओ औ क ख ग घ ङ च छ ज झ ञ ट\n",
|
536 |
+
"\n",
|
537 |
+
"# U+092x\n",
|
538 |
+
"# ठ ड ढ ण त थ द ध न ऩ प फ ब भ म य\n",
|
539 |
+
"\n",
|
540 |
+
"# U+093x\n",
|
541 |
+
"# र ऱ ल ळ ऴ व श ष स हऺऻ ़ ऽ ाि\n",
|
542 |
+
"\n",
|
543 |
+
"# U+094x\n",
|
544 |
+
"# ी ु ू ृ ॄ ॅ ॆ े ै ॉ ॊ ो ौ ् ॎ ॏ\n",
|
545 |
+
"\n",
|
546 |
+
"# U+095x\n",
|
547 |
+
"# ॐ ॑ ॓ ॕ ॖ ॗ क़ ख़ ग़ ज़ ड़ ढ़ फ़ य़\n",
|
548 |
+
"\n",
|
549 |
+
"# U+096x\n",
|
550 |
+
"# ॠ ॡ ॢ । ॥ ० १ २ ३ ४ ५ ६ ७ ८ ९\n",
|
551 |
+
"\n",
|
552 |
+
"# U+097x\n",
|
553 |
+
"# ॰ ॱ ॲ ॳ ॴ ॵ ॶ ॷ ॸ ॹ ॺ ॻ ॼ ॽ ॾ ॿ\n",
|
554 |
+
"\n",
|
555 |
+
"pat = re.compile(r\"\"\"\n",
|
556 |
+
" \\ ?[\\u0900-\\u097F]+ # Match Sanskit words with an optional space before\n",
|
557 |
+
" |\\ ?\\d+ # Matches one or more numerical digits.\n",
|
558 |
+
" |\\ ?[^\\s\\u0900-\\u097F\\d]+ # Matches any character that is not a space, snaskrit or digit with an optional space before \n",
|
559 |
+
" |\\s+(?!\\S) # trailing whitespace characters (spaces, tabs, newlines)\n",
|
560 |
+
" |\\s+ # Match whitespace (spaces, tabs, newlines)\n",
|
561 |
+
" |\\s?[\\r\\n] \n",
|
562 |
+
" \"\"\", re.VERBOSE)\n",
|
563 |
+
"\n",
|
564 |
+
"small_text = \"\"\"चीराण्यपास्याज्जनकस्य कन्या नेयं प्रतिज्ञा मम दत्तपूर्वा। यथासुखं गच्छतु राजपुत्री वनं समग्रा सह सर्वरत्नैः॥\n",
|
565 |
+
"\n",
|
566 |
+
"प्रतिज्ञातं मया तावत् त्वयोक्तं देवि शृण्वता। 123 4 5 I am going रामं यदभिषेकाय त्वमिहागतमब्रवीः॥\"\"\"\n",
|
567 |
+
"\n",
|
568 |
+
"print(re.findall(pat, small_text))"
|
569 |
+
]
|
570 |
+
}
|
571 |
+
],
|
572 |
+
"metadata": {
|
573 |
+
"kernelspec": {
|
574 |
+
"display_name": "Python 3",
|
575 |
+
"language": "python",
|
576 |
+
"name": "python3"
|
577 |
+
},
|
578 |
+
"language_info": {
|
579 |
+
"codemirror_mode": {
|
580 |
+
"name": "ipython",
|
581 |
+
"version": 3
|
582 |
+
},
|
583 |
+
"file_extension": ".py",
|
584 |
+
"mimetype": "text/x-python",
|
585 |
+
"name": "python",
|
586 |
+
"nbconvert_exporter": "python",
|
587 |
+
"pygments_lexer": "ipython3",
|
588 |
+
"version": "3.9.6"
|
589 |
+
}
|
590 |
+
},
|
591 |
+
"nbformat": 4,
|
592 |
+
"nbformat_minor": 2
|
593 |
+
}
|
src/tokenizer.py
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import regex as re
|
2 |
+
from tqdm import tqdm
|
3 |
+
|
4 |
+
# U+090x
|
5 |
+
# ऀ ँ ऄ अ आ इ ई उ ऊ ऋ ऌ ऍ ऎ ए
|
6 |
+
|
7 |
+
# U+091x
|
8 |
+
# ऐ ऑ ऒ ओ औ क ख ग घ ङ च छ ज झ ञ ट
|
9 |
+
|
10 |
+
# U+092x
|
11 |
+
# ठ ड ढ ण त थ द ध न ऩ प फ ब भ म य
|
12 |
+
|
13 |
+
# U+093x
|
14 |
+
# र ऱ ल ळ ऴ व श ष स हऺऻ ़ ऽ ाि
|
15 |
+
|
16 |
+
# U+094x
|
17 |
+
# ी ु ू ृ ॄ ॅ ॆ े ै ॉ ॊ ो ौ ् ॎ ॏ
|
18 |
+
|
19 |
+
# U+095x
|
20 |
+
# ॐ ॑ ॓ ॕ ॖ ॗ क़ ख़ ग़ ज़ ड़ ढ़ फ़ य़
|
21 |
+
|
22 |
+
# U+096x
|
23 |
+
# ॠ ॡ ॢ । ॥ ० १ २ ३ ४ ५ ६ ७ ८ ९
|
24 |
+
|
25 |
+
# U+097x
|
26 |
+
# ॰ ॱ ॲ ॳ ॴ ॵ ॶ ॷ ॸ ॹ ॺ ॻ ॼ ॽ ॾ ॿ
|
27 |
+
def sanskrit_token_preprocessor(text):
|
28 |
+
# pat = re.compile(r"""॥|।| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+""")
|
29 |
+
pat = re.compile(r"""
|
30 |
+
\ ?[\u0900-\u097F]+ # Match Sanskit words with an optional space before
|
31 |
+
|\ ?\d+ # Matches one or more numerical digits.
|
32 |
+
|\ ?[^\s\u0900-\u097F\d]+ # Matches any character that is not a space, snaskrit or digit with an optional space before
|
33 |
+
|\s+(?!\S) # trailing whitespace characters (spaces, tabs, newlines)
|
34 |
+
|\s+ # Match whitespace (spaces, tabs, newlines)
|
35 |
+
|\s?[\r\n]
|
36 |
+
""", re.VERBOSE)
|
37 |
+
return re.findall(pat, text)
|
38 |
+
|
39 |
+
def bpeAlgo(tokensList, total_runs, newTokenStartValue):
|
40 |
+
# tokensList - list of list of tokens
|
41 |
+
paired_tokens_vocab = {}
|
42 |
+
newTokensList = list(tokensList) # copy list to keep original unchanged
|
43 |
+
# newTokensList - list of list of tokens
|
44 |
+
|
45 |
+
for i in tqdm(range(0, total_runs), desc="Learning BPE"):
|
46 |
+
pair_stats = {}
|
47 |
+
for tokens in newTokensList:
|
48 |
+
pair_stats = get_pair_stats(tokens, pair_stats)
|
49 |
+
|
50 |
+
# print(pair_stats)
|
51 |
+
if not pair_stats:
|
52 |
+
print(f"Not enought unique pairs to run BPE's {total_runs} runs")
|
53 |
+
raise ValueError(f"Not enough pairs to create a vocab of size {total_runs+256}")
|
54 |
+
|
55 |
+
top_pair = max(pair_stats, key=pair_stats.get)
|
56 |
+
newTokenVal = len(paired_tokens_vocab)+newTokenStartValue
|
57 |
+
# Replace tokens
|
58 |
+
newTokensList = [merge(tokens, top_pair, newTokenVal) for tokens in newTokensList]
|
59 |
+
# print(f"replaced topPair {top_pair}'s {pair_stats.get(top_pair)} occurrences with {len(paired_tokens_vocab)+256}")
|
60 |
+
# Add the new token to paired_tokens_vocab
|
61 |
+
paired_tokens_vocab[top_pair] = newTokenVal
|
62 |
+
|
63 |
+
return paired_tokens_vocab, [tok for toks in newTokensList for tok in toks]
|
64 |
+
|
65 |
+
# Get dictonary with key as token pairs and value as number of occurence
|
66 |
+
def get_pair_stats(toks, pair_stats):
|
67 |
+
for pair in zip(toks, toks[1:]):
|
68 |
+
pair_stats[pair] = pair_stats.get(pair, 0) + 1
|
69 |
+
|
70 |
+
return pair_stats
|
71 |
+
|
72 |
+
# Replaces all the occurences of pair in the tokens list with a new token
|
73 |
+
def merge(toks, pair, newTok):
|
74 |
+
newToks = []
|
75 |
+
i = 0
|
76 |
+
while i < len(toks):
|
77 |
+
if i < len(toks) - 1 and (toks[i], toks[i+1]) == pair:
|
78 |
+
newToks.append(newTok)
|
79 |
+
i += 2
|
80 |
+
else:
|
81 |
+
newToks.append(toks[i])
|
82 |
+
i += 1
|
83 |
+
return newToks
|
84 |
+
|
85 |
+
# vocab - key as int values from 0 - max(vocabSize) and values are bytes
|
86 |
+
def create_vocab(paired_tokens_vocab):
|
87 |
+
vocab = {i: bytes([i]) for i in range(256)} # 0-255 bytes as is
|
88 |
+
|
89 |
+
for (p0, p1), i in paired_tokens_vocab.items():
|
90 |
+
vocab[i] = vocab[p0] + vocab[p1] # as we are iterating in order, we are deriving the values of later vocab from previous vocab value bytes
|
91 |
+
|
92 |
+
return vocab
|
93 |
+
|
94 |
+
def save_paired_tokens_vocab(filepath, paired_tokens_vocab):
|
95 |
+
with open(filepath, 'w') as f:
|
96 |
+
f.write('Token version 1\n')
|
97 |
+
for k,v in paired_tokens_vocab.items():
|
98 |
+
f.write(f"{k}:{v}\n")
|
99 |
+
|
100 |
+
def save_vocab(filepath, vocab):
|
101 |
+
with open(filepath, 'w') as f:
|
102 |
+
f.write('Token version 1\n')
|
103 |
+
for k,v in vocab.items():
|
104 |
+
f.write(f"{k}:{v}\n")
|
105 |
+
|
106 |
+
|
107 |
+
|
108 |
+
##### Following methods are used to use the already created vocab ####
|
109 |
+
# paired_tokens_vocab - key as integer pairs (p0 & p1 would be between 0 & max_vocab_size) and value would be integer val between 0 - max_vocab_size
|
110 |
+
# vocab - key as int values from 0 - max(vocabSize) and values are bytes
|
111 |
+
|
112 |
+
def decode(intTokens, vocab):
|
113 |
+
vocalTokenVals = b"".join(vocab[vocabKey] for vocabKey in intTokens) # join actual byte values of the keys from vocab
|
114 |
+
return vocalTokenVals.decode("utf-8") # Decode the utf-code byte sequemces back to String
|
115 |
+
|
116 |
+
def encode(text, paired_tokens_vocab):
|
117 |
+
tokens = list(text.encode('utf-8'))
|
118 |
+
|
119 |
+
while len(tokens) > 1: # as long as the token values can be paired. It will break within loop below
|
120 |
+
pair_stats = get_pair_stats(tokens, {})
|
121 |
+
# Get the matching pair from the vocab with least value. That way, if it is not found, we can stop the iteration
|
122 |
+
pair = min(pair_stats, key=lambda k : paired_tokens_vocab.get(k, float("inf"))) # find min pair whose min value is decided based on the value found in paired_tokens_vocab
|
123 |
+
if pair not in paired_tokens_vocab:
|
124 |
+
return tokens
|
125 |
+
newTok = paired_tokens_vocab[pair]
|
126 |
+
# print(f"Replacing {pair} with {newTok}")
|
127 |
+
tokens = merge(tokens, pair, newTok)
|
128 |
+
|
129 |
+
return tokens
|
static/mini_sanskrit.txt
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/sanskrit.txt
ADDED
The diff for this file is too large to render.
See raw diff
|
|
tests/__init__.py
ADDED
File without changes
|
tests/test_tokenizer.py
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import pytest
|
2 |
+
from src.tokenizer import sanskrit_token_preprocessor, bpeAlgo, create_vocab, encode, decode
|
3 |
+
|
4 |
+
@pytest.fixture
|
5 |
+
def sample_text():
|
6 |
+
return """चीराण्यपास्याज्जनकस्य कन्या नेयं प्रतिज्ञा मम दत्तपूर्वा।
|
7 |
+
अजीवनाहेण मया नृशंसा कृता प्रतिज्ञा नियमेन तावत्। I am going"""
|
8 |
+
|
9 |
+
@pytest.fixture
|
10 |
+
def small_vocab_size():
|
11 |
+
return 300 # Small vocab size for testing
|
12 |
+
|
13 |
+
def test_sanskrit_token_preprocessor():
|
14 |
+
text = "Hello! नमस्ते 123"
|
15 |
+
tokens = sanskrit_token_preprocessor(text)
|
16 |
+
assert isinstance(tokens, list)
|
17 |
+
assert all(isinstance(token, str) for token in tokens)
|
18 |
+
|
19 |
+
def test_encode_decode_roundtrip(sample_text, small_vocab_size):
|
20 |
+
# Prepare tokens
|
21 |
+
tokens = sanskrit_token_preprocessor(sample_text)
|
22 |
+
tokens = [list(tok.encode('utf-8')) for tok in tokens]
|
23 |
+
|
24 |
+
# Train BPE
|
25 |
+
paired_tokens_vocab, _ = bpeAlgo(tokens, small_vocab_size - 256, 256)
|
26 |
+
vocab = create_vocab(paired_tokens_vocab)
|
27 |
+
|
28 |
+
# Test encode-decode roundtrip
|
29 |
+
encoded = encode(sample_text, paired_tokens_vocab)
|
30 |
+
decoded = decode(encoded, vocab)
|
31 |
+
assert decoded == sample_text
|
32 |
+
|
33 |
+
def test_vocab_size_limit(sample_text, small_vocab_size):
|
34 |
+
tokens = sanskrit_token_preprocessor(sample_text)
|
35 |
+
tokens = [list(tok.encode('utf-8')) for tok in tokens]
|
36 |
+
|
37 |
+
paired_tokens_vocab, _ = bpeAlgo(tokens, small_vocab_size - 256, 256)
|
38 |
+
vocab = create_vocab(paired_tokens_vocab)
|
39 |
+
|
40 |
+
# Check if vocab size is within limits
|
41 |
+
assert len(vocab) <= small_vocab_size
|
42 |
+
|
43 |
+
def test_empty_input():
|
44 |
+
empty_text = ""
|
45 |
+
tokens = sanskrit_token_preprocessor(empty_text)
|
46 |
+
assert tokens == []
|
47 |
+
|
48 |
+
# Test encode/decode with empty input
|
49 |
+
paired_tokens_vocab = {}
|
50 |
+
vocab = create_vocab(paired_tokens_vocab)
|
51 |
+
encoded = encode(empty_text, paired_tokens_vocab)
|
52 |
+
decoded = decode(encoded, vocab)
|
53 |
+
assert decoded == empty_text
|
54 |
+
|
55 |
+
def test_special_characters():
|
56 |
+
special_text = "!@#$%^&*()_+ १२३"
|
57 |
+
tokens = sanskrit_token_preprocessor(special_text)
|
58 |
+
assert isinstance(tokens, list)
|
59 |
+
assert len(tokens) > 0
|