123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904 |
- <!doctype html>
- <html lang="en">
- <head>
- <title>Code coverage report for lib/json3.js</title>
- <meta charset="utf-8">
- <link rel="stylesheet" href="../prettify.css">
- <style>
- body, html {
- margin:0; padding: 0;
- }
- body {
- font-family: Helvetica Neue, Helvetica,Arial;
- font-size: 10pt;
- }
- div.header, div.footer {
- background: #eee;
- padding: 1em;
- }
- div.header {
- z-index: 100;
- position: fixed;
- top: 0;
- border-bottom: 1px solid #666;
- width: 100%;
- }
- div.footer {
- border-top: 1px solid #666;
- }
- div.body {
- margin-top: 10em;
- }
- div.meta {
- font-size: 90%;
- text-align: center;
- }
- h1, h2, h3 {
- font-weight: normal;
- }
- h1 {
- font-size: 12pt;
- }
- h2 {
- font-size: 10pt;
- }
- pre {
- font-family: Consolas, Menlo, Monaco, monospace;
- margin: 0;
- padding: 0;
- line-height: 14px;
- font-size: 14px;
- -moz-tab-size: 2;
- -o-tab-size: 2;
- tab-size: 2;
- }
- div.path { font-size: 110%; }
- div.path a:link, div.path a:visited { color: #000; }
- table.coverage { border-collapse: collapse; margin:0; padding: 0 }
- table.coverage td {
- margin: 0;
- padding: 0;
- color: #111;
- vertical-align: top;
- }
- table.coverage td.line-count {
- width: 50px;
- text-align: right;
- padding-right: 5px;
- }
- table.coverage td.line-coverage {
- color: #777 !important;
- text-align: right;
- border-left: 1px solid #666;
- border-right: 1px solid #666;
- }
- table.coverage td.text {
- }
- table.coverage td span.cline-any {
- display: inline-block;
- padding: 0 5px;
- width: 40px;
- }
- table.coverage td span.cline-neutral {
- background: #eee;
- }
- table.coverage td span.cline-yes {
- background: #b5d592;
- color: #999;
- }
- table.coverage td span.cline-no {
- background: #fc8c84;
- }
- .cstat-yes { color: #111; }
- .cstat-no { background: #fc8c84; color: #111; }
- .fstat-no { background: #ffc520; color: #111 !important; }
- .cbranch-no { background: yellow !important; color: #111; }
- .missing-if-branch {
- display: inline-block;
- margin-right: 10px;
- position: relative;
- padding: 0 4px;
- background: black;
- color: yellow;
- xtext-decoration: line-through;
- }
- .missing-if-branch .typ {
- color: inherit !important;
- }
- .entity, .metric { font-weight: bold; }
- .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
- .metric small { font-size: 80%; font-weight: normal; color: #666; }
- div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
- div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
- div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
- div.coverage-summary th.file { border-right: none !important; }
- div.coverage-summary th.pic { border-left: none !important; text-align: right; }
- div.coverage-summary th.pct { border-right: none !important; }
- div.coverage-summary th.abs { border-left: none !important; text-align: right; }
- div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
- div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
- div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; }
- div.coverage-summary td.pic { min-width: 120px !important; }
- div.coverage-summary a:link { text-decoration: none; color: #000; }
- div.coverage-summary a:visited { text-decoration: none; color: #333; }
- div.coverage-summary a:hover { text-decoration: underline; }
- div.coverage-summary tfoot td { border-top: 1px solid #666; }
- div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
- height: 10px;
- width: 7px;
- display: inline-block;
- margin-left: 0.5em;
- }
- div.coverage-summary .yui3-datatable-sort-indicator {
- background: url("http://yui.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
- }
- div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
- background-position: 0 -20px;
- }
- div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
- background-position: 0 -10px;
- }
- .high { background: #b5d592 !important; }
- .medium { background: #ffe87c !important; }
- .low { background: #fc8c84 !important; }
- span.cover-fill, span.cover-empty {
- display:inline-block;
- border:1px solid #444;
- background: white;
- height: 12px;
- }
- span.cover-fill {
- background: #ccc;
- border-right: 1px solid #444;
- }
- span.cover-empty {
- background: white;
- border-left: none;
- }
- span.cover-full {
- border-right: none !important;
- }
- pre.prettyprint {
- border: none !important;
- padding: 0 !important;
- margin: 0 !important;
- }
- .com { color: #999 !important; }
- </style>
- </head>
- <body>
- <div class="header low">
- <h1>Code coverage report for <span class="entity">lib/json3.js</span></h1>
- <h2>
-
- Statements: <span class="metric">13.77% <small>(50 / 363)</small></span>
-
-
- Branches: <span class="metric">15.32% <small>(59 / 385)</small></span>
-
-
- Functions: <span class="metric">11.54% <small>(3 / 26)</small></span>
-
-
- Lines: <span class="metric">13.77% <small>(50 / 363)</small></span>
-
- </h2>
- <div class="path"><a href="../index.html">All files</a> » <a href="index.html">lib/</a> » json3.js</div>
- </div>
- <div class="body">
- <pre><table class="coverage">
- <tr><td class="line-count">1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867</td><td class="line-coverage"><span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">3</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">3</span>
- <span class="cline-any cline-yes">3</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-yes">3</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">2</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">2</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">4</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">2</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">3</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1</span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-no"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*! JSON v3.2.5 | http://bestiejs.github.io/json3 | Copyright 2012-2013, Kit Cambridge | http://kit.mit-license.org */
- ;(function (window) {
- // Convenience aliases.
- var getClass = {}.toString, isProperty, forEach, undef;
-
- // Detect the `define` function exposed by asynchronous module loaders. The
- // strict `define` check is necessary for compatibility with `r.js`.
- var isLoader = typeof define === "function" && <span class="branch-1 cbranch-no" title="branch not covered" >define.amd;</span>
-
- // Detect native implementations.
- var nativeJSON = typeof JSON == "object" && JSON;
-
- // Set up the JSON 3 namespace, preferring the CommonJS `exports` object if
- // available.
- var JSON3 = typeof exports == "object" && exports && !exports.nodeType && exports;
-
- <span class="missing-if-branch" title="else path not taken"" >E</span>if (JSON3 && nativeJSON) {
- // Explicitly delegate to the native `stringify` and `parse`
- // implementations in CommonJS environments.
- JSON3.stringify = nativeJSON.stringify;
- JSON3.parse = nativeJSON.parse;
- } else {
- // Export for web browsers, JavaScript engines, and asynchronous module
- // loaders, using the global `JSON` object if available.
- <span class="cstat-no" title="statement not covered" > JSON3 = window.JSON = nativeJSON || {};</span>
- }
-
- // Test the `Date#getUTC*` methods. Based on work by @Yaffle.
- var isExtended = new Date(-3509827334573292);
- try {
- // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical
- // results for certain dates in Opera >= 10.53.
- isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 &&
- // Safari < 2.0.2 stores the internal millisecond time value correctly,
- // but clips the values returned by the date methods to the range of
- // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).
- isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;
- } catch (exception) {}
-
- // Internal: Determines whether the native `JSON.stringify` and `parse`
- // implementations are spec-compliant. Based on work by Ken Snyder.
- function has(name) {
- <span class="missing-if-branch" title="if path not taken"" >I</span>if (has[name] != null) {
- // Return cached feature test result.
- <span class="cstat-no" title="statement not covered" > return has[name];</span>
- }
-
- var isSupported;
- <span class="missing-if-branch" title="if path not taken"" >I</span>if (name == "bug-string-char-index") {
- // IE <= 7 doesn't support accessing string characters using square
- // bracket notation. IE 8 only supports this for primitives.
- <span class="cstat-no" title="statement not covered" > isSupported = "a"[0] != "a";</span>
- } else if (name == "json") {
- // Indicates whether both `JSON.stringify` and `JSON.parse` are
- // supported.
- isSupported = has("json-stringify") && has("json-parse");
- } else {
- var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';
- // Test `JSON.stringify`.
- if (name == "json-stringify") {
- var stringify = JSON3.stringify, stringifySupported = typeof stringify == "function" && isExtended;
- <span class="missing-if-branch" title="else path not taken"" >E</span>if (stringifySupported) {
- // A test function object with a custom `toJSON` method.
- (value = function () {
- return 1;
- }).toJSON = value;
- try {
- stringifySupported =
- // Firefox 3.1b1 and b2 serialize string, number, and boolean
- // primitives as object literals.
- stringify(0) === "0" &&
- // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object
- // literals.
- stringify(new Number()) === "0" &&
- stringify(new String()) == '""' &&
- // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or
- // does not define a canonical JSON representation (this applies to
- // objects with `toJSON` properties as well, *unless* they are nested
- // within an object or array).
- stringify(getClass) === undef &&
- // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and
- // FF 3.1b3 pass this test.
- stringify(undef) === undef &&
- // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,
- // respectively, if the value is omitted entirely.
- stringify() === undef &&
- // FF 3.1b1, 2 throw an error if the given value is not a number,
- // string, array, object, Boolean, or `null` literal. This applies to
- // objects with custom `toJSON` methods as well, unless they are nested
- // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`
- // methods entirely.
- stringify(value) === "1" &&
- stringify([value]) == "[1]" &&
- // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of
- // `"[null]"`.
- stringify([undef]) == "[null]" &&
- // YUI 3.0.0b1 fails to serialize `null` literals.
- stringify(null) == "null" &&
- // FF 3.1b1, 2 halts serialization if an array contains a function:
- // `[1, true, getClass, 1]` serializes as "[1,true,],". FF 3.1b3
- // elides non-JSON values from objects and arrays, unless they
- // define custom `toJSON` methods.
- stringify([undef, getClass, null]) == "[null,null,null]" &&
- // Simple serialization test. FF 3.1b1 uses Unicode escape sequences
- // where character escape codes are expected (e.g., `\b` => `\u0008`).
- stringify({ "a": [value, true, false, null, "\x00\b\n\f\r\t"] }) == serialized &&
- // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.
- stringify(null, value) === "1" &&
- stringify([1, 2], null, 1) == "[\n 1,\n 2\n]" &&
- // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly
- // serialize extended years.
- stringify(new Date(-8.64e15)) == '"-271821-04-20T00:00:00.000Z"' &&
- // The milliseconds are optional in ES 5, but required in 5.1.
- stringify(new Date(8.64e15)) == '"+275760-09-13T00:00:00.000Z"' &&
- // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative
- // four-digit years instead of six-digit years. Credits: @Yaffle.
- stringify(new Date(-621987552e5)) == '"-000001-01-01T00:00:00.000Z"' &&
- // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond
- // values less than 1000. Credits: @Yaffle.
- stringify(new Date(-1)) == '"1969-12-31T23:59:59.999Z"';
- } catch (exception) {
- <span class="cstat-no" title="statement not covered" > stringifySupported = false;</span>
- }
- }
- isSupported = stringifySupported;
- }
- // Test `JSON.parse`.
- if (name == "json-parse") {
- var parse = JSON3.parse;
- <span class="missing-if-branch" title="else path not taken"" >E</span>if (typeof parse == "function") {
- try {
- // FF 3.1b1, b2 will throw an exception if a bare literal is provided.
- // Conforming implementations should also coerce the initial argument to
- // a string prior to parsing.
- <span class="missing-if-branch" title="else path not taken"" >E</span>if (parse("0") === 0 && !parse(false)) {
- // Simple parsing test.
- value = parse(serialized);
- var parseSupported = value["a"].length == 5 && value["a"][0] === 1;
- <span class="missing-if-branch" title="else path not taken"" >E</span>if (parseSupported) {
- try {
- // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.
- parseSupported = !parse('"\t"');
- } catch (exception) {}
- <span class="missing-if-branch" title="else path not taken"" >E</span>if (parseSupported) {
- try {
- // FF 4.0 and 4.0.1 allow leading `+` signs and leading
- // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow
- // certain octal literals.
- parseSupported = parse("01") !== 1;
- } catch (exception) {}
- }
- <span class="missing-if-branch" title="else path not taken"" >E</span>if (parseSupported) {
- try {
- // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal
- // points. These environments, along with FF 3.1b1 and 2,
- // also allow trailing commas in JSON objects and arrays.
- parseSupported = parse("1.") !== 1;
- } catch (exception) {}
- }
- }
- }
- } catch (exception) {
- <span class="cstat-no" title="statement not covered" > parseSupported = false;</span>
- }
- }
- isSupported = parseSupported;
- }
- }
- return has[name] = !!isSupported;
- }
- has["bug-string-char-index"] = null;
- has["json"] = null;
- has["json-stringify"] = null;
- has["json-parse"] = null;
-
- <span class="missing-if-branch" title="if path not taken"" >I</span>if (!has("json")) {
- // Common `[[Class]]` name aliases.
- <span class="cstat-no" title="statement not covered" > var functionClass = "[object Function]";</span>
- <span class="cstat-no" title="statement not covered" > var dateClass = "[object Date]";</span>
- <span class="cstat-no" title="statement not covered" > var numberClass = "[object Number]";</span>
- <span class="cstat-no" title="statement not covered" > var stringClass = "[object String]";</span>
- <span class="cstat-no" title="statement not covered" > var arrayClass = "[object Array]";</span>
- <span class="cstat-no" title="statement not covered" > var booleanClass = "[object Boolean]";</span>
-
- // Detect incomplete support for accessing string characters by index.
- <span class="cstat-no" title="statement not covered" > var charIndexBuggy = has("bug-string-char-index");</span>
-
- // Define additional utility methods if the `Date` methods are buggy.
- <span class="cstat-no" title="statement not covered" > if (!isExtended) {</span>
- <span class="cstat-no" title="statement not covered" > var floor = Math.floor;</span>
- // A mapping between the months of the year and the number of days between
- // January 1st and the first of the respective month.
- <span class="cstat-no" title="statement not covered" > var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];</span>
- // Internal: Calculates the number of days between the Unix epoch and the
- // first day of the given month.
- <span class="cstat-no" title="statement not covered" > var getDay = <span class="fstat-no" title="function not covered" >function (year, month) {</span></span>
- <span class="cstat-no" title="statement not covered" > return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);</span>
- };
- }
-
- // Internal: Determines if a property is a direct property of the given
- // object. Delegates to the native `Object#hasOwnProperty` method.
- <span class="cstat-no" title="statement not covered" > if (!(isProperty = {}.hasOwnProperty)) {</span>
- <span class="cstat-no" title="statement not covered" > isProperty = <span class="fstat-no" title="function not covered" >function (property) {</span></span>
- <span class="cstat-no" title="statement not covered" > var members = {}, constructor;</span>
- <span class="cstat-no" title="statement not covered" > if ((members.__proto__ = null, members.__proto__ = {</span>
- // The *proto* property cannot be set multiple times in recent
- // versions of Firefox and SeaMonkey.
- "toString": 1
- }, members).toString != getClass) {
- // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but
- // supports the mutable *proto* property.
- <span class="cstat-no" title="statement not covered" > isProperty = <span class="fstat-no" title="function not covered" >function (property) {</span></span>
- // Capture and break the object's prototype chain (see section 8.6.2
- // of the ES 5.1 spec). The parenthesized expression prevents an
- // unsafe transformation by the Closure Compiler.
- <span class="cstat-no" title="statement not covered" > var original = this.__proto__, result = property in (this.__proto__ = null, this);</span>
- // Restore the original prototype chain.
- <span class="cstat-no" title="statement not covered" > this.__proto__ = original;</span>
- <span class="cstat-no" title="statement not covered" > return result;</span>
- };
- } else {
- // Capture a reference to the top-level `Object` constructor.
- <span class="cstat-no" title="statement not covered" > constructor = members.constructor;</span>
- // Use the `constructor` property to simulate `Object#hasOwnProperty` in
- // other environments.
- <span class="cstat-no" title="statement not covered" > isProperty = <span class="fstat-no" title="function not covered" >function (property) {</span></span>
- <span class="cstat-no" title="statement not covered" > var parent = (this.constructor || constructor).prototype;</span>
- <span class="cstat-no" title="statement not covered" > return property in this && !(property in parent && this[property] === parent[property]);</span>
- };
- }
- <span class="cstat-no" title="statement not covered" > members = null;</span>
- <span class="cstat-no" title="statement not covered" > return isProperty.call(this, property);</span>
- };
- }
-
- // Internal: A set of primitive types used by `isHostType`.
- <span class="cstat-no" title="statement not covered" > var PrimitiveTypes = {</span>
- 'boolean': 1,
- 'number': 1,
- 'string': 1,
- 'undefined': 1
- };
-
- // Internal: Determines if the given object `property` value is a
- // non-primitive.
- <span class="cstat-no" title="statement not covered" > var isHostType = <span class="fstat-no" title="function not covered" >function (object, property) {</span></span>
- <span class="cstat-no" title="statement not covered" > var type = typeof object[property];</span>
- <span class="cstat-no" title="statement not covered" > return type == 'object' ? !!object[property] : !PrimitiveTypes[type];</span>
- };
-
- // Internal: Normalizes the `for...in` iteration algorithm across
- // environments. Each enumerated key is yielded to a `callback` function.
- <span class="cstat-no" title="statement not covered" > forEach = <span class="fstat-no" title="function not covered" >function (object, callback) {</span></span>
- <span class="cstat-no" title="statement not covered" > var size = 0, Properties, members, property;</span>
-
- // Tests for bugs in the current environment's `for...in` algorithm. The
- // `valueOf` property inherits the non-enumerable flag from
- // `Object.prototype` in older versions of IE, Netscape, and Mozilla.
- <span class="cstat-no" title="statement not covered" > (Properties = <span class="fstat-no" title="function not covered" >function () {</span></span>
- <span class="cstat-no" title="statement not covered" > this.valueOf = 0;</span>
- }).prototype.valueOf = 0;
-
- // Iterate over a new instance of the `Properties` class.
- <span class="cstat-no" title="statement not covered" > members = new Properties();</span>
- <span class="cstat-no" title="statement not covered" > for (property in members) {</span>
- // Ignore all properties inherited from `Object.prototype`.
- <span class="cstat-no" title="statement not covered" > if (isProperty.call(members, property)) {</span>
- <span class="cstat-no" title="statement not covered" > size++;</span>
- }
- }
- <span class="cstat-no" title="statement not covered" > Properties = members = null;</span>
-
- // Normalize the iteration algorithm.
- <span class="cstat-no" title="statement not covered" > if (!size) {</span>
- // A list of non-enumerable properties inherited from `Object.prototype`.
- <span class="cstat-no" title="statement not covered" > members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"];</span>
- // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable
- // properties.
- <span class="cstat-no" title="statement not covered" > forEach = <span class="fstat-no" title="function not covered" >function (object, callback) {</span></span>
- <span class="cstat-no" title="statement not covered" > var isFunction = getClass.call(object) == functionClass, property, length;</span>
- <span class="cstat-no" title="statement not covered" > var hasProperty = !isFunction && typeof object.constructor != 'function' && isHostType(object, 'hasOwnProperty') ? object.hasOwnProperty : isProperty;</span>
- <span class="cstat-no" title="statement not covered" > for (property in object) {</span>
- // Gecko <= 1.0 enumerates the `prototype` property of functions under
- // certain conditions; IE does not.
- <span class="cstat-no" title="statement not covered" > if (!(isFunction && property == "prototype") && hasProperty.call(object, property)) {</span>
- <span class="cstat-no" title="statement not covered" > callback(property);</span>
- }
- }
- // Manually invoke the callback for each non-enumerable property.
- <span class="cstat-no" title="statement not covered" > for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property));</span>
- };
- } else <span class="cstat-no" title="statement not covered" >if (size == 2) {</span>
- // Safari <= 2.0.4 enumerates shadowed properties twice.
- <span class="cstat-no" title="statement not covered" > forEach = <span class="fstat-no" title="function not covered" >function (object, callback) {</span></span>
- // Create a set of iterated properties.
- <span class="cstat-no" title="statement not covered" > var members = {}, isFunction = getClass.call(object) == functionClass, property;</span>
- <span class="cstat-no" title="statement not covered" > for (property in object) {</span>
- // Store each property name to prevent double enumeration. The
- // `prototype` property of functions is not enumerated due to cross-
- // environment inconsistencies.
- <span class="cstat-no" title="statement not covered" > if (!(isFunction && property == "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) {</span>
- <span class="cstat-no" title="statement not covered" > callback(property);</span>
- }
- }
- };
- } else {
- // No bugs detected; use the standard `for...in` algorithm.
- <span class="cstat-no" title="statement not covered" > forEach = <span class="fstat-no" title="function not covered" >function (object, callback) {</span></span>
- <span class="cstat-no" title="statement not covered" > var isFunction = getClass.call(object) == functionClass, property, isConstructor;</span>
- <span class="cstat-no" title="statement not covered" > for (property in object) {</span>
- <span class="cstat-no" title="statement not covered" > if (!(isFunction && property == "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) {</span>
- <span class="cstat-no" title="statement not covered" > callback(property);</span>
- }
- }
- // Manually invoke the callback for the `constructor` property due to
- // cross-environment inconsistencies.
- <span class="cstat-no" title="statement not covered" > if (isConstructor || isProperty.call(object, (property = "constructor"))) {</span>
- <span class="cstat-no" title="statement not covered" > callback(property);</span>
- }
- };
- }
- <span class="cstat-no" title="statement not covered" > return forEach(object, callback);</span>
- };
-
- // Public: Serializes a JavaScript `value` as a JSON string. The optional
- // `filter` argument may specify either a function that alters how object and
- // array members are serialized, or an array of strings and numbers that
- // indicates which properties should be serialized. The optional `width`
- // argument may be either a string or number that specifies the indentation
- // level of the output.
- <span class="cstat-no" title="statement not covered" > if (!has("json-stringify")) {</span>
- // Internal: A map of control characters and their escaped equivalents.
- <span class="cstat-no" title="statement not covered" > var Escapes = {</span>
- 92: "\\\\",
- 34: '\\"',
- 8: "\\b",
- 12: "\\f",
- 10: "\\n",
- 13: "\\r",
- 9: "\\t"
- };
-
- // Internal: Converts `value` into a zero-padded string such that its
- // length is at least equal to `width`. The `width` must be <= 6.
- <span class="cstat-no" title="statement not covered" > var leadingZeroes = "000000";</span>
- <span class="cstat-no" title="statement not covered" > var toPaddedString = <span class="fstat-no" title="function not covered" >function (width, value) {</span></span>
- // The `|| 0` expression is necessary to work around a bug in
- // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.
- <span class="cstat-no" title="statement not covered" > return (leadingZeroes + (value || 0)).slice(-width);</span>
- };
-
- // Internal: Double-quotes a string `value`, replacing all ASCII control
- // characters (characters with code unit values between 0 and 31) with
- // their escaped equivalents. This is an implementation of the
- // `Quote(value)` operation defined in ES 5.1 section 15.12.3.
- <span class="cstat-no" title="statement not covered" > var unicodePrefix = "\\u00";</span>
- <span class="cstat-no" title="statement not covered" > var quote = <span class="fstat-no" title="function not covered" >function (value) {</span></span>
- <span class="cstat-no" title="statement not covered" > var result = '"', index = 0, length = value.length, isLarge = length > 10 && charIndexBuggy, symbols;</span>
- <span class="cstat-no" title="statement not covered" > if (isLarge) {</span>
- <span class="cstat-no" title="statement not covered" > symbols = value.split("");</span>
- }
- <span class="cstat-no" title="statement not covered" > for (; index < length; index++) {</span>
- <span class="cstat-no" title="statement not covered" > var charCode = value.charCodeAt(index);</span>
- // If the character is a control character, append its Unicode or
- // shorthand escape sequence; otherwise, append the character as-is.
- <span class="cstat-no" title="statement not covered" > switch (charCode) {</span>
- case 8: case 9: case 10: case 12: case 13: case 34: case 92:
- <span class="cstat-no" title="statement not covered" > result += Escapes[charCode];</span>
- <span class="cstat-no" title="statement not covered" > break;</span>
- default:
- <span class="cstat-no" title="statement not covered" > if (charCode < 32) {</span>
- <span class="cstat-no" title="statement not covered" > result += unicodePrefix + toPaddedString(2, charCode.toString(16));</span>
- <span class="cstat-no" title="statement not covered" > break;</span>
- }
- <span class="cstat-no" title="statement not covered" > result += isLarge ? symbols[index] : charIndexBuggy ? value.charAt(index) : value[index];</span>
- }
- }
- <span class="cstat-no" title="statement not covered" > return result + '"';</span>
- };
-
- // Internal: Recursively serializes an object. Implements the
- // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.
- <span class="cstat-no" title="statement not covered" > var serialize = <span class="fstat-no" title="function not covered" >function (property, object, callback, properties, whitespace, indentation, stack) {</span></span>
- <span class="cstat-no" title="statement not covered" > var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, hasMembers, result;</span>
- <span class="cstat-no" title="statement not covered" > try {</span>
- // Necessary for host object support.
- <span class="cstat-no" title="statement not covered" > value = object[property];</span>
- } catch (exception) {}
- <span class="cstat-no" title="statement not covered" > if (typeof value == "object" && value) {</span>
- <span class="cstat-no" title="statement not covered" > className = getClass.call(value);</span>
- <span class="cstat-no" title="statement not covered" > if (className == dateClass && !isProperty.call(value, "toJSON")) {</span>
- <span class="cstat-no" title="statement not covered" > if (value > -1 / 0 && value < 1 / 0) {</span>
- // Dates are serialized according to the `Date#toJSON` method
- // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15
- // for the ISO 8601 date time string format.
- <span class="cstat-no" title="statement not covered" > if (getDay) {</span>
- // Manually compute the year, month, date, hours, minutes,
- // seconds, and milliseconds if the `getUTC*` methods are
- // buggy. Adapted from @Yaffle's `date-shim` project.
- <span class="cstat-no" title="statement not covered" > date = floor(value / 864e5);</span>
- <span class="cstat-no" title="statement not covered" > for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++);</span>
- <span class="cstat-no" title="statement not covered" > for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++);</span>
- <span class="cstat-no" title="statement not covered" > date = 1 + date - getDay(year, month);</span>
- // The `time` value specifies the time within the day (see ES
- // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used
- // to compute `A modulo B`, as the `%` operator does not
- // correspond to the `modulo` operation for negative numbers.
- <span class="cstat-no" title="statement not covered" > time = (value % 864e5 + 864e5) % 864e5;</span>
- // The hours, minutes, seconds, and milliseconds are obtained by
- // decomposing the time within the day. See section 15.9.1.10.
- <span class="cstat-no" title="statement not covered" > hours = floor(time / 36e5) % 24;</span>
- <span class="cstat-no" title="statement not covered" > minutes = floor(time / 6e4) % 60;</span>
- <span class="cstat-no" title="statement not covered" > seconds = floor(time / 1e3) % 60;</span>
- <span class="cstat-no" title="statement not covered" > milliseconds = time % 1e3;</span>
- } else {
- <span class="cstat-no" title="statement not covered" > year = value.getUTCFullYear();</span>
- <span class="cstat-no" title="statement not covered" > month = value.getUTCMonth();</span>
- <span class="cstat-no" title="statement not covered" > date = value.getUTCDate();</span>
- <span class="cstat-no" title="statement not covered" > hours = value.getUTCHours();</span>
- <span class="cstat-no" title="statement not covered" > minutes = value.getUTCMinutes();</span>
- <span class="cstat-no" title="statement not covered" > seconds = value.getUTCSeconds();</span>
- <span class="cstat-no" title="statement not covered" > milliseconds = value.getUTCMilliseconds();</span>
- }
- // Serialize extended years correctly.
- <span class="cstat-no" title="statement not covered" > value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) +</span>
- "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) +
- // Months, dates, hours, minutes, and seconds should have two
- // digits; milliseconds should have three.
- "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) +
- // Milliseconds are optional in ES 5.0, but required in 5.1.
- "." + toPaddedString(3, milliseconds) + "Z";
- } else {
- <span class="cstat-no" title="statement not covered" > value = null;</span>
- }
- } else <span class="cstat-no" title="statement not covered" >if (typeof value.toJSON == "function" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, "toJSON"))) {</span>
- // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the
- // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3
- // ignores all `toJSON` methods on these objects unless they are
- // defined directly on an instance.
- <span class="cstat-no" title="statement not covered" > value = value.toJSON(property);</span>
- }
- }
- <span class="cstat-no" title="statement not covered" > if (callback) {</span>
- // If a replacement function was provided, call it to obtain the value
- // for serialization.
- <span class="cstat-no" title="statement not covered" > value = callback.call(object, property, value);</span>
- }
- <span class="cstat-no" title="statement not covered" > if (value === null) {</span>
- <span class="cstat-no" title="statement not covered" > return "null";</span>
- }
- <span class="cstat-no" title="statement not covered" > className = getClass.call(value);</span>
- <span class="cstat-no" title="statement not covered" > if (className == booleanClass) {</span>
- // Booleans are represented literally.
- <span class="cstat-no" title="statement not covered" > return "" + value;</span>
- } else <span class="cstat-no" title="statement not covered" >if (className == numberClass) {</span>
- // JSON numbers must be finite. `Infinity` and `NaN` are serialized as
- // `"null"`.
- <span class="cstat-no" title="statement not covered" > return value > -1 / 0 && value < 1 / 0 ? "" + value : "null";</span>
- } else <span class="cstat-no" title="statement not covered" >if (className == stringClass) {</span>
- // Strings are double-quoted and escaped.
- <span class="cstat-no" title="statement not covered" > return quote("" + value);</span>
- }
- // Recursively serialize objects and arrays.
- <span class="cstat-no" title="statement not covered" > if (typeof value == "object") {</span>
- // Check for cyclic structures. This is a linear search; performance
- // is inversely proportional to the number of unique nested objects.
- <span class="cstat-no" title="statement not covered" > for (length = stack.length; length--;) {</span>
- <span class="cstat-no" title="statement not covered" > if (stack[length] === value) {</span>
- // Cyclic structures cannot be serialized by `JSON.stringify`.
- <span class="cstat-no" title="statement not covered" > throw TypeError();</span>
- }
- }
- // Add the object to the stack of traversed objects.
- <span class="cstat-no" title="statement not covered" > stack.push(value);</span>
- <span class="cstat-no" title="statement not covered" > results = [];</span>
- // Save the current indentation level and indent one additional level.
- <span class="cstat-no" title="statement not covered" > prefix = indentation;</span>
- <span class="cstat-no" title="statement not covered" > indentation += whitespace;</span>
- <span class="cstat-no" title="statement not covered" > if (className == arrayClass) {</span>
- // Recursively serialize array elements.
- <span class="cstat-no" title="statement not covered" > for (index = 0, length = value.length; index < length; hasMembers || (hasMembers = true), index++) {</span>
- <span class="cstat-no" title="statement not covered" > element = serialize(index, value, callback, properties, whitespace, indentation, stack);</span>
- <span class="cstat-no" title="statement not covered" > results.push(element === undef ? "null" : element);</span>
- }
- <span class="cstat-no" title="statement not covered" > result = hasMembers ? (whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : ("[" + results.join(",") + "]")) : "[]";</span>
- } else {
- // Recursively serialize object members. Members are selected from
- // either a user-specified list of property names, or the object
- // itself.
- <span class="cstat-no" title="statement not covered" > forEach(properties || value, <span class="fstat-no" title="function not covered" >function (property) {</span></span>
- <span class="cstat-no" title="statement not covered" > var element = serialize(property, value, callback, properties, whitespace, indentation, stack);</span>
- <span class="cstat-no" title="statement not covered" > if (element !== undef) {</span>
- // According to ES 5.1 section 15.12.3: "If `gap` {whitespace}
- // is not the empty string, let `member` {quote(property) + ":"}
- // be the concatenation of `member` and the `space` character."
- // The "`space` character" refers to the literal space
- // character, not the `space` {width} argument provided to
- // `JSON.stringify`.
- <span class="cstat-no" title="statement not covered" > results.push(quote(property) + ":" + (whitespace ? " " : "") + element);</span>
- }
- <span class="cstat-no" title="statement not covered" > hasMembers || (hasMembers = true);</span>
- });
- <span class="cstat-no" title="statement not covered" > result = hasMembers ? (whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : ("{" + results.join(",") + "}")) : "{}";</span>
- }
- // Remove the object from the traversed object stack.
- <span class="cstat-no" title="statement not covered" > stack.pop();</span>
- <span class="cstat-no" title="statement not covered" > return result;</span>
- }
- };
-
- // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.
- <span class="cstat-no" title="statement not covered" > JSON3.stringify = <span class="fstat-no" title="function not covered" >function (source, filter, width) {</span></span>
- <span class="cstat-no" title="statement not covered" > var whitespace, callback, properties, className;</span>
- <span class="cstat-no" title="statement not covered" > if (typeof filter == "function" || typeof filter == "object" && filter) {</span>
- <span class="cstat-no" title="statement not covered" > if ((className = getClass.call(filter)) == functionClass) {</span>
- <span class="cstat-no" title="statement not covered" > callback = filter;</span>
- } else <span class="cstat-no" title="statement not covered" >if (className == arrayClass) {</span>
- // Convert the property names array into a makeshift set.
- <span class="cstat-no" title="statement not covered" > properties = {};</span>
- <span class="cstat-no" title="statement not covered" > for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((getClass.call(value) == stringClass || getClass.call(value) == numberClass) && (properties[value] = 1)));</span>
- }
- }
- <span class="cstat-no" title="statement not covered" > if (width) {</span>
- <span class="cstat-no" title="statement not covered" > if ((className = getClass.call(width)) == numberClass) {</span>
- // Convert the `width` to an integer and create a string containing
- // `width` number of space characters.
- <span class="cstat-no" title="statement not covered" > if ((width -= width % 1) > 0) {</span>
- <span class="cstat-no" title="statement not covered" > for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " ");</span>
- }
- } else <span class="cstat-no" title="statement not covered" >if (className == stringClass) {</span>
- <span class="cstat-no" title="statement not covered" > whitespace = width.length <= 10 ? width : width.slice(0, 10);</span>
- }
- }
- // Opera <= 7.54u2 discards the values associated with empty string keys
- // (`""`) only if they are used directly within an object member list
- // (e.g., `!("" in { "": 1})`).
- <span class="cstat-no" title="statement not covered" > return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []);</span>
- };
- }
-
- // Public: Parses a JSON source string.
- <span class="cstat-no" title="statement not covered" > if (!has("json-parse")) {</span>
- <span class="cstat-no" title="statement not covered" > var fromCharCode = String.fromCharCode;</span>
-
- // Internal: A map of escaped control characters and their unescaped
- // equivalents.
- <span class="cstat-no" title="statement not covered" > var Unescapes = {</span>
- 92: "\\",
- 34: '"',
- 47: "/",
- 98: "\b",
- 116: "\t",
- 110: "\n",
- 102: "\f",
- 114: "\r"
- };
-
- // Internal: Stores the parser state.
- <span class="cstat-no" title="statement not covered" > var Index, Source;</span>
-
- // Internal: Resets the parser state and throws a `SyntaxError`.
- <span class="cstat-no" title="statement not covered" > var abort = <span class="fstat-no" title="function not covered" >function() {</span></span>
- <span class="cstat-no" title="statement not covered" > Index = Source = null;</span>
- <span class="cstat-no" title="statement not covered" > throw SyntaxError();</span>
- };
-
- // Internal: Returns the next token, or `"$"` if the parser has reached
- // the end of the source string. A token may be a string, number, `null`
- // literal, or Boolean literal.
- <span class="cstat-no" title="statement not covered" > var lex = <span class="fstat-no" title="function not covered" >function () {</span></span>
- <span class="cstat-no" title="statement not covered" > var source = Source, length = source.length, value, begin, position, isSigned, charCode;</span>
- <span class="cstat-no" title="statement not covered" > while (Index < length) {</span>
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(Index);</span>
- <span class="cstat-no" title="statement not covered" > switch (charCode) {</span>
- case 9: case 10: case 13: case 32:
- // Skip whitespace tokens, including tabs, carriage returns, line
- // feeds, and space characters.
- <span class="cstat-no" title="statement not covered" > Index++;</span>
- <span class="cstat-no" title="statement not covered" > break;</span>
- case 123: case 125: case 91: case 93: case 58: case 44:
- // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at
- // the current position.
- <span class="cstat-no" title="statement not covered" > value = charIndexBuggy ? source.charAt(Index) : source[Index];</span>
- <span class="cstat-no" title="statement not covered" > Index++;</span>
- <span class="cstat-no" title="statement not covered" > return value;</span>
- case 34:
- // `"` delimits a JSON string; advance to the next character and
- // begin parsing the string. String tokens are prefixed with the
- // sentinel `@` character to distinguish them from punctuators and
- // end-of-string tokens.
- <span class="cstat-no" title="statement not covered" > for (value = "@", Index++; Index < length;) {</span>
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(Index);</span>
- <span class="cstat-no" title="statement not covered" > if (charCode < 32) {</span>
- // Unescaped ASCII control characters (those with a code unit
- // less than the space character) are not permitted.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- } else <span class="cstat-no" title="statement not covered" >if (charCode == 92) {</span>
- // A reverse solidus (`\`) marks the beginning of an escaped
- // control character (including `"`, `\`, and `/`) or Unicode
- // escape sequence.
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(++Index);</span>
- <span class="cstat-no" title="statement not covered" > switch (charCode) {</span>
- case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114:
- // Revive escaped control characters.
- <span class="cstat-no" title="statement not covered" > value += Unescapes[charCode];</span>
- <span class="cstat-no" title="statement not covered" > Index++;</span>
- <span class="cstat-no" title="statement not covered" > break;</span>
- case 117:
- // `\u` marks the beginning of a Unicode escape sequence.
- // Advance to the first character and validate the
- // four-digit code point.
- <span class="cstat-no" title="statement not covered" > begin = ++Index;</span>
- <span class="cstat-no" title="statement not covered" > for (position = Index + 4; Index < position; Index++) {</span>
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(Index);</span>
- // A valid sequence comprises four hexdigits (case-
- // insensitive) that form a single hexadecimal value.
- <span class="cstat-no" title="statement not covered" > if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {</span>
- // Invalid Unicode escape sequence.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- }
- // Revive the escaped character.
- <span class="cstat-no" title="statement not covered" > value += fromCharCode("0x" + source.slice(begin, Index));</span>
- <span class="cstat-no" title="statement not covered" > break;</span>
- default:
- // Invalid escape sequence.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- } else {
- <span class="cstat-no" title="statement not covered" > if (charCode == 34) {</span>
- // An unescaped double-quote character marks the end of the
- // string.
- <span class="cstat-no" title="statement not covered" > break;</span>
- }
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(Index);</span>
- <span class="cstat-no" title="statement not covered" > begin = Index;</span>
- // Optimize for the common case where a string is valid.
- <span class="cstat-no" title="statement not covered" > while (charCode >= 32 && charCode != 92 && charCode != 34) {</span>
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(++Index);</span>
- }
- // Append the string as-is.
- <span class="cstat-no" title="statement not covered" > value += source.slice(begin, Index);</span>
- }
- }
- <span class="cstat-no" title="statement not covered" > if (source.charCodeAt(Index) == 34) {</span>
- // Advance to the next character and return the revived string.
- <span class="cstat-no" title="statement not covered" > Index++;</span>
- <span class="cstat-no" title="statement not covered" > return value;</span>
- }
- // Unterminated string.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- default:
- // Parse numbers and literals.
- <span class="cstat-no" title="statement not covered" > begin = Index;</span>
- // Advance past the negative sign, if one is specified.
- <span class="cstat-no" title="statement not covered" > if (charCode == 45) {</span>
- <span class="cstat-no" title="statement not covered" > isSigned = true;</span>
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(++Index);</span>
- }
- // Parse an integer or floating-point value.
- <span class="cstat-no" title="statement not covered" > if (charCode >= 48 && charCode <= 57) {</span>
- // Leading zeroes are interpreted as octal literals.
- <span class="cstat-no" title="statement not covered" > if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) {</span>
- // Illegal octal literal.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- <span class="cstat-no" title="statement not covered" > isSigned = false;</span>
- // Parse the integer component.
- <span class="cstat-no" title="statement not covered" > for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++);</span>
- // Floats cannot contain a leading decimal point; however, this
- // case is already accounted for by the parser.
- <span class="cstat-no" title="statement not covered" > if (source.charCodeAt(Index) == 46) {</span>
- <span class="cstat-no" title="statement not covered" > position = ++Index;</span>
- // Parse the decimal component.
- <span class="cstat-no" title="statement not covered" > for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);</span>
- <span class="cstat-no" title="statement not covered" > if (position == Index) {</span>
- // Illegal trailing decimal.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- <span class="cstat-no" title="statement not covered" > Index = position;</span>
- }
- // Parse exponents. The `e` denoting the exponent is
- // case-insensitive.
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(Index);</span>
- <span class="cstat-no" title="statement not covered" > if (charCode == 101 || charCode == 69) {</span>
- <span class="cstat-no" title="statement not covered" > charCode = source.charCodeAt(++Index);</span>
- // Skip past the sign following the exponent, if one is
- // specified.
- <span class="cstat-no" title="statement not covered" > if (charCode == 43 || charCode == 45) {</span>
- <span class="cstat-no" title="statement not covered" > Index++;</span>
- }
- // Parse the exponential component.
- <span class="cstat-no" title="statement not covered" > for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);</span>
- <span class="cstat-no" title="statement not covered" > if (position == Index) {</span>
- // Illegal empty exponent.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- <span class="cstat-no" title="statement not covered" > Index = position;</span>
- }
- // Coerce the parsed value to a JavaScript number.
- <span class="cstat-no" title="statement not covered" > return +source.slice(begin, Index);</span>
- }
- // A negative sign may only precede numbers.
- <span class="cstat-no" title="statement not covered" > if (isSigned) {</span>
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- // `true`, `false`, and `null` literals.
- <span class="cstat-no" title="statement not covered" > if (source.slice(Index, Index + 4) == "true") {</span>
- <span class="cstat-no" title="statement not covered" > Index += 4;</span>
- <span class="cstat-no" title="statement not covered" > return true;</span>
- } else <span class="cstat-no" title="statement not covered" >if (source.slice(Index, Index + 5) == "false") {</span>
- <span class="cstat-no" title="statement not covered" > Index += 5;</span>
- <span class="cstat-no" title="statement not covered" > return false;</span>
- } else <span class="cstat-no" title="statement not covered" >if (source.slice(Index, Index + 4) == "null") {</span>
- <span class="cstat-no" title="statement not covered" > Index += 4;</span>
- <span class="cstat-no" title="statement not covered" > return null;</span>
- }
- // Unrecognized token.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- }
- // Return the sentinel `$` character if the parser has reached the end
- // of the source string.
- <span class="cstat-no" title="statement not covered" > return "$";</span>
- };
-
- // Internal: Parses a JSON `value` token.
- <span class="cstat-no" title="statement not covered" > var get = <span class="fstat-no" title="function not covered" >function (value) {</span></span>
- <span class="cstat-no" title="statement not covered" > var results, hasMembers;</span>
- <span class="cstat-no" title="statement not covered" > if (value == "$") {</span>
- // Unexpected end of input.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- <span class="cstat-no" title="statement not covered" > if (typeof value == "string") {</span>
- <span class="cstat-no" title="statement not covered" > if ((charIndexBuggy ? value.charAt(0) : value[0]) == "@") {</span>
- // Remove the sentinel `@` character.
- <span class="cstat-no" title="statement not covered" > return value.slice(1);</span>
- }
- // Parse object and array literals.
- <span class="cstat-no" title="statement not covered" > if (value == "[") {</span>
- // Parses a JSON array, returning a new JavaScript array.
- <span class="cstat-no" title="statement not covered" > results = [];</span>
- <span class="cstat-no" title="statement not covered" > for (;; hasMembers || (hasMembers = true)) {</span>
- <span class="cstat-no" title="statement not covered" > value = lex();</span>
- // A closing square bracket marks the end of the array literal.
- <span class="cstat-no" title="statement not covered" > if (value == "]") {</span>
- <span class="cstat-no" title="statement not covered" > break;</span>
- }
- // If the array literal contains elements, the current token
- // should be a comma separating the previous element from the
- // next.
- <span class="cstat-no" title="statement not covered" > if (hasMembers) {</span>
- <span class="cstat-no" title="statement not covered" > if (value == ",") {</span>
- <span class="cstat-no" title="statement not covered" > value = lex();</span>
- <span class="cstat-no" title="statement not covered" > if (value == "]") {</span>
- // Unexpected trailing `,` in array literal.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- } else {
- // A `,` must separate each array element.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- }
- // Elisions and leading commas are not permitted.
- <span class="cstat-no" title="statement not covered" > if (value == ",") {</span>
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- <span class="cstat-no" title="statement not covered" > results.push(get(value));</span>
- }
- <span class="cstat-no" title="statement not covered" > return results;</span>
- } else <span class="cstat-no" title="statement not covered" >if (value == "{") {</span>
- // Parses a JSON object, returning a new JavaScript object.
- <span class="cstat-no" title="statement not covered" > results = {};</span>
- <span class="cstat-no" title="statement not covered" > for (;; hasMembers || (hasMembers = true)) {</span>
- <span class="cstat-no" title="statement not covered" > value = lex();</span>
- // A closing curly brace marks the end of the object literal.
- <span class="cstat-no" title="statement not covered" > if (value == "}") {</span>
- <span class="cstat-no" title="statement not covered" > break;</span>
- }
- // If the object literal contains members, the current token
- // should be a comma separator.
- <span class="cstat-no" title="statement not covered" > if (hasMembers) {</span>
- <span class="cstat-no" title="statement not covered" > if (value == ",") {</span>
- <span class="cstat-no" title="statement not covered" > value = lex();</span>
- <span class="cstat-no" title="statement not covered" > if (value == "}") {</span>
- // Unexpected trailing `,` in object literal.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- } else {
- // A `,` must separate each object member.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- }
- // Leading commas are not permitted, object property names must be
- // double-quoted strings, and a `:` must separate each property
- // name and value.
- <span class="cstat-no" title="statement not covered" > if (value == "," || typeof value != "string" || (charIndexBuggy ? value.charAt(0) : value[0]) != "@" || lex() != ":") {</span>
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- <span class="cstat-no" title="statement not covered" > results[value.slice(1)] = get(lex());</span>
- }
- <span class="cstat-no" title="statement not covered" > return results;</span>
- }
- // Unexpected token encountered.
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- <span class="cstat-no" title="statement not covered" > return value;</span>
- };
-
- // Internal: Updates a traversed object member.
- <span class="cstat-no" title="statement not covered" > var update = <span class="fstat-no" title="function not covered" >function(source, property, callback) {</span></span>
- <span class="cstat-no" title="statement not covered" > var element = walk(source, property, callback);</span>
- <span class="cstat-no" title="statement not covered" > if (element === undef) {</span>
- <span class="cstat-no" title="statement not covered" > delete source[property];</span>
- } else {
- <span class="cstat-no" title="statement not covered" > source[property] = element;</span>
- }
- };
-
- // Internal: Recursively traverses a parsed JSON object, invoking the
- // `callback` function for each value. This is an implementation of the
- // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.
- <span class="cstat-no" title="statement not covered" > var walk = <span class="fstat-no" title="function not covered" >function (source, property, callback) {</span></span>
- <span class="cstat-no" title="statement not covered" > var value = source[property], length;</span>
- <span class="cstat-no" title="statement not covered" > if (typeof value == "object" && value) {</span>
- // `forEach` can't be used to traverse an array in Opera <= 8.54
- // because its `Object#hasOwnProperty` implementation returns `false`
- // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`).
- <span class="cstat-no" title="statement not covered" > if (getClass.call(value) == arrayClass) {</span>
- <span class="cstat-no" title="statement not covered" > for (length = value.length; length--;) {</span>
- <span class="cstat-no" title="statement not covered" > update(value, length, callback);</span>
- }
- } else {
- <span class="cstat-no" title="statement not covered" > forEach(value, <span class="fstat-no" title="function not covered" >function (property) {</span></span>
- <span class="cstat-no" title="statement not covered" > update(value, property, callback);</span>
- });
- }
- }
- <span class="cstat-no" title="statement not covered" > return callback.call(source, property, value);</span>
- };
-
- // Public: `JSON.parse`. See ES 5.1 section 15.12.2.
- <span class="cstat-no" title="statement not covered" > JSON3.parse = <span class="fstat-no" title="function not covered" >function (source, callback) {</span></span>
- <span class="cstat-no" title="statement not covered" > var result, value;</span>
- <span class="cstat-no" title="statement not covered" > Index = 0;</span>
- <span class="cstat-no" title="statement not covered" > Source = "" + source;</span>
- <span class="cstat-no" title="statement not covered" > result = get(lex());</span>
- // If a JSON string contains multiple tokens, it is invalid.
- <span class="cstat-no" title="statement not covered" > if (lex() != "$") {</span>
- <span class="cstat-no" title="statement not covered" > abort();</span>
- }
- // Reset the parser state.
- <span class="cstat-no" title="statement not covered" > Index = Source = null;</span>
- <span class="cstat-no" title="statement not covered" > return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[""] = result, value), "", callback) : result;</span>
- };
- }
- }
-
- // Export for asynchronous module loaders.
- <span class="missing-if-branch" title="if path not taken"" >I</span>if (isLoader) {
- <span class="cstat-no" title="statement not covered" > define(<span class="fstat-no" title="function not covered" >function () {</span></span>
- <span class="cstat-no" title="statement not covered" > return JSON3;</span>
- });
- }
- }(this));
- </pre></td></tr>
- </table></pre>
- </div>
- <div class="footer">
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 17 2013 14:21:36 GMT-0800 (PST)</div>
- </div>
- <script src="../prettify.js"></script>
- <script src="http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
- <script>
- YUI().use('datatable', function (Y) {
- var formatters = {
- pct: function (o) {
- o.className += o.record.get('classes')[o.column.key];
- try {
- return o.value.toFixed(2) + '%';
- } catch (ex) { return o.value + '%'; }
- },
- html: function (o) {
- o.className += o.record.get('classes')[o.column.key];
- return o.record.get(o.column.key + '_html');
- }
- },
- defaultFormatter = function (o) {
- o.className += o.record.get('classes')[o.column.key];
- return o.value;
- };
- function getColumns(theadNode) {
- var colNodes = theadNode.all('tr th'),
- cols = [],
- col;
- colNodes.each(function (colNode) {
- col = {
- key: colNode.getAttribute('data-col'),
- label: colNode.get('innerHTML') || ' ',
- sortable: !colNode.getAttribute('data-nosort'),
- className: colNode.getAttribute('class'),
- type: colNode.getAttribute('data-type'),
- allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
- };
- col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
- cols.push(col);
- });
- return cols;
- }
- function getRowData(trNode, cols) {
- var tdNodes = trNode.all('td'),
- i,
- row = { classes: {} },
- node,
- name;
- for (i = 0; i < cols.length; i += 1) {
- name = cols[i].key;
- node = tdNodes.item(i);
- row[name] = node.getAttribute('data-value') || node.get('innerHTML');
- row[name + '_html'] = node.get('innerHTML');
- row.classes[name] = node.getAttribute('class');
- //Y.log('Name: ' + name + '; Value: ' + row[name]);
- if (cols[i].type === 'number') { row[name] = row[name] * 1; }
- }
- //Y.log(row);
- return row;
- }
- function getData(tbodyNode, cols) {
- var data = [];
- tbodyNode.all('tr').each(function (trNode) {
- data.push(getRowData(trNode, cols));
- });
- return data;
- }
- function replaceTable(node) {
- if (!node) { return; }
- var cols = getColumns(node.one('thead')),
- data = getData(node.one('tbody'), cols),
- table,
- parent = node.get('parentNode');
- table = new Y.DataTable({
- columns: cols,
- data: data,
- sortBy: 'file'
- });
- parent.set('innerHTML', '');
- table.render(parent);
- }
- Y.on('domready', function () {
- replaceTable(Y.one('div.coverage-summary table'));
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
- });
- });
- </script>
- </body>
- </html>
|