Commit 8251cf43 by Robbie Hott

Added example for reading and downloading a directory of files from SNAC

parent 0a23d625
<?php
/**
* SNAC Export from List example
*
* For the full license, see the LICENSE file in the repository root
*
* @author Robbie Hott
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
* @copyright 2017 the Rector and Visitors of the University of Virginia, and
* the Regents of the University of California
*/
$row = 0;
// Open the first argument as the csv file to read (argv[1] should be the CBW csv file)
if (isset($argv[1]) && (($handle = fopen($argv[1], "r")) !== FALSE)) {
// Default to the current directory unless specified
$dir = ".";
if (isset($argv[2]))
$dir = $argv[2];
mkdir($dir, 0700, true);
// Default to EAC-CPF unless specified otherwise
$type = 'eac-cpf';
if (isset($argv[3]))
$type = $argv[3];
// Loop over the data in the CSV file
while (($data = fgetcsv($handle)) !== FALSE) {
if ($row++ >= 1) { // ignore the header row
// Build a SNAC query with an Identity Constellation Array (JSON object)
$snacArray = array(
"command" => "download_constellation",
"constellationid" => $data[0],
"type" => $type
);
// Encode Associative Array as JSON object
$query = json_encode($snacArray, JSON_PRETTY_PRINT);
// Use CURL to send reconciliation request to the REST API
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://snac-web.iath.virginia.edu:81/");
curl_setopt($ch, CURLOPT_HTTPHEADER,
array (
'Content-Type: application/json',
'Content-Length: ' . strlen($query)
));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$responseJSON = curl_exec($ch);
curl_close($ch);
// Decode JSON response into an Associative Array
$response = json_decode($responseJSON, true);
if (isset($response["file"])) {
$fn = $response["file"]["filename"];
file_put_contents($dir . "/" . $fn, base64_decode($response["file"]["content"]));
}
}
}
fclose($handle);
} else {
// If something happened, then just print out usage
echo "Download from list of ICIDs\n" .
"Usage: php read_from_list.php list.csv [directory] [type]\n\n" .
"The list.csv file should have a header and the first column should contain ICIDs.\n" .
"Type must be a valid type: eac-cpf, constellation_json\n";
}
?>
ICID
2114800
3422913
5476423
9325755
9562797
11448283
13155620
16512151
22734076
23088066
47799487
58228190
67626811
76535447
76739503
76759437
76759449
76759460
76759467
76759478
76759490
76759502
76759512
76759519
76759532
76759538
76759544
76759555
76759565
76759577
76759590
76759602
76759612
76759624
76759634
76759645
76759657
76759669
76759681
76759694
76759705
76759717
76759729
76759741
76759754
76759766
76759777
76759788
76759800
76759807
76759814
76759826
76759837
76759849
76759860
76759871
76759878
76759885
76759896
76759902
76759912
76759925
76759937
76759946
76759953
76759964
76759976
76759989
76759996
76760008
76760015
76760028
76760040
76760050
76760057
76760064
76760071
76760083
76760090
76760102
76760115
76760122
76760134
76760146
76760158
76760169
76760175
76760187
76760198
76760205
76760216
76760223
76760235
76760246
76760258
76760268
76760279
76760290
76760301
76760313
76760326
76760332
76760343
76760350
76760361
76760373
76760385
76760397
76760408
76760415
76760426
76760437
76760446
76760455
76760462
76760469
76760476
76760488
76760495
76760507
76760518
76760531
76760542
76760554
76760561
76760574
76760586
76760597
76760609
76760620
76760632
76760644
76760656
76760669
76760676
76760688
76760700
76760707
76760719
76760730
76760741
76760753
76760765
76760776
76760788
76760794
76760806
76760819
76760831
76760843
76760855
76760867
76760879
76760891
76760903
76760910
76760922
76760929
76760941
76760954
76760967
76760978
76760990
76760997
76761008
76761019
76761030
76761041
76761053
76761064
76761076
76761088
76761099
76761110
76761121
76761132
76761142
76761152
76761158
76761170
76761183
76761196
76761202
76761214
76761220
76761232
76761238
76761250
76761262
76761273
76761285
76761297
76761310
76761321
76761327
76761338
76761350
76761362
76761373
76761384
76761395
76761406
76761413
76761419
76761430
76761437
76761448
76761459
76761470
76761480
76761490
76761501
76761508
76761515
76761521
76761527
76761537
76761549
76761561
76761572
76761584
76761596
76761608
76761620
76761631
76761638
76761650
76761663
76761670
76761682
76761689
76761701
76761708
76761721
76761732
76761744
76761756
76761767
76761778
76761790
76761797
76761809
76761820
76761830
76761841
76761852
76761862
76761871
76761880
76761889
76761898
76761908
76761920
76761930
76761939
76761949
76761958
76761969
76761978
76761991
76762002
76762013
76762025
76762036
76762048
76762060
76762072
76762085
76762097
76762109
76762120
76762132
76762144
76762156
76762169
76762181
76762192
76762204
76762211
76762218
76762229
76762241
76762254
76762266
76762278
76762289
76762301
76762312
76762324
76762331
76762343
76762355
76762367
76762379
76762392
76762405
76762416
76762427
76762438
76762450
76762461
76762473
76762480
76762492
76762505
76762517
76762528
76762539
76762550
76762562
76762574
76762586
76762593
76762605
76762617
76762623
76762635
76762642
76762653
76762666
76762678
76762688
76762699
76762710
76762722
76762732
76762744
76762756
76762767
76762779
76762792
76762802
76762813
76762826
76762836
76762848
76762855
76762867
76762874
76762885
76762896
76762908
76762920
76762932
76762939
76762952
76762963
76762976
76762988
76763000
76763012
76763024
76763036
76763043
76763055
76763068
76763081
76763094
76763106
76763118
76763129
76763141
76763153
76763165
76763177
76763189
76763200
76763211
76763224
76763235
76763247
76763254
76763261
76763268
76763280
76763287
76763294
76763300
76763312
76763323
76763335
76763345
76763356
76763363
76763376
76763383
76763392
76763403
76763415
76763427
76763437
76763449
76763462
76763469
76763480
76763492
76763504
76763515
76763527
76763540
76763552
76763564
76763575
76763581
76763587
76763600
76763612
76763623
76763629
76763641
76763648
76763655
76763662
76763669
76763681
76763694
76763705
76763715
76763722
76763733
76763744
76763751
76763763
76763774
76763785
76763796
76763808
76763820
76763833
76763844
76763856
76763867
76763878
76763889
76763900
76763909
76763922
76763933
76763945
76763957
76763970
76763980
76763991
76764002
76764014
76764026
76764037
76764044
76764057
76764069
76764076
76764086
76764097
76764108
76764120
76764130
76764141
76764153
76764165
76764178
76764190
76764196
76764207
76764220
76764231
76764238
76764250
76764257
76764268
76764281
76764291
76764302
76764314
76764324
76764335
76764348
76764359
76764372
76764378
76764388
76764399
76764406
76764419
76764431
76764442
76764453
76764464
76764476
76764488
76764499
76764511
76764522
76764533
76764545
76764551
76764563
76764575
76764587
76764599
76764612
76764624
76764635
76764647
76764654
76764661
76764668
76764680
76764690
76764697
76764707
76764720
76764733
76764745
76764752
76764764
76764776
76764789
76764802
76764814
76764827
76764838
76764851
76764863
76764874
76764886
76764897
76764908
76764921
76764932
76764943
76764953
76764966
76764977
76764990
76765001
76765013
76765024
76765031
76765042
76765054
76765066
76765078
76765090
76765103
76765114
76765126
76765138
76765149
76765156
76765167
76765179
76765190
76765202
76765213
76765225
76765235
76765246
76765257
76765264
76765275
76765286
76765299
76765310
76765320
76765333
76765345
76765356
76765367
76765380
76765387
76765399
76765410
76765422
76765429
76765440
76765451
76765463
76765470
76765481
76765494
76765504
76765511
76765522
76765534
76765546
76765558
76765570
76765581
76765593
76765605
76765616
76765627
76765639
76765649
76765660
76765673
76765686
76765697
76765709
76765721
76765732
76765743
76765752
76765763
76765774
76765786
76765799
76765811
76765824
76765836
76765848
76765860
76765871
76765883
76765895
76765902
76765909
76765922
76765928
76765938
76765951
76765957
76765968
76765981
76765993
76766006
76766018
76766030
76766041
76766053
76766065
76766077
76766089
76766099
76766110
76766121
76766133
76766145
76766155
76766161
76766169
76766178
76766189
76766201
76766214
76766220
76766232
76766238
76766251
76766257
76766263
76766274
76766286
76766292
76766304
76766311
76766322
76766333
76766344
76766356
76766367
76766379
76766391
76766400
76766411
76766424
76766437
76766449
76766461
76766472
76766484
76766490
76766502
76766513
76766520
76766531
76766542
76766554
76766566
76766577
76766589
76766601
76766612
76766623
76766634
76766647
76766659
76766670
76766683
76766695
76766706
76766713
76766720
76766732
76766744
76766757
76766768
76766779
76766791
76766798
76766805
76766817
76766827
76766839
76766851
76766863
76766875
76766886
76766897
76766908
76766919
76766931
76766942
76766949
76766960
76766971
76766984
76766995
76767007
76767014
76767026
76767032
76767037
76767048
76767060
76767067
76767074
76767086
76767098
76767110
76767120
76767127
76767139
76767145
76767157
76767164
76767175
76767182
76767195
76767207
76767217
76767229
76767241
76767253
76767265
76767277
76767289
76767302
76767314
76767327
76767334
76767346
76767357
76767368
76767375
76767382
76767394
76767401
76767412
76767423
76767430
76767442
76767452
76767458
76767470
76767477
76767489
76767496
76767503
76767514
76767524
76767534
76767546
76767558
76767569
76767581
76767591
76767604
76767616
76767628
76767640
76767652
76767664
76767677
76767688
76767701
76767707
76767718
76767725
76767736
76767748
76767755
76767767
76767779
76767786
76767797
76767809
76767821
76767831
76767837
76767847
76767857
76767868
76767880
76767887
76767893
76767905
76767917
76767929
76767936
76767946
76767958
76767965
76767976
76767987
76767994
76768006
76768018
76768028
76768039
76768046
76768058
76768068
76768075
76768081
76768088
76768100
76768112
76768123
76768130
76768139
76768149
76768156
76768166
76768173
76768185
76768196
76768207
76768218
76768229
76768241
76768248
76768259
76768271
76768278
76768291
76768303
76768315
76768327
76768340
76768353
76768364
76768376
76768388
76768400
76768412
76768423
76768434
76768447
76768459
76768471
76768478
76768488
76768499
76768506
76768517
76768523
76768535
76768545
76768556
76768567
76768574
76768586
76768598
76768610
76768621
76768632
76768639
76768651
76768663
76768670
76768682
76768695
76768706
76768712
76768723
76768734
76768741
76768748
76768759
76768770
76768781
76768792
76768803
76768814
76768825
76768837
76768849
76768860
76768871
76768883
76768896
76768908
76768920
76768926
76768938
76768950
76768963
76768974
76768986
76768999
76769005
76769016
76769029
76769039
76769051
76769058
76769068
76769079
76769091
76769102
76769115
76769126
76769132
76769139
76769149
76769160
76769167
76769180
76769193
76769205
76769218
76769230
76769242
76769253
76769266
76769277
76769289
76769295
76769308
76769314
76769325
76769331
76769343
76769349
76769361
76769372
76769384
76769391
76769404
76769416
76769422
76769429
76769436
76769443
76769450
76769457
76769464
76769476
76769488
76769494
76769500
76769512
76769519
76769531
76769542
76769549
76769556
76769562
76769573
76769584
76769596
76769606
76769617
76769628
76769639
76769651
76769658
76769667
76769678
76769689
76769701
76769713
76769725
76769737
76769744
76769751
76769762
76769769
76769780
76769787
76769796
76769803
76769814
76769825
76769832
76769843
76769854
76769864
76769876
76769883
76769890
76769902
76769914
76769921
76769928
76769941
76769953
76769959
76769970
76769982
76769995
76770008
76770014
76770020
76770032
76770044
76770055
76770067
76770073
76770084
76770091
76770098
76770108
76770120
76770129
76770141
76770152
76770163
76770170
76770177
76770183
76770195
76770208
76770220
76770230
76770243
76770254
76770265
76770277
76770290
76770302
76770313
76770324
76770331
76770343
76770353
76770360
76770371
76770382
76770388
76770393
76770400
76770412
76770424
76770435
76770447
76770459
76770465
76770474
76770485
76770497
76770510
76770522
76770534
76770547
76770559
76770570
76770582
76770594
76770604
76770613
76770624
76770636
76770648
76770661
76770672
76770685
76770697
76770710
76770721
76770733
76770745
76770757
76770769
76770779
76770790
76770802
76770814
76770827
76770840
76770851
76770863
76770873
76770885
76770896
76770905
76770917
76770930
76770941
76770948
76770959
76770971
76770983
76770995
76771007
76771018
76771029
76771042
76771055
76771062
76771068
76771080
76771087
76771094
76771107
76771116
76771126
76771139
76771151
76771162
76771173
76771184
76771196
76771208
76771220
76771233
76771246
76771258
76771265
76771272
76771279
76771291
76771304
76771311
76771317
76771327
76771339
76771349
76771361
76771368
76771379
76771390
76771402
76771414
76771421
76771427
76771439
76771446
76771459
76771471
76771482
76771494
76771504
76771514
76771526
76771538
76771549
76771561
76771573
76771584
76771596
76771607
76771618
76771630
76771641
76771653
76771663
76771674
76771680
76771686
76771698
76771709
76771721
76771733
76771739
76771751
76771763
76771773
76771780
76771787
76771799
76771808
76771819
76771830
76771841
76771854
76771865
76771871
76771878
76771889
76771901
76771910
76771923
76771935
76771947
76771958
76771964
76771976
76771987
76771998
76772005
76772017
76772027
76772040
76772051
76772062
76772073
76772080
76772092
76772103
76772114
76772124
76772136
76772143
76772155
76772168
76772180
76772192
76772199
76772211
76772223
76772236
76772247
76772258
76772270
76772282
76772294
76772305
76772316
76772323
76772336
76772348
76772358
76772369
76772381
76772393
76772403
76772415
76772426
76772437
76772443
76772455
76772467
76772479
76772485
76772494
76772506
76772519
76772530
76772542
76772554
76772567
76772578
76772584
76772591
76772602
76772613
76772624
76772635
76772642
76772653
76772662
76772674
76772685
76772697
76772707
76772719
76772732
76772744
76772756
76772769
76772782
76772794
76772806
76772818
76772830
76772842
76772853
76772865
76772877
76772889
76772900
76772911
76772918
76772930
76772942
76772949
76772961
76772973
76772984
76772997
76773003
76773015
76773028
76773035
76773042
76773053
76773065
76773076
76773088
76773099
76773106
76773113
76773126
76773138
76773150
76773160
76773172
76773179
76773191
76773202
76773214
76773225
76773237
76773249
76773261
76773273
76773285
76773292
76773304
76773316
76773328
76773339
76773351
76773364
76773375
76773386
76773396
76773408
76773419
76773431
76773443
76773456
76773467
76773478
76773490
76773500
76773512
76773524
76773535
76773542
76773554
76773566
76773576
76773585
76773592
76773604
76773616
76773623
76773629
76773642
76773648
76773660
76773672
76773684
76773690
76773701
76773713
76773725
76773737
76773748
76773760
76773766
76773778
76773791
76773804
76773810
76773822
76773829
76773840
76773851
76773863
76773874
76773880
76773891
76773903
76773916
76773923
76773933
76773944
76773955
76773966
76773973
76773986
76773999
76774011
76774024
76774036
76774048
76774061
76774074
76774084
76774090
76774097
76774107
76774118
76774129
76774140
76774152
76774165
76774176
76774188
76774201
76774213
76774226
76774233
76774239
76774248
76774260
76774271
76774283
76774295
76774308
76774319
76774332
76774344
76774356
76774363
76774374
76774385
76774397
76774408
76774419
76774432
76774444
76774455
76774467
76774478
76774490
76774502
76774513
76774526
76774539
76774551
76774563
76774574
76774587
76774599
76774610
76774621
76774627
76774640
76774651
76774657
76774664
76774671
76774682
76774693
76774705
76774716
76774727
76774739
76774751
76774764
76774771
76774782
76774793
76774799
76774804
76774817
76774829
76774840
76774852
76774859
76774871
76774884
76774896
76774908
76774920
76774932
76774943
76774954
76774966
76774977
76774983
76774995
76775007
76775017
76775029
76775040
76775052
76775063
76775074
76775086
76775093
76775105
76775116
76775128
76775139
76775151
76775163
76775174
76775186
76775192
76775198
76775209
76775216
76775222
76775233
76775240
76775246
76775257
76775270
76775281
76775293
76775304
76775315
76775322
76775334
76775346
76775359
76775372
76775383
76775395
76775407
76775420
76775431
76775443
76775454
76775466
76775473
76775479
76775492
76775504
76775515
76775525
76775536
76775549
76775561
76775573
76775584
76775594
76775606
76775612
76775619
76775631
76775643
76775655
76775667
76775678
76775690
76775702
76775715
76775726
76775738
76775749
76775760
76775771
76775782
76775791
76775800
76775807
76775820
76775831
76775838
76775848
76775855
76775866
76775879
76775886
76775898
76775905
76775912
76775919
76775925
76775931
76775937
76775949
76775961
76775971
76775983
76775995
76776007
76776020
76776031
76776044
76776054
76776066
76776073
76776085
76776098
76776110
76776121
76776132
76776144
76776155
76776166
76776175
76776185
76776195
76776208
76776219
76776229
76776235
76776248
76776260
76776273
76776285
76776298
76776311
76776321
76776332
76776341
76776353
76776363
76776373
76776385
76776396
76776406
76776416
76776425
76776435
76776446
76776458
76776465
76776472
76776485
76776498
76776510
76776521
76776533
76776544
76776555
76776567
76776576
76776585
76776595
76776607
76776617
76776627
76776638
76776649
76776660
76776672
76776678
76776690
76776703
76776714
76776726
76776738
76776745
76776757
76776769
76776781
76776792
76776805
76776811
76776824
76776830
76776841
76776853
76776862
76776874
76776886
76776899
76776906
76776919
76776925
76776932
76776943
76776955
76776966
76776978
76776990
76776999
76777009
76777020
76777032
76777045
76777057
76777068
76777079
76777091
76777103
76777116
76777129
76777141
76777148
76777161
76777174
76777180
76777192
76777204
76777216
76777229
76777241
76777254
76777266
76777278
76777285
76777297
76777310
76777321
76777334
76777340
76777352
76777363
76777375
76777382
76777393
76777404
76777415
76777427
76777439
76777452
76777463
76777476
76777488
76777501
76777508
76777520
76777526
76777537
76777550
76777557
76777564
76777575
76777587
76777599
76777609
76777620
76777631
76777642
76777653
76777663
76777675
76777687
76777699
76777711
76777718
76777730
76777742
76777755
76777766
76777779
76777791
76777802
76777814
76777827
76777839
76777851
76777858
76777870
76777881
76777893
76777900
76777912
76777925
76777938
76777950
76777963
76777975
76777982
76777993
76777999
76778009
76778020
76778032
76778043
76778056
76778069
76778081
76778092
76778103
76778113
76778122
76778129
76778136
76778148
76778154
76778165
76778172
76778184
76778189
76778201
76778213
76778223
76778234
76778247
76778253
76778266
76778278
76778290
76778301
76778313
76778325
76778336
76778347
76778358
76778369
76778380
76778391
76778401
76778412
76778424
76778437
76778448
76778455
76778467
76778478
76778489
76778502
76778514
76778525
76778537
76778549
76778560
76778570
76778581
76778592
76778603
76778615
76778627
76778640
76778652
76778663
76778670
76778677
76778688
76778700
76778712
76778719
76778731
76778738
76778750
76778762
76778774
76778784
76778796
76778807
76778818
76778823
76778836
76778848
76778859
76778872
76778884
76778894
76778901
76778913
76778920
76778932
76778943
76778950
76778957
76778967
76778979
76778990
76778996
76779008
76779020
76779032
76779044
76779055
76779067
76779078
76779084
76779090
76779101
76779114
76779126
76779137
76779147
76779158
76779170
76779181
76779193
76779200
76779206
76779218
76779231
76779243
76779250
76779261
76779272
76779279
76779291
76779298
76779309
76779321
76779333
76779340
76779352
76779364
76779375
76779388
76779400
76779407
76779419
76779431
76779443
76779454
76779461
76779473
76779483
76779495
76779506
76779517
76779528
76779539
76779549
76779561
76779573
76779585
76779596
76779608
76779621
76779633
76779646
76779656
76779666
76779679
76779691
76779703
76779715
76779727
76779739
76779752
76779759
76779771
76779782
76779788
76779798
76779810
76779816
76779827
76779834
76779840
76779852
76779864
76779871
76779880
76779893
76779904
76779915
76779927
76779938
76779947
76779959
76779971
76779982
76779993
76780005
76780017
76780030
76780040
76780050
76780062
76780072
76780078
76780089
76780100
76780112
76780125
76780135
76780147
76780154
76780166
76780178
76780190
76780203
76780214
76780221
76780233
76780240
76780246
76780253
76780265
76780276
76780289
76780301
76780311
76780324
76780335
76780348
76780360
76780371
76780382
76780392
76780403
76780410
76780421
76780433
76780445
76780457
76780466
76780478
76780490
76780496
76780508
76780520
76780531
76780544
76780556
76780568
76780578
76780590
76780603
76780614
76780627
76780638
76780649
76780661
76780668
76780679
76780690
76780700
76780713
76780720
76780732
76780744
76780755
76780766
76780775
76780787
76780799
76780811
76780823
76780835
76780848
76780861
76780873
76780885
76780892
76780903
76780909
76780922
76780934
76780946
76780957
76780970
76780976
76780988
76780999
76781006
76781018
76781029
76781041
76781053
76781065
76781077
76781089
76781100
76781111
76781122
76781133
76781144
76781156
76781163
76781176
76781188
76781201
76781212
76781224
76781236
76781249
76781261
76781268
76781279
76781291
76781303
76781315
76781326
76781333
76781345
76781357
76781368
76781380
76781392
76781404
76781416
76781427
76781434
76781447
76781458
76781470
76781480
76781487
76781499
76781511
76781523
76781535
76781547
76781559
76781570
76781583
76781590
76781603
76781613
76781625
76781638
76781649
76781660
76781672
76781683
76781695
76781707
76781718
76781730
76781742
76781749
76781756
76781767
76781778
76781791
76781802
76781814
76781821
76781834
76781846
76781859
76781868
76781878
76781889
76781899
76781912
76781923
76781936
76781943
76781954
76781966
76781972
76781978
76781990
76781997
76782009
76782021
76782032
76782039
76782051
76782064
76782076
76782087
76782098
76782105
76782116
76782123
76782134
76782147
76782154
76782161
76782172
76782184
76782191
76782197
76782204
76782215
76782221
76782232
76782238
76782249
76782262
76782273
76782280
76782293
76782306
76782319
76782331
76782341
76782351
76782363
76782374
76782385
76782395
76782405
76782412
76782419
76782430
76782442
76782454
76782466
76782477
76782489
76782501
76782513
76782524
76782537
76782549
76782560
76782571
76782584
76782595
76782607
76782618
76782630
76782642
76782654
76782666
76782679
76782692
76782703
76782710
76782721
76782734
76782741
76782753
76782764
76782777
76782789
76782796
76782807
76782818
76782830
76782841
76782851
76782857
76782869
76782880
76782891
76782902
76782908
76782920
76782933
76782945
76782957
76782964
76782976
76782988
76782998
76783004
76783016
76783029
76783040
76783050
76783062
76783075
76783088
76783100
76783112
76783125
76783137
76783150
76783157
76783169
76783181
76783193
76783203
76783209
76783220
76783226
76783238
76783249
76783255
76783267
76783279
76783292
76783304
76783317
76783329
76783340
76783346
76783358
76783364
76783376
76783387
76783398
76783410
76783416
76783423
76783435
76783446
76783458
76783470
76783482
76783495
76783508
76783521
76783532
76783544
76783556
76783568
76783579
76783591
76783602
76783614
76783626
76783637
76783649
76783661
76783673
76783683
76783694
76783707
76783719
76783725
76783734
76783747
76783760
76783772
76783779
76783791
76783797
76783807
76783813
76783825
76783832
76783844
76783855
76783868
76783879
76783883
76783889
76783901
76783913
76783925
76783938
76783951
76783963
76783974
76783986
76783998
76784011
76784024
76784036
76784048
76784057
76784068
76784075
76784085
76784097
76784102
76784106
76784116
76784127
76784136
76784147
76784159
76784172
76784184
76784196
76784208
76784220
76784231
76784242
76784253
76784265
76784277
76784289
76784300
76784306
76784316
76784326
76784338
76784351
76784363
76784375
76784387
76784399
76784411
76784422
76784433
76784444
76784451
76784463
76784474
76784481
76784494
76784507
76784519
76784531
76784542
76784548
76784559
76784571
76784583
76784593
76784604
76784616
76784628
76784635
76784647
76784658
76784668
76784675
76784685
76784696
76784702
76784714
76784724
76784735
76784746
76784757
76784768
76784780
76784787
76784799
76784806
76784818
76784830
76784842
76784851
76784862
76784869
76784881
76784892
76784904
76784916
76784927
76784939
76784951
76784963
76784975
76784986
76784995
76785007
76785019
76785031
76785044
76785057
76785070
76785081
76785093
76785105
76785111
76785124
76785136
76785147
76785160
76785172
76785184
76785194
76785206
76785217
76785228
76785238
76785250
76785262
76785273
76785286
76785297
76785306
76785316
76785328
76785335
76785341
76785347
76785354
76785366
76785373
76785385
76785392
76785404
76785416
76785429
76785440
76785452
76785463
76785473
76785483
76785493
76785505
76785515
76785526
76785537
76785546
76785556
76785567
76785577
76785588
76785601
76785613
76785623
76785632
76785644
76785656
76785669
76785681
76785693
76785705
76785717
76785729
76785741
76785752
76785765
76785777
76785789
76785799
76785812
76785822
76785833
76785846
76785857
76785868
76785880
76785892
76785904
76785916
76785928
76785941
76785953
76785966
76785978
76785991
76786004
76786017
76786028
76786039
76786051
76786063
76786074
76786086
76786098
76786110
76786121
76786133
76786146
76786158
76786169
76786182
76786194
76786206
76786218
76786229
76786240
76786251
76786263
76786275
76786286
76786297
76786307
76786319
76786332
76786344
76786356
76786369
76786380
76786391
76786403
76786414
76786427
76786436
76786448
76786460
76786471
76786483
76786495
76786501
76786513
76786526
76786538
76786550
76786562
76786574
76786586
76786598
76786609
76786621
76786632
76786645
76786656
76786666
76786675
76786684
76786694
76786705
76786715
76786726
76786738
76786750
76786761
76786772
76786784
76786794
76786807
76786818
76786831
76786844
76786855
76786862
76786873
76786886
76786898
76786910
76786921
76786932
76786944
76786956
76786967
76786978
76786991
76787002
76787013
76787026
76787037
76787050
76787062
76787073
76787080
76787091
76787103
76787116
76787127
76787139
76787151
76787163
76787175
76787187
76787199
76787211
76787222
76787233
76787244
76787255
76787266
76787279
76787290
76787303
76787314
76787325
76787337
76787347
76787359
76787371
76787384
76787396
76787409
76787419
76787431
76787443
76787455
76787468
76787481
76787493
76787505
76787516
76787529
76787539
76787550
76787563
76787573
76787585
76787597
76787609
76787620
76787632
76787644
76787657
76787666
76787678
76787685
76787697
76787710
76787723
76787736
76787747
76787760
76787772
76787783
76787796
76787807
76787819
76787830
76787843
76787856
76787868
76787879
76787890
76787903
76787914
76787927
76787939
76787951
76787962
76787975
76787987
76787999
76788011
76788024
76788037
76788050
76788061
76788072
76788084
76788096
76788108
76788120
76788132
76788143
76788156
76788167
76788177
76788187
76788199
76788211
76788223
76788236
76788248
76788259
76788271
76788283
76788295
76788308
76788319
76788332
76788345
76788358
76788370
76788382
76788394
76788405
76788415
76788426
76788437
76788448
76788458
76788468
76788480
76788490
76788502
76788513
76788524
76788536
76788549
76788561
76788572
76788584
76788596
76788607
76788619
76788631
76788641
76788653
76788665
76788676
76788688
76788700
76788712
76788724
76788737
76788750
76788762
76788775
76788788
76788799
76788811
76788823
76788836
76788848
76788861
76788873
76788885
76788897
76788907
76788920
76788932
76788941
76788953
76788963
76788974
76788985
76788997
76789009
76789022
76789035
76789048
76789059
76789071
76789082
76789094
76789105
76789117
76789129
76789141
76789153
76789165
76789176
76789186
76789199
76789212
76789223
76789236
76789247
76789259
76789271
76789283
76789293
76789305
76789316
76789328
76789340
76789353
76789365
76789377
76789389
76789401
76789413
76789425
76789432
76789444
76789455
76789466
76789478
76789488
76789499
76789510
76789522
76789535
76789545
76789555
76789567
76789580
76789592
76789604
76789615
76789627
76789640
76789653
76789666
76789678
76789690
76789701
76789714
76789727
76789739
76789751
76789762
76789775
76789787
76789799
76789811
76789823
76789836
76789846
76789858
76789870
76789877
76789889
76789896
76789908
76789918
76789925
76789937
76789946
76789958
76789969
76789975
76789982
76789993
76790005
76790017
76790024
76790031
76790037
76790049
76790061
76790074
76790086
76790097
76790108
76790119
76790131
76790143
76790155
76790167
76790180
76790192
76790204
76790217
76790229
76790241
76790254
76790267
76790279
76790291
76790303
76790313
76790326
76790339
76790352
76790364
76790375
76790387
76790398
76790409
76790421
76790432
76790444
76790456
76790468
76790480
76790492
76790505
76790516
76790528
76790540
76790552
76790563
76790576
76790588
76790599
76790611
76790623
76790634
76790647
76790659
76790672
76790683
76790690
76790701
76790713
76790725
76790732
76790744
76790756
76790768
76790774
76790785
76790797
76790808
76790821
76790833
76790846
76790857
76790869
76790880
76790892
76790903
76790914
76790925
76790936
76790948
76790960
76790972
76790984
76790996
76791007
76791018
76791030
76791036
76791042
76791049
76791060
76791071
76791083
76791094
76791107
76791119
76791125
76791138
76791150
76791161
76791172
76791183
76791195
76791207
76791214
76791221
76791228
76791241
76791248
76791260
76791272
76791282
76791288
76791298
76791309
76791320
76791327
76791333
76791340
76791352
76791365
76791376
76791389
76791396
76791409
76791421
76791434
76791440
76791453
76791466
76791473
76791484
76791491
76791503
76791514
76791520
76791530
76791542
76791548
76791551
76791554
76791557
76791560
76791563
76791566
76791569
76791572
76791575
76791578
76791582
76791586
76791589
76791595
76791601
76791604
76791608
76791612
76791618
76791623
76791628
76791632
76791635
76791638
76791642
76791645
76791650
76791655
76791659
76791663
76791666
76791669
76791674
76791678
76791684
76791687
76791691
76791697
76791702
76791707
76791710
76791714
76791720
76791724
76791730
76791733
76791738
76791742
76791747
76791752
76791755
76791760
76791763
76791766
76791769
76791773
76791776
76791779
76791782
76791785
76791788
76791791
76791794
76791797
76791800
76791803
76791808
76791811
76791814
76791817
76791820
76791823
76791826
76791830
76791833
76791836
76791840
76791844
76791847
76791850
76791853
76791856
76791862
76791867
76791873
76791878
76791884
76791889
76791894
76791900
76791906
76791912
76791917
76791922
76791928
76791934
76791939
76791945
76791950
76791954
76791957
76791962
76791965
76791968
76791971
76791975
76791978
76791981
76791986
76791991
76791996
76792000
76792003
76792006
76792010
76792014
76792020
76792025
76792028
76792031
76792037
76792042
76792045
76792048
76792052
76792055
76792058
76792062
76792067
76792073
76792076
76792082
76792088
76792091
76792094
76792097
76792100
76792103
76792107
76792110
76792113
76792116
76792120
76792124
76792129
76792133
76792137
76792141
76792145
76792150
76792153
76792156
76792159
76792162
76792165
76792168
76792171
76792174
76792177
76792181
76792184
76792187
76792190
76792194
76792198
76792204
76792208
76792211
76792215
76792218
76792224
76792227
76792230
76792234
76792237
76792240
76792243
76792248
76792254
76792260
76792266
76792272
76792276
76792279
76792283
76792288
76792293
76792298
76792304
76792310
76792315
76792320
76792325
76792330
76792335
76792340
76792346
76792352
76792358
76792363
76792369
76792374
76792380
76792385
76792388
76792394
76792397
76792403
76792409
76792414
76792418
76792422
76792428
76792434
76792437
76792440
76792444
76792447
76792451
76792454
76792458
76792462
76792466
76792469
76792473
76792476
76792480
76792484
76792487
76792490
76792493
76792498
76792503
76792506
76792510
76792514
76792518
76792523
76792526
76792531
76792536
76792541
76792544
76792547
76792552
76792555
76792561
76792566
76792569
76792573
76792577
76792580
76792583
76792589
76792592
76792595
76792598
76792601
76792605
76792611
76792614
76792617
76792622
76792627
76792632
76792637
76792642
76792648
76792651
76792656
76792659
76792663
76792667
76792671
76792675
76792680
76792683
76792686
76792689
76792694
76792699
76792704
76792709
76792714
76792720
76792725
76792730
76792736
76792740
76792745
76792750
76792756
76792762
76792767
76792773
76792779
76792785
76792788
76792794
76792799
76792804
76792809
76792815
76792821
76792827
76792832
76792838
76792843
76792847
76792853
76792859
76792862
76792866
76792869
76792875
76792878
76792882
76792887
76792893
76792896
76792902
76792906
76792910
76792914
76792920
76792924
76792927
76792932
76792938
76792941
76792947
76792950
76792953
76792959
76792962
76792965
76792971
76792977
76792980
76792985
76792989
76792992
76792996
76792999
76793002
76793005
76793008
76793012
76793015
76793020
76793023
76793026
76793030
76793033
76793037
76793043
76793046
76793050
76793054
76793060
76793063
76793069
76793073
76793076
76793079
76793082
76793085
76793089
76793094
76793099
76793104
76793109
76793113
76793117
76793121
76793124
76793127
76793131
76793135
76793141
76793147
76793153
76793157
76793162
76793165
76793168
76793171
76793176
76793180
76793183
76793187
76793190
76793193
76793197
76793201
76793204
76793210
76793215
76793218
76793222
76793227
76793231
76793235
76793238
76793241
76793245
76793248
76793251
76793255
76793260
76793266
76793272
76793277
76793282
76793288
76793291
76793294
76793297
76793300
76793303
76793306
76793309
76793312
76793315
76793321
76793325
76793331
76793335
76793339
76793343
76793349
76793354
76793358
76793361
76793364
76793367
76793371
76793375
76793378
76793381
76793384
76793387
76793391
76793394
76793397
76793400
76793403
76793406
76793409
76793413
76793416
76793422
76793425
76793428
76793432
76793438
76793441
76793444
76793447
76793450
76793456
76793461
76793464
76793467
76793471
76793475
76793478
76793483
76793486
76793489
76793493
76793497
76793501
76793505
76793509
76793512
76793516
76793519
76793522
76793525
76793528
76793532
76793535
76793539
76793542
76793546
76793549
76793555
76793559
76793562
76793565
76793568
76793574
76793579
76793584
76793588
76793592
76793595
76793598
76793601
76793605
76793609
76793612
76793618
76793623
76793626
76793629
76793634
76793638
76793642
76793646
76793650
76793654
76793658
76793662
76793666
76793669
76793672
76793676
76793679
76793684
76793689
76793694
76793697
76793702
76793708
76793714
76793720
76793724
76793728
76793731
76793735
76793739
76793743
76793749
76793754
76793759
76793764
76793770
76793776
76793779
76793782
76793785
76793789
76793792
76793795
76793798
76793801
76793804
76793807
76793811
76793817
76793820
76793824
76793828
76793831
76793837
76793842
76793847
76793852
76793858
76793861
76793865
76793868
76793872
76793875
76793878
76793882
76793886
76793891
76793896
76793899
76793902
76793906
76793912
76793917
76793920
76793924
76793929
76793934
76793937
76793942
76793947
76793952
76793957
76793963
76793969
76793975
76793978
76793981
76793984
76793987
76793990
76793994
76794000
76794004
76794010
76794015
76794019
76794022
76794025
76794029
76794032
76794037
76794042
76794047
76794052
76794057
76794061
76794064
76794070
76794073
76794077
76794080
76794083
76794088
76794091
76794097
76794101
76794104
76794107
76794113
76794118
76794122
76794126
76794130
76794134
76794138
76794142
76794146
76794149
76794152
76794157
76794162
76794165
76794170
76794175
76794180
76794185
76794189
76794194
76794198
76794201
76794204
76794207
76794213
76794218
76794222
76794225
76794230
76794235
76794239
76794243
76794247
76794250
76794253
76794256
76794259
76794262
76794266
76794269
76794273
76794276
76794280
76794284
76794289
76794294
76794297
76794300
76794304
76794307
76794310
76794316
76794322
76794326
76794330
76794336
76794341
76794346
76794351
76794356
76794361
76794366
76794371
76794376
76794381
76794386
76794391
76794396
76794401
76794406
76794409
76794415
76794420
76794424
76794427
76794430
76794435
76794440
76794445
76794451
76794457
76794463
76794467
76794473
76794476
76794482
76794485
76794490
76794495
76794500
76794503
76794509
76794514
76794518
76794524
76794529
76794533
76794536
76794539
76794542
76794545
76794549
76794553
76794559
76794564
76794568
76794572
76794575
76794581
76794586
76794591
76794596
76794599
76794603
76794607
76794613
76794619
76794624
76794629
76794634
76794640
76794646
76794649
76794653
76794656
76794662
76794668
76794674
76794679
76794683
76794686
76794689
76794694
76794699
76794703
76794707
76794711
76794714
76794717
76794723
76794729
76794733
76794739
76794745
76794751
76794756
76794762
76794768
76794773
76794778
76794783
76794786
76794789
76794794
76794797
76794801
76794804
76794807
76794811
76794815
76794819
76794822
76794825
76794828
76794831
76794834
76794837
76794842
76794845
76794849
76794854
76794858
76794861
76794864
76794868
76794872
76794875
76794878
76794881
76794884
76794888
76794892
76794896
76794900
76794904
76794908
76794912
76794916
76794920
76794926
76794929
76794935
76794939
76794943
76794946
76794949
76794953
76794956
76794959
76794962
76794966
76794970
76794975
76794980
76794985
76794990
76794995
76795001
76795005
76795010
76795016
76795019
76795023
76795027
76795030
76795034
76795039
76795045
76795048
76795054
76795060
76795065
76795070
76795075
76795081
76795086
76795091
76795096
76795101
76795107
76795112
76795117
76795122
76795127
76795133
76795139
76795142
76795145
76795151
76795156
76795161
76795166
76795171
76795177
76795182
76795187
76795192
76795197
76795202
76795207
76795212
76795215
76795221
76795227
76795230
76795233
76795236
76795239
76795244
76795247
76795252
76795256
76795259
76795262
76795266
76795271
76795276
76795281
76795286
76795289
76795292
76795298
76795302
76795305
76795311
76795316
76795321
76795326
76795329
76795333
76795336
76795342
76795347
76795352
76795357
76795362
76795367
76795372
76795378
76795382
76795386
76795390
76795394
76795397
76795400
76795405
76795411
76795414
76795418
76795423
76795428
76795431
76795434
76795440
76795446
76795450
76795455
76795461
76795467
76795470
76795473
76795479
76795485
76795490
76795496
76795500
76795503
76795507
76795510
76795516
76795519
76795523
76795529
76795535
76795541
76795544
76795549
76795554
76795560
76795565
76795571
76795576
76795580
76795584
76795588
76795594
76795598
76795601
76795605
76795609
76795612
76795616
76795620
76795624
76795627
76795630
76795633
76795636
76795639
76795642
76795645
76795649
76795652
76795656
76795660
76795664
76795668
76795671
76795675
76795678
76795681
76795684
76795690
76795694
76795698
76795702
76795707
76795712
76795715
76795718
76795721
76795727
76795732
76795737
76795742
76795748
76795754
76795757
76795763
76795766
76795769
76795775
76795781
76795787
76795793
76795799
76795804
76795810
76795816
76795822
76795828
76795834
76795839
76795844
76795850
76795855
76795861
76795867
76795873
76795878
76795884
76795890
76795896
76795902
76795908
76795911
76795914
76795917
76795920
76795923
76795926
76795930
76795933
76795938
76795942
76795946
76795949
76795955
76795961
76795964
76795967
76795970
76795974
76795978
76795983
76795989
76795993
76795996
76796002
76796007
76796010
76796014
76796017
76796023
76796027
76796032
76796036
76796042
76796048
76796053
76796058
76796064
76796070
76796073
76796078
76796083
76796089
76796092
76796096
76796100
76796104
76796110
76796116
76796119
76796123
76796127
76796131
76796137
76796143
76796147
76796150
76796153
76796156
76796159
76796162
76796165
76796168
76796171
76796175
76796178
76796181
76796186
76796189
76796192
76796195
76796198
76796202
76796205
76796210
76796215
76796220
76796223
76796228
76796231
76796234
76796237
76796240
76796243
76796246
76796249
76796252
76796255
76796258
76796261
76796264
76796269
76796274
76796280
76796283
76796286
76796292
76796298
76796301
76796305
76796308
76796311
76796315
76796318
76796321
76796326
76796332
76796338
76796343
76796346
76796349
76796352
76796355
76796361
76796366
76796372
76796375
76796378
76796381
76796384
76796388
76796392
76796396
76796400
76796403
76796406
76796409
76796412
76796415
76796419
76796422
76796426
76796432
76796437
76796440
76796444
76796448
76796452
76796456
76796461
76796464
76796468
76796472
76796475
76796478
76796482
76796486
76796491
76796494
76796497
76796500
76796503
76796508
76796512
76796515
76796518
76796522
76796525
76796528
76796531
76796534
76796538
76796541
76796544
76796547
76796553
76796559
76796562
76796566
76796570
76796574
76796579
76796584
76796589
76796594
76796599
76796604
76796609
76796614
76796617
76796622
76796625
76796629
76796634
76796638
76796643
76796649
76796655
76796658
76796664
76796669
76796674
76796679
76796683
76796687
76796693
76796698
76796703
76796708
76796713
76796718
76796721
76796726
76796729
76796732
76796736
76796740
76796743
76796747
76796752
76796755
76796758
76796763
76796768
76796771
76796774
76796777
76796781
76796784
76796789
76796794
76796799
76796804
76796809
76796814
76796819
76796824
76796829
76796835
76796840
76796845
76796850
76796854
76796857
76796860
76796863
76796866
76796869
76796872
76796877
76796880
76796883
76796886
76796889
76796892
76796897
76796903
76796908
76796911
76796914
76796918
76796921
76796925
76796930
76796935
76796938
76796941
76796946
76796951
76796954
76796959
76796962
76796965
76796970
76796973
76796977
76796981
76796984
76796988
76796992
76796995
76796998
76797001
76797004
76797007
76797011
76797017
76797023
76797027
76797031
76797034
76797038
76797041
76797045
76797049
76797054
76797060
76797065
76797068
76797074
76797080
76797085
76797089
76797092
76797095
76797100
76797104
76797108
76797113
76797117
76797120
76797125
76797130
76797136
76797142
76797146
76797151
76797157
76797161
76797164
76797169
76797172
76797176
76797180
76797183
76797186
76797189
76797193
76797196
76797199
76797203
76797206
76797210
76797216
76797222
76797228
76797233
76797238
76797244
76797247
76797250
76797253
76797256
76797260
76797264
76797268
76797272
76797275
76797279
76797282
76797285
76797288
76797292
76797297
76797302
76797307
76797313
76797319
76797324
76797330
76797336
76797342
76797348
76797354
76797360
76797366
76797371
76797377
76797383
76797389
76797395
76797400
76797405
76797410
76797416
76797421
76797426
76797432
76797437
76797442
76797447
76797453
76797459
76797464
76797470
76797475
76797481
76797486
76797491
76797497
76797501
76797507
76797512
76797515
76797520
76797525
76797530
76797536
76797542
76797548
76797554
76797558
76797562
76797565
76797569
76797572
76797575
76797578
76797581
76797584
76797587
76797590
76797594
76797597
76797600
76797603
76797607
76797610
76797614
76797617
76797621
76797625
76797629
76797633
76797637
76797641
76797645
76797651
76797657
76797662
76797667
76797672
76797677
76797682
76797687
76797693
76797697
76797701
76797704
76797710
76797713
76797716
76797719
76797722
76797726
76797729
76797733
76797737
76797740
76797743
76797747
76797751
76797755
76797759
76797762
76797765
76797768
76797771
76797774
76797777
76797780
76797783
76797786
76797789
76797792
76797795
76797799
76797802
76797805
76797808
76797812
76797815
76797818
76797823
76797829
76797834
76797839
76797843
76797846
76797850
76797853
76797856
76797859
76797863
76797867
76797870
76797874
76797878
76797881
76797885
76797889
76797893
76797897
76797900
76797904
76797907
76797911
76797915
76797918
76797921
76797925
76797928
76797932
76797935
76797938
76797942
76797945
76797948
76797951
76797954
76797957
76797960
76797963
76797966
76797972
76797975
76797979
76797982
76797987
76797992
76797998
76798002
76798005
76798009
76798012
76798016
76798020
76798024
76798027
76798030
76798033
76798036
76798039
76798045
76798050
76798055
76798059
76798062
76798066
76798070
76798073
76798078
76798082
76798085
76798089
76798093
76798096
76798100
76798104
76798107
76798110
76798115
76798120
76798123
76798126
76798131
76798137
76798143
76798149
76798154
76798157
76798162
76798167
76798170
76798174
76798177
76798183
76798187
76798190
76798193
76798196
76798199
76798204
76798209
76798215
76798220
76798225
76798230
76798235
76798240
76798245
76798250
76798255
76798260
76798265
76798268
76798271
76798274
76798277
76798280
76798283
76798286
76798289
76798293
76798297
76798303
76798306
76798310
76798313
76798316
76798319
76798325
76798330
76798336
76798340
76798344
76798350
76798355
76798359
76798365
76798370
76798373
76798377
76798383
76798386
76798389
76798392
76798395
76798398
76798403
76798408
76798414
76798419
76798424
76798429
76798433
76798437
76798442
76798447
76798453
76798459
76798465
76798469
76798472
76798476
76798479
76798483
76798487
76798490
76798493
76798498
76798501
76798504
76798508
76798512
76798515
76798520
76798524
76798527
76798532
76798536
76798539
76798544
76798550
76798555
76798560
76798565
76798570
76798576
76798580
76798586
76798589
76798592
76798596
767894768
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment