##// END OF EJS Templates
frontend: latest compiled css and js
ergo -
Show More
@@ -1,9534 +1,9538 b''
1 1 /*!
2 2 * Bootstrap v3.3.6 (http://getbootstrap.com)
3 3 * Copyright 2011-2015 Twitter, Inc.
4 4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 5 */
6 6 /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
7 7 html {
8 8 font-family: sans-serif;
9 9 -ms-text-size-adjust: 100%;
10 10 -webkit-text-size-adjust: 100%;
11 11 }
12 12 body {
13 13 margin: 0;
14 14 }
15 15 article,
16 16 aside,
17 17 details,
18 18 figcaption,
19 19 figure,
20 20 footer,
21 21 header,
22 22 hgroup,
23 23 main,
24 24 menu,
25 25 nav,
26 26 section,
27 27 summary {
28 28 display: block;
29 29 }
30 30 audio,
31 31 canvas,
32 32 progress,
33 33 video {
34 34 display: inline-block;
35 35 vertical-align: baseline;
36 36 }
37 37 audio:not([controls]) {
38 38 display: none;
39 39 height: 0;
40 40 }
41 41 [hidden],
42 42 template {
43 43 display: none;
44 44 }
45 45 a {
46 46 background-color: transparent;
47 47 }
48 48 a:active,
49 49 a:hover {
50 50 outline: 0;
51 51 }
52 52 abbr[title] {
53 53 border-bottom: 1px dotted;
54 54 }
55 55 b,
56 56 strong {
57 57 font-weight: bold;
58 58 }
59 59 dfn {
60 60 font-style: italic;
61 61 }
62 62 h1 {
63 63 font-size: 2em;
64 64 margin: 0.67em 0;
65 65 }
66 66 mark {
67 67 background: #ff0;
68 68 color: #000;
69 69 }
70 70 small {
71 71 font-size: 80%;
72 72 }
73 73 sub,
74 74 sup {
75 75 font-size: 75%;
76 76 line-height: 0;
77 77 position: relative;
78 78 vertical-align: baseline;
79 79 }
80 80 sup {
81 81 top: -0.5em;
82 82 }
83 83 sub {
84 84 bottom: -0.25em;
85 85 }
86 86 img {
87 87 border: 0;
88 88 }
89 89 svg:not(:root) {
90 90 overflow: hidden;
91 91 }
92 92 figure {
93 93 margin: 1em 40px;
94 94 }
95 95 hr {
96 96 box-sizing: content-box;
97 97 height: 0;
98 98 }
99 99 pre {
100 100 overflow: auto;
101 101 }
102 102 code,
103 103 kbd,
104 104 pre,
105 105 samp {
106 106 font-family: monospace, monospace;
107 107 font-size: 1em;
108 108 }
109 109 button,
110 110 input,
111 111 optgroup,
112 112 select,
113 113 textarea {
114 114 color: inherit;
115 115 font: inherit;
116 116 margin: 0;
117 117 }
118 118 button {
119 119 overflow: visible;
120 120 }
121 121 button,
122 122 select {
123 123 text-transform: none;
124 124 }
125 125 button,
126 126 html input[type="button"],
127 127 input[type="reset"],
128 128 input[type="submit"] {
129 129 -webkit-appearance: button;
130 130 cursor: pointer;
131 131 }
132 132 button[disabled],
133 133 html input[disabled] {
134 134 cursor: default;
135 135 }
136 136 button::-moz-focus-inner,
137 137 input::-moz-focus-inner {
138 138 border: 0;
139 139 padding: 0;
140 140 }
141 141 input {
142 142 line-height: normal;
143 143 }
144 144 input[type="checkbox"],
145 145 input[type="radio"] {
146 146 box-sizing: border-box;
147 147 padding: 0;
148 148 }
149 149 input[type="number"]::-webkit-inner-spin-button,
150 150 input[type="number"]::-webkit-outer-spin-button {
151 151 height: auto;
152 152 }
153 153 input[type="search"] {
154 154 -webkit-appearance: textfield;
155 155 box-sizing: content-box;
156 156 }
157 157 input[type="search"]::-webkit-search-cancel-button,
158 158 input[type="search"]::-webkit-search-decoration {
159 159 -webkit-appearance: none;
160 160 }
161 161 fieldset {
162 162 border: 1px solid #c0c0c0;
163 163 margin: 0 2px;
164 164 padding: 0.35em 0.625em 0.75em;
165 165 }
166 166 legend {
167 167 border: 0;
168 168 padding: 0;
169 169 }
170 170 textarea {
171 171 overflow: auto;
172 172 }
173 173 optgroup {
174 174 font-weight: bold;
175 175 }
176 176 table {
177 177 border-collapse: collapse;
178 178 border-spacing: 0;
179 179 }
180 180 td,
181 181 th {
182 182 padding: 0;
183 183 }
184 184 /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
185 185 @media print {
186 186 *,
187 187 *:before,
188 188 *:after {
189 189 background: transparent !important;
190 190 color: #000 !important;
191 191 box-shadow: none !important;
192 192 text-shadow: none !important;
193 193 }
194 194 a,
195 195 a:visited {
196 196 text-decoration: underline;
197 197 }
198 198 a[href]:after {
199 199 content: " (" attr(href) ")";
200 200 }
201 201 abbr[title]:after {
202 202 content: " (" attr(title) ")";
203 203 }
204 204 a[href^="#"]:after,
205 205 a[href^="javascript:"]:after {
206 206 content: "";
207 207 }
208 208 pre,
209 209 blockquote {
210 210 border: 1px solid #999;
211 211 page-break-inside: avoid;
212 212 }
213 213 thead {
214 214 display: table-header-group;
215 215 }
216 216 tr,
217 217 img {
218 218 page-break-inside: avoid;
219 219 }
220 220 img {
221 221 max-width: 100% !important;
222 222 }
223 223 p,
224 224 h2,
225 225 h3 {
226 226 orphans: 3;
227 227 widows: 3;
228 228 }
229 229 h2,
230 230 h3 {
231 231 page-break-after: avoid;
232 232 }
233 233 .navbar {
234 234 display: none;
235 235 }
236 236 .btn > .caret,
237 237 .dropup > .btn > .caret {
238 238 border-top-color: #000 !important;
239 239 }
240 240 .label {
241 241 border: 1px solid #000;
242 242 }
243 243 .table {
244 244 border-collapse: collapse !important;
245 245 }
246 246 .table td,
247 247 .table th {
248 248 background-color: #fff !important;
249 249 }
250 250 .table-bordered th,
251 251 .table-bordered td {
252 252 border: 1px solid #ddd !important;
253 253 }
254 254 }
255 255 @font-face {
256 256 font-family: 'Glyphicons Halflings';
257 257 src: url('../fonts/glyphicons-halflings-regular.eot');
258 258 src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
259 259 }
260 260 .glyphicon {
261 261 position: relative;
262 262 top: 1px;
263 263 display: inline-block;
264 264 font-family: 'Glyphicons Halflings';
265 265 font-style: normal;
266 266 font-weight: normal;
267 267 line-height: 1;
268 268 -webkit-font-smoothing: antialiased;
269 269 -moz-osx-font-smoothing: grayscale;
270 270 }
271 271 .glyphicon-asterisk:before {
272 272 content: "\002a";
273 273 }
274 274 .glyphicon-plus:before {
275 275 content: "\002b";
276 276 }
277 277 .glyphicon-euro:before,
278 278 .glyphicon-eur:before {
279 279 content: "\20ac";
280 280 }
281 281 .glyphicon-minus:before {
282 282 content: "\2212";
283 283 }
284 284 .glyphicon-cloud:before {
285 285 content: "\2601";
286 286 }
287 287 .glyphicon-envelope:before {
288 288 content: "\2709";
289 289 }
290 290 .glyphicon-pencil:before {
291 291 content: "\270f";
292 292 }
293 293 .glyphicon-glass:before {
294 294 content: "\e001";
295 295 }
296 296 .glyphicon-music:before {
297 297 content: "\e002";
298 298 }
299 299 .glyphicon-search:before {
300 300 content: "\e003";
301 301 }
302 302 .glyphicon-heart:before {
303 303 content: "\e005";
304 304 }
305 305 .glyphicon-star:before {
306 306 content: "\e006";
307 307 }
308 308 .glyphicon-star-empty:before {
309 309 content: "\e007";
310 310 }
311 311 .glyphicon-user:before {
312 312 content: "\e008";
313 313 }
314 314 .glyphicon-film:before {
315 315 content: "\e009";
316 316 }
317 317 .glyphicon-th-large:before {
318 318 content: "\e010";
319 319 }
320 320 .glyphicon-th:before {
321 321 content: "\e011";
322 322 }
323 323 .glyphicon-th-list:before {
324 324 content: "\e012";
325 325 }
326 326 .glyphicon-ok:before {
327 327 content: "\e013";
328 328 }
329 329 .glyphicon-remove:before {
330 330 content: "\e014";
331 331 }
332 332 .glyphicon-zoom-in:before {
333 333 content: "\e015";
334 334 }
335 335 .glyphicon-zoom-out:before {
336 336 content: "\e016";
337 337 }
338 338 .glyphicon-off:before {
339 339 content: "\e017";
340 340 }
341 341 .glyphicon-signal:before {
342 342 content: "\e018";
343 343 }
344 344 .glyphicon-cog:before {
345 345 content: "\e019";
346 346 }
347 347 .glyphicon-trash:before {
348 348 content: "\e020";
349 349 }
350 350 .glyphicon-home:before {
351 351 content: "\e021";
352 352 }
353 353 .glyphicon-file:before {
354 354 content: "\e022";
355 355 }
356 356 .glyphicon-time:before {
357 357 content: "\e023";
358 358 }
359 359 .glyphicon-road:before {
360 360 content: "\e024";
361 361 }
362 362 .glyphicon-download-alt:before {
363 363 content: "\e025";
364 364 }
365 365 .glyphicon-download:before {
366 366 content: "\e026";
367 367 }
368 368 .glyphicon-upload:before {
369 369 content: "\e027";
370 370 }
371 371 .glyphicon-inbox:before {
372 372 content: "\e028";
373 373 }
374 374 .glyphicon-play-circle:before {
375 375 content: "\e029";
376 376 }
377 377 .glyphicon-repeat:before {
378 378 content: "\e030";
379 379 }
380 380 .glyphicon-refresh:before {
381 381 content: "\e031";
382 382 }
383 383 .glyphicon-list-alt:before {
384 384 content: "\e032";
385 385 }
386 386 .glyphicon-lock:before {
387 387 content: "\e033";
388 388 }
389 389 .glyphicon-flag:before {
390 390 content: "\e034";
391 391 }
392 392 .glyphicon-headphones:before {
393 393 content: "\e035";
394 394 }
395 395 .glyphicon-volume-off:before {
396 396 content: "\e036";
397 397 }
398 398 .glyphicon-volume-down:before {
399 399 content: "\e037";
400 400 }
401 401 .glyphicon-volume-up:before {
402 402 content: "\e038";
403 403 }
404 404 .glyphicon-qrcode:before {
405 405 content: "\e039";
406 406 }
407 407 .glyphicon-barcode:before {
408 408 content: "\e040";
409 409 }
410 410 .glyphicon-tag:before {
411 411 content: "\e041";
412 412 }
413 413 .glyphicon-tags:before {
414 414 content: "\e042";
415 415 }
416 416 .glyphicon-book:before {
417 417 content: "\e043";
418 418 }
419 419 .glyphicon-bookmark:before {
420 420 content: "\e044";
421 421 }
422 422 .glyphicon-print:before {
423 423 content: "\e045";
424 424 }
425 425 .glyphicon-camera:before {
426 426 content: "\e046";
427 427 }
428 428 .glyphicon-font:before {
429 429 content: "\e047";
430 430 }
431 431 .glyphicon-bold:before {
432 432 content: "\e048";
433 433 }
434 434 .glyphicon-italic:before {
435 435 content: "\e049";
436 436 }
437 437 .glyphicon-text-height:before {
438 438 content: "\e050";
439 439 }
440 440 .glyphicon-text-width:before {
441 441 content: "\e051";
442 442 }
443 443 .glyphicon-align-left:before {
444 444 content: "\e052";
445 445 }
446 446 .glyphicon-align-center:before {
447 447 content: "\e053";
448 448 }
449 449 .glyphicon-align-right:before {
450 450 content: "\e054";
451 451 }
452 452 .glyphicon-align-justify:before {
453 453 content: "\e055";
454 454 }
455 455 .glyphicon-list:before {
456 456 content: "\e056";
457 457 }
458 458 .glyphicon-indent-left:before {
459 459 content: "\e057";
460 460 }
461 461 .glyphicon-indent-right:before {
462 462 content: "\e058";
463 463 }
464 464 .glyphicon-facetime-video:before {
465 465 content: "\e059";
466 466 }
467 467 .glyphicon-picture:before {
468 468 content: "\e060";
469 469 }
470 470 .glyphicon-map-marker:before {
471 471 content: "\e062";
472 472 }
473 473 .glyphicon-adjust:before {
474 474 content: "\e063";
475 475 }
476 476 .glyphicon-tint:before {
477 477 content: "\e064";
478 478 }
479 479 .glyphicon-edit:before {
480 480 content: "\e065";
481 481 }
482 482 .glyphicon-share:before {
483 483 content: "\e066";
484 484 }
485 485 .glyphicon-check:before {
486 486 content: "\e067";
487 487 }
488 488 .glyphicon-move:before {
489 489 content: "\e068";
490 490 }
491 491 .glyphicon-step-backward:before {
492 492 content: "\e069";
493 493 }
494 494 .glyphicon-fast-backward:before {
495 495 content: "\e070";
496 496 }
497 497 .glyphicon-backward:before {
498 498 content: "\e071";
499 499 }
500 500 .glyphicon-play:before {
501 501 content: "\e072";
502 502 }
503 503 .glyphicon-pause:before {
504 504 content: "\e073";
505 505 }
506 506 .glyphicon-stop:before {
507 507 content: "\e074";
508 508 }
509 509 .glyphicon-forward:before {
510 510 content: "\e075";
511 511 }
512 512 .glyphicon-fast-forward:before {
513 513 content: "\e076";
514 514 }
515 515 .glyphicon-step-forward:before {
516 516 content: "\e077";
517 517 }
518 518 .glyphicon-eject:before {
519 519 content: "\e078";
520 520 }
521 521 .glyphicon-chevron-left:before {
522 522 content: "\e079";
523 523 }
524 524 .glyphicon-chevron-right:before {
525 525 content: "\e080";
526 526 }
527 527 .glyphicon-plus-sign:before {
528 528 content: "\e081";
529 529 }
530 530 .glyphicon-minus-sign:before {
531 531 content: "\e082";
532 532 }
533 533 .glyphicon-remove-sign:before {
534 534 content: "\e083";
535 535 }
536 536 .glyphicon-ok-sign:before {
537 537 content: "\e084";
538 538 }
539 539 .glyphicon-question-sign:before {
540 540 content: "\e085";
541 541 }
542 542 .glyphicon-info-sign:before {
543 543 content: "\e086";
544 544 }
545 545 .glyphicon-screenshot:before {
546 546 content: "\e087";
547 547 }
548 548 .glyphicon-remove-circle:before {
549 549 content: "\e088";
550 550 }
551 551 .glyphicon-ok-circle:before {
552 552 content: "\e089";
553 553 }
554 554 .glyphicon-ban-circle:before {
555 555 content: "\e090";
556 556 }
557 557 .glyphicon-arrow-left:before {
558 558 content: "\e091";
559 559 }
560 560 .glyphicon-arrow-right:before {
561 561 content: "\e092";
562 562 }
563 563 .glyphicon-arrow-up:before {
564 564 content: "\e093";
565 565 }
566 566 .glyphicon-arrow-down:before {
567 567 content: "\e094";
568 568 }
569 569 .glyphicon-share-alt:before {
570 570 content: "\e095";
571 571 }
572 572 .glyphicon-resize-full:before {
573 573 content: "\e096";
574 574 }
575 575 .glyphicon-resize-small:before {
576 576 content: "\e097";
577 577 }
578 578 .glyphicon-exclamation-sign:before {
579 579 content: "\e101";
580 580 }
581 581 .glyphicon-gift:before {
582 582 content: "\e102";
583 583 }
584 584 .glyphicon-leaf:before {
585 585 content: "\e103";
586 586 }
587 587 .glyphicon-fire:before {
588 588 content: "\e104";
589 589 }
590 590 .glyphicon-eye-open:before {
591 591 content: "\e105";
592 592 }
593 593 .glyphicon-eye-close:before {
594 594 content: "\e106";
595 595 }
596 596 .glyphicon-warning-sign:before {
597 597 content: "\e107";
598 598 }
599 599 .glyphicon-plane:before {
600 600 content: "\e108";
601 601 }
602 602 .glyphicon-calendar:before {
603 603 content: "\e109";
604 604 }
605 605 .glyphicon-random:before {
606 606 content: "\e110";
607 607 }
608 608 .glyphicon-comment:before {
609 609 content: "\e111";
610 610 }
611 611 .glyphicon-magnet:before {
612 612 content: "\e112";
613 613 }
614 614 .glyphicon-chevron-up:before {
615 615 content: "\e113";
616 616 }
617 617 .glyphicon-chevron-down:before {
618 618 content: "\e114";
619 619 }
620 620 .glyphicon-retweet:before {
621 621 content: "\e115";
622 622 }
623 623 .glyphicon-shopping-cart:before {
624 624 content: "\e116";
625 625 }
626 626 .glyphicon-folder-close:before {
627 627 content: "\e117";
628 628 }
629 629 .glyphicon-folder-open:before {
630 630 content: "\e118";
631 631 }
632 632 .glyphicon-resize-vertical:before {
633 633 content: "\e119";
634 634 }
635 635 .glyphicon-resize-horizontal:before {
636 636 content: "\e120";
637 637 }
638 638 .glyphicon-hdd:before {
639 639 content: "\e121";
640 640 }
641 641 .glyphicon-bullhorn:before {
642 642 content: "\e122";
643 643 }
644 644 .glyphicon-bell:before {
645 645 content: "\e123";
646 646 }
647 647 .glyphicon-certificate:before {
648 648 content: "\e124";
649 649 }
650 650 .glyphicon-thumbs-up:before {
651 651 content: "\e125";
652 652 }
653 653 .glyphicon-thumbs-down:before {
654 654 content: "\e126";
655 655 }
656 656 .glyphicon-hand-right:before {
657 657 content: "\e127";
658 658 }
659 659 .glyphicon-hand-left:before {
660 660 content: "\e128";
661 661 }
662 662 .glyphicon-hand-up:before {
663 663 content: "\e129";
664 664 }
665 665 .glyphicon-hand-down:before {
666 666 content: "\e130";
667 667 }
668 668 .glyphicon-circle-arrow-right:before {
669 669 content: "\e131";
670 670 }
671 671 .glyphicon-circle-arrow-left:before {
672 672 content: "\e132";
673 673 }
674 674 .glyphicon-circle-arrow-up:before {
675 675 content: "\e133";
676 676 }
677 677 .glyphicon-circle-arrow-down:before {
678 678 content: "\e134";
679 679 }
680 680 .glyphicon-globe:before {
681 681 content: "\e135";
682 682 }
683 683 .glyphicon-wrench:before {
684 684 content: "\e136";
685 685 }
686 686 .glyphicon-tasks:before {
687 687 content: "\e137";
688 688 }
689 689 .glyphicon-filter:before {
690 690 content: "\e138";
691 691 }
692 692 .glyphicon-briefcase:before {
693 693 content: "\e139";
694 694 }
695 695 .glyphicon-fullscreen:before {
696 696 content: "\e140";
697 697 }
698 698 .glyphicon-dashboard:before {
699 699 content: "\e141";
700 700 }
701 701 .glyphicon-paperclip:before {
702 702 content: "\e142";
703 703 }
704 704 .glyphicon-heart-empty:before {
705 705 content: "\e143";
706 706 }
707 707 .glyphicon-link:before {
708 708 content: "\e144";
709 709 }
710 710 .glyphicon-phone:before {
711 711 content: "\e145";
712 712 }
713 713 .glyphicon-pushpin:before {
714 714 content: "\e146";
715 715 }
716 716 .glyphicon-usd:before {
717 717 content: "\e148";
718 718 }
719 719 .glyphicon-gbp:before {
720 720 content: "\e149";
721 721 }
722 722 .glyphicon-sort:before {
723 723 content: "\e150";
724 724 }
725 725 .glyphicon-sort-by-alphabet:before {
726 726 content: "\e151";
727 727 }
728 728 .glyphicon-sort-by-alphabet-alt:before {
729 729 content: "\e152";
730 730 }
731 731 .glyphicon-sort-by-order:before {
732 732 content: "\e153";
733 733 }
734 734 .glyphicon-sort-by-order-alt:before {
735 735 content: "\e154";
736 736 }
737 737 .glyphicon-sort-by-attributes:before {
738 738 content: "\e155";
739 739 }
740 740 .glyphicon-sort-by-attributes-alt:before {
741 741 content: "\e156";
742 742 }
743 743 .glyphicon-unchecked:before {
744 744 content: "\e157";
745 745 }
746 746 .glyphicon-expand:before {
747 747 content: "\e158";
748 748 }
749 749 .glyphicon-collapse-down:before {
750 750 content: "\e159";
751 751 }
752 752 .glyphicon-collapse-up:before {
753 753 content: "\e160";
754 754 }
755 755 .glyphicon-log-in:before {
756 756 content: "\e161";
757 757 }
758 758 .glyphicon-flash:before {
759 759 content: "\e162";
760 760 }
761 761 .glyphicon-log-out:before {
762 762 content: "\e163";
763 763 }
764 764 .glyphicon-new-window:before {
765 765 content: "\e164";
766 766 }
767 767 .glyphicon-record:before {
768 768 content: "\e165";
769 769 }
770 770 .glyphicon-save:before {
771 771 content: "\e166";
772 772 }
773 773 .glyphicon-open:before {
774 774 content: "\e167";
775 775 }
776 776 .glyphicon-saved:before {
777 777 content: "\e168";
778 778 }
779 779 .glyphicon-import:before {
780 780 content: "\e169";
781 781 }
782 782 .glyphicon-export:before {
783 783 content: "\e170";
784 784 }
785 785 .glyphicon-send:before {
786 786 content: "\e171";
787 787 }
788 788 .glyphicon-floppy-disk:before {
789 789 content: "\e172";
790 790 }
791 791 .glyphicon-floppy-saved:before {
792 792 content: "\e173";
793 793 }
794 794 .glyphicon-floppy-remove:before {
795 795 content: "\e174";
796 796 }
797 797 .glyphicon-floppy-save:before {
798 798 content: "\e175";
799 799 }
800 800 .glyphicon-floppy-open:before {
801 801 content: "\e176";
802 802 }
803 803 .glyphicon-credit-card:before {
804 804 content: "\e177";
805 805 }
806 806 .glyphicon-transfer:before {
807 807 content: "\e178";
808 808 }
809 809 .glyphicon-cutlery:before {
810 810 content: "\e179";
811 811 }
812 812 .glyphicon-header:before {
813 813 content: "\e180";
814 814 }
815 815 .glyphicon-compressed:before {
816 816 content: "\e181";
817 817 }
818 818 .glyphicon-earphone:before {
819 819 content: "\e182";
820 820 }
821 821 .glyphicon-phone-alt:before {
822 822 content: "\e183";
823 823 }
824 824 .glyphicon-tower:before {
825 825 content: "\e184";
826 826 }
827 827 .glyphicon-stats:before {
828 828 content: "\e185";
829 829 }
830 830 .glyphicon-sd-video:before {
831 831 content: "\e186";
832 832 }
833 833 .glyphicon-hd-video:before {
834 834 content: "\e187";
835 835 }
836 836 .glyphicon-subtitles:before {
837 837 content: "\e188";
838 838 }
839 839 .glyphicon-sound-stereo:before {
840 840 content: "\e189";
841 841 }
842 842 .glyphicon-sound-dolby:before {
843 843 content: "\e190";
844 844 }
845 845 .glyphicon-sound-5-1:before {
846 846 content: "\e191";
847 847 }
848 848 .glyphicon-sound-6-1:before {
849 849 content: "\e192";
850 850 }
851 851 .glyphicon-sound-7-1:before {
852 852 content: "\e193";
853 853 }
854 854 .glyphicon-copyright-mark:before {
855 855 content: "\e194";
856 856 }
857 857 .glyphicon-registration-mark:before {
858 858 content: "\e195";
859 859 }
860 860 .glyphicon-cloud-download:before {
861 861 content: "\e197";
862 862 }
863 863 .glyphicon-cloud-upload:before {
864 864 content: "\e198";
865 865 }
866 866 .glyphicon-tree-conifer:before {
867 867 content: "\e199";
868 868 }
869 869 .glyphicon-tree-deciduous:before {
870 870 content: "\e200";
871 871 }
872 872 .glyphicon-cd:before {
873 873 content: "\e201";
874 874 }
875 875 .glyphicon-save-file:before {
876 876 content: "\e202";
877 877 }
878 878 .glyphicon-open-file:before {
879 879 content: "\e203";
880 880 }
881 881 .glyphicon-level-up:before {
882 882 content: "\e204";
883 883 }
884 884 .glyphicon-copy:before {
885 885 content: "\e205";
886 886 }
887 887 .glyphicon-paste:before {
888 888 content: "\e206";
889 889 }
890 890 .glyphicon-alert:before {
891 891 content: "\e209";
892 892 }
893 893 .glyphicon-equalizer:before {
894 894 content: "\e210";
895 895 }
896 896 .glyphicon-king:before {
897 897 content: "\e211";
898 898 }
899 899 .glyphicon-queen:before {
900 900 content: "\e212";
901 901 }
902 902 .glyphicon-pawn:before {
903 903 content: "\e213";
904 904 }
905 905 .glyphicon-bishop:before {
906 906 content: "\e214";
907 907 }
908 908 .glyphicon-knight:before {
909 909 content: "\e215";
910 910 }
911 911 .glyphicon-baby-formula:before {
912 912 content: "\e216";
913 913 }
914 914 .glyphicon-tent:before {
915 915 content: "\26fa";
916 916 }
917 917 .glyphicon-blackboard:before {
918 918 content: "\e218";
919 919 }
920 920 .glyphicon-bed:before {
921 921 content: "\e219";
922 922 }
923 923 .glyphicon-apple:before {
924 924 content: "\f8ff";
925 925 }
926 926 .glyphicon-erase:before {
927 927 content: "\e221";
928 928 }
929 929 .glyphicon-hourglass:before {
930 930 content: "\231b";
931 931 }
932 932 .glyphicon-lamp:before {
933 933 content: "\e223";
934 934 }
935 935 .glyphicon-duplicate:before {
936 936 content: "\e224";
937 937 }
938 938 .glyphicon-piggy-bank:before {
939 939 content: "\e225";
940 940 }
941 941 .glyphicon-scissors:before {
942 942 content: "\e226";
943 943 }
944 944 .glyphicon-bitcoin:before {
945 945 content: "\e227";
946 946 }
947 947 .glyphicon-btc:before {
948 948 content: "\e227";
949 949 }
950 950 .glyphicon-xbt:before {
951 951 content: "\e227";
952 952 }
953 953 .glyphicon-yen:before {
954 954 content: "\00a5";
955 955 }
956 956 .glyphicon-jpy:before {
957 957 content: "\00a5";
958 958 }
959 959 .glyphicon-ruble:before {
960 960 content: "\20bd";
961 961 }
962 962 .glyphicon-rub:before {
963 963 content: "\20bd";
964 964 }
965 965 .glyphicon-scale:before {
966 966 content: "\e230";
967 967 }
968 968 .glyphicon-ice-lolly:before {
969 969 content: "\e231";
970 970 }
971 971 .glyphicon-ice-lolly-tasted:before {
972 972 content: "\e232";
973 973 }
974 974 .glyphicon-education:before {
975 975 content: "\e233";
976 976 }
977 977 .glyphicon-option-horizontal:before {
978 978 content: "\e234";
979 979 }
980 980 .glyphicon-option-vertical:before {
981 981 content: "\e235";
982 982 }
983 983 .glyphicon-menu-hamburger:before {
984 984 content: "\e236";
985 985 }
986 986 .glyphicon-modal-window:before {
987 987 content: "\e237";
988 988 }
989 989 .glyphicon-oil:before {
990 990 content: "\e238";
991 991 }
992 992 .glyphicon-grain:before {
993 993 content: "\e239";
994 994 }
995 995 .glyphicon-sunglasses:before {
996 996 content: "\e240";
997 997 }
998 998 .glyphicon-text-size:before {
999 999 content: "\e241";
1000 1000 }
1001 1001 .glyphicon-text-color:before {
1002 1002 content: "\e242";
1003 1003 }
1004 1004 .glyphicon-text-background:before {
1005 1005 content: "\e243";
1006 1006 }
1007 1007 .glyphicon-object-align-top:before {
1008 1008 content: "\e244";
1009 1009 }
1010 1010 .glyphicon-object-align-bottom:before {
1011 1011 content: "\e245";
1012 1012 }
1013 1013 .glyphicon-object-align-horizontal:before {
1014 1014 content: "\e246";
1015 1015 }
1016 1016 .glyphicon-object-align-left:before {
1017 1017 content: "\e247";
1018 1018 }
1019 1019 .glyphicon-object-align-vertical:before {
1020 1020 content: "\e248";
1021 1021 }
1022 1022 .glyphicon-object-align-right:before {
1023 1023 content: "\e249";
1024 1024 }
1025 1025 .glyphicon-triangle-right:before {
1026 1026 content: "\e250";
1027 1027 }
1028 1028 .glyphicon-triangle-left:before {
1029 1029 content: "\e251";
1030 1030 }
1031 1031 .glyphicon-triangle-bottom:before {
1032 1032 content: "\e252";
1033 1033 }
1034 1034 .glyphicon-triangle-top:before {
1035 1035 content: "\e253";
1036 1036 }
1037 1037 .glyphicon-console:before {
1038 1038 content: "\e254";
1039 1039 }
1040 1040 .glyphicon-superscript:before {
1041 1041 content: "\e255";
1042 1042 }
1043 1043 .glyphicon-subscript:before {
1044 1044 content: "\e256";
1045 1045 }
1046 1046 .glyphicon-menu-left:before {
1047 1047 content: "\e257";
1048 1048 }
1049 1049 .glyphicon-menu-right:before {
1050 1050 content: "\e258";
1051 1051 }
1052 1052 .glyphicon-menu-down:before {
1053 1053 content: "\e259";
1054 1054 }
1055 1055 .glyphicon-menu-up:before {
1056 1056 content: "\e260";
1057 1057 }
1058 1058 * {
1059 1059 -webkit-box-sizing: border-box;
1060 1060 -moz-box-sizing: border-box;
1061 1061 box-sizing: border-box;
1062 1062 }
1063 1063 *:before,
1064 1064 *:after {
1065 1065 -webkit-box-sizing: border-box;
1066 1066 -moz-box-sizing: border-box;
1067 1067 box-sizing: border-box;
1068 1068 }
1069 1069 html {
1070 1070 font-size: 10px;
1071 1071 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1072 1072 }
1073 1073 body {
1074 1074 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1075 1075 font-size: 14px;
1076 1076 line-height: 1.42857143;
1077 1077 color: #333333;
1078 1078 background-color: #fff;
1079 1079 }
1080 1080 input,
1081 1081 button,
1082 1082 select,
1083 1083 textarea {
1084 1084 font-family: inherit;
1085 1085 font-size: inherit;
1086 1086 line-height: inherit;
1087 1087 }
1088 1088 a {
1089 1089 color: #337ab7;
1090 1090 text-decoration: none;
1091 1091 }
1092 1092 a:hover,
1093 1093 a:focus {
1094 1094 color: #23527c;
1095 1095 text-decoration: underline;
1096 1096 }
1097 1097 a:focus {
1098 1098 outline: thin dotted;
1099 1099 outline: 5px auto -webkit-focus-ring-color;
1100 1100 outline-offset: -2px;
1101 1101 }
1102 1102 figure {
1103 1103 margin: 0;
1104 1104 }
1105 1105 img {
1106 1106 vertical-align: middle;
1107 1107 }
1108 1108 .img-responsive,
1109 1109 .thumbnail > img,
1110 1110 .thumbnail a > img,
1111 1111 .carousel-inner > .item > img,
1112 1112 .carousel-inner > .item > a > img {
1113 1113 display: block;
1114 1114 max-width: 100%;
1115 1115 height: auto;
1116 1116 }
1117 1117 .img-rounded {
1118 1118 border-radius: 6px;
1119 1119 }
1120 1120 .img-thumbnail {
1121 1121 padding: 4px;
1122 1122 line-height: 1.42857143;
1123 1123 background-color: #fff;
1124 1124 border: 1px solid #ddd;
1125 1125 border-radius: 4px;
1126 1126 -webkit-transition: all 0.2s ease-in-out;
1127 1127 -o-transition: all 0.2s ease-in-out;
1128 1128 transition: all 0.2s ease-in-out;
1129 1129 display: inline-block;
1130 1130 max-width: 100%;
1131 1131 height: auto;
1132 1132 }
1133 1133 .img-circle {
1134 1134 border-radius: 50%;
1135 1135 }
1136 1136 hr {
1137 1137 margin-top: 20px;
1138 1138 margin-bottom: 20px;
1139 1139 border: 0;
1140 1140 border-top: 1px solid #eeeeee;
1141 1141 }
1142 1142 .sr-only {
1143 1143 position: absolute;
1144 1144 width: 1px;
1145 1145 height: 1px;
1146 1146 margin: -1px;
1147 1147 padding: 0;
1148 1148 overflow: hidden;
1149 1149 clip: rect(0, 0, 0, 0);
1150 1150 border: 0;
1151 1151 }
1152 1152 .sr-only-focusable:active,
1153 1153 .sr-only-focusable:focus {
1154 1154 position: static;
1155 1155 width: auto;
1156 1156 height: auto;
1157 1157 margin: 0;
1158 1158 overflow: visible;
1159 1159 clip: auto;
1160 1160 }
1161 1161 [role="button"] {
1162 1162 cursor: pointer;
1163 1163 }
1164 1164 h1,
1165 1165 h2,
1166 1166 h3,
1167 1167 h4,
1168 1168 h5,
1169 1169 h6,
1170 1170 .h1,
1171 1171 .h2,
1172 1172 .h3,
1173 1173 .h4,
1174 1174 .h5,
1175 1175 .h6 {
1176 1176 font-family: inherit;
1177 1177 font-weight: 500;
1178 1178 line-height: 1.1;
1179 1179 color: inherit;
1180 1180 }
1181 1181 h1 small,
1182 1182 h2 small,
1183 1183 h3 small,
1184 1184 h4 small,
1185 1185 h5 small,
1186 1186 h6 small,
1187 1187 .h1 small,
1188 1188 .h2 small,
1189 1189 .h3 small,
1190 1190 .h4 small,
1191 1191 .h5 small,
1192 1192 .h6 small,
1193 1193 h1 .small,
1194 1194 h2 .small,
1195 1195 h3 .small,
1196 1196 h4 .small,
1197 1197 h5 .small,
1198 1198 h6 .small,
1199 1199 .h1 .small,
1200 1200 .h2 .small,
1201 1201 .h3 .small,
1202 1202 .h4 .small,
1203 1203 .h5 .small,
1204 1204 .h6 .small {
1205 1205 font-weight: normal;
1206 1206 line-height: 1;
1207 1207 color: #777777;
1208 1208 }
1209 1209 h1,
1210 1210 .h1,
1211 1211 h2,
1212 1212 .h2,
1213 1213 h3,
1214 1214 .h3 {
1215 1215 margin-top: 20px;
1216 1216 margin-bottom: 10px;
1217 1217 }
1218 1218 h1 small,
1219 1219 .h1 small,
1220 1220 h2 small,
1221 1221 .h2 small,
1222 1222 h3 small,
1223 1223 .h3 small,
1224 1224 h1 .small,
1225 1225 .h1 .small,
1226 1226 h2 .small,
1227 1227 .h2 .small,
1228 1228 h3 .small,
1229 1229 .h3 .small {
1230 1230 font-size: 65%;
1231 1231 }
1232 1232 h4,
1233 1233 .h4,
1234 1234 h5,
1235 1235 .h5,
1236 1236 h6,
1237 1237 .h6 {
1238 1238 margin-top: 10px;
1239 1239 margin-bottom: 10px;
1240 1240 }
1241 1241 h4 small,
1242 1242 .h4 small,
1243 1243 h5 small,
1244 1244 .h5 small,
1245 1245 h6 small,
1246 1246 .h6 small,
1247 1247 h4 .small,
1248 1248 .h4 .small,
1249 1249 h5 .small,
1250 1250 .h5 .small,
1251 1251 h6 .small,
1252 1252 .h6 .small {
1253 1253 font-size: 75%;
1254 1254 }
1255 1255 h1,
1256 1256 .h1 {
1257 1257 font-size: 36px;
1258 1258 }
1259 1259 h2,
1260 1260 .h2 {
1261 1261 font-size: 30px;
1262 1262 }
1263 1263 h3,
1264 1264 .h3 {
1265 1265 font-size: 24px;
1266 1266 }
1267 1267 h4,
1268 1268 .h4 {
1269 1269 font-size: 18px;
1270 1270 }
1271 1271 h5,
1272 1272 .h5 {
1273 1273 font-size: 14px;
1274 1274 }
1275 1275 h6,
1276 1276 .h6 {
1277 1277 font-size: 12px;
1278 1278 }
1279 1279 p {
1280 1280 margin: 0 0 10px;
1281 1281 }
1282 1282 .lead {
1283 1283 margin-bottom: 20px;
1284 1284 font-size: 16px;
1285 1285 font-weight: 300;
1286 1286 line-height: 1.4;
1287 1287 }
1288 1288 @media (min-width: 768px) {
1289 1289 .lead {
1290 1290 font-size: 21px;
1291 1291 }
1292 1292 }
1293 1293 small,
1294 1294 .small {
1295 1295 font-size: 85%;
1296 1296 }
1297 1297 mark,
1298 1298 .mark {
1299 1299 background-color: #fcf8e3;
1300 1300 padding: .2em;
1301 1301 }
1302 1302 .text-left {
1303 1303 text-align: left;
1304 1304 }
1305 1305 .text-right {
1306 1306 text-align: right;
1307 1307 }
1308 1308 .text-center {
1309 1309 text-align: center;
1310 1310 }
1311 1311 .text-justify {
1312 1312 text-align: justify;
1313 1313 }
1314 1314 .text-nowrap {
1315 1315 white-space: nowrap;
1316 1316 }
1317 1317 .text-lowercase {
1318 1318 text-transform: lowercase;
1319 1319 }
1320 1320 .text-uppercase {
1321 1321 text-transform: uppercase;
1322 1322 }
1323 1323 .text-capitalize {
1324 1324 text-transform: capitalize;
1325 1325 }
1326 1326 .text-muted {
1327 1327 color: #777777;
1328 1328 }
1329 1329 .text-primary {
1330 1330 color: #337ab7;
1331 1331 }
1332 1332 a.text-primary:hover,
1333 1333 a.text-primary:focus {
1334 1334 color: #286090;
1335 1335 }
1336 1336 .text-success {
1337 1337 color: #3c763d;
1338 1338 }
1339 1339 a.text-success:hover,
1340 1340 a.text-success:focus {
1341 1341 color: #2b542c;
1342 1342 }
1343 1343 .text-info {
1344 1344 color: #31708f;
1345 1345 }
1346 1346 a.text-info:hover,
1347 1347 a.text-info:focus {
1348 1348 color: #245269;
1349 1349 }
1350 1350 .text-warning {
1351 1351 color: #8a6d3b;
1352 1352 }
1353 1353 a.text-warning:hover,
1354 1354 a.text-warning:focus {
1355 1355 color: #66512c;
1356 1356 }
1357 1357 .text-danger {
1358 1358 color: #a94442;
1359 1359 }
1360 1360 a.text-danger:hover,
1361 1361 a.text-danger:focus {
1362 1362 color: #843534;
1363 1363 }
1364 1364 .bg-primary {
1365 1365 color: #fff;
1366 1366 background-color: #337ab7;
1367 1367 }
1368 1368 a.bg-primary:hover,
1369 1369 a.bg-primary:focus {
1370 1370 background-color: #286090;
1371 1371 }
1372 1372 .bg-success {
1373 1373 background-color: #dff0d8;
1374 1374 }
1375 1375 a.bg-success:hover,
1376 1376 a.bg-success:focus {
1377 1377 background-color: #c1e2b3;
1378 1378 }
1379 1379 .bg-info {
1380 1380 background-color: #d9edf7;
1381 1381 }
1382 1382 a.bg-info:hover,
1383 1383 a.bg-info:focus {
1384 1384 background-color: #afd9ee;
1385 1385 }
1386 1386 .bg-warning {
1387 1387 background-color: #fcf8e3;
1388 1388 }
1389 1389 a.bg-warning:hover,
1390 1390 a.bg-warning:focus {
1391 1391 background-color: #f7ecb5;
1392 1392 }
1393 1393 .bg-danger {
1394 1394 background-color: #f2dede;
1395 1395 }
1396 1396 a.bg-danger:hover,
1397 1397 a.bg-danger:focus {
1398 1398 background-color: #e4b9b9;
1399 1399 }
1400 1400 .page-header {
1401 1401 padding-bottom: 9px;
1402 1402 margin: 40px 0 20px;
1403 1403 border-bottom: 1px solid #eeeeee;
1404 1404 }
1405 1405 ul,
1406 1406 ol {
1407 1407 margin-top: 0;
1408 1408 margin-bottom: 10px;
1409 1409 }
1410 1410 ul ul,
1411 1411 ol ul,
1412 1412 ul ol,
1413 1413 ol ol {
1414 1414 margin-bottom: 0;
1415 1415 }
1416 1416 .list-unstyled {
1417 1417 padding-left: 0;
1418 1418 list-style: none;
1419 1419 }
1420 1420 .list-inline {
1421 1421 padding-left: 0;
1422 1422 list-style: none;
1423 1423 margin-left: -5px;
1424 1424 }
1425 1425 .list-inline > li {
1426 1426 display: inline-block;
1427 1427 padding-left: 5px;
1428 1428 padding-right: 5px;
1429 1429 }
1430 1430 dl {
1431 1431 margin-top: 0;
1432 1432 margin-bottom: 20px;
1433 1433 }
1434 1434 dt,
1435 1435 dd {
1436 1436 line-height: 1.42857143;
1437 1437 }
1438 1438 dt {
1439 1439 font-weight: bold;
1440 1440 }
1441 1441 dd {
1442 1442 margin-left: 0;
1443 1443 }
1444 1444 @media (min-width: 768px) {
1445 1445 .dl-horizontal dt {
1446 1446 float: left;
1447 1447 width: 160px;
1448 1448 clear: left;
1449 1449 text-align: right;
1450 1450 overflow: hidden;
1451 1451 text-overflow: ellipsis;
1452 1452 white-space: nowrap;
1453 1453 }
1454 1454 .dl-horizontal dd {
1455 1455 margin-left: 180px;
1456 1456 }
1457 1457 }
1458 1458 abbr[title],
1459 1459 abbr[data-original-title] {
1460 1460 cursor: help;
1461 1461 border-bottom: 1px dotted #777777;
1462 1462 }
1463 1463 .initialism {
1464 1464 font-size: 90%;
1465 1465 text-transform: uppercase;
1466 1466 }
1467 1467 blockquote {
1468 1468 padding: 10px 20px;
1469 1469 margin: 0 0 20px;
1470 1470 font-size: 17.5px;
1471 1471 border-left: 5px solid #eeeeee;
1472 1472 }
1473 1473 blockquote p:last-child,
1474 1474 blockquote ul:last-child,
1475 1475 blockquote ol:last-child {
1476 1476 margin-bottom: 0;
1477 1477 }
1478 1478 blockquote footer,
1479 1479 blockquote small,
1480 1480 blockquote .small {
1481 1481 display: block;
1482 1482 font-size: 80%;
1483 1483 line-height: 1.42857143;
1484 1484 color: #777777;
1485 1485 }
1486 1486 blockquote footer:before,
1487 1487 blockquote small:before,
1488 1488 blockquote .small:before {
1489 1489 content: '\2014 \00A0';
1490 1490 }
1491 1491 .blockquote-reverse,
1492 1492 blockquote.pull-right {
1493 1493 padding-right: 15px;
1494 1494 padding-left: 0;
1495 1495 border-right: 5px solid #eeeeee;
1496 1496 border-left: 0;
1497 1497 text-align: right;
1498 1498 }
1499 1499 .blockquote-reverse footer:before,
1500 1500 blockquote.pull-right footer:before,
1501 1501 .blockquote-reverse small:before,
1502 1502 blockquote.pull-right small:before,
1503 1503 .blockquote-reverse .small:before,
1504 1504 blockquote.pull-right .small:before {
1505 1505 content: '';
1506 1506 }
1507 1507 .blockquote-reverse footer:after,
1508 1508 blockquote.pull-right footer:after,
1509 1509 .blockquote-reverse small:after,
1510 1510 blockquote.pull-right small:after,
1511 1511 .blockquote-reverse .small:after,
1512 1512 blockquote.pull-right .small:after {
1513 1513 content: '\00A0 \2014';
1514 1514 }
1515 1515 address {
1516 1516 margin-bottom: 20px;
1517 1517 font-style: normal;
1518 1518 line-height: 1.42857143;
1519 1519 }
1520 1520 code,
1521 1521 kbd,
1522 1522 pre,
1523 1523 samp {
1524 1524 font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1525 1525 }
1526 1526 code {
1527 1527 padding: 2px 4px;
1528 1528 font-size: 90%;
1529 1529 color: #c7254e;
1530 1530 background-color: #f9f2f4;
1531 1531 border-radius: 4px;
1532 1532 }
1533 1533 kbd {
1534 1534 padding: 2px 4px;
1535 1535 font-size: 90%;
1536 1536 color: #fff;
1537 1537 background-color: #333;
1538 1538 border-radius: 3px;
1539 1539 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1540 1540 }
1541 1541 kbd kbd {
1542 1542 padding: 0;
1543 1543 font-size: 100%;
1544 1544 font-weight: bold;
1545 1545 box-shadow: none;
1546 1546 }
1547 1547 pre {
1548 1548 display: block;
1549 1549 padding: 9.5px;
1550 1550 margin: 0 0 10px;
1551 1551 font-size: 13px;
1552 1552 line-height: 1.42857143;
1553 1553 word-break: break-all;
1554 1554 word-wrap: break-word;
1555 1555 color: #333333;
1556 1556 background-color: #f5f5f5;
1557 1557 border: 1px solid #ccc;
1558 1558 border-radius: 4px;
1559 1559 }
1560 1560 pre code {
1561 1561 padding: 0;
1562 1562 font-size: inherit;
1563 1563 color: inherit;
1564 1564 white-space: pre-wrap;
1565 1565 background-color: transparent;
1566 1566 border-radius: 0;
1567 1567 }
1568 1568 .pre-scrollable {
1569 1569 max-height: 340px;
1570 1570 overflow-y: scroll;
1571 1571 }
1572 1572 .container {
1573 1573 margin-right: auto;
1574 1574 margin-left: auto;
1575 1575 padding-left: 5px;
1576 1576 padding-right: 5px;
1577 1577 }
1578 1578 @media (min-width: 768px) {
1579 1579 .container {
1580 1580 width: 730px;
1581 1581 }
1582 1582 }
1583 1583 @media (min-width: 992px) {
1584 1584 .container {
1585 1585 width: 950px;
1586 1586 }
1587 1587 }
1588 1588 @media (min-width: 1200px) {
1589 1589 .container {
1590 1590 width: 1150px;
1591 1591 }
1592 1592 }
1593 1593 .container-fluid {
1594 1594 margin-right: auto;
1595 1595 margin-left: auto;
1596 1596 padding-left: 5px;
1597 1597 padding-right: 5px;
1598 1598 }
1599 1599 .row {
1600 1600 margin-left: -5px;
1601 1601 margin-right: -5px;
1602 1602 }
1603 1603 .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
1604 1604 position: relative;
1605 1605 min-height: 1px;
1606 1606 padding-left: 5px;
1607 1607 padding-right: 5px;
1608 1608 }
1609 1609 .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
1610 1610 float: left;
1611 1611 }
1612 1612 .col-xs-12 {
1613 1613 width: 100%;
1614 1614 }
1615 1615 .col-xs-11 {
1616 1616 width: 91.66666667%;
1617 1617 }
1618 1618 .col-xs-10 {
1619 1619 width: 83.33333333%;
1620 1620 }
1621 1621 .col-xs-9 {
1622 1622 width: 75%;
1623 1623 }
1624 1624 .col-xs-8 {
1625 1625 width: 66.66666667%;
1626 1626 }
1627 1627 .col-xs-7 {
1628 1628 width: 58.33333333%;
1629 1629 }
1630 1630 .col-xs-6 {
1631 1631 width: 50%;
1632 1632 }
1633 1633 .col-xs-5 {
1634 1634 width: 41.66666667%;
1635 1635 }
1636 1636 .col-xs-4 {
1637 1637 width: 33.33333333%;
1638 1638 }
1639 1639 .col-xs-3 {
1640 1640 width: 25%;
1641 1641 }
1642 1642 .col-xs-2 {
1643 1643 width: 16.66666667%;
1644 1644 }
1645 1645 .col-xs-1 {
1646 1646 width: 8.33333333%;
1647 1647 }
1648 1648 .col-xs-pull-12 {
1649 1649 right: 100%;
1650 1650 }
1651 1651 .col-xs-pull-11 {
1652 1652 right: 91.66666667%;
1653 1653 }
1654 1654 .col-xs-pull-10 {
1655 1655 right: 83.33333333%;
1656 1656 }
1657 1657 .col-xs-pull-9 {
1658 1658 right: 75%;
1659 1659 }
1660 1660 .col-xs-pull-8 {
1661 1661 right: 66.66666667%;
1662 1662 }
1663 1663 .col-xs-pull-7 {
1664 1664 right: 58.33333333%;
1665 1665 }
1666 1666 .col-xs-pull-6 {
1667 1667 right: 50%;
1668 1668 }
1669 1669 .col-xs-pull-5 {
1670 1670 right: 41.66666667%;
1671 1671 }
1672 1672 .col-xs-pull-4 {
1673 1673 right: 33.33333333%;
1674 1674 }
1675 1675 .col-xs-pull-3 {
1676 1676 right: 25%;
1677 1677 }
1678 1678 .col-xs-pull-2 {
1679 1679 right: 16.66666667%;
1680 1680 }
1681 1681 .col-xs-pull-1 {
1682 1682 right: 8.33333333%;
1683 1683 }
1684 1684 .col-xs-pull-0 {
1685 1685 right: auto;
1686 1686 }
1687 1687 .col-xs-push-12 {
1688 1688 left: 100%;
1689 1689 }
1690 1690 .col-xs-push-11 {
1691 1691 left: 91.66666667%;
1692 1692 }
1693 1693 .col-xs-push-10 {
1694 1694 left: 83.33333333%;
1695 1695 }
1696 1696 .col-xs-push-9 {
1697 1697 left: 75%;
1698 1698 }
1699 1699 .col-xs-push-8 {
1700 1700 left: 66.66666667%;
1701 1701 }
1702 1702 .col-xs-push-7 {
1703 1703 left: 58.33333333%;
1704 1704 }
1705 1705 .col-xs-push-6 {
1706 1706 left: 50%;
1707 1707 }
1708 1708 .col-xs-push-5 {
1709 1709 left: 41.66666667%;
1710 1710 }
1711 1711 .col-xs-push-4 {
1712 1712 left: 33.33333333%;
1713 1713 }
1714 1714 .col-xs-push-3 {
1715 1715 left: 25%;
1716 1716 }
1717 1717 .col-xs-push-2 {
1718 1718 left: 16.66666667%;
1719 1719 }
1720 1720 .col-xs-push-1 {
1721 1721 left: 8.33333333%;
1722 1722 }
1723 1723 .col-xs-push-0 {
1724 1724 left: auto;
1725 1725 }
1726 1726 .col-xs-offset-12 {
1727 1727 margin-left: 100%;
1728 1728 }
1729 1729 .col-xs-offset-11 {
1730 1730 margin-left: 91.66666667%;
1731 1731 }
1732 1732 .col-xs-offset-10 {
1733 1733 margin-left: 83.33333333%;
1734 1734 }
1735 1735 .col-xs-offset-9 {
1736 1736 margin-left: 75%;
1737 1737 }
1738 1738 .col-xs-offset-8 {
1739 1739 margin-left: 66.66666667%;
1740 1740 }
1741 1741 .col-xs-offset-7 {
1742 1742 margin-left: 58.33333333%;
1743 1743 }
1744 1744 .col-xs-offset-6 {
1745 1745 margin-left: 50%;
1746 1746 }
1747 1747 .col-xs-offset-5 {
1748 1748 margin-left: 41.66666667%;
1749 1749 }
1750 1750 .col-xs-offset-4 {
1751 1751 margin-left: 33.33333333%;
1752 1752 }
1753 1753 .col-xs-offset-3 {
1754 1754 margin-left: 25%;
1755 1755 }
1756 1756 .col-xs-offset-2 {
1757 1757 margin-left: 16.66666667%;
1758 1758 }
1759 1759 .col-xs-offset-1 {
1760 1760 margin-left: 8.33333333%;
1761 1761 }
1762 1762 .col-xs-offset-0 {
1763 1763 margin-left: 0%;
1764 1764 }
1765 1765 @media (min-width: 768px) {
1766 1766 .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
1767 1767 float: left;
1768 1768 }
1769 1769 .col-sm-12 {
1770 1770 width: 100%;
1771 1771 }
1772 1772 .col-sm-11 {
1773 1773 width: 91.66666667%;
1774 1774 }
1775 1775 .col-sm-10 {
1776 1776 width: 83.33333333%;
1777 1777 }
1778 1778 .col-sm-9 {
1779 1779 width: 75%;
1780 1780 }
1781 1781 .col-sm-8 {
1782 1782 width: 66.66666667%;
1783 1783 }
1784 1784 .col-sm-7 {
1785 1785 width: 58.33333333%;
1786 1786 }
1787 1787 .col-sm-6 {
1788 1788 width: 50%;
1789 1789 }
1790 1790 .col-sm-5 {
1791 1791 width: 41.66666667%;
1792 1792 }
1793 1793 .col-sm-4 {
1794 1794 width: 33.33333333%;
1795 1795 }
1796 1796 .col-sm-3 {
1797 1797 width: 25%;
1798 1798 }
1799 1799 .col-sm-2 {
1800 1800 width: 16.66666667%;
1801 1801 }
1802 1802 .col-sm-1 {
1803 1803 width: 8.33333333%;
1804 1804 }
1805 1805 .col-sm-pull-12 {
1806 1806 right: 100%;
1807 1807 }
1808 1808 .col-sm-pull-11 {
1809 1809 right: 91.66666667%;
1810 1810 }
1811 1811 .col-sm-pull-10 {
1812 1812 right: 83.33333333%;
1813 1813 }
1814 1814 .col-sm-pull-9 {
1815 1815 right: 75%;
1816 1816 }
1817 1817 .col-sm-pull-8 {
1818 1818 right: 66.66666667%;
1819 1819 }
1820 1820 .col-sm-pull-7 {
1821 1821 right: 58.33333333%;
1822 1822 }
1823 1823 .col-sm-pull-6 {
1824 1824 right: 50%;
1825 1825 }
1826 1826 .col-sm-pull-5 {
1827 1827 right: 41.66666667%;
1828 1828 }
1829 1829 .col-sm-pull-4 {
1830 1830 right: 33.33333333%;
1831 1831 }
1832 1832 .col-sm-pull-3 {
1833 1833 right: 25%;
1834 1834 }
1835 1835 .col-sm-pull-2 {
1836 1836 right: 16.66666667%;
1837 1837 }
1838 1838 .col-sm-pull-1 {
1839 1839 right: 8.33333333%;
1840 1840 }
1841 1841 .col-sm-pull-0 {
1842 1842 right: auto;
1843 1843 }
1844 1844 .col-sm-push-12 {
1845 1845 left: 100%;
1846 1846 }
1847 1847 .col-sm-push-11 {
1848 1848 left: 91.66666667%;
1849 1849 }
1850 1850 .col-sm-push-10 {
1851 1851 left: 83.33333333%;
1852 1852 }
1853 1853 .col-sm-push-9 {
1854 1854 left: 75%;
1855 1855 }
1856 1856 .col-sm-push-8 {
1857 1857 left: 66.66666667%;
1858 1858 }
1859 1859 .col-sm-push-7 {
1860 1860 left: 58.33333333%;
1861 1861 }
1862 1862 .col-sm-push-6 {
1863 1863 left: 50%;
1864 1864 }
1865 1865 .col-sm-push-5 {
1866 1866 left: 41.66666667%;
1867 1867 }
1868 1868 .col-sm-push-4 {
1869 1869 left: 33.33333333%;
1870 1870 }
1871 1871 .col-sm-push-3 {
1872 1872 left: 25%;
1873 1873 }
1874 1874 .col-sm-push-2 {
1875 1875 left: 16.66666667%;
1876 1876 }
1877 1877 .col-sm-push-1 {
1878 1878 left: 8.33333333%;
1879 1879 }
1880 1880 .col-sm-push-0 {
1881 1881 left: auto;
1882 1882 }
1883 1883 .col-sm-offset-12 {
1884 1884 margin-left: 100%;
1885 1885 }
1886 1886 .col-sm-offset-11 {
1887 1887 margin-left: 91.66666667%;
1888 1888 }
1889 1889 .col-sm-offset-10 {
1890 1890 margin-left: 83.33333333%;
1891 1891 }
1892 1892 .col-sm-offset-9 {
1893 1893 margin-left: 75%;
1894 1894 }
1895 1895 .col-sm-offset-8 {
1896 1896 margin-left: 66.66666667%;
1897 1897 }
1898 1898 .col-sm-offset-7 {
1899 1899 margin-left: 58.33333333%;
1900 1900 }
1901 1901 .col-sm-offset-6 {
1902 1902 margin-left: 50%;
1903 1903 }
1904 1904 .col-sm-offset-5 {
1905 1905 margin-left: 41.66666667%;
1906 1906 }
1907 1907 .col-sm-offset-4 {
1908 1908 margin-left: 33.33333333%;
1909 1909 }
1910 1910 .col-sm-offset-3 {
1911 1911 margin-left: 25%;
1912 1912 }
1913 1913 .col-sm-offset-2 {
1914 1914 margin-left: 16.66666667%;
1915 1915 }
1916 1916 .col-sm-offset-1 {
1917 1917 margin-left: 8.33333333%;
1918 1918 }
1919 1919 .col-sm-offset-0 {
1920 1920 margin-left: 0%;
1921 1921 }
1922 1922 }
1923 1923 @media (min-width: 992px) {
1924 1924 .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
1925 1925 float: left;
1926 1926 }
1927 1927 .col-md-12 {
1928 1928 width: 100%;
1929 1929 }
1930 1930 .col-md-11 {
1931 1931 width: 91.66666667%;
1932 1932 }
1933 1933 .col-md-10 {
1934 1934 width: 83.33333333%;
1935 1935 }
1936 1936 .col-md-9 {
1937 1937 width: 75%;
1938 1938 }
1939 1939 .col-md-8 {
1940 1940 width: 66.66666667%;
1941 1941 }
1942 1942 .col-md-7 {
1943 1943 width: 58.33333333%;
1944 1944 }
1945 1945 .col-md-6 {
1946 1946 width: 50%;
1947 1947 }
1948 1948 .col-md-5 {
1949 1949 width: 41.66666667%;
1950 1950 }
1951 1951 .col-md-4 {
1952 1952 width: 33.33333333%;
1953 1953 }
1954 1954 .col-md-3 {
1955 1955 width: 25%;
1956 1956 }
1957 1957 .col-md-2 {
1958 1958 width: 16.66666667%;
1959 1959 }
1960 1960 .col-md-1 {
1961 1961 width: 8.33333333%;
1962 1962 }
1963 1963 .col-md-pull-12 {
1964 1964 right: 100%;
1965 1965 }
1966 1966 .col-md-pull-11 {
1967 1967 right: 91.66666667%;
1968 1968 }
1969 1969 .col-md-pull-10 {
1970 1970 right: 83.33333333%;
1971 1971 }
1972 1972 .col-md-pull-9 {
1973 1973 right: 75%;
1974 1974 }
1975 1975 .col-md-pull-8 {
1976 1976 right: 66.66666667%;
1977 1977 }
1978 1978 .col-md-pull-7 {
1979 1979 right: 58.33333333%;
1980 1980 }
1981 1981 .col-md-pull-6 {
1982 1982 right: 50%;
1983 1983 }
1984 1984 .col-md-pull-5 {
1985 1985 right: 41.66666667%;
1986 1986 }
1987 1987 .col-md-pull-4 {
1988 1988 right: 33.33333333%;
1989 1989 }
1990 1990 .col-md-pull-3 {
1991 1991 right: 25%;
1992 1992 }
1993 1993 .col-md-pull-2 {
1994 1994 right: 16.66666667%;
1995 1995 }
1996 1996 .col-md-pull-1 {
1997 1997 right: 8.33333333%;
1998 1998 }
1999 1999 .col-md-pull-0 {
2000 2000 right: auto;
2001 2001 }
2002 2002 .col-md-push-12 {
2003 2003 left: 100%;
2004 2004 }
2005 2005 .col-md-push-11 {
2006 2006 left: 91.66666667%;
2007 2007 }
2008 2008 .col-md-push-10 {
2009 2009 left: 83.33333333%;
2010 2010 }
2011 2011 .col-md-push-9 {
2012 2012 left: 75%;
2013 2013 }
2014 2014 .col-md-push-8 {
2015 2015 left: 66.66666667%;
2016 2016 }
2017 2017 .col-md-push-7 {
2018 2018 left: 58.33333333%;
2019 2019 }
2020 2020 .col-md-push-6 {
2021 2021 left: 50%;
2022 2022 }
2023 2023 .col-md-push-5 {
2024 2024 left: 41.66666667%;
2025 2025 }
2026 2026 .col-md-push-4 {
2027 2027 left: 33.33333333%;
2028 2028 }
2029 2029 .col-md-push-3 {
2030 2030 left: 25%;
2031 2031 }
2032 2032 .col-md-push-2 {
2033 2033 left: 16.66666667%;
2034 2034 }
2035 2035 .col-md-push-1 {
2036 2036 left: 8.33333333%;
2037 2037 }
2038 2038 .col-md-push-0 {
2039 2039 left: auto;
2040 2040 }
2041 2041 .col-md-offset-12 {
2042 2042 margin-left: 100%;
2043 2043 }
2044 2044 .col-md-offset-11 {
2045 2045 margin-left: 91.66666667%;
2046 2046 }
2047 2047 .col-md-offset-10 {
2048 2048 margin-left: 83.33333333%;
2049 2049 }
2050 2050 .col-md-offset-9 {
2051 2051 margin-left: 75%;
2052 2052 }
2053 2053 .col-md-offset-8 {
2054 2054 margin-left: 66.66666667%;
2055 2055 }
2056 2056 .col-md-offset-7 {
2057 2057 margin-left: 58.33333333%;
2058 2058 }
2059 2059 .col-md-offset-6 {
2060 2060 margin-left: 50%;
2061 2061 }
2062 2062 .col-md-offset-5 {
2063 2063 margin-left: 41.66666667%;
2064 2064 }
2065 2065 .col-md-offset-4 {
2066 2066 margin-left: 33.33333333%;
2067 2067 }
2068 2068 .col-md-offset-3 {
2069 2069 margin-left: 25%;
2070 2070 }
2071 2071 .col-md-offset-2 {
2072 2072 margin-left: 16.66666667%;
2073 2073 }
2074 2074 .col-md-offset-1 {
2075 2075 margin-left: 8.33333333%;
2076 2076 }
2077 2077 .col-md-offset-0 {
2078 2078 margin-left: 0%;
2079 2079 }
2080 2080 }
2081 2081 @media (min-width: 1200px) {
2082 2082 .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
2083 2083 float: left;
2084 2084 }
2085 2085 .col-lg-12 {
2086 2086 width: 100%;
2087 2087 }
2088 2088 .col-lg-11 {
2089 2089 width: 91.66666667%;
2090 2090 }
2091 2091 .col-lg-10 {
2092 2092 width: 83.33333333%;
2093 2093 }
2094 2094 .col-lg-9 {
2095 2095 width: 75%;
2096 2096 }
2097 2097 .col-lg-8 {
2098 2098 width: 66.66666667%;
2099 2099 }
2100 2100 .col-lg-7 {
2101 2101 width: 58.33333333%;
2102 2102 }
2103 2103 .col-lg-6 {
2104 2104 width: 50%;
2105 2105 }
2106 2106 .col-lg-5 {
2107 2107 width: 41.66666667%;
2108 2108 }
2109 2109 .col-lg-4 {
2110 2110 width: 33.33333333%;
2111 2111 }
2112 2112 .col-lg-3 {
2113 2113 width: 25%;
2114 2114 }
2115 2115 .col-lg-2 {
2116 2116 width: 16.66666667%;
2117 2117 }
2118 2118 .col-lg-1 {
2119 2119 width: 8.33333333%;
2120 2120 }
2121 2121 .col-lg-pull-12 {
2122 2122 right: 100%;
2123 2123 }
2124 2124 .col-lg-pull-11 {
2125 2125 right: 91.66666667%;
2126 2126 }
2127 2127 .col-lg-pull-10 {
2128 2128 right: 83.33333333%;
2129 2129 }
2130 2130 .col-lg-pull-9 {
2131 2131 right: 75%;
2132 2132 }
2133 2133 .col-lg-pull-8 {
2134 2134 right: 66.66666667%;
2135 2135 }
2136 2136 .col-lg-pull-7 {
2137 2137 right: 58.33333333%;
2138 2138 }
2139 2139 .col-lg-pull-6 {
2140 2140 right: 50%;
2141 2141 }
2142 2142 .col-lg-pull-5 {
2143 2143 right: 41.66666667%;
2144 2144 }
2145 2145 .col-lg-pull-4 {
2146 2146 right: 33.33333333%;
2147 2147 }
2148 2148 .col-lg-pull-3 {
2149 2149 right: 25%;
2150 2150 }
2151 2151 .col-lg-pull-2 {
2152 2152 right: 16.66666667%;
2153 2153 }
2154 2154 .col-lg-pull-1 {
2155 2155 right: 8.33333333%;
2156 2156 }
2157 2157 .col-lg-pull-0 {
2158 2158 right: auto;
2159 2159 }
2160 2160 .col-lg-push-12 {
2161 2161 left: 100%;
2162 2162 }
2163 2163 .col-lg-push-11 {
2164 2164 left: 91.66666667%;
2165 2165 }
2166 2166 .col-lg-push-10 {
2167 2167 left: 83.33333333%;
2168 2168 }
2169 2169 .col-lg-push-9 {
2170 2170 left: 75%;
2171 2171 }
2172 2172 .col-lg-push-8 {
2173 2173 left: 66.66666667%;
2174 2174 }
2175 2175 .col-lg-push-7 {
2176 2176 left: 58.33333333%;
2177 2177 }
2178 2178 .col-lg-push-6 {
2179 2179 left: 50%;
2180 2180 }
2181 2181 .col-lg-push-5 {
2182 2182 left: 41.66666667%;
2183 2183 }
2184 2184 .col-lg-push-4 {
2185 2185 left: 33.33333333%;
2186 2186 }
2187 2187 .col-lg-push-3 {
2188 2188 left: 25%;
2189 2189 }
2190 2190 .col-lg-push-2 {
2191 2191 left: 16.66666667%;
2192 2192 }
2193 2193 .col-lg-push-1 {
2194 2194 left: 8.33333333%;
2195 2195 }
2196 2196 .col-lg-push-0 {
2197 2197 left: auto;
2198 2198 }
2199 2199 .col-lg-offset-12 {
2200 2200 margin-left: 100%;
2201 2201 }
2202 2202 .col-lg-offset-11 {
2203 2203 margin-left: 91.66666667%;
2204 2204 }
2205 2205 .col-lg-offset-10 {
2206 2206 margin-left: 83.33333333%;
2207 2207 }
2208 2208 .col-lg-offset-9 {
2209 2209 margin-left: 75%;
2210 2210 }
2211 2211 .col-lg-offset-8 {
2212 2212 margin-left: 66.66666667%;
2213 2213 }
2214 2214 .col-lg-offset-7 {
2215 2215 margin-left: 58.33333333%;
2216 2216 }
2217 2217 .col-lg-offset-6 {
2218 2218 margin-left: 50%;
2219 2219 }
2220 2220 .col-lg-offset-5 {
2221 2221 margin-left: 41.66666667%;
2222 2222 }
2223 2223 .col-lg-offset-4 {
2224 2224 margin-left: 33.33333333%;
2225 2225 }
2226 2226 .col-lg-offset-3 {
2227 2227 margin-left: 25%;
2228 2228 }
2229 2229 .col-lg-offset-2 {
2230 2230 margin-left: 16.66666667%;
2231 2231 }
2232 2232 .col-lg-offset-1 {
2233 2233 margin-left: 8.33333333%;
2234 2234 }
2235 2235 .col-lg-offset-0 {
2236 2236 margin-left: 0%;
2237 2237 }
2238 2238 }
2239 2239 table {
2240 2240 background-color: transparent;
2241 2241 }
2242 2242 caption {
2243 2243 padding-top: 8px;
2244 2244 padding-bottom: 8px;
2245 2245 color: #777777;
2246 2246 text-align: left;
2247 2247 }
2248 2248 th {
2249 2249 text-align: left;
2250 2250 }
2251 2251 .table {
2252 2252 width: 100%;
2253 2253 max-width: 100%;
2254 2254 margin-bottom: 20px;
2255 2255 }
2256 2256 .table > thead > tr > th,
2257 2257 .table > tbody > tr > th,
2258 2258 .table > tfoot > tr > th,
2259 2259 .table > thead > tr > td,
2260 2260 .table > tbody > tr > td,
2261 2261 .table > tfoot > tr > td {
2262 2262 padding: 8px;
2263 2263 line-height: 1.42857143;
2264 2264 vertical-align: top;
2265 2265 border-top: 1px solid #ddd;
2266 2266 }
2267 2267 .table > thead > tr > th {
2268 2268 vertical-align: bottom;
2269 2269 border-bottom: 2px solid #ddd;
2270 2270 }
2271 2271 .table > caption + thead > tr:first-child > th,
2272 2272 .table > colgroup + thead > tr:first-child > th,
2273 2273 .table > thead:first-child > tr:first-child > th,
2274 2274 .table > caption + thead > tr:first-child > td,
2275 2275 .table > colgroup + thead > tr:first-child > td,
2276 2276 .table > thead:first-child > tr:first-child > td {
2277 2277 border-top: 0;
2278 2278 }
2279 2279 .table > tbody + tbody {
2280 2280 border-top: 2px solid #ddd;
2281 2281 }
2282 2282 .table .table {
2283 2283 background-color: #fff;
2284 2284 }
2285 2285 .table-condensed > thead > tr > th,
2286 2286 .table-condensed > tbody > tr > th,
2287 2287 .table-condensed > tfoot > tr > th,
2288 2288 .table-condensed > thead > tr > td,
2289 2289 .table-condensed > tbody > tr > td,
2290 2290 .table-condensed > tfoot > tr > td {
2291 2291 padding: 5px;
2292 2292 }
2293 2293 .table-bordered {
2294 2294 border: 1px solid #ddd;
2295 2295 }
2296 2296 .table-bordered > thead > tr > th,
2297 2297 .table-bordered > tbody > tr > th,
2298 2298 .table-bordered > tfoot > tr > th,
2299 2299 .table-bordered > thead > tr > td,
2300 2300 .table-bordered > tbody > tr > td,
2301 2301 .table-bordered > tfoot > tr > td {
2302 2302 border: 1px solid #ddd;
2303 2303 }
2304 2304 .table-bordered > thead > tr > th,
2305 2305 .table-bordered > thead > tr > td {
2306 2306 border-bottom-width: 2px;
2307 2307 }
2308 2308 .table-striped > tbody > tr:nth-of-type(odd) {
2309 2309 background-color: none;
2310 2310 }
2311 2311 .table-hover > tbody > tr:hover {
2312 2312 background-color: #f5f5f5;
2313 2313 }
2314 2314 table col[class*="col-"] {
2315 2315 position: static;
2316 2316 float: none;
2317 2317 display: table-column;
2318 2318 }
2319 2319 table td[class*="col-"],
2320 2320 table th[class*="col-"] {
2321 2321 position: static;
2322 2322 float: none;
2323 2323 display: table-cell;
2324 2324 }
2325 2325 .table > thead > tr > td.active,
2326 2326 .table > tbody > tr > td.active,
2327 2327 .table > tfoot > tr > td.active,
2328 2328 .table > thead > tr > th.active,
2329 2329 .table > tbody > tr > th.active,
2330 2330 .table > tfoot > tr > th.active,
2331 2331 .table > thead > tr.active > td,
2332 2332 .table > tbody > tr.active > td,
2333 2333 .table > tfoot > tr.active > td,
2334 2334 .table > thead > tr.active > th,
2335 2335 .table > tbody > tr.active > th,
2336 2336 .table > tfoot > tr.active > th {
2337 2337 background-color: #f5f5f5;
2338 2338 }
2339 2339 .table-hover > tbody > tr > td.active:hover,
2340 2340 .table-hover > tbody > tr > th.active:hover,
2341 2341 .table-hover > tbody > tr.active:hover > td,
2342 2342 .table-hover > tbody > tr:hover > .active,
2343 2343 .table-hover > tbody > tr.active:hover > th {
2344 2344 background-color: #e8e8e8;
2345 2345 }
2346 2346 .table > thead > tr > td.success,
2347 2347 .table > tbody > tr > td.success,
2348 2348 .table > tfoot > tr > td.success,
2349 2349 .table > thead > tr > th.success,
2350 2350 .table > tbody > tr > th.success,
2351 2351 .table > tfoot > tr > th.success,
2352 2352 .table > thead > tr.success > td,
2353 2353 .table > tbody > tr.success > td,
2354 2354 .table > tfoot > tr.success > td,
2355 2355 .table > thead > tr.success > th,
2356 2356 .table > tbody > tr.success > th,
2357 2357 .table > tfoot > tr.success > th {
2358 2358 background-color: #dff0d8;
2359 2359 }
2360 2360 .table-hover > tbody > tr > td.success:hover,
2361 2361 .table-hover > tbody > tr > th.success:hover,
2362 2362 .table-hover > tbody > tr.success:hover > td,
2363 2363 .table-hover > tbody > tr:hover > .success,
2364 2364 .table-hover > tbody > tr.success:hover > th {
2365 2365 background-color: #d0e9c6;
2366 2366 }
2367 2367 .table > thead > tr > td.info,
2368 2368 .table > tbody > tr > td.info,
2369 2369 .table > tfoot > tr > td.info,
2370 2370 .table > thead > tr > th.info,
2371 2371 .table > tbody > tr > th.info,
2372 2372 .table > tfoot > tr > th.info,
2373 2373 .table > thead > tr.info > td,
2374 2374 .table > tbody > tr.info > td,
2375 2375 .table > tfoot > tr.info > td,
2376 2376 .table > thead > tr.info > th,
2377 2377 .table > tbody > tr.info > th,
2378 2378 .table > tfoot > tr.info > th {
2379 2379 background-color: #d9edf7;
2380 2380 }
2381 2381 .table-hover > tbody > tr > td.info:hover,
2382 2382 .table-hover > tbody > tr > th.info:hover,
2383 2383 .table-hover > tbody > tr.info:hover > td,
2384 2384 .table-hover > tbody > tr:hover > .info,
2385 2385 .table-hover > tbody > tr.info:hover > th {
2386 2386 background-color: #c4e3f3;
2387 2387 }
2388 2388 .table > thead > tr > td.warning,
2389 2389 .table > tbody > tr > td.warning,
2390 2390 .table > tfoot > tr > td.warning,
2391 2391 .table > thead > tr > th.warning,
2392 2392 .table > tbody > tr > th.warning,
2393 2393 .table > tfoot > tr > th.warning,
2394 2394 .table > thead > tr.warning > td,
2395 2395 .table > tbody > tr.warning > td,
2396 2396 .table > tfoot > tr.warning > td,
2397 2397 .table > thead > tr.warning > th,
2398 2398 .table > tbody > tr.warning > th,
2399 2399 .table > tfoot > tr.warning > th {
2400 2400 background-color: #fcf8e3;
2401 2401 }
2402 2402 .table-hover > tbody > tr > td.warning:hover,
2403 2403 .table-hover > tbody > tr > th.warning:hover,
2404 2404 .table-hover > tbody > tr.warning:hover > td,
2405 2405 .table-hover > tbody > tr:hover > .warning,
2406 2406 .table-hover > tbody > tr.warning:hover > th {
2407 2407 background-color: #faf2cc;
2408 2408 }
2409 2409 .table > thead > tr > td.danger,
2410 2410 .table > tbody > tr > td.danger,
2411 2411 .table > tfoot > tr > td.danger,
2412 2412 .table > thead > tr > th.danger,
2413 2413 .table > tbody > tr > th.danger,
2414 2414 .table > tfoot > tr > th.danger,
2415 2415 .table > thead > tr.danger > td,
2416 2416 .table > tbody > tr.danger > td,
2417 2417 .table > tfoot > tr.danger > td,
2418 2418 .table > thead > tr.danger > th,
2419 2419 .table > tbody > tr.danger > th,
2420 2420 .table > tfoot > tr.danger > th {
2421 2421 background-color: #f2dede;
2422 2422 }
2423 2423 .table-hover > tbody > tr > td.danger:hover,
2424 2424 .table-hover > tbody > tr > th.danger:hover,
2425 2425 .table-hover > tbody > tr.danger:hover > td,
2426 2426 .table-hover > tbody > tr:hover > .danger,
2427 2427 .table-hover > tbody > tr.danger:hover > th {
2428 2428 background-color: #ebcccc;
2429 2429 }
2430 2430 .table-responsive {
2431 2431 overflow-x: auto;
2432 2432 min-height: 0.01%;
2433 2433 }
2434 2434 @media screen and (max-width: 767px) {
2435 2435 .table-responsive {
2436 2436 width: 100%;
2437 2437 margin-bottom: 15px;
2438 2438 overflow-y: hidden;
2439 2439 -ms-overflow-style: -ms-autohiding-scrollbar;
2440 2440 border: 1px solid #ddd;
2441 2441 }
2442 2442 .table-responsive > .table {
2443 2443 margin-bottom: 0;
2444 2444 }
2445 2445 .table-responsive > .table > thead > tr > th,
2446 2446 .table-responsive > .table > tbody > tr > th,
2447 2447 .table-responsive > .table > tfoot > tr > th,
2448 2448 .table-responsive > .table > thead > tr > td,
2449 2449 .table-responsive > .table > tbody > tr > td,
2450 2450 .table-responsive > .table > tfoot > tr > td {
2451 2451 white-space: nowrap;
2452 2452 }
2453 2453 .table-responsive > .table-bordered {
2454 2454 border: 0;
2455 2455 }
2456 2456 .table-responsive > .table-bordered > thead > tr > th:first-child,
2457 2457 .table-responsive > .table-bordered > tbody > tr > th:first-child,
2458 2458 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2459 2459 .table-responsive > .table-bordered > thead > tr > td:first-child,
2460 2460 .table-responsive > .table-bordered > tbody > tr > td:first-child,
2461 2461 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2462 2462 border-left: 0;
2463 2463 }
2464 2464 .table-responsive > .table-bordered > thead > tr > th:last-child,
2465 2465 .table-responsive > .table-bordered > tbody > tr > th:last-child,
2466 2466 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2467 2467 .table-responsive > .table-bordered > thead > tr > td:last-child,
2468 2468 .table-responsive > .table-bordered > tbody > tr > td:last-child,
2469 2469 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2470 2470 border-right: 0;
2471 2471 }
2472 2472 .table-responsive > .table-bordered > tbody > tr:last-child > th,
2473 2473 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2474 2474 .table-responsive > .table-bordered > tbody > tr:last-child > td,
2475 2475 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2476 2476 border-bottom: 0;
2477 2477 }
2478 2478 }
2479 2479 fieldset {
2480 2480 padding: 0;
2481 2481 margin: 0;
2482 2482 border: 0;
2483 2483 min-width: 0;
2484 2484 }
2485 2485 legend {
2486 2486 display: block;
2487 2487 width: 100%;
2488 2488 padding: 0;
2489 2489 margin-bottom: 20px;
2490 2490 font-size: 21px;
2491 2491 line-height: inherit;
2492 2492 color: #333333;
2493 2493 border: 0;
2494 2494 border-bottom: 1px solid #e5e5e5;
2495 2495 }
2496 2496 label {
2497 2497 display: inline-block;
2498 2498 max-width: 100%;
2499 2499 margin-bottom: 5px;
2500 2500 font-weight: bold;
2501 2501 }
2502 2502 input[type="search"] {
2503 2503 -webkit-box-sizing: border-box;
2504 2504 -moz-box-sizing: border-box;
2505 2505 box-sizing: border-box;
2506 2506 }
2507 2507 input[type="radio"],
2508 2508 input[type="checkbox"] {
2509 2509 margin: 4px 0 0;
2510 2510 margin-top: 1px \9;
2511 2511 line-height: normal;
2512 2512 }
2513 2513 input[type="file"] {
2514 2514 display: block;
2515 2515 }
2516 2516 input[type="range"] {
2517 2517 display: block;
2518 2518 width: 100%;
2519 2519 }
2520 2520 select[multiple],
2521 2521 select[size] {
2522 2522 height: auto;
2523 2523 }
2524 2524 input[type="file"]:focus,
2525 2525 input[type="radio"]:focus,
2526 2526 input[type="checkbox"]:focus {
2527 2527 outline: thin dotted;
2528 2528 outline: 5px auto -webkit-focus-ring-color;
2529 2529 outline-offset: -2px;
2530 2530 }
2531 2531 output {
2532 2532 display: block;
2533 2533 padding-top: 7px;
2534 2534 font-size: 14px;
2535 2535 line-height: 1.42857143;
2536 2536 color: #555555;
2537 2537 }
2538 2538 .form-control {
2539 2539 display: block;
2540 2540 width: 100%;
2541 2541 height: 34px;
2542 2542 padding: 6px 12px;
2543 2543 font-size: 14px;
2544 2544 line-height: 1.42857143;
2545 2545 color: #555555;
2546 2546 background-color: #fff;
2547 2547 background-image: none;
2548 2548 border: 1px solid #ccc;
2549 2549 border-radius: 4px;
2550 2550 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2551 2551 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2552 2552 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2553 2553 -o-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2554 2554 -ms-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2555 2555 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2556 2556 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2557 2557 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2558 2558 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2559 2559 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2560 2560 }
2561 2561 .form-control:focus {
2562 2562 border-color: #66afe9;
2563 2563 outline: 0;
2564 2564 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2565 2565 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2566 2566 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6) 0 5px rgba(77, 77, 77, 0.5);
2567 2567 -o-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6) 0 5px rgba(77, 77, 77, 0.5);
2568 2568 -ms-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6) 0 5px rgba(77, 77, 77, 0.5);
2569 2569 -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6) 0 5px rgba(77, 77, 77, 0.5);
2570 2570 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6) 0 5px rgba(77, 77, 77, 0.5);
2571 2571 }
2572 2572 .form-control::-moz-placeholder {
2573 2573 color: #999;
2574 2574 opacity: 1;
2575 2575 }
2576 2576 .form-control:-ms-input-placeholder {
2577 2577 color: #999;
2578 2578 }
2579 2579 .form-control::-webkit-input-placeholder {
2580 2580 color: #999;
2581 2581 }
2582 2582 .form-control::-ms-expand {
2583 2583 border: 0;
2584 2584 background-color: transparent;
2585 2585 }
2586 2586 .form-control[disabled],
2587 2587 .form-control[readonly],
2588 2588 fieldset[disabled] .form-control {
2589 2589 background-color: #eeeeee;
2590 2590 opacity: 1;
2591 2591 }
2592 2592 .form-control[disabled],
2593 2593 fieldset[disabled] .form-control {
2594 2594 cursor: not-allowed;
2595 2595 }
2596 2596 textarea.form-control {
2597 2597 height: auto;
2598 2598 }
2599 2599 input[type="search"] {
2600 2600 -webkit-appearance: none;
2601 2601 }
2602 2602 @media screen and (-webkit-min-device-pixel-ratio: 0) {
2603 2603 input[type="date"].form-control,
2604 2604 input[type="time"].form-control,
2605 2605 input[type="datetime-local"].form-control,
2606 2606 input[type="month"].form-control {
2607 2607 line-height: 34px;
2608 2608 }
2609 2609 input[type="date"].input-sm,
2610 2610 input[type="time"].input-sm,
2611 2611 input[type="datetime-local"].input-sm,
2612 2612 input[type="month"].input-sm,
2613 2613 .input-group-sm input[type="date"],
2614 2614 .input-group-sm input[type="time"],
2615 2615 .input-group-sm input[type="datetime-local"],
2616 2616 .input-group-sm input[type="month"] {
2617 2617 line-height: 30px;
2618 2618 }
2619 2619 input[type="date"].input-lg,
2620 2620 input[type="time"].input-lg,
2621 2621 input[type="datetime-local"].input-lg,
2622 2622 input[type="month"].input-lg,
2623 2623 .input-group-lg input[type="date"],
2624 2624 .input-group-lg input[type="time"],
2625 2625 .input-group-lg input[type="datetime-local"],
2626 2626 .input-group-lg input[type="month"] {
2627 2627 line-height: 46px;
2628 2628 }
2629 2629 }
2630 2630 .form-group {
2631 2631 margin-bottom: 15px;
2632 2632 }
2633 2633 .radio,
2634 2634 .checkbox {
2635 2635 position: relative;
2636 2636 display: block;
2637 2637 margin-top: 10px;
2638 2638 margin-bottom: 10px;
2639 2639 }
2640 2640 .radio label,
2641 2641 .checkbox label {
2642 2642 min-height: 20px;
2643 2643 padding-left: 20px;
2644 2644 margin-bottom: 0;
2645 2645 font-weight: normal;
2646 2646 cursor: pointer;
2647 2647 }
2648 2648 .radio input[type="radio"],
2649 2649 .radio-inline input[type="radio"],
2650 2650 .checkbox input[type="checkbox"],
2651 2651 .checkbox-inline input[type="checkbox"] {
2652 2652 position: absolute;
2653 2653 margin-left: -20px;
2654 2654 margin-top: 4px \9;
2655 2655 }
2656 2656 .radio + .radio,
2657 2657 .checkbox + .checkbox {
2658 2658 margin-top: -5px;
2659 2659 }
2660 2660 .radio-inline,
2661 2661 .checkbox-inline {
2662 2662 position: relative;
2663 2663 display: inline-block;
2664 2664 padding-left: 20px;
2665 2665 margin-bottom: 0;
2666 2666 vertical-align: middle;
2667 2667 font-weight: normal;
2668 2668 cursor: pointer;
2669 2669 }
2670 2670 .radio-inline + .radio-inline,
2671 2671 .checkbox-inline + .checkbox-inline {
2672 2672 margin-top: 0;
2673 2673 margin-left: 10px;
2674 2674 }
2675 2675 input[type="radio"][disabled],
2676 2676 input[type="checkbox"][disabled],
2677 2677 input[type="radio"].disabled,
2678 2678 input[type="checkbox"].disabled,
2679 2679 fieldset[disabled] input[type="radio"],
2680 2680 fieldset[disabled] input[type="checkbox"] {
2681 2681 cursor: not-allowed;
2682 2682 }
2683 2683 .radio-inline.disabled,
2684 2684 .checkbox-inline.disabled,
2685 2685 fieldset[disabled] .radio-inline,
2686 2686 fieldset[disabled] .checkbox-inline {
2687 2687 cursor: not-allowed;
2688 2688 }
2689 2689 .radio.disabled label,
2690 2690 .checkbox.disabled label,
2691 2691 fieldset[disabled] .radio label,
2692 2692 fieldset[disabled] .checkbox label {
2693 2693 cursor: not-allowed;
2694 2694 }
2695 2695 .form-control-static {
2696 2696 padding-top: 7px;
2697 2697 padding-bottom: 7px;
2698 2698 margin-bottom: 0;
2699 2699 min-height: 34px;
2700 2700 }
2701 2701 .form-control-static.input-lg,
2702 2702 .form-control-static.input-sm {
2703 2703 padding-left: 0;
2704 2704 padding-right: 0;
2705 2705 }
2706 2706 .input-sm {
2707 2707 height: 30px;
2708 2708 padding: 5px 10px;
2709 2709 font-size: 12px;
2710 2710 line-height: 1.5;
2711 2711 border-radius: 3px;
2712 2712 }
2713 2713 select.input-sm {
2714 2714 height: 30px;
2715 2715 line-height: 30px;
2716 2716 }
2717 2717 textarea.input-sm,
2718 2718 select[multiple].input-sm {
2719 2719 height: auto;
2720 2720 }
2721 2721 .form-group-sm .form-control {
2722 2722 height: 30px;
2723 2723 padding: 5px 10px;
2724 2724 font-size: 12px;
2725 2725 line-height: 1.5;
2726 2726 border-radius: 3px;
2727 2727 }
2728 2728 .form-group-sm select.form-control {
2729 2729 height: 30px;
2730 2730 line-height: 30px;
2731 2731 }
2732 2732 .form-group-sm textarea.form-control,
2733 2733 .form-group-sm select[multiple].form-control {
2734 2734 height: auto;
2735 2735 }
2736 2736 .form-group-sm .form-control-static {
2737 2737 height: 30px;
2738 2738 min-height: 32px;
2739 2739 padding: 6px 10px;
2740 2740 font-size: 12px;
2741 2741 line-height: 1.5;
2742 2742 }
2743 2743 .input-lg {
2744 2744 height: 46px;
2745 2745 padding: 10px 16px;
2746 2746 font-size: 18px;
2747 2747 line-height: 1.3333333;
2748 2748 border-radius: 6px;
2749 2749 }
2750 2750 select.input-lg {
2751 2751 height: 46px;
2752 2752 line-height: 46px;
2753 2753 }
2754 2754 textarea.input-lg,
2755 2755 select[multiple].input-lg {
2756 2756 height: auto;
2757 2757 }
2758 2758 .form-group-lg .form-control {
2759 2759 height: 46px;
2760 2760 padding: 10px 16px;
2761 2761 font-size: 18px;
2762 2762 line-height: 1.3333333;
2763 2763 border-radius: 6px;
2764 2764 }
2765 2765 .form-group-lg select.form-control {
2766 2766 height: 46px;
2767 2767 line-height: 46px;
2768 2768 }
2769 2769 .form-group-lg textarea.form-control,
2770 2770 .form-group-lg select[multiple].form-control {
2771 2771 height: auto;
2772 2772 }
2773 2773 .form-group-lg .form-control-static {
2774 2774 height: 46px;
2775 2775 min-height: 38px;
2776 2776 padding: 11px 16px;
2777 2777 font-size: 18px;
2778 2778 line-height: 1.3333333;
2779 2779 }
2780 2780 .has-feedback {
2781 2781 position: relative;
2782 2782 }
2783 2783 .has-feedback .form-control {
2784 2784 padding-right: 42.5px;
2785 2785 }
2786 2786 .form-control-feedback {
2787 2787 position: absolute;
2788 2788 top: 0;
2789 2789 right: 0;
2790 2790 z-index: 2;
2791 2791 display: block;
2792 2792 width: 34px;
2793 2793 height: 34px;
2794 2794 line-height: 34px;
2795 2795 text-align: center;
2796 2796 pointer-events: none;
2797 2797 }
2798 2798 .input-lg + .form-control-feedback,
2799 2799 .input-group-lg + .form-control-feedback,
2800 2800 .form-group-lg .form-control + .form-control-feedback {
2801 2801 width: 46px;
2802 2802 height: 46px;
2803 2803 line-height: 46px;
2804 2804 }
2805 2805 .input-sm + .form-control-feedback,
2806 2806 .input-group-sm + .form-control-feedback,
2807 2807 .form-group-sm .form-control + .form-control-feedback {
2808 2808 width: 30px;
2809 2809 height: 30px;
2810 2810 line-height: 30px;
2811 2811 }
2812 2812 .has-success .help-block,
2813 2813 .has-success .control-label,
2814 2814 .has-success .radio,
2815 2815 .has-success .checkbox,
2816 2816 .has-success .radio-inline,
2817 2817 .has-success .checkbox-inline,
2818 2818 .has-success.radio label,
2819 2819 .has-success.checkbox label,
2820 2820 .has-success.radio-inline label,
2821 2821 .has-success.checkbox-inline label {
2822 2822 color: #3c763d;
2823 2823 }
2824 2824 .has-success .form-control {
2825 2825 border-color: #3c763d;
2826 2826 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2827 2827 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2828 2828 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2829 2829 -o-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2830 2830 -ms-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2831 2831 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2832 2832 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2833 2833 }
2834 2834 .has-success .form-control:focus {
2835 2835 border-color: #2b542c;
2836 2836 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2837 2837 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2838 2838 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168 0 5px rgba(77, 77, 77, 0.5);
2839 2839 -o-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168 0 5px rgba(77, 77, 77, 0.5);
2840 2840 -ms-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168 0 5px rgba(77, 77, 77, 0.5);
2841 2841 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168 0 5px rgba(77, 77, 77, 0.5);
2842 2842 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168 0 5px rgba(77, 77, 77, 0.5);
2843 2843 }
2844 2844 .has-success .input-group-addon {
2845 2845 color: #3c763d;
2846 2846 border-color: #3c763d;
2847 2847 background-color: #dff0d8;
2848 2848 }
2849 2849 .has-success .form-control-feedback {
2850 2850 color: #3c763d;
2851 2851 }
2852 2852 .has-warning .help-block,
2853 2853 .has-warning .control-label,
2854 2854 .has-warning .radio,
2855 2855 .has-warning .checkbox,
2856 2856 .has-warning .radio-inline,
2857 2857 .has-warning .checkbox-inline,
2858 2858 .has-warning.radio label,
2859 2859 .has-warning.checkbox label,
2860 2860 .has-warning.radio-inline label,
2861 2861 .has-warning.checkbox-inline label {
2862 2862 color: #8a6d3b;
2863 2863 }
2864 2864 .has-warning .form-control {
2865 2865 border-color: #8a6d3b;
2866 2866 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2867 2867 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2868 2868 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2869 2869 -o-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2870 2870 -ms-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2871 2871 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2872 2872 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2873 2873 }
2874 2874 .has-warning .form-control:focus {
2875 2875 border-color: #66512c;
2876 2876 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2877 2877 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2878 2878 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b 0 5px rgba(77, 77, 77, 0.5);
2879 2879 -o-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b 0 5px rgba(77, 77, 77, 0.5);
2880 2880 -ms-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b 0 5px rgba(77, 77, 77, 0.5);
2881 2881 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b 0 5px rgba(77, 77, 77, 0.5);
2882 2882 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b 0 5px rgba(77, 77, 77, 0.5);
2883 2883 }
2884 2884 .has-warning .input-group-addon {
2885 2885 color: #8a6d3b;
2886 2886 border-color: #8a6d3b;
2887 2887 background-color: #fcf8e3;
2888 2888 }
2889 2889 .has-warning .form-control-feedback {
2890 2890 color: #8a6d3b;
2891 2891 }
2892 2892 .has-error .help-block,
2893 2893 .has-error .control-label,
2894 2894 .has-error .radio,
2895 2895 .has-error .checkbox,
2896 2896 .has-error .radio-inline,
2897 2897 .has-error .checkbox-inline,
2898 2898 .has-error.radio label,
2899 2899 .has-error.checkbox label,
2900 2900 .has-error.radio-inline label,
2901 2901 .has-error.checkbox-inline label {
2902 2902 color: #a94442;
2903 2903 }
2904 2904 .has-error .form-control {
2905 2905 border-color: #a94442;
2906 2906 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2907 2907 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2908 2908 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2909 2909 -o-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2910 2910 -ms-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2911 2911 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2912 2912 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075) 0 5px rgba(77, 77, 77, 0.5);
2913 2913 }
2914 2914 .has-error .form-control:focus {
2915 2915 border-color: #843534;
2916 2916 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2917 2917 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2918 2918 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483 0 5px rgba(77, 77, 77, 0.5);
2919 2919 -o-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483 0 5px rgba(77, 77, 77, 0.5);
2920 2920 -ms-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483 0 5px rgba(77, 77, 77, 0.5);
2921 2921 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483 0 5px rgba(77, 77, 77, 0.5);
2922 2922 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483 0 5px rgba(77, 77, 77, 0.5);
2923 2923 }
2924 2924 .has-error .input-group-addon {
2925 2925 color: #a94442;
2926 2926 border-color: #a94442;
2927 2927 background-color: #f2dede;
2928 2928 }
2929 2929 .has-error .form-control-feedback {
2930 2930 color: #a94442;
2931 2931 }
2932 2932 .has-feedback label ~ .form-control-feedback {
2933 2933 top: 25px;
2934 2934 }
2935 2935 .has-feedback label.sr-only ~ .form-control-feedback {
2936 2936 top: 0;
2937 2937 }
2938 2938 .help-block {
2939 2939 display: block;
2940 2940 margin-top: 5px;
2941 2941 margin-bottom: 10px;
2942 2942 color: #737373;
2943 2943 }
2944 2944 @media (min-width: 768px) {
2945 2945 .form-inline .form-group {
2946 2946 display: inline-block;
2947 2947 margin-bottom: 0;
2948 2948 vertical-align: middle;
2949 2949 }
2950 2950 .form-inline .form-control {
2951 2951 display: inline-block;
2952 2952 width: auto;
2953 2953 vertical-align: middle;
2954 2954 }
2955 2955 .form-inline .form-control-static {
2956 2956 display: inline-block;
2957 2957 }
2958 2958 .form-inline .input-group {
2959 2959 display: inline-table;
2960 2960 vertical-align: middle;
2961 2961 }
2962 2962 .form-inline .input-group .input-group-addon,
2963 2963 .form-inline .input-group .input-group-btn,
2964 2964 .form-inline .input-group .form-control {
2965 2965 width: auto;
2966 2966 }
2967 2967 .form-inline .input-group > .form-control {
2968 2968 width: 100%;
2969 2969 }
2970 2970 .form-inline .control-label {
2971 2971 margin-bottom: 0;
2972 2972 vertical-align: middle;
2973 2973 }
2974 2974 .form-inline .radio,
2975 2975 .form-inline .checkbox {
2976 2976 display: inline-block;
2977 2977 margin-top: 0;
2978 2978 margin-bottom: 0;
2979 2979 vertical-align: middle;
2980 2980 }
2981 2981 .form-inline .radio label,
2982 2982 .form-inline .checkbox label {
2983 2983 padding-left: 0;
2984 2984 }
2985 2985 .form-inline .radio input[type="radio"],
2986 2986 .form-inline .checkbox input[type="checkbox"] {
2987 2987 position: relative;
2988 2988 margin-left: 0;
2989 2989 }
2990 2990 .form-inline .has-feedback .form-control-feedback {
2991 2991 top: 0;
2992 2992 }
2993 2993 }
2994 2994 .form-horizontal .radio,
2995 2995 .form-horizontal .checkbox,
2996 2996 .form-horizontal .radio-inline,
2997 2997 .form-horizontal .checkbox-inline {
2998 2998 margin-top: 0;
2999 2999 margin-bottom: 0;
3000 3000 padding-top: 7px;
3001 3001 }
3002 3002 .form-horizontal .radio,
3003 3003 .form-horizontal .checkbox {
3004 3004 min-height: 27px;
3005 3005 }
3006 3006 .form-horizontal .form-group {
3007 3007 margin-left: -5px;
3008 3008 margin-right: -5px;
3009 3009 }
3010 3010 @media (min-width: 768px) {
3011 3011 .form-horizontal .control-label {
3012 3012 text-align: right;
3013 3013 margin-bottom: 0;
3014 3014 padding-top: 7px;
3015 3015 }
3016 3016 }
3017 3017 .form-horizontal .has-feedback .form-control-feedback {
3018 3018 right: 5px;
3019 3019 }
3020 3020 @media (min-width: 768px) {
3021 3021 .form-horizontal .form-group-lg .control-label {
3022 3022 padding-top: 11px;
3023 3023 font-size: 18px;
3024 3024 }
3025 3025 }
3026 3026 @media (min-width: 768px) {
3027 3027 .form-horizontal .form-group-sm .control-label {
3028 3028 padding-top: 6px;
3029 3029 font-size: 12px;
3030 3030 }
3031 3031 }
3032 3032 .btn {
3033 3033 display: inline-block;
3034 3034 margin-bottom: 0;
3035 3035 font-weight: normal;
3036 3036 text-align: center;
3037 3037 vertical-align: middle;
3038 3038 touch-action: manipulation;
3039 3039 cursor: pointer;
3040 3040 background-image: none;
3041 3041 border: 1px solid transparent;
3042 3042 white-space: nowrap;
3043 3043 padding: 6px 12px;
3044 3044 font-size: 14px;
3045 3045 line-height: 1.42857143;
3046 3046 border-radius: 4px;
3047 3047 -webkit-user-select: none;
3048 3048 -moz-user-select: none;
3049 3049 -ms-user-select: none;
3050 3050 user-select: none;
3051 3051 }
3052 3052 .btn:focus,
3053 3053 .btn:active:focus,
3054 3054 .btn.active:focus,
3055 3055 .btn.focus,
3056 3056 .btn:active.focus,
3057 3057 .btn.active.focus {
3058 3058 outline: thin dotted;
3059 3059 outline: 5px auto -webkit-focus-ring-color;
3060 3060 outline-offset: -2px;
3061 3061 }
3062 3062 .btn:hover,
3063 3063 .btn:focus,
3064 3064 .btn.focus {
3065 3065 color: #333;
3066 3066 text-decoration: none;
3067 3067 }
3068 3068 .btn:active,
3069 3069 .btn.active {
3070 3070 outline: 0;
3071 3071 background-image: none;
3072 3072 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3073 3073 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3074 3074 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3075 3075 -o-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3076 3076 -ms-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3077 3077 -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3078 3078 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3079 3079 }
3080 3080 .btn.disabled,
3081 3081 .btn[disabled],
3082 3082 fieldset[disabled] .btn {
3083 3083 cursor: not-allowed;
3084 3084 opacity: 0.65;
3085 3085 filter: alpha(opacity=65);
3086 3086 -webkit-box-shadow: none;
3087 3087 box-shadow: none;
3088 3088 box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3089 3089 -o-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3090 3090 -ms-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3091 3091 -moz-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3092 3092 -webkit-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3093 3093 }
3094 3094 a.btn.disabled,
3095 3095 fieldset[disabled] a.btn {
3096 3096 pointer-events: none;
3097 3097 }
3098 3098 .btn-default {
3099 3099 color: #333;
3100 3100 background-color: #fff;
3101 3101 border-color: #ccc;
3102 3102 }
3103 3103 .btn-default:focus,
3104 3104 .btn-default.focus {
3105 3105 color: #333;
3106 3106 background-color: #e6e6e6;
3107 3107 border-color: #8c8c8c;
3108 3108 }
3109 3109 .btn-default:hover {
3110 3110 color: #333;
3111 3111 background-color: #e6e6e6;
3112 3112 border-color: #adadad;
3113 3113 }
3114 3114 .btn-default:active,
3115 3115 .btn-default.active,
3116 3116 .open > .dropdown-toggle.btn-default {
3117 3117 color: #333;
3118 3118 background-color: #e6e6e6;
3119 3119 border-color: #adadad;
3120 3120 }
3121 3121 .btn-default:active:hover,
3122 3122 .btn-default.active:hover,
3123 3123 .open > .dropdown-toggle.btn-default:hover,
3124 3124 .btn-default:active:focus,
3125 3125 .btn-default.active:focus,
3126 3126 .open > .dropdown-toggle.btn-default:focus,
3127 3127 .btn-default:active.focus,
3128 3128 .btn-default.active.focus,
3129 3129 .open > .dropdown-toggle.btn-default.focus {
3130 3130 color: #333;
3131 3131 background-color: #d4d4d4;
3132 3132 border-color: #8c8c8c;
3133 3133 }
3134 3134 .btn-default:active,
3135 3135 .btn-default.active,
3136 3136 .open > .dropdown-toggle.btn-default {
3137 3137 background-image: none;
3138 3138 }
3139 3139 .btn-default.disabled:hover,
3140 3140 .btn-default[disabled]:hover,
3141 3141 fieldset[disabled] .btn-default:hover,
3142 3142 .btn-default.disabled:focus,
3143 3143 .btn-default[disabled]:focus,
3144 3144 fieldset[disabled] .btn-default:focus,
3145 3145 .btn-default.disabled.focus,
3146 3146 .btn-default[disabled].focus,
3147 3147 fieldset[disabled] .btn-default.focus {
3148 3148 background-color: #fff;
3149 3149 border-color: #ccc;
3150 3150 }
3151 3151 .btn-default .badge {
3152 3152 color: #fff;
3153 3153 background-color: #333;
3154 3154 }
3155 3155 .btn-primary {
3156 3156 color: #fff;
3157 3157 background-color: #337ab7;
3158 3158 border-color: #2e6da4;
3159 3159 }
3160 3160 .btn-primary:focus,
3161 3161 .btn-primary.focus {
3162 3162 color: #fff;
3163 3163 background-color: #286090;
3164 3164 border-color: #122b40;
3165 3165 }
3166 3166 .btn-primary:hover {
3167 3167 color: #fff;
3168 3168 background-color: #286090;
3169 3169 border-color: #204d74;
3170 3170 }
3171 3171 .btn-primary:active,
3172 3172 .btn-primary.active,
3173 3173 .open > .dropdown-toggle.btn-primary {
3174 3174 color: #fff;
3175 3175 background-color: #286090;
3176 3176 border-color: #204d74;
3177 3177 }
3178 3178 .btn-primary:active:hover,
3179 3179 .btn-primary.active:hover,
3180 3180 .open > .dropdown-toggle.btn-primary:hover,
3181 3181 .btn-primary:active:focus,
3182 3182 .btn-primary.active:focus,
3183 3183 .open > .dropdown-toggle.btn-primary:focus,
3184 3184 .btn-primary:active.focus,
3185 3185 .btn-primary.active.focus,
3186 3186 .open > .dropdown-toggle.btn-primary.focus {
3187 3187 color: #fff;
3188 3188 background-color: #204d74;
3189 3189 border-color: #122b40;
3190 3190 }
3191 3191 .btn-primary:active,
3192 3192 .btn-primary.active,
3193 3193 .open > .dropdown-toggle.btn-primary {
3194 3194 background-image: none;
3195 3195 }
3196 3196 .btn-primary.disabled:hover,
3197 3197 .btn-primary[disabled]:hover,
3198 3198 fieldset[disabled] .btn-primary:hover,
3199 3199 .btn-primary.disabled:focus,
3200 3200 .btn-primary[disabled]:focus,
3201 3201 fieldset[disabled] .btn-primary:focus,
3202 3202 .btn-primary.disabled.focus,
3203 3203 .btn-primary[disabled].focus,
3204 3204 fieldset[disabled] .btn-primary.focus {
3205 3205 background-color: #337ab7;
3206 3206 border-color: #2e6da4;
3207 3207 }
3208 3208 .btn-primary .badge {
3209 3209 color: #337ab7;
3210 3210 background-color: #fff;
3211 3211 }
3212 3212 .btn-success {
3213 3213 color: #fff;
3214 3214 background-color: #5cb85c;
3215 3215 border-color: #4cae4c;
3216 3216 }
3217 3217 .btn-success:focus,
3218 3218 .btn-success.focus {
3219 3219 color: #fff;
3220 3220 background-color: #449d44;
3221 3221 border-color: #255625;
3222 3222 }
3223 3223 .btn-success:hover {
3224 3224 color: #fff;
3225 3225 background-color: #449d44;
3226 3226 border-color: #398439;
3227 3227 }
3228 3228 .btn-success:active,
3229 3229 .btn-success.active,
3230 3230 .open > .dropdown-toggle.btn-success {
3231 3231 color: #fff;
3232 3232 background-color: #449d44;
3233 3233 border-color: #398439;
3234 3234 }
3235 3235 .btn-success:active:hover,
3236 3236 .btn-success.active:hover,
3237 3237 .open > .dropdown-toggle.btn-success:hover,
3238 3238 .btn-success:active:focus,
3239 3239 .btn-success.active:focus,
3240 3240 .open > .dropdown-toggle.btn-success:focus,
3241 3241 .btn-success:active.focus,
3242 3242 .btn-success.active.focus,
3243 3243 .open > .dropdown-toggle.btn-success.focus {
3244 3244 color: #fff;
3245 3245 background-color: #398439;
3246 3246 border-color: #255625;
3247 3247 }
3248 3248 .btn-success:active,
3249 3249 .btn-success.active,
3250 3250 .open > .dropdown-toggle.btn-success {
3251 3251 background-image: none;
3252 3252 }
3253 3253 .btn-success.disabled:hover,
3254 3254 .btn-success[disabled]:hover,
3255 3255 fieldset[disabled] .btn-success:hover,
3256 3256 .btn-success.disabled:focus,
3257 3257 .btn-success[disabled]:focus,
3258 3258 fieldset[disabled] .btn-success:focus,
3259 3259 .btn-success.disabled.focus,
3260 3260 .btn-success[disabled].focus,
3261 3261 fieldset[disabled] .btn-success.focus {
3262 3262 background-color: #5cb85c;
3263 3263 border-color: #4cae4c;
3264 3264 }
3265 3265 .btn-success .badge {
3266 3266 color: #5cb85c;
3267 3267 background-color: #fff;
3268 3268 }
3269 3269 .btn-info {
3270 3270 color: #fff;
3271 3271 background-color: #5bc0de;
3272 3272 border-color: #46b8da;
3273 3273 }
3274 3274 .btn-info:focus,
3275 3275 .btn-info.focus {
3276 3276 color: #fff;
3277 3277 background-color: #31b0d5;
3278 3278 border-color: #1b6d85;
3279 3279 }
3280 3280 .btn-info:hover {
3281 3281 color: #fff;
3282 3282 background-color: #31b0d5;
3283 3283 border-color: #269abc;
3284 3284 }
3285 3285 .btn-info:active,
3286 3286 .btn-info.active,
3287 3287 .open > .dropdown-toggle.btn-info {
3288 3288 color: #fff;
3289 3289 background-color: #31b0d5;
3290 3290 border-color: #269abc;
3291 3291 }
3292 3292 .btn-info:active:hover,
3293 3293 .btn-info.active:hover,
3294 3294 .open > .dropdown-toggle.btn-info:hover,
3295 3295 .btn-info:active:focus,
3296 3296 .btn-info.active:focus,
3297 3297 .open > .dropdown-toggle.btn-info:focus,
3298 3298 .btn-info:active.focus,
3299 3299 .btn-info.active.focus,
3300 3300 .open > .dropdown-toggle.btn-info.focus {
3301 3301 color: #fff;
3302 3302 background-color: #269abc;
3303 3303 border-color: #1b6d85;
3304 3304 }
3305 3305 .btn-info:active,
3306 3306 .btn-info.active,
3307 3307 .open > .dropdown-toggle.btn-info {
3308 3308 background-image: none;
3309 3309 }
3310 3310 .btn-info.disabled:hover,
3311 3311 .btn-info[disabled]:hover,
3312 3312 fieldset[disabled] .btn-info:hover,
3313 3313 .btn-info.disabled:focus,
3314 3314 .btn-info[disabled]:focus,
3315 3315 fieldset[disabled] .btn-info:focus,
3316 3316 .btn-info.disabled.focus,
3317 3317 .btn-info[disabled].focus,
3318 3318 fieldset[disabled] .btn-info.focus {
3319 3319 background-color: #5bc0de;
3320 3320 border-color: #46b8da;
3321 3321 }
3322 3322 .btn-info .badge {
3323 3323 color: #5bc0de;
3324 3324 background-color: #fff;
3325 3325 }
3326 3326 .btn-warning {
3327 3327 color: #fff;
3328 3328 background-color: #f0ad4e;
3329 3329 border-color: #eea236;
3330 3330 }
3331 3331 .btn-warning:focus,
3332 3332 .btn-warning.focus {
3333 3333 color: #fff;
3334 3334 background-color: #ec971f;
3335 3335 border-color: #985f0d;
3336 3336 }
3337 3337 .btn-warning:hover {
3338 3338 color: #fff;
3339 3339 background-color: #ec971f;
3340 3340 border-color: #d58512;
3341 3341 }
3342 3342 .btn-warning:active,
3343 3343 .btn-warning.active,
3344 3344 .open > .dropdown-toggle.btn-warning {
3345 3345 color: #fff;
3346 3346 background-color: #ec971f;
3347 3347 border-color: #d58512;
3348 3348 }
3349 3349 .btn-warning:active:hover,
3350 3350 .btn-warning.active:hover,
3351 3351 .open > .dropdown-toggle.btn-warning:hover,
3352 3352 .btn-warning:active:focus,
3353 3353 .btn-warning.active:focus,
3354 3354 .open > .dropdown-toggle.btn-warning:focus,
3355 3355 .btn-warning:active.focus,
3356 3356 .btn-warning.active.focus,
3357 3357 .open > .dropdown-toggle.btn-warning.focus {
3358 3358 color: #fff;
3359 3359 background-color: #d58512;
3360 3360 border-color: #985f0d;
3361 3361 }
3362 3362 .btn-warning:active,
3363 3363 .btn-warning.active,
3364 3364 .open > .dropdown-toggle.btn-warning {
3365 3365 background-image: none;
3366 3366 }
3367 3367 .btn-warning.disabled:hover,
3368 3368 .btn-warning[disabled]:hover,
3369 3369 fieldset[disabled] .btn-warning:hover,
3370 3370 .btn-warning.disabled:focus,
3371 3371 .btn-warning[disabled]:focus,
3372 3372 fieldset[disabled] .btn-warning:focus,
3373 3373 .btn-warning.disabled.focus,
3374 3374 .btn-warning[disabled].focus,
3375 3375 fieldset[disabled] .btn-warning.focus {
3376 3376 background-color: #f0ad4e;
3377 3377 border-color: #eea236;
3378 3378 }
3379 3379 .btn-warning .badge {
3380 3380 color: #f0ad4e;
3381 3381 background-color: #fff;
3382 3382 }
3383 3383 .btn-danger {
3384 3384 color: #fff;
3385 3385 background-color: #d9534f;
3386 3386 border-color: #d43f3a;
3387 3387 }
3388 3388 .btn-danger:focus,
3389 3389 .btn-danger.focus {
3390 3390 color: #fff;
3391 3391 background-color: #c9302c;
3392 3392 border-color: #761c19;
3393 3393 }
3394 3394 .btn-danger:hover {
3395 3395 color: #fff;
3396 3396 background-color: #c9302c;
3397 3397 border-color: #ac2925;
3398 3398 }
3399 3399 .btn-danger:active,
3400 3400 .btn-danger.active,
3401 3401 .open > .dropdown-toggle.btn-danger {
3402 3402 color: #fff;
3403 3403 background-color: #c9302c;
3404 3404 border-color: #ac2925;
3405 3405 }
3406 3406 .btn-danger:active:hover,
3407 3407 .btn-danger.active:hover,
3408 3408 .open > .dropdown-toggle.btn-danger:hover,
3409 3409 .btn-danger:active:focus,
3410 3410 .btn-danger.active:focus,
3411 3411 .open > .dropdown-toggle.btn-danger:focus,
3412 3412 .btn-danger:active.focus,
3413 3413 .btn-danger.active.focus,
3414 3414 .open > .dropdown-toggle.btn-danger.focus {
3415 3415 color: #fff;
3416 3416 background-color: #ac2925;
3417 3417 border-color: #761c19;
3418 3418 }
3419 3419 .btn-danger:active,
3420 3420 .btn-danger.active,
3421 3421 .open > .dropdown-toggle.btn-danger {
3422 3422 background-image: none;
3423 3423 }
3424 3424 .btn-danger.disabled:hover,
3425 3425 .btn-danger[disabled]:hover,
3426 3426 fieldset[disabled] .btn-danger:hover,
3427 3427 .btn-danger.disabled:focus,
3428 3428 .btn-danger[disabled]:focus,
3429 3429 fieldset[disabled] .btn-danger:focus,
3430 3430 .btn-danger.disabled.focus,
3431 3431 .btn-danger[disabled].focus,
3432 3432 fieldset[disabled] .btn-danger.focus {
3433 3433 background-color: #d9534f;
3434 3434 border-color: #d43f3a;
3435 3435 }
3436 3436 .btn-danger .badge {
3437 3437 color: #d9534f;
3438 3438 background-color: #fff;
3439 3439 }
3440 3440 .btn-link {
3441 3441 color: #337ab7;
3442 3442 font-weight: normal;
3443 3443 border-radius: 0;
3444 3444 }
3445 3445 .btn-link,
3446 3446 .btn-link:active,
3447 3447 .btn-link.active,
3448 3448 .btn-link[disabled],
3449 3449 fieldset[disabled] .btn-link {
3450 3450 background-color: transparent;
3451 3451 -webkit-box-shadow: none;
3452 3452 box-shadow: none;
3453 3453 box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3454 3454 -o-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3455 3455 -ms-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3456 3456 -moz-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3457 3457 -webkit-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3458 3458 }
3459 3459 .btn-link,
3460 3460 .btn-link:hover,
3461 3461 .btn-link:focus,
3462 3462 .btn-link:active {
3463 3463 border-color: transparent;
3464 3464 }
3465 3465 .btn-link:hover,
3466 3466 .btn-link:focus {
3467 3467 color: #23527c;
3468 3468 text-decoration: underline;
3469 3469 background-color: transparent;
3470 3470 }
3471 3471 .btn-link[disabled]:hover,
3472 3472 fieldset[disabled] .btn-link:hover,
3473 3473 .btn-link[disabled]:focus,
3474 3474 fieldset[disabled] .btn-link:focus {
3475 3475 color: #777777;
3476 3476 text-decoration: none;
3477 3477 }
3478 3478 .btn-lg,
3479 3479 .btn-group-lg > .btn {
3480 3480 padding: 10px 16px;
3481 3481 font-size: 18px;
3482 3482 line-height: 1.3333333;
3483 3483 border-radius: 6px;
3484 3484 }
3485 3485 .btn-sm,
3486 3486 .btn-group-sm > .btn {
3487 3487 padding: 5px 10px;
3488 3488 font-size: 12px;
3489 3489 line-height: 1.5;
3490 3490 border-radius: 3px;
3491 3491 }
3492 3492 .btn-xs,
3493 3493 .btn-group-xs > .btn {
3494 3494 padding: 1px 5px;
3495 3495 font-size: 12px;
3496 3496 line-height: 1.5;
3497 3497 border-radius: 3px;
3498 3498 }
3499 3499 .btn-block {
3500 3500 display: block;
3501 3501 width: 100%;
3502 3502 }
3503 3503 .btn-block + .btn-block {
3504 3504 margin-top: 5px;
3505 3505 }
3506 3506 input[type="submit"].btn-block,
3507 3507 input[type="reset"].btn-block,
3508 3508 input[type="button"].btn-block {
3509 3509 width: 100%;
3510 3510 }
3511 3511 .fade {
3512 3512 opacity: 0;
3513 3513 -webkit-transition: opacity 0.15s linear;
3514 3514 -o-transition: opacity 0.15s linear;
3515 3515 transition: opacity 0.15s linear;
3516 3516 }
3517 3517 .fade.in {
3518 3518 opacity: 1;
3519 3519 }
3520 3520 .collapse {
3521 3521 display: none;
3522 3522 }
3523 3523 .collapse.in {
3524 3524 display: block;
3525 3525 }
3526 3526 tr.collapse.in {
3527 3527 display: table-row;
3528 3528 }
3529 3529 tbody.collapse.in {
3530 3530 display: table-row-group;
3531 3531 }
3532 3532 .collapsing {
3533 3533 position: relative;
3534 3534 height: 0;
3535 3535 overflow: hidden;
3536 3536 -webkit-transition-property: height, visibility;
3537 3537 transition-property: height, visibility;
3538 3538 -webkit-transition-duration: 0.35s;
3539 3539 transition-duration: 0.35s;
3540 3540 -webkit-transition: all 0.35s;
3541 3541 -moz-transition: all 0.35s;
3542 3542 -o-transition: all 0.35s;
3543 3543 transition: all 0.35s;
3544 3544 -webkit-transition-timing-function: ease;
3545 3545 transition-timing-function: ease;
3546 3546 }
3547 3547 .caret {
3548 3548 display: inline-block;
3549 3549 width: 0;
3550 3550 height: 0;
3551 3551 margin-left: 2px;
3552 3552 vertical-align: middle;
3553 3553 border-top: 4px dashed;
3554 3554 border-top: 4px solid \9;
3555 3555 border-right: 4px solid transparent;
3556 3556 border-left: 4px solid transparent;
3557 3557 }
3558 3558 .dropup,
3559 3559 .dropdown {
3560 3560 position: relative;
3561 3561 }
3562 3562 .dropdown-toggle:focus {
3563 3563 outline: 0;
3564 3564 }
3565 3565 .dropdown-menu {
3566 3566 position: absolute;
3567 3567 top: 100%;
3568 3568 left: 0;
3569 3569 z-index: 1000;
3570 3570 display: none;
3571 3571 float: left;
3572 3572 min-width: 160px;
3573 3573 padding: 5px 0;
3574 3574 margin: 2px 0 0;
3575 3575 list-style: none;
3576 3576 font-size: 14px;
3577 3577 text-align: left;
3578 3578 background-color: #fff;
3579 3579 border: 1px solid #ccc;
3580 3580 border: 1px solid rgba(0, 0, 0, 0.15);
3581 3581 border-radius: 4px;
3582 3582 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3583 3583 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3584 3584 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175) 0 5px rgba(77, 77, 77, 0.5);
3585 3585 -o-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175) 0 5px rgba(77, 77, 77, 0.5);
3586 3586 -ms-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175) 0 5px rgba(77, 77, 77, 0.5);
3587 3587 -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175) 0 5px rgba(77, 77, 77, 0.5);
3588 3588 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175) 0 5px rgba(77, 77, 77, 0.5);
3589 3589 background-clip: padding-box;
3590 3590 }
3591 3591 .dropdown-menu.pull-right {
3592 3592 right: 0;
3593 3593 left: auto;
3594 3594 }
3595 3595 .dropdown-menu .divider {
3596 3596 height: 1px;
3597 3597 margin: 9px 0;
3598 3598 overflow: hidden;
3599 3599 background-color: #e5e5e5;
3600 3600 }
3601 3601 .dropdown-menu > li > a {
3602 3602 display: block;
3603 3603 padding: 3px 20px;
3604 3604 clear: both;
3605 3605 font-weight: normal;
3606 3606 line-height: 1.42857143;
3607 3607 color: #333333;
3608 3608 white-space: nowrap;
3609 3609 }
3610 3610 .dropdown-menu > li > a:hover,
3611 3611 .dropdown-menu > li > a:focus {
3612 3612 text-decoration: none;
3613 3613 color: #262626;
3614 3614 background-color: #f5f5f5;
3615 3615 }
3616 3616 .dropdown-menu > .active > a,
3617 3617 .dropdown-menu > .active > a:hover,
3618 3618 .dropdown-menu > .active > a:focus {
3619 3619 color: #fff;
3620 3620 text-decoration: none;
3621 3621 outline: 0;
3622 3622 background-color: #337ab7;
3623 3623 }
3624 3624 .dropdown-menu > .disabled > a,
3625 3625 .dropdown-menu > .disabled > a:hover,
3626 3626 .dropdown-menu > .disabled > a:focus {
3627 3627 color: #777777;
3628 3628 }
3629 3629 .dropdown-menu > .disabled > a:hover,
3630 3630 .dropdown-menu > .disabled > a:focus {
3631 3631 text-decoration: none;
3632 3632 background-color: transparent;
3633 3633 background-image: none;
3634 3634 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3635 3635 cursor: not-allowed;
3636 3636 }
3637 3637 .open > .dropdown-menu {
3638 3638 display: block;
3639 3639 }
3640 3640 .open > a {
3641 3641 outline: 0;
3642 3642 }
3643 3643 .dropdown-menu-right {
3644 3644 left: auto;
3645 3645 right: 0;
3646 3646 }
3647 3647 .dropdown-menu-left {
3648 3648 left: 0;
3649 3649 right: auto;
3650 3650 }
3651 3651 .dropdown-header {
3652 3652 display: block;
3653 3653 padding: 3px 20px;
3654 3654 font-size: 12px;
3655 3655 line-height: 1.42857143;
3656 3656 color: #777777;
3657 3657 white-space: nowrap;
3658 3658 }
3659 3659 .dropdown-backdrop {
3660 3660 position: fixed;
3661 3661 left: 0;
3662 3662 right: 0;
3663 3663 bottom: 0;
3664 3664 top: 0;
3665 3665 z-index: 990;
3666 3666 }
3667 3667 .pull-right > .dropdown-menu {
3668 3668 right: 0;
3669 3669 left: auto;
3670 3670 }
3671 3671 .dropup .caret,
3672 3672 .navbar-fixed-bottom .dropdown .caret {
3673 3673 border-top: 0;
3674 3674 border-bottom: 4px dashed;
3675 3675 border-bottom: 4px solid \9;
3676 3676 content: "";
3677 3677 }
3678 3678 .dropup .dropdown-menu,
3679 3679 .navbar-fixed-bottom .dropdown .dropdown-menu {
3680 3680 top: auto;
3681 3681 bottom: 100%;
3682 3682 margin-bottom: 2px;
3683 3683 }
3684 3684 @media (min-width: 768px) {
3685 3685 .navbar-right .dropdown-menu {
3686 3686 left: auto;
3687 3687 right: 0;
3688 3688 }
3689 3689 .navbar-right .dropdown-menu-left {
3690 3690 left: 0;
3691 3691 right: auto;
3692 3692 }
3693 3693 }
3694 3694 .btn-group,
3695 3695 .btn-group-vertical {
3696 3696 position: relative;
3697 3697 display: inline-block;
3698 3698 vertical-align: middle;
3699 3699 }
3700 3700 .btn-group > .btn,
3701 3701 .btn-group-vertical > .btn {
3702 3702 position: relative;
3703 3703 float: left;
3704 3704 }
3705 3705 .btn-group > .btn:hover,
3706 3706 .btn-group-vertical > .btn:hover,
3707 3707 .btn-group > .btn:focus,
3708 3708 .btn-group-vertical > .btn:focus,
3709 3709 .btn-group > .btn:active,
3710 3710 .btn-group-vertical > .btn:active,
3711 3711 .btn-group > .btn.active,
3712 3712 .btn-group-vertical > .btn.active {
3713 3713 z-index: 2;
3714 3714 }
3715 3715 .btn-group .btn + .btn,
3716 3716 .btn-group .btn + .btn-group,
3717 3717 .btn-group .btn-group + .btn,
3718 3718 .btn-group .btn-group + .btn-group {
3719 3719 margin-left: -1px;
3720 3720 }
3721 3721 .btn-toolbar {
3722 3722 margin-left: -5px;
3723 3723 }
3724 3724 .btn-toolbar .btn,
3725 3725 .btn-toolbar .btn-group,
3726 3726 .btn-toolbar .input-group {
3727 3727 float: left;
3728 3728 }
3729 3729 .btn-toolbar > .btn,
3730 3730 .btn-toolbar > .btn-group,
3731 3731 .btn-toolbar > .input-group {
3732 3732 margin-left: 5px;
3733 3733 }
3734 3734 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3735 3735 border-radius: 0;
3736 3736 }
3737 3737 .btn-group > .btn:first-child {
3738 3738 margin-left: 0;
3739 3739 }
3740 3740 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3741 3741 border-bottom-right-radius: 0;
3742 3742 border-top-right-radius: 0;
3743 3743 }
3744 3744 .btn-group > .btn:last-child:not(:first-child),
3745 3745 .btn-group > .dropdown-toggle:not(:first-child) {
3746 3746 border-bottom-left-radius: 0;
3747 3747 border-top-left-radius: 0;
3748 3748 }
3749 3749 .btn-group > .btn-group {
3750 3750 float: left;
3751 3751 }
3752 3752 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3753 3753 border-radius: 0;
3754 3754 }
3755 3755 .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
3756 3756 .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3757 3757 border-bottom-right-radius: 0;
3758 3758 border-top-right-radius: 0;
3759 3759 }
3760 3760 .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
3761 3761 border-bottom-left-radius: 0;
3762 3762 border-top-left-radius: 0;
3763 3763 }
3764 3764 .btn-group .dropdown-toggle:active,
3765 3765 .btn-group.open .dropdown-toggle {
3766 3766 outline: 0;
3767 3767 }
3768 3768 .btn-group > .btn + .dropdown-toggle {
3769 3769 padding-left: 8px;
3770 3770 padding-right: 8px;
3771 3771 }
3772 3772 .btn-group > .btn-lg + .dropdown-toggle {
3773 3773 padding-left: 12px;
3774 3774 padding-right: 12px;
3775 3775 }
3776 3776 .btn-group.open .dropdown-toggle {
3777 3777 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3778 3778 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3779 3779 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3780 3780 -o-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3781 3781 -ms-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3782 3782 -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3783 3783 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) 0 5px rgba(77, 77, 77, 0.5);
3784 3784 }
3785 3785 .btn-group.open .dropdown-toggle.btn-link {
3786 3786 -webkit-box-shadow: none;
3787 3787 box-shadow: none;
3788 3788 box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3789 3789 -o-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3790 3790 -ms-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3791 3791 -moz-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3792 3792 -webkit-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
3793 3793 }
3794 3794 .btn .caret {
3795 3795 margin-left: 0;
3796 3796 }
3797 3797 .btn-lg .caret {
3798 3798 border-width: 5px 5px 0;
3799 3799 border-bottom-width: 0;
3800 3800 }
3801 3801 .dropup .btn-lg .caret {
3802 3802 border-width: 0 5px 5px;
3803 3803 }
3804 3804 .btn-group-vertical > .btn,
3805 3805 .btn-group-vertical > .btn-group,
3806 3806 .btn-group-vertical > .btn-group > .btn {
3807 3807 display: block;
3808 3808 float: none;
3809 3809 width: 100%;
3810 3810 max-width: 100%;
3811 3811 }
3812 3812 .btn-group-vertical > .btn-group > .btn {
3813 3813 float: none;
3814 3814 }
3815 3815 .btn-group-vertical > .btn + .btn,
3816 3816 .btn-group-vertical > .btn + .btn-group,
3817 3817 .btn-group-vertical > .btn-group + .btn,
3818 3818 .btn-group-vertical > .btn-group + .btn-group {
3819 3819 margin-top: -1px;
3820 3820 margin-left: 0;
3821 3821 }
3822 3822 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3823 3823 border-radius: 0;
3824 3824 }
3825 3825 .btn-group-vertical > .btn:first-child:not(:last-child) {
3826 3826 border-top-right-radius: 4px;
3827 3827 border-top-left-radius: 4px;
3828 3828 border-bottom-right-radius: 0;
3829 3829 border-bottom-left-radius: 0;
3830 3830 }
3831 3831 .btn-group-vertical > .btn:last-child:not(:first-child) {
3832 3832 border-top-right-radius: 0;
3833 3833 border-top-left-radius: 0;
3834 3834 border-bottom-right-radius: 4px;
3835 3835 border-bottom-left-radius: 4px;
3836 3836 }
3837 3837 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3838 3838 border-radius: 0;
3839 3839 }
3840 3840 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3841 3841 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3842 3842 border-bottom-right-radius: 0;
3843 3843 border-bottom-left-radius: 0;
3844 3844 }
3845 3845 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3846 3846 border-top-right-radius: 0;
3847 3847 border-top-left-radius: 0;
3848 3848 }
3849 3849 .btn-group-justified {
3850 3850 display: table;
3851 3851 width: 100%;
3852 3852 table-layout: fixed;
3853 3853 border-collapse: separate;
3854 3854 }
3855 3855 .btn-group-justified > .btn,
3856 3856 .btn-group-justified > .btn-group {
3857 3857 float: none;
3858 3858 display: table-cell;
3859 3859 width: 1%;
3860 3860 }
3861 3861 .btn-group-justified > .btn-group .btn {
3862 3862 width: 100%;
3863 3863 }
3864 3864 .btn-group-justified > .btn-group .dropdown-menu {
3865 3865 left: auto;
3866 3866 }
3867 3867 [data-toggle="buttons"] > .btn input[type="radio"],
3868 3868 [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3869 3869 [data-toggle="buttons"] > .btn input[type="checkbox"],
3870 3870 [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3871 3871 position: absolute;
3872 3872 clip: rect(0, 0, 0, 0);
3873 3873 pointer-events: none;
3874 3874 }
3875 3875 .input-group {
3876 3876 position: relative;
3877 3877 display: table;
3878 3878 border-collapse: separate;
3879 3879 }
3880 3880 .input-group[class*="col-"] {
3881 3881 float: none;
3882 3882 padding-left: 0;
3883 3883 padding-right: 0;
3884 3884 }
3885 3885 .input-group .form-control {
3886 3886 position: relative;
3887 3887 z-index: 2;
3888 3888 float: left;
3889 3889 width: 100%;
3890 3890 margin-bottom: 0;
3891 3891 }
3892 3892 .input-group .form-control:focus {
3893 3893 z-index: 3;
3894 3894 }
3895 3895 .input-group-lg > .form-control,
3896 3896 .input-group-lg > .input-group-addon,
3897 3897 .input-group-lg > .input-group-btn > .btn {
3898 3898 height: 46px;
3899 3899 padding: 10px 16px;
3900 3900 font-size: 18px;
3901 3901 line-height: 1.3333333;
3902 3902 border-radius: 6px;
3903 3903 }
3904 3904 select.input-group-lg > .form-control,
3905 3905 select.input-group-lg > .input-group-addon,
3906 3906 select.input-group-lg > .input-group-btn > .btn {
3907 3907 height: 46px;
3908 3908 line-height: 46px;
3909 3909 }
3910 3910 textarea.input-group-lg > .form-control,
3911 3911 textarea.input-group-lg > .input-group-addon,
3912 3912 textarea.input-group-lg > .input-group-btn > .btn,
3913 3913 select[multiple].input-group-lg > .form-control,
3914 3914 select[multiple].input-group-lg > .input-group-addon,
3915 3915 select[multiple].input-group-lg > .input-group-btn > .btn {
3916 3916 height: auto;
3917 3917 }
3918 3918 .input-group-sm > .form-control,
3919 3919 .input-group-sm > .input-group-addon,
3920 3920 .input-group-sm > .input-group-btn > .btn {
3921 3921 height: 30px;
3922 3922 padding: 5px 10px;
3923 3923 font-size: 12px;
3924 3924 line-height: 1.5;
3925 3925 border-radius: 3px;
3926 3926 }
3927 3927 select.input-group-sm > .form-control,
3928 3928 select.input-group-sm > .input-group-addon,
3929 3929 select.input-group-sm > .input-group-btn > .btn {
3930 3930 height: 30px;
3931 3931 line-height: 30px;
3932 3932 }
3933 3933 textarea.input-group-sm > .form-control,
3934 3934 textarea.input-group-sm > .input-group-addon,
3935 3935 textarea.input-group-sm > .input-group-btn > .btn,
3936 3936 select[multiple].input-group-sm > .form-control,
3937 3937 select[multiple].input-group-sm > .input-group-addon,
3938 3938 select[multiple].input-group-sm > .input-group-btn > .btn {
3939 3939 height: auto;
3940 3940 }
3941 3941 .input-group-addon,
3942 3942 .input-group-btn,
3943 3943 .input-group .form-control {
3944 3944 display: table-cell;
3945 3945 }
3946 3946 .input-group-addon:not(:first-child):not(:last-child),
3947 3947 .input-group-btn:not(:first-child):not(:last-child),
3948 3948 .input-group .form-control:not(:first-child):not(:last-child) {
3949 3949 border-radius: 0;
3950 3950 }
3951 3951 .input-group-addon,
3952 3952 .input-group-btn {
3953 3953 width: 1%;
3954 3954 white-space: nowrap;
3955 3955 vertical-align: middle;
3956 3956 }
3957 3957 .input-group-addon {
3958 3958 padding: 6px 12px;
3959 3959 font-size: 14px;
3960 3960 font-weight: normal;
3961 3961 line-height: 1;
3962 3962 color: #555555;
3963 3963 text-align: center;
3964 3964 background-color: #eeeeee;
3965 3965 border: 1px solid #ccc;
3966 3966 border-radius: 4px;
3967 3967 }
3968 3968 .input-group-addon.input-sm {
3969 3969 padding: 5px 10px;
3970 3970 font-size: 12px;
3971 3971 border-radius: 3px;
3972 3972 }
3973 3973 .input-group-addon.input-lg {
3974 3974 padding: 10px 16px;
3975 3975 font-size: 18px;
3976 3976 border-radius: 6px;
3977 3977 }
3978 3978 .input-group-addon input[type="radio"],
3979 3979 .input-group-addon input[type="checkbox"] {
3980 3980 margin-top: 0;
3981 3981 }
3982 3982 .input-group .form-control:first-child,
3983 3983 .input-group-addon:first-child,
3984 3984 .input-group-btn:first-child > .btn,
3985 3985 .input-group-btn:first-child > .btn-group > .btn,
3986 3986 .input-group-btn:first-child > .dropdown-toggle,
3987 3987 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3988 3988 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3989 3989 border-bottom-right-radius: 0;
3990 3990 border-top-right-radius: 0;
3991 3991 }
3992 3992 .input-group-addon:first-child {
3993 3993 border-right: 0;
3994 3994 }
3995 3995 .input-group .form-control:last-child,
3996 3996 .input-group-addon:last-child,
3997 3997 .input-group-btn:last-child > .btn,
3998 3998 .input-group-btn:last-child > .btn-group > .btn,
3999 3999 .input-group-btn:last-child > .dropdown-toggle,
4000 4000 .input-group-btn:first-child > .btn:not(:first-child),
4001 4001 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
4002 4002 border-bottom-left-radius: 0;
4003 4003 border-top-left-radius: 0;
4004 4004 }
4005 4005 .input-group-addon:last-child {
4006 4006 border-left: 0;
4007 4007 }
4008 4008 .input-group-btn {
4009 4009 position: relative;
4010 4010 font-size: 0;
4011 4011 white-space: nowrap;
4012 4012 }
4013 4013 .input-group-btn > .btn {
4014 4014 position: relative;
4015 4015 }
4016 4016 .input-group-btn > .btn + .btn {
4017 4017 margin-left: -1px;
4018 4018 }
4019 4019 .input-group-btn > .btn:hover,
4020 4020 .input-group-btn > .btn:focus,
4021 4021 .input-group-btn > .btn:active {
4022 4022 z-index: 2;
4023 4023 }
4024 4024 .input-group-btn:first-child > .btn,
4025 4025 .input-group-btn:first-child > .btn-group {
4026 4026 margin-right: -1px;
4027 4027 }
4028 4028 .input-group-btn:last-child > .btn,
4029 4029 .input-group-btn:last-child > .btn-group {
4030 4030 z-index: 2;
4031 4031 margin-left: -1px;
4032 4032 }
4033 4033 .nav {
4034 4034 margin-bottom: 0;
4035 4035 padding-left: 0;
4036 4036 list-style: none;
4037 4037 }
4038 4038 .nav > li {
4039 4039 position: relative;
4040 4040 display: block;
4041 4041 }
4042 4042 .nav > li > a {
4043 4043 position: relative;
4044 4044 display: block;
4045 4045 padding: 10px 15px;
4046 4046 }
4047 4047 .nav > li > a:hover,
4048 4048 .nav > li > a:focus {
4049 4049 text-decoration: none;
4050 4050 background-color: #eeeeee;
4051 4051 }
4052 4052 .nav > li.disabled > a {
4053 4053 color: #777777;
4054 4054 }
4055 4055 .nav > li.disabled > a:hover,
4056 4056 .nav > li.disabled > a:focus {
4057 4057 color: #777777;
4058 4058 text-decoration: none;
4059 4059 background-color: transparent;
4060 4060 cursor: not-allowed;
4061 4061 }
4062 4062 .nav .open > a,
4063 4063 .nav .open > a:hover,
4064 4064 .nav .open > a:focus {
4065 4065 background-color: #eeeeee;
4066 4066 border-color: #337ab7;
4067 4067 }
4068 4068 .nav .nav-divider {
4069 4069 height: 1px;
4070 4070 margin: 9px 0;
4071 4071 overflow: hidden;
4072 4072 background-color: #e5e5e5;
4073 4073 }
4074 4074 .nav > li > a > img {
4075 4075 max-width: none;
4076 4076 }
4077 4077 .nav-tabs {
4078 4078 border-bottom: 1px solid #ddd;
4079 4079 }
4080 4080 .nav-tabs > li {
4081 4081 float: left;
4082 4082 margin-bottom: -1px;
4083 4083 }
4084 4084 .nav-tabs > li > a {
4085 4085 margin-right: 2px;
4086 4086 line-height: 1.42857143;
4087 4087 border: 1px solid transparent;
4088 4088 border-radius: 4px 4px 0 0;
4089 4089 }
4090 4090 .nav-tabs > li > a:hover {
4091 4091 border-color: #eeeeee #eeeeee #ddd;
4092 4092 }
4093 4093 .nav-tabs > li.active > a,
4094 4094 .nav-tabs > li.active > a:hover,
4095 4095 .nav-tabs > li.active > a:focus {
4096 4096 color: #555555;
4097 4097 background-color: #fff;
4098 4098 border: 1px solid #ddd;
4099 4099 border-bottom-color: transparent;
4100 4100 cursor: default;
4101 4101 }
4102 4102 .nav-tabs.nav-justified {
4103 4103 width: 100%;
4104 4104 border-bottom: 0;
4105 4105 }
4106 4106 .nav-tabs.nav-justified > li {
4107 4107 float: none;
4108 4108 }
4109 4109 .nav-tabs.nav-justified > li > a {
4110 4110 text-align: center;
4111 4111 margin-bottom: 5px;
4112 4112 }
4113 4113 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
4114 4114 top: auto;
4115 4115 left: auto;
4116 4116 }
4117 4117 @media (min-width: 768px) {
4118 4118 .nav-tabs.nav-justified > li {
4119 4119 display: table-cell;
4120 4120 width: 1%;
4121 4121 }
4122 4122 .nav-tabs.nav-justified > li > a {
4123 4123 margin-bottom: 0;
4124 4124 }
4125 4125 }
4126 4126 .nav-tabs.nav-justified > li > a {
4127 4127 margin-right: 0;
4128 4128 border-radius: 4px;
4129 4129 }
4130 4130 .nav-tabs.nav-justified > .active > a,
4131 4131 .nav-tabs.nav-justified > .active > a:hover,
4132 4132 .nav-tabs.nav-justified > .active > a:focus {
4133 4133 border: 1px solid #ddd;
4134 4134 }
4135 4135 @media (min-width: 768px) {
4136 4136 .nav-tabs.nav-justified > li > a {
4137 4137 border-bottom: 1px solid #ddd;
4138 4138 border-radius: 4px 4px 0 0;
4139 4139 }
4140 4140 .nav-tabs.nav-justified > .active > a,
4141 4141 .nav-tabs.nav-justified > .active > a:hover,
4142 4142 .nav-tabs.nav-justified > .active > a:focus {
4143 4143 border-bottom-color: #fff;
4144 4144 }
4145 4145 }
4146 4146 .nav-pills > li {
4147 4147 float: left;
4148 4148 }
4149 4149 .nav-pills > li > a {
4150 4150 border-radius: 4px;
4151 4151 }
4152 4152 .nav-pills > li + li {
4153 4153 margin-left: 2px;
4154 4154 }
4155 4155 .nav-pills > li.active > a,
4156 4156 .nav-pills > li.active > a:hover,
4157 4157 .nav-pills > li.active > a:focus {
4158 4158 color: #fff;
4159 4159 background-color: #337ab7;
4160 4160 }
4161 4161 .nav-stacked > li {
4162 4162 float: none;
4163 4163 }
4164 4164 .nav-stacked > li + li {
4165 4165 margin-top: 2px;
4166 4166 margin-left: 0;
4167 4167 }
4168 4168 .nav-justified {
4169 4169 width: 100%;
4170 4170 }
4171 4171 .nav-justified > li {
4172 4172 float: none;
4173 4173 }
4174 4174 .nav-justified > li > a {
4175 4175 text-align: center;
4176 4176 margin-bottom: 5px;
4177 4177 }
4178 4178 .nav-justified > .dropdown .dropdown-menu {
4179 4179 top: auto;
4180 4180 left: auto;
4181 4181 }
4182 4182 @media (min-width: 768px) {
4183 4183 .nav-justified > li {
4184 4184 display: table-cell;
4185 4185 width: 1%;
4186 4186 }
4187 4187 .nav-justified > li > a {
4188 4188 margin-bottom: 0;
4189 4189 }
4190 4190 }
4191 4191 .nav-tabs-justified {
4192 4192 border-bottom: 0;
4193 4193 }
4194 4194 .nav-tabs-justified > li > a {
4195 4195 margin-right: 0;
4196 4196 border-radius: 4px;
4197 4197 }
4198 4198 .nav-tabs-justified > .active > a,
4199 4199 .nav-tabs-justified > .active > a:hover,
4200 4200 .nav-tabs-justified > .active > a:focus {
4201 4201 border: 1px solid #ddd;
4202 4202 }
4203 4203 @media (min-width: 768px) {
4204 4204 .nav-tabs-justified > li > a {
4205 4205 border-bottom: 1px solid #ddd;
4206 4206 border-radius: 4px 4px 0 0;
4207 4207 }
4208 4208 .nav-tabs-justified > .active > a,
4209 4209 .nav-tabs-justified > .active > a:hover,
4210 4210 .nav-tabs-justified > .active > a:focus {
4211 4211 border-bottom-color: #fff;
4212 4212 }
4213 4213 }
4214 4214 .tab-content > .tab-pane {
4215 4215 display: none;
4216 4216 }
4217 4217 .tab-content > .active {
4218 4218 display: block;
4219 4219 }
4220 4220 .nav-tabs .dropdown-menu {
4221 4221 margin-top: -1px;
4222 4222 border-top-right-radius: 0;
4223 4223 border-top-left-radius: 0;
4224 4224 }
4225 4225 .navbar {
4226 4226 position: relative;
4227 4227 min-height: 50px;
4228 4228 margin-bottom: 20px;
4229 4229 border: 1px solid transparent;
4230 4230 }
4231 4231 @media (min-width: 768px) {
4232 4232 .navbar {
4233 4233 border-radius: 4px;
4234 4234 }
4235 4235 }
4236 4236 @media (min-width: 768px) {
4237 4237 .navbar-header {
4238 4238 float: left;
4239 4239 }
4240 4240 }
4241 4241 .navbar-collapse {
4242 4242 overflow-x: visible;
4243 4243 padding-right: 5px;
4244 4244 padding-left: 5px;
4245 4245 border-top: 1px solid transparent;
4246 4246 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4247 4247 -webkit-overflow-scrolling: touch;
4248 4248 }
4249 4249 .navbar-collapse.in {
4250 4250 overflow-y: auto;
4251 4251 }
4252 4252 @media (min-width: 768px) {
4253 4253 .navbar-collapse {
4254 4254 width: auto;
4255 4255 border-top: 0;
4256 4256 box-shadow: none;
4257 4257 }
4258 4258 .navbar-collapse.collapse {
4259 4259 display: block !important;
4260 4260 height: auto !important;
4261 4261 padding-bottom: 0;
4262 4262 overflow: visible !important;
4263 4263 }
4264 4264 .navbar-collapse.in {
4265 4265 overflow-y: visible;
4266 4266 }
4267 4267 .navbar-fixed-top .navbar-collapse,
4268 4268 .navbar-static-top .navbar-collapse,
4269 4269 .navbar-fixed-bottom .navbar-collapse {
4270 4270 padding-left: 0;
4271 4271 padding-right: 0;
4272 4272 }
4273 4273 }
4274 4274 .navbar-fixed-top .navbar-collapse,
4275 4275 .navbar-fixed-bottom .navbar-collapse {
4276 4276 max-height: 340px;
4277 4277 }
4278 4278 @media (max-device-width: 480px) and (orientation: landscape) {
4279 4279 .navbar-fixed-top .navbar-collapse,
4280 4280 .navbar-fixed-bottom .navbar-collapse {
4281 4281 max-height: 200px;
4282 4282 }
4283 4283 }
4284 4284 .container > .navbar-header,
4285 4285 .container-fluid > .navbar-header,
4286 4286 .container > .navbar-collapse,
4287 4287 .container-fluid > .navbar-collapse {
4288 4288 margin-right: -5px;
4289 4289 margin-left: -5px;
4290 4290 }
4291 4291 @media (min-width: 768px) {
4292 4292 .container > .navbar-header,
4293 4293 .container-fluid > .navbar-header,
4294 4294 .container > .navbar-collapse,
4295 4295 .container-fluid > .navbar-collapse {
4296 4296 margin-right: 0;
4297 4297 margin-left: 0;
4298 4298 }
4299 4299 }
4300 4300 .navbar-static-top {
4301 4301 z-index: 1000;
4302 4302 border-width: 0 0 1px;
4303 4303 }
4304 4304 @media (min-width: 768px) {
4305 4305 .navbar-static-top {
4306 4306 border-radius: 0;
4307 4307 }
4308 4308 }
4309 4309 .navbar-fixed-top,
4310 4310 .navbar-fixed-bottom {
4311 4311 position: fixed;
4312 4312 right: 0;
4313 4313 left: 0;
4314 4314 z-index: 1030;
4315 4315 }
4316 4316 @media (min-width: 768px) {
4317 4317 .navbar-fixed-top,
4318 4318 .navbar-fixed-bottom {
4319 4319 border-radius: 0;
4320 4320 }
4321 4321 }
4322 4322 .navbar-fixed-top {
4323 4323 top: 0;
4324 4324 border-width: 0 0 1px;
4325 4325 }
4326 4326 .navbar-fixed-bottom {
4327 4327 bottom: 0;
4328 4328 margin-bottom: 0;
4329 4329 border-width: 1px 0 0;
4330 4330 }
4331 4331 .navbar-brand {
4332 4332 float: left;
4333 4333 padding: 15px 5px;
4334 4334 font-size: 18px;
4335 4335 line-height: 20px;
4336 4336 height: 50px;
4337 4337 }
4338 4338 .navbar-brand:hover,
4339 4339 .navbar-brand:focus {
4340 4340 text-decoration: none;
4341 4341 }
4342 4342 .navbar-brand > img {
4343 4343 display: block;
4344 4344 }
4345 4345 @media (min-width: 768px) {
4346 4346 .navbar > .container .navbar-brand,
4347 4347 .navbar > .container-fluid .navbar-brand {
4348 4348 margin-left: -5px;
4349 4349 }
4350 4350 }
4351 4351 .navbar-toggle {
4352 4352 position: relative;
4353 4353 float: right;
4354 4354 margin-right: 5px;
4355 4355 padding: 9px 10px;
4356 4356 margin-top: 8px;
4357 4357 margin-bottom: 8px;
4358 4358 background-color: transparent;
4359 4359 background-image: none;
4360 4360 border: 1px solid transparent;
4361 4361 border-radius: 4px;
4362 4362 }
4363 4363 .navbar-toggle:focus {
4364 4364 outline: 0;
4365 4365 }
4366 4366 .navbar-toggle .icon-bar {
4367 4367 display: block;
4368 4368 width: 22px;
4369 4369 height: 2px;
4370 4370 border-radius: 1px;
4371 4371 }
4372 4372 .navbar-toggle .icon-bar + .icon-bar {
4373 4373 margin-top: 4px;
4374 4374 }
4375 4375 @media (min-width: 768px) {
4376 4376 .navbar-toggle {
4377 4377 display: none;
4378 4378 }
4379 4379 }
4380 4380 .navbar-nav {
4381 4381 margin: 7.5px -5px;
4382 4382 }
4383 4383 .navbar-nav > li > a {
4384 4384 padding-top: 10px;
4385 4385 padding-bottom: 10px;
4386 4386 line-height: 20px;
4387 4387 }
4388 4388 @media (max-width: 767px) {
4389 4389 .navbar-nav .open .dropdown-menu {
4390 4390 position: static;
4391 4391 float: none;
4392 4392 width: auto;
4393 4393 margin-top: 0;
4394 4394 background-color: transparent;
4395 4395 border: 0;
4396 4396 box-shadow: none;
4397 4397 }
4398 4398 .navbar-nav .open .dropdown-menu > li > a,
4399 4399 .navbar-nav .open .dropdown-menu .dropdown-header {
4400 4400 padding: 5px 15px 5px 25px;
4401 4401 }
4402 4402 .navbar-nav .open .dropdown-menu > li > a {
4403 4403 line-height: 20px;
4404 4404 }
4405 4405 .navbar-nav .open .dropdown-menu > li > a:hover,
4406 4406 .navbar-nav .open .dropdown-menu > li > a:focus {
4407 4407 background-image: none;
4408 4408 }
4409 4409 }
4410 4410 @media (min-width: 768px) {
4411 4411 .navbar-nav {
4412 4412 float: left;
4413 4413 margin: 0;
4414 4414 }
4415 4415 .navbar-nav > li {
4416 4416 float: left;
4417 4417 }
4418 4418 .navbar-nav > li > a {
4419 4419 padding-top: 15px;
4420 4420 padding-bottom: 15px;
4421 4421 }
4422 4422 }
4423 4423 .navbar-form {
4424 4424 margin-left: -5px;
4425 4425 margin-right: -5px;
4426 4426 padding: 10px 5px;
4427 4427 border-top: 1px solid transparent;
4428 4428 border-bottom: 1px solid transparent;
4429 4429 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4430 4430 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4431 4431 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1) 0 5px rgba(77, 77, 77, 0.5);
4432 4432 -o-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1) 0 5px rgba(77, 77, 77, 0.5);
4433 4433 -ms-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1) 0 5px rgba(77, 77, 77, 0.5);
4434 4434 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1) 0 5px rgba(77, 77, 77, 0.5);
4435 4435 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1) 0 5px rgba(77, 77, 77, 0.5);
4436 4436 margin-top: 8px;
4437 4437 margin-bottom: 8px;
4438 4438 }
4439 4439 @media (min-width: 768px) {
4440 4440 .navbar-form .form-group {
4441 4441 display: inline-block;
4442 4442 margin-bottom: 0;
4443 4443 vertical-align: middle;
4444 4444 }
4445 4445 .navbar-form .form-control {
4446 4446 display: inline-block;
4447 4447 width: auto;
4448 4448 vertical-align: middle;
4449 4449 }
4450 4450 .navbar-form .form-control-static {
4451 4451 display: inline-block;
4452 4452 }
4453 4453 .navbar-form .input-group {
4454 4454 display: inline-table;
4455 4455 vertical-align: middle;
4456 4456 }
4457 4457 .navbar-form .input-group .input-group-addon,
4458 4458 .navbar-form .input-group .input-group-btn,
4459 4459 .navbar-form .input-group .form-control {
4460 4460 width: auto;
4461 4461 }
4462 4462 .navbar-form .input-group > .form-control {
4463 4463 width: 100%;
4464 4464 }
4465 4465 .navbar-form .control-label {
4466 4466 margin-bottom: 0;
4467 4467 vertical-align: middle;
4468 4468 }
4469 4469 .navbar-form .radio,
4470 4470 .navbar-form .checkbox {
4471 4471 display: inline-block;
4472 4472 margin-top: 0;
4473 4473 margin-bottom: 0;
4474 4474 vertical-align: middle;
4475 4475 }
4476 4476 .navbar-form .radio label,
4477 4477 .navbar-form .checkbox label {
4478 4478 padding-left: 0;
4479 4479 }
4480 4480 .navbar-form .radio input[type="radio"],
4481 4481 .navbar-form .checkbox input[type="checkbox"] {
4482 4482 position: relative;
4483 4483 margin-left: 0;
4484 4484 }
4485 4485 .navbar-form .has-feedback .form-control-feedback {
4486 4486 top: 0;
4487 4487 }
4488 4488 }
4489 4489 @media (max-width: 767px) {
4490 4490 .navbar-form .form-group {
4491 4491 margin-bottom: 5px;
4492 4492 }
4493 4493 .navbar-form .form-group:last-child {
4494 4494 margin-bottom: 0;
4495 4495 }
4496 4496 }
4497 4497 @media (min-width: 768px) {
4498 4498 .navbar-form {
4499 4499 width: auto;
4500 4500 border: 0;
4501 4501 margin-left: 0;
4502 4502 margin-right: 0;
4503 4503 padding-top: 0;
4504 4504 padding-bottom: 0;
4505 4505 -webkit-box-shadow: none;
4506 4506 box-shadow: none;
4507 4507 box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
4508 4508 -o-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
4509 4509 -ms-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
4510 4510 -moz-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
4511 4511 -webkit-box-shadow: none 0 5px rgba(77, 77, 77, 0.5);
4512 4512 }
4513 4513 }
4514 4514 .navbar-nav > li > .dropdown-menu {
4515 4515 margin-top: 0;
4516 4516 border-top-right-radius: 0;
4517 4517 border-top-left-radius: 0;
4518 4518 }
4519 4519 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4520 4520 margin-bottom: 0;
4521 4521 border-top-right-radius: 4px;
4522 4522 border-top-left-radius: 4px;
4523 4523 border-bottom-right-radius: 0;
4524 4524 border-bottom-left-radius: 0;
4525 4525 }
4526 4526 .navbar-btn {
4527 4527 margin-top: 8px;
4528 4528 margin-bottom: 8px;
4529 4529 }
4530 4530 .navbar-btn.btn-sm {
4531 4531 margin-top: 10px;
4532 4532 margin-bottom: 10px;
4533 4533 }
4534 4534 .navbar-btn.btn-xs {
4535 4535 margin-top: 14px;
4536 4536 margin-bottom: 14px;
4537 4537 }
4538 4538 .navbar-text {
4539 4539 margin-top: 15px;
4540 4540 margin-bottom: 15px;
4541 4541 }
4542 4542 @media (min-width: 768px) {
4543 4543 .navbar-text {
4544 4544 float: left;
4545 4545 margin-left: 5px;
4546 4546 margin-right: 5px;
4547 4547 }
4548 4548 }
4549 4549 @media (min-width: 768px) {
4550 4550 .navbar-left {
4551 4551 float: left !important;
4552 4552 }
4553 4553 .navbar-right {
4554 4554 float: right !important;
4555 4555 margin-right: -5px;
4556 4556 }
4557 4557 .navbar-right ~ .navbar-right {
4558 4558 margin-right: 0;
4559 4559 }
4560 4560 }
4561 4561 .navbar-default {
4562 4562 background-color: #f8f8f8;
4563 4563 border-color: #e7e7e7;
4564 4564 }
4565 4565 .navbar-default .navbar-brand {
4566 4566 color: #777;
4567 4567 }
4568 4568 .navbar-default .navbar-brand:hover,
4569 4569 .navbar-default .navbar-brand:focus {
4570 4570 color: #5e5e5e;
4571 4571 background-color: transparent;
4572 4572 }
4573 4573 .navbar-default .navbar-text {
4574 4574 color: #777;
4575 4575 }
4576 4576 .navbar-default .navbar-nav > li > a {
4577 4577 color: #777;
4578 4578 }
4579 4579 .navbar-default .navbar-nav > li > a:hover,
4580 4580 .navbar-default .navbar-nav > li > a:focus {
4581 4581 color: #333;
4582 4582 background-color: transparent;
4583 4583 }
4584 4584 .navbar-default .navbar-nav > .active > a,
4585 4585 .navbar-default .navbar-nav > .active > a:hover,
4586 4586 .navbar-default .navbar-nav > .active > a:focus {
4587 4587 color: #555;
4588 4588 background-color: #e7e7e7;
4589 4589 }
4590 4590 .navbar-default .navbar-nav > .disabled > a,
4591 4591 .navbar-default .navbar-nav > .disabled > a:hover,
4592 4592 .navbar-default .navbar-nav > .disabled > a:focus {
4593 4593 color: #ccc;
4594 4594 background-color: transparent;
4595 4595 }
4596 4596 .navbar-default .navbar-toggle {
4597 4597 border-color: #ddd;
4598 4598 }
4599 4599 .navbar-default .navbar-toggle:hover,
4600 4600 .navbar-default .navbar-toggle:focus {
4601 4601 background-color: #ddd;
4602 4602 }
4603 4603 .navbar-default .navbar-toggle .icon-bar {
4604 4604 background-color: #888;
4605 4605 }
4606 4606 .navbar-default .navbar-collapse,
4607 4607 .navbar-default .navbar-form {
4608 4608 border-color: #e7e7e7;
4609 4609 }
4610 4610 .navbar-default .navbar-nav > .open > a,
4611 4611 .navbar-default .navbar-nav > .open > a:hover,
4612 4612 .navbar-default .navbar-nav > .open > a:focus {
4613 4613 background-color: #e7e7e7;
4614 4614 color: #555;
4615 4615 }
4616 4616 @media (max-width: 767px) {
4617 4617 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4618 4618 color: #777;
4619 4619 }
4620 4620 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4621 4621 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4622 4622 color: #333;
4623 4623 background-color: transparent;
4624 4624 }
4625 4625 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4626 4626 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4627 4627 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4628 4628 color: #555;
4629 4629 background-color: #e7e7e7;
4630 4630 }
4631 4631 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4632 4632 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4633 4633 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4634 4634 color: #ccc;
4635 4635 background-color: transparent;
4636 4636 }
4637 4637 }
4638 4638 .navbar-default .navbar-link {
4639 4639 color: #777;
4640 4640 }
4641 4641 .navbar-default .navbar-link:hover {
4642 4642 color: #333;
4643 4643 }
4644 4644 .navbar-default .btn-link {
4645 4645 color: #777;
4646 4646 }
4647 4647 .navbar-default .btn-link:hover,
4648 4648 .navbar-default .btn-link:focus {
4649 4649 color: #333;
4650 4650 }
4651 4651 .navbar-default .btn-link[disabled]:hover,
4652 4652 fieldset[disabled] .navbar-default .btn-link:hover,
4653 4653 .navbar-default .btn-link[disabled]:focus,
4654 4654 fieldset[disabled] .navbar-default .btn-link:focus {
4655 4655 color: #ccc;
4656 4656 }
4657 4657 .navbar-inverse {
4658 4658 background-color: #222;
4659 4659 border-color: #080808;
4660 4660 }
4661 4661 .navbar-inverse .navbar-brand {
4662 4662 color: #9d9d9d;
4663 4663 }
4664 4664 .navbar-inverse .navbar-brand:hover,
4665 4665 .navbar-inverse .navbar-brand:focus {
4666 4666 color: #fff;
4667 4667 background-color: transparent;
4668 4668 }
4669 4669 .navbar-inverse .navbar-text {
4670 4670 color: #9d9d9d;
4671 4671 }
4672 4672 .navbar-inverse .navbar-nav > li > a {
4673 4673 color: #9d9d9d;
4674 4674 }
4675 4675 .navbar-inverse .navbar-nav > li > a:hover,
4676 4676 .navbar-inverse .navbar-nav > li > a:focus {
4677 4677 color: #fff;
4678 4678 background-color: transparent;
4679 4679 }
4680 4680 .navbar-inverse .navbar-nav > .active > a,
4681 4681 .navbar-inverse .navbar-nav > .active > a:hover,
4682 4682 .navbar-inverse .navbar-nav > .active > a:focus {
4683 4683 color: #fff;
4684 4684 background-color: #080808;
4685 4685 }
4686 4686 .navbar-inverse .navbar-nav > .disabled > a,
4687 4687 .navbar-inverse .navbar-nav > .disabled > a:hover,
4688 4688 .navbar-inverse .navbar-nav > .disabled > a:focus {
4689 4689 color: #444;
4690 4690 background-color: transparent;
4691 4691 }
4692 4692 .navbar-inverse .navbar-toggle {
4693 4693 border-color: #333;
4694 4694 }
4695 4695 .navbar-inverse .navbar-toggle:hover,
4696 4696 .navbar-inverse .navbar-toggle:focus {
4697 4697 background-color: #333;
4698 4698 }
4699 4699 .navbar-inverse .navbar-toggle .icon-bar {
4700 4700 background-color: #fff;
4701 4701 }
4702 4702 .navbar-inverse .navbar-collapse,
4703 4703 .navbar-inverse .navbar-form {
4704 4704 border-color: #101010;
4705 4705 }
4706 4706 .navbar-inverse .navbar-nav > .open > a,
4707 4707 .navbar-inverse .navbar-nav > .open > a:hover,
4708 4708 .navbar-inverse .navbar-nav > .open > a:focus {
4709 4709 background-color: #080808;
4710 4710 color: #fff;
4711 4711 }
4712 4712 @media (max-width: 767px) {
4713 4713 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4714 4714 border-color: #080808;
4715 4715 }
4716 4716 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4717 4717 background-color: #080808;
4718 4718 }
4719 4719 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4720 4720 color: #9d9d9d;
4721 4721 }
4722 4722 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4723 4723 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4724 4724 color: #fff;
4725 4725 background-color: transparent;
4726 4726 }
4727 4727 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4728 4728 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4729 4729 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4730 4730 color: #fff;
4731 4731 background-color: #080808;
4732 4732 }
4733 4733 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4734 4734 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4735 4735 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4736 4736 color: #444;
4737 4737 background-color: transparent;
4738 4738 }
4739 4739 }
4740 4740 .navbar-inverse .navbar-link {
4741 4741 color: #9d9d9d;
4742 4742 }
4743 4743 .navbar-inverse .navbar-link:hover {
4744 4744 color: #fff;
4745 4745 }
4746 4746 .navbar-inverse .btn-link {
4747 4747 color: #9d9d9d;
4748 4748 }
4749 4749 .navbar-inverse .btn-link:hover,
4750 4750 .navbar-inverse .btn-link:focus {
4751 4751 color: #fff;
4752 4752 }
4753 4753 .navbar-inverse .btn-link[disabled]:hover,
4754 4754 fieldset[disabled] .navbar-inverse .btn-link:hover,
4755 4755 .navbar-inverse .btn-link[disabled]:focus,
4756 4756 fieldset[disabled] .navbar-inverse .btn-link:focus {
4757 4757 color: #444;
4758 4758 }
4759 4759 .breadcrumb {
4760 4760 padding: 8px 15px;
4761 4761 margin-bottom: 20px;
4762 4762 list-style: none;
4763 4763 background-color: #f5f5f5;
4764 4764 border-radius: 4px;
4765 4765 }
4766 4766 .breadcrumb > li {
4767 4767 display: inline-block;
4768 4768 }
4769 4769 .breadcrumb > li + li:before {
4770 4770 content: "/\00a0";
4771 4771 padding: 0 5px;
4772 4772 color: #ccc;
4773 4773 }
4774 4774 .breadcrumb > .active {
4775 4775 color: #777777;
4776 4776 }
4777 4777 .pagination {
4778 4778 display: inline-block;
4779 4779 padding-left: 0;
4780 4780 margin: 20px 0;
4781 4781 border-radius: 4px;
4782 4782 }
4783 4783 .pagination > li {
4784 4784 display: inline;
4785 4785 }
4786 4786 .pagination > li > a,
4787 4787 .pagination > li > span {
4788 4788 position: relative;
4789 4789 float: left;
4790 4790 padding: 6px 12px;
4791 4791 line-height: 1.42857143;
4792 4792 text-decoration: none;
4793 4793 color: #337ab7;
4794 4794 background-color: #fff;
4795 4795 border: 1px solid #ddd;
4796 4796 margin-left: -1px;
4797 4797 }
4798 4798 .pagination > li:first-child > a,
4799 4799 .pagination > li:first-child > span {
4800 4800 margin-left: 0;
4801 4801 border-bottom-left-radius: 4px;
4802 4802 border-top-left-radius: 4px;
4803 4803 }
4804 4804 .pagination > li:last-child > a,
4805 4805 .pagination > li:last-child > span {
4806 4806 border-bottom-right-radius: 4px;
4807 4807 border-top-right-radius: 4px;
4808 4808 }
4809 4809 .pagination > li > a:hover,
4810 4810 .pagination > li > span:hover,
4811 4811 .pagination > li > a:focus,
4812 4812 .pagination > li > span:focus {
4813 4813 z-index: 2;
4814 4814 color: #23527c;
4815 4815 background-color: #eeeeee;
4816 4816 border-color: #ddd;
4817 4817 }
4818 4818 .pagination > .active > a,
4819 4819 .pagination > .active > span,
4820 4820 .pagination > .active > a:hover,
4821 4821 .pagination > .active > span:hover,
4822 4822 .pagination > .active > a:focus,
4823 4823 .pagination > .active > span:focus {
4824 4824 z-index: 3;
4825 4825 color: #fff;
4826 4826 background-color: #337ab7;
4827 4827 border-color: #337ab7;
4828 4828 cursor: default;
4829 4829 }
4830 4830 .pagination > .disabled > span,
4831 4831 .pagination > .disabled > span:hover,
4832 4832 .pagination > .disabled > span:focus,
4833 4833 .pagination > .disabled > a,
4834 4834 .pagination > .disabled > a:hover,
4835 4835 .pagination > .disabled > a:focus {
4836 4836 color: #777777;
4837 4837 background-color: #fff;
4838 4838 border-color: #ddd;
4839 4839 cursor: not-allowed;
4840 4840 }
4841 4841 .pagination-lg > li > a,
4842 4842 .pagination-lg > li > span {
4843 4843 padding: 10px 16px;
4844 4844 font-size: 18px;
4845 4845 line-height: 1.3333333;
4846 4846 }
4847 4847 .pagination-lg > li:first-child > a,
4848 4848 .pagination-lg > li:first-child > span {
4849 4849 border-bottom-left-radius: 6px;
4850 4850 border-top-left-radius: 6px;
4851 4851 }
4852 4852 .pagination-lg > li:last-child > a,
4853 4853 .pagination-lg > li:last-child > span {
4854 4854 border-bottom-right-radius: 6px;
4855 4855 border-top-right-radius: 6px;
4856 4856 }
4857 4857 .pagination-sm > li > a,
4858 4858 .pagination-sm > li > span {
4859 4859 padding: 5px 10px;
4860 4860 font-size: 12px;
4861 4861 line-height: 1.5;
4862 4862 }
4863 4863 .pagination-sm > li:first-child > a,
4864 4864 .pagination-sm > li:first-child > span {
4865 4865 border-bottom-left-radius: 3px;
4866 4866 border-top-left-radius: 3px;
4867 4867 }
4868 4868 .pagination-sm > li:last-child > a,
4869 4869 .pagination-sm > li:last-child > span {
4870 4870 border-bottom-right-radius: 3px;
4871 4871 border-top-right-radius: 3px;
4872 4872 }
4873 4873 .pager {
4874 4874 padding-left: 0;
4875 4875 margin: 20px 0;
4876 4876 list-style: none;
4877 4877 text-align: center;
4878 4878 }
4879 4879 .pager li {
4880 4880 display: inline;
4881 4881 }
4882 4882 .pager li > a,
4883 4883 .pager li > span {
4884 4884 display: inline-block;
4885 4885 padding: 5px 14px;
4886 4886 background-color: #fff;
4887 4887 border: 1px solid #ddd;
4888 4888 border-radius: 15px;
4889 4889 }
4890 4890 .pager li > a:hover,
4891 4891 .pager li > a:focus {
4892 4892 text-decoration: none;
4893 4893 background-color: #eeeeee;
4894 4894 }
4895 4895 .pager .next > a,
4896 4896 .pager .next > span {
4897 4897 float: right;
4898 4898 }
4899 4899 .pager .previous > a,
4900 4900 .pager .previous > span {
4901 4901 float: left;
4902 4902 }
4903 4903 .pager .disabled > a,
4904 4904 .pager .disabled > a:hover,
4905 4905 .pager .disabled > a:focus,
4906 4906 .pager .disabled > span {
4907 4907 color: #777777;
4908 4908 background-color: #fff;
4909 4909 cursor: not-allowed;
4910 4910 }
4911 4911 .label {
4912 4912 display: inline;
4913 4913 padding: .2em .6em .3em;
4914 4914 font-size: 75%;
4915 4915 font-weight: bold;
4916 4916 line-height: 1;
4917 4917 color: #fff;
4918 4918 text-align: center;
4919 4919 white-space: nowrap;
4920 4920 vertical-align: baseline;
4921 4921 border-radius: .25em;
4922 4922 }
4923 4923 a.label:hover,
4924 4924 a.label:focus {
4925 4925 color: #fff;
4926 4926 text-decoration: none;
4927 4927 cursor: pointer;
4928 4928 }
4929 4929 .label:empty {
4930 4930 display: none;
4931 4931 }
4932 4932 .btn .label {
4933 4933 position: relative;
4934 4934 top: -1px;
4935 4935 }
4936 4936 .label-default {
4937 4937 background-color: #777777;
4938 4938 }
4939 4939 .label-default[href]:hover,
4940 4940 .label-default[href]:focus {
4941 4941 background-color: #5e5e5e;
4942 4942 }
4943 4943 .label-primary {
4944 4944 background-color: #337ab7;
4945 4945 }
4946 4946 .label-primary[href]:hover,
4947 4947 .label-primary[href]:focus {
4948 4948 background-color: #286090;
4949 4949 }
4950 4950 .label-success {
4951 4951 background-color: #5cb85c;
4952 4952 }
4953 4953 .label-success[href]:hover,
4954 4954 .label-success[href]:focus {
4955 4955 background-color: #449d44;
4956 4956 }
4957 4957 .label-info {
4958 4958 background-color: #5bc0de;
4959 4959 }
4960 4960 .label-info[href]:hover,
4961 4961 .label-info[href]:focus {
4962 4962 background-color: #31b0d5;
4963 4963 }
4964 4964 .label-warning {
4965 4965 background-color: #f0ad4e;
4966 4966 }
4967 4967 .label-warning[href]:hover,
4968 4968 .label-warning[href]:focus {
4969 4969 background-color: #ec971f;
4970 4970 }
4971 4971 .label-danger {
4972 4972 background-color: #d9534f;
4973 4973 }
4974 4974 .label-danger[href]:hover,
4975 4975 .label-danger[href]:focus {
4976 4976 background-color: #c9302c;
4977 4977 }
4978 4978 .badge {
4979 4979 display: inline-block;
4980 4980 min-width: 10px;
4981 4981 padding: 3px 7px;
4982 4982 font-size: 12px;
4983 4983 font-weight: bold;
4984 4984 color: #fff;
4985 4985 line-height: 1;
4986 4986 vertical-align: middle;
4987 4987 white-space: nowrap;
4988 4988 text-align: center;
4989 4989 background-color: #777777;
4990 4990 border-radius: 10px;
4991 4991 }
4992 4992 .badge:empty {
4993 4993 display: none;
4994 4994 }
4995 4995 .btn .badge {
4996 4996 position: relative;
4997 4997 top: -1px;
4998 4998 }
4999 4999 .btn-xs .badge,
5000 5000 .btn-group-xs > .btn .badge {
5001 5001 top: 0;
5002 5002 padding: 1px 5px;
5003 5003 }
5004 5004 a.badge:hover,
5005 5005 a.badge:focus {
5006 5006 color: #fff;
5007 5007 text-decoration: none;
5008 5008 cursor: pointer;
5009 5009 }
5010 5010 .list-group-item.active > .badge,
5011 5011 .nav-pills > .active > a > .badge {
5012 5012 color: #337ab7;
5013 5013 background-color: #fff;
5014 5014 }
5015 5015 .list-group-item > .badge {
5016 5016 float: right;
5017 5017 }
5018 5018 .list-group-item > .badge + .badge {
5019 5019 margin-right: 5px;
5020 5020 }
5021 5021 .nav-pills > li > a > .badge {
5022 5022 margin-left: 3px;
5023 5023 }
5024 5024 .jumbotron {
5025 5025 padding-top: 30px;
5026 5026 padding-bottom: 30px;
5027 5027 margin-bottom: 30px;
5028 5028 color: inherit;
5029 5029 background-color: #eeeeee;
5030 5030 }
5031 5031 .jumbotron h1,
5032 5032 .jumbotron .h1 {
5033 5033 color: inherit;
5034 5034 }
5035 5035 .jumbotron p {
5036 5036 margin-bottom: 15px;
5037 5037 font-size: 21px;
5038 5038 font-weight: 200;
5039 5039 }
5040 5040 .jumbotron > hr {
5041 5041 border-top-color: #d5d5d5;
5042 5042 }
5043 5043 .container .jumbotron,
5044 5044 .container-fluid .jumbotron {
5045 5045 border-radius: 6px;
5046 5046 padding-left: 5px;
5047 5047 padding-right: 5px;
5048 5048 }
5049 5049 .jumbotron .container {
5050 5050 max-width: 100%;
5051 5051 }
5052 5052 @media screen and (min-width: 768px) {
5053 5053 .jumbotron {
5054 5054 padding-top: 48px;
5055 5055 padding-bottom: 48px;
5056 5056 }
5057 5057 .container .jumbotron,
5058 5058 .container-fluid .jumbotron {
5059 5059 padding-left: 60px;
5060 5060 padding-right: 60px;
5061 5061 }
5062 5062 .jumbotron h1,
5063 5063 .jumbotron .h1 {
5064 5064 font-size: 63px;
5065 5065 }
5066 5066 }
5067 5067 .thumbnail {
5068 5068 display: block;
5069 5069 padding: 4px;
5070 5070 margin-bottom: 20px;
5071 5071 line-height: 1.42857143;
5072 5072 background-color: #fff;
5073 5073 border: 1px solid #ddd;
5074 5074 border-radius: 4px;
5075 5075 -webkit-transition: border 0.2s ease-in-out;
5076 5076 -o-transition: border 0.2s ease-in-out;
5077 5077 transition: border 0.2s ease-in-out;
5078 5078 }
5079 5079 .thumbnail > img,
5080 5080 .thumbnail a > img {
5081 5081 margin-left: auto;
5082 5082 margin-right: auto;
5083 5083 }
5084 5084 a.thumbnail:hover,
5085 5085 a.thumbnail:focus,
5086 5086 a.thumbnail.active {
5087 5087 border-color: #337ab7;
5088 5088 }
5089 5089 .thumbnail .caption {
5090 5090 padding: 9px;
5091 5091 color: #333333;
5092 5092 }
5093 5093 .alert {
5094 5094 padding: 15px;
5095 5095 margin-bottom: 20px;
5096 5096 border: 1px solid transparent;
5097 5097 border-radius: 4px;
5098 5098 }
5099 5099 .alert h4 {
5100 5100 margin-top: 0;
5101 5101 color: inherit;
5102 5102 }
5103 5103 .alert .alert-link {
5104 5104 font-weight: bold;
5105 5105 }
5106 5106 .alert > p,
5107 5107 .alert > ul {
5108 5108 margin-bottom: 0;
5109 5109 }
5110 5110 .alert > p + p {
5111 5111 margin-top: 5px;
5112 5112 }
5113 5113 .alert-dismissable,
5114 5114 .alert-dismissible {
5115 5115 padding-right: 35px;
5116 5116 }
5117 5117 .alert-dismissable .close,
5118 5118 .alert-dismissible .close {
5119 5119 position: relative;
5120 5120 top: -2px;
5121 5121 right: -21px;
5122 5122 color: inherit;
5123 5123 }
5124 5124 .alert-success {
5125 5125 background-color: #dff0d8;
5126 5126 border-color: #d6e9c6;
5127 5127 color: #3c763d;
5128 5128 }
5129 5129 .alert-success hr {
5130 5130 border-top-color: #c9e2b3;
5131 5131 }
5132 5132 .alert-success .alert-link {
5133 5133 color: #2b542c;
5134 5134 }
5135 5135 .alert-info {
5136 5136 background-color: #d9edf7;
5137 5137 border-color: #bce8f1;
5138 5138 color: #31708f;
5139 5139 }
5140 5140 .alert-info hr {
5141 5141 border-top-color: #a6e1ec;
5142 5142 }
5143 5143 .alert-info .alert-link {
5144 5144 color: #245269;
5145 5145 }
5146 5146 .alert-warning {
5147 5147 background-color: #fcf8e3;
5148 5148 border-color: #faebcc;
5149 5149 color: #8a6d3b;
5150 5150 }
5151 5151 .alert-warning hr {
5152 5152 border-top-color: #f7e1b5;
5153 5153 }
5154 5154 .alert-warning .alert-link {
5155 5155 color: #66512c;
5156 5156 }
5157 5157 .alert-danger {
5158 5158 background-color: #f2dede;
5159 5159 border-color: #ebccd1;
5160 5160 color: #a94442;
5161 5161 }
5162 5162 .alert-danger hr {
5163 5163 border-top-color: #e4b9c0;
5164 5164 }
5165 5165 .alert-danger .alert-link {
5166 5166 color: #843534;
5167 5167 }
5168 5168 @-webkit-keyframes progress-bar-stripes {
5169 5169 from {
5170 5170 background-position: 40px 0;
5171 5171 }
5172 5172 to {
5173 5173 background-position: 0 0;
5174 5174 }
5175 5175 }
5176 5176 @keyframes progress-bar-stripes {
5177 5177 from {
5178 5178 background-position: 40px 0;
5179 5179 }
5180 5180 to {
5181 5181 background-position: 0 0;
5182 5182 }
5183 5183 }
5184 5184 .progress {
5185 5185 overflow: hidden;
5186 5186 height: 20px;
5187 5187 margin-bottom: 20px;
5188 5188 background-color: #f5f5f5;
5189 5189 border-radius: 4px;
5190 5190 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5191 5191 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5192 5192 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1) 0 5px rgba(77, 77, 77, 0.5);
5193 5193 -o-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1) 0 5px rgba(77, 77, 77, 0.5);
5194 5194 -ms-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1) 0 5px rgba(77, 77, 77, 0.5);
5195 5195 -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1) 0 5px rgba(77, 77, 77, 0.5);
5196 5196 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1) 0 5px rgba(77, 77, 77, 0.5);
5197 5197 }
5198 5198 .progress-bar {
5199 5199 float: left;
5200 5200 width: 0%;
5201 5201 height: 100%;
5202 5202 font-size: 12px;
5203 5203 line-height: 20px;
5204 5204 color: #fff;
5205 5205 text-align: center;
5206 5206 background-color: #337ab7;
5207 5207 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5208 5208 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5209 5209 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15) 0 5px rgba(77, 77, 77, 0.5);
5210 5210 -o-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15) 0 5px rgba(77, 77, 77, 0.5);
5211 5211 -ms-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15) 0 5px rgba(77, 77, 77, 0.5);
5212 5212 -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15) 0 5px rgba(77, 77, 77, 0.5);
5213 5213 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15) 0 5px rgba(77, 77, 77, 0.5);
5214 5214 -webkit-transition: width 0.6s ease;
5215 5215 -o-transition: width 0.6s ease;
5216 5216 transition: width 0.6s ease;
5217 5217 }
5218 5218 .progress-striped .progress-bar,
5219 5219 .progress-bar-striped {
5220 5220 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5221 5221 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5222 5222 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5223 5223 background-size: 40px 40px;
5224 5224 }
5225 5225 .progress.active .progress-bar,
5226 5226 .progress-bar.active {
5227 5227 -webkit-animation: progress-bar-stripes 2s linear infinite;
5228 5228 -o-animation: progress-bar-stripes 2s linear infinite;
5229 5229 animation: progress-bar-stripes 2s linear infinite;
5230 5230 }
5231 5231 .progress-bar-success {
5232 5232 background-color: #5cb85c;
5233 5233 }
5234 5234 .progress-striped .progress-bar-success {
5235 5235 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5236 5236 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5237 5237 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5238 5238 }
5239 5239 .progress-bar-info {
5240 5240 background-color: #5bc0de;
5241 5241 }
5242 5242 .progress-striped .progress-bar-info {
5243 5243 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5244 5244 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5245 5245 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5246 5246 }
5247 5247 .progress-bar-warning {
5248 5248 background-color: #f0ad4e;
5249 5249 }
5250 5250 .progress-striped .progress-bar-warning {
5251 5251 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5252 5252 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5253 5253 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5254 5254 }
5255 5255 .progress-bar-danger {
5256 5256 background-color: #d9534f;
5257 5257 }
5258 5258 .progress-striped .progress-bar-danger {
5259 5259 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5260 5260 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5261 5261 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5262 5262 }
5263 5263 .media {
5264 5264 margin-top: 15px;
5265 5265 }
5266 5266 .media:first-child {
5267 5267 margin-top: 0;
5268 5268 }
5269 5269 .media,
5270 5270 .media-body {
5271 5271 zoom: 1;
5272 5272 overflow: hidden;
5273 5273 }
5274 5274 .media-body {
5275 5275 width: 10000px;
5276 5276 }
5277 5277 .media-object {
5278 5278 display: block;
5279 5279 }
5280 5280 .media-object.img-thumbnail {
5281 5281 max-width: none;
5282 5282 }
5283 5283 .media-right,
5284 5284 .media > .pull-right {
5285 5285 padding-left: 10px;
5286 5286 }
5287 5287 .media-left,
5288 5288 .media > .pull-left {
5289 5289 padding-right: 10px;
5290 5290 }
5291 5291 .media-left,
5292 5292 .media-right,
5293 5293 .media-body {
5294 5294 display: table-cell;
5295 5295 vertical-align: top;
5296 5296 }
5297 5297 .media-middle {
5298 5298 vertical-align: middle;
5299 5299 }
5300 5300 .media-bottom {
5301 5301 vertical-align: bottom;
5302 5302 }
5303 5303 .media-heading {
5304 5304 margin-top: 0;
5305 5305 margin-bottom: 5px;
5306 5306 }
5307 5307 .media-list {
5308 5308 padding-left: 0;
5309 5309 list-style: none;
5310 5310 }
5311 5311 .list-group {
5312 5312 margin-bottom: 20px;
5313 5313 padding-left: 0;
5314 5314 }
5315 5315 .list-group-item {
5316 5316 position: relative;
5317 5317 display: block;
5318 5318 padding: 10px 15px;
5319 5319 margin-bottom: -1px;
5320 5320 background-color: #fff;
5321 5321 border: 1px solid #ddd;
5322 5322 }
5323 5323 .list-group-item:first-child {
5324 5324 border-top-right-radius: 4px;
5325 5325 border-top-left-radius: 4px;
5326 5326 }
5327 5327 .list-group-item:last-child {
5328 5328 margin-bottom: 0;
5329 5329 border-bottom-right-radius: 4px;
5330 5330 border-bottom-left-radius: 4px;
5331 5331 }
5332 5332 a.list-group-item,
5333 5333 button.list-group-item {
5334 5334 color: #555;
5335 5335 }
5336 5336 a.list-group-item .list-group-item-heading,
5337 5337 button.list-group-item .list-group-item-heading {
5338 5338 color: #333;
5339 5339 }
5340 5340 a.list-group-item:hover,
5341 5341 button.list-group-item:hover,
5342 5342 a.list-group-item:focus,
5343 5343 button.list-group-item:focus {
5344 5344 text-decoration: none;
5345 5345 color: #555;
5346 5346 background-color: #f5f5f5;
5347 5347 }
5348 5348 button.list-group-item {
5349 5349 width: 100%;
5350 5350 text-align: left;
5351 5351 }
5352 5352 .list-group-item.disabled,
5353 5353 .list-group-item.disabled:hover,
5354 5354 .list-group-item.disabled:focus {
5355 5355 background-color: #eeeeee;
5356 5356 color: #777777;
5357 5357 cursor: not-allowed;
5358 5358 }
5359 5359 .list-group-item.disabled .list-group-item-heading,
5360 5360 .list-group-item.disabled:hover .list-group-item-heading,
5361 5361 .list-group-item.disabled:focus .list-group-item-heading {
5362 5362 color: inherit;
5363 5363 }
5364 5364 .list-group-item.disabled .list-group-item-text,
5365 5365 .list-group-item.disabled:hover .list-group-item-text,
5366 5366 .list-group-item.disabled:focus .list-group-item-text {
5367 5367 color: #777777;
5368 5368 }
5369 5369 .list-group-item.active,
5370 5370 .list-group-item.active:hover,
5371 5371 .list-group-item.active:focus {
5372 5372 z-index: 2;
5373 5373 color: #fff;
5374 5374 background-color: #337ab7;
5375 5375 border-color: #337ab7;
5376 5376 }
5377 5377 .list-group-item.active .list-group-item-heading,
5378 5378 .list-group-item.active:hover .list-group-item-heading,
5379 5379 .list-group-item.active:focus .list-group-item-heading,
5380 5380 .list-group-item.active .list-group-item-heading > small,
5381 5381 .list-group-item.active:hover .list-group-item-heading > small,
5382 5382 .list-group-item.active:focus .list-group-item-heading > small,
5383 5383 .list-group-item.active .list-group-item-heading > .small,
5384 5384 .list-group-item.active:hover .list-group-item-heading > .small,
5385 5385 .list-group-item.active:focus .list-group-item-heading > .small {
5386 5386 color: inherit;
5387 5387 }
5388 5388 .list-group-item.active .list-group-item-text,
5389 5389 .list-group-item.active:hover .list-group-item-text,
5390 5390 .list-group-item.active:focus .list-group-item-text {
5391 5391 color: #c7ddef;
5392 5392 }
5393 5393 .list-group-item-success {
5394 5394 color: #3c763d;
5395 5395 background-color: #dff0d8;
5396 5396 }
5397 5397 a.list-group-item-success,
5398 5398 button.list-group-item-success {
5399 5399 color: #3c763d;
5400 5400 }
5401 5401 a.list-group-item-success .list-group-item-heading,
5402 5402 button.list-group-item-success .list-group-item-heading {
5403 5403 color: inherit;
5404 5404 }
5405 5405 a.list-group-item-success:hover,
5406 5406 button.list-group-item-success:hover,
5407 5407 a.list-group-item-success:focus,
5408 5408 button.list-group-item-success:focus {
5409 5409 color: #3c763d;
5410 5410 background-color: #d0e9c6;
5411 5411 }
5412 5412 a.list-group-item-success.active,
5413 5413 button.list-group-item-success.active,
5414 5414 a.list-group-item-success.active:hover,
5415 5415 button.list-group-item-success.active:hover,
5416 5416 a.list-group-item-success.active:focus,
5417 5417 button.list-group-item-success.active:focus {
5418 5418 color: #fff;
5419 5419 background-color: #3c763d;
5420 5420 border-color: #3c763d;
5421 5421 }
5422 5422 .list-group-item-info {
5423 5423 color: #31708f;
5424 5424 background-color: #d9edf7;
5425 5425 }
5426 5426 a.list-group-item-info,
5427 5427 button.list-group-item-info {
5428 5428 color: #31708f;
5429 5429 }
5430 5430 a.list-group-item-info .list-group-item-heading,
5431 5431 button.list-group-item-info .list-group-item-heading {
5432 5432 color: inherit;
5433 5433 }
5434 5434 a.list-group-item-info:hover,
5435 5435 button.list-group-item-info:hover,
5436 5436 a.list-group-item-info:focus,
5437 5437 button.list-group-item-info:focus {
5438 5438 color: #31708f;
5439 5439 background-color: #c4e3f3;
5440 5440 }
5441 5441 a.list-group-item-info.active,
5442 5442 button.list-group-item-info.active,
5443 5443 a.list-group-item-info.active:hover,
5444 5444 button.list-group-item-info.active:hover,
5445 5445 a.list-group-item-info.active:focus,
5446 5446 button.list-group-item-info.active:focus {
5447 5447 color: #fff;
5448 5448 background-color: #31708f;
5449 5449 border-color: #31708f;
5450 5450 }
5451 5451 .list-group-item-warning {
5452 5452 color: #8a6d3b;
5453 5453 background-color: #fcf8e3;
5454 5454 }
5455 5455 a.list-group-item-warning,
5456 5456 button.list-group-item-warning {
5457 5457 color: #8a6d3b;
5458 5458 }
5459 5459 a.list-group-item-warning .list-group-item-heading,
5460 5460 button.list-group-item-warning .list-group-item-heading {
5461 5461 color: inherit;
5462 5462 }
5463 5463 a.list-group-item-warning:hover,
5464 5464 button.list-group-item-warning:hover,
5465 5465 a.list-group-item-warning:focus,
5466 5466 button.list-group-item-warning:focus {
5467 5467 color: #8a6d3b;
5468 5468 background-color: #faf2cc;
5469 5469 }
5470 5470 a.list-group-item-warning.active,
5471 5471 button.list-group-item-warning.active,
5472 5472 a.list-group-item-warning.active:hover,
5473 5473 button.list-group-item-warning.active:hover,
5474 5474 a.list-group-item-warning.active:focus,
5475 5475 button.list-group-item-warning.active:focus {
5476 5476 color: #fff;
5477 5477 background-color: #8a6d3b;
5478 5478 border-color: #8a6d3b;
5479 5479 }
5480 5480 .list-group-item-danger {
5481 5481 color: #a94442;
5482 5482 background-color: #f2dede;
5483 5483 }
5484 5484 a.list-group-item-danger,
5485 5485 button.list-group-item-danger {
5486 5486 color: #a94442;
5487 5487 }
5488 5488 a.list-group-item-danger .list-group-item-heading,
5489 5489 button.list-group-item-danger .list-group-item-heading {
5490 5490 color: inherit;
5491 5491 }
5492 5492 a.list-group-item-danger:hover,
5493 5493 button.list-group-item-danger:hover,
5494 5494 a.list-group-item-danger:focus,
5495 5495 button.list-group-item-danger:focus {
5496 5496 color: #a94442;
5497 5497 background-color: #ebcccc;
5498 5498 }
5499 5499 a.list-group-item-danger.active,
5500 5500 button.list-group-item-danger.active,
5501 5501 a.list-group-item-danger.active:hover,
5502 5502 button.list-group-item-danger.active:hover,
5503 5503 a.list-group-item-danger.active:focus,
5504 5504 button.list-group-item-danger.active:focus {
5505 5505 color: #fff;
5506 5506 background-color: #a94442;
5507 5507 border-color: #a94442;
5508 5508 }
5509 5509 .list-group-item-heading {
5510 5510 margin-top: 0;
5511 5511 margin-bottom: 5px;
5512 5512 }
5513 5513 .list-group-item-text {
5514 5514 margin-bottom: 0;
5515 5515 line-height: 1.3;
5516 5516 }
5517 5517 .panel {
5518 5518 margin-bottom: 20px;
5519 5519 background-color: #fff;
5520 5520 border: 1px solid transparent;
5521 5521 border-radius: 4px;
5522 5522 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5523 5523 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5524 5524 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5525 5525 -o-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5526 5526 -ms-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5527 5527 -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5528 5528 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5529 5529 }
5530 5530 .panel-body {
5531 5531 padding: 15px;
5532 5532 }
5533 5533 .panel-heading {
5534 5534 padding: 10px 15px;
5535 5535 border-bottom: 1px solid transparent;
5536 5536 border-top-right-radius: 3px;
5537 5537 border-top-left-radius: 3px;
5538 5538 }
5539 5539 .panel-heading > .dropdown .dropdown-toggle {
5540 5540 color: inherit;
5541 5541 }
5542 5542 .panel-title {
5543 5543 margin-top: 0;
5544 5544 margin-bottom: 0;
5545 5545 font-size: 16px;
5546 5546 color: inherit;
5547 5547 }
5548 5548 .panel-title > a,
5549 5549 .panel-title > small,
5550 5550 .panel-title > .small,
5551 5551 .panel-title > small > a,
5552 5552 .panel-title > .small > a {
5553 5553 color: inherit;
5554 5554 }
5555 5555 .panel-footer {
5556 5556 padding: 10px 15px;
5557 5557 background-color: #f5f5f5;
5558 5558 border-top: 1px solid #ddd;
5559 5559 border-bottom-right-radius: 3px;
5560 5560 border-bottom-left-radius: 3px;
5561 5561 }
5562 5562 .panel > .list-group,
5563 5563 .panel > .panel-collapse > .list-group {
5564 5564 margin-bottom: 0;
5565 5565 }
5566 5566 .panel > .list-group .list-group-item,
5567 5567 .panel > .panel-collapse > .list-group .list-group-item {
5568 5568 border-width: 1px 0;
5569 5569 border-radius: 0;
5570 5570 }
5571 5571 .panel > .list-group:first-child .list-group-item:first-child,
5572 5572 .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5573 5573 border-top: 0;
5574 5574 border-top-right-radius: 3px;
5575 5575 border-top-left-radius: 3px;
5576 5576 }
5577 5577 .panel > .list-group:last-child .list-group-item:last-child,
5578 5578 .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5579 5579 border-bottom: 0;
5580 5580 border-bottom-right-radius: 3px;
5581 5581 border-bottom-left-radius: 3px;
5582 5582 }
5583 5583 .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
5584 5584 border-top-right-radius: 0;
5585 5585 border-top-left-radius: 0;
5586 5586 }
5587 5587 .panel-heading + .list-group .list-group-item:first-child {
5588 5588 border-top-width: 0;
5589 5589 }
5590 5590 .list-group + .panel-footer {
5591 5591 border-top-width: 0;
5592 5592 }
5593 5593 .panel > .table,
5594 5594 .panel > .table-responsive > .table,
5595 5595 .panel > .panel-collapse > .table {
5596 5596 margin-bottom: 0;
5597 5597 }
5598 5598 .panel > .table caption,
5599 5599 .panel > .table-responsive > .table caption,
5600 5600 .panel > .panel-collapse > .table caption {
5601 5601 padding-left: 15px;
5602 5602 padding-right: 15px;
5603 5603 }
5604 5604 .panel > .table:first-child,
5605 5605 .panel > .table-responsive:first-child > .table:first-child {
5606 5606 border-top-right-radius: 3px;
5607 5607 border-top-left-radius: 3px;
5608 5608 }
5609 5609 .panel > .table:first-child > thead:first-child > tr:first-child,
5610 5610 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5611 5611 .panel > .table:first-child > tbody:first-child > tr:first-child,
5612 5612 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5613 5613 border-top-left-radius: 3px;
5614 5614 border-top-right-radius: 3px;
5615 5615 }
5616 5616 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5617 5617 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5618 5618 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5619 5619 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5620 5620 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5621 5621 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5622 5622 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5623 5623 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5624 5624 border-top-left-radius: 3px;
5625 5625 }
5626 5626 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5627 5627 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5628 5628 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5629 5629 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5630 5630 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5631 5631 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5632 5632 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5633 5633 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5634 5634 border-top-right-radius: 3px;
5635 5635 }
5636 5636 .panel > .table:last-child,
5637 5637 .panel > .table-responsive:last-child > .table:last-child {
5638 5638 border-bottom-right-radius: 3px;
5639 5639 border-bottom-left-radius: 3px;
5640 5640 }
5641 5641 .panel > .table:last-child > tbody:last-child > tr:last-child,
5642 5642 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5643 5643 .panel > .table:last-child > tfoot:last-child > tr:last-child,
5644 5644 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5645 5645 border-bottom-left-radius: 3px;
5646 5646 border-bottom-right-radius: 3px;
5647 5647 }
5648 5648 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5649 5649 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5650 5650 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5651 5651 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5652 5652 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5653 5653 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5654 5654 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5655 5655 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5656 5656 border-bottom-left-radius: 3px;
5657 5657 }
5658 5658 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5659 5659 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5660 5660 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5661 5661 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5662 5662 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5663 5663 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5664 5664 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5665 5665 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5666 5666 border-bottom-right-radius: 3px;
5667 5667 }
5668 5668 .panel > .panel-body + .table,
5669 5669 .panel > .panel-body + .table-responsive,
5670 5670 .panel > .table + .panel-body,
5671 5671 .panel > .table-responsive + .panel-body {
5672 5672 border-top: 1px solid #ddd;
5673 5673 }
5674 5674 .panel > .table > tbody:first-child > tr:first-child th,
5675 5675 .panel > .table > tbody:first-child > tr:first-child td {
5676 5676 border-top: 0;
5677 5677 }
5678 5678 .panel > .table-bordered,
5679 5679 .panel > .table-responsive > .table-bordered {
5680 5680 border: 0;
5681 5681 }
5682 5682 .panel > .table-bordered > thead > tr > th:first-child,
5683 5683 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5684 5684 .panel > .table-bordered > tbody > tr > th:first-child,
5685 5685 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5686 5686 .panel > .table-bordered > tfoot > tr > th:first-child,
5687 5687 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5688 5688 .panel > .table-bordered > thead > tr > td:first-child,
5689 5689 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5690 5690 .panel > .table-bordered > tbody > tr > td:first-child,
5691 5691 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5692 5692 .panel > .table-bordered > tfoot > tr > td:first-child,
5693 5693 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5694 5694 border-left: 0;
5695 5695 }
5696 5696 .panel > .table-bordered > thead > tr > th:last-child,
5697 5697 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5698 5698 .panel > .table-bordered > tbody > tr > th:last-child,
5699 5699 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5700 5700 .panel > .table-bordered > tfoot > tr > th:last-child,
5701 5701 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5702 5702 .panel > .table-bordered > thead > tr > td:last-child,
5703 5703 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5704 5704 .panel > .table-bordered > tbody > tr > td:last-child,
5705 5705 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5706 5706 .panel > .table-bordered > tfoot > tr > td:last-child,
5707 5707 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5708 5708 border-right: 0;
5709 5709 }
5710 5710 .panel > .table-bordered > thead > tr:first-child > td,
5711 5711 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5712 5712 .panel > .table-bordered > tbody > tr:first-child > td,
5713 5713 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5714 5714 .panel > .table-bordered > thead > tr:first-child > th,
5715 5715 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5716 5716 .panel > .table-bordered > tbody > tr:first-child > th,
5717 5717 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5718 5718 border-bottom: 0;
5719 5719 }
5720 5720 .panel > .table-bordered > tbody > tr:last-child > td,
5721 5721 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5722 5722 .panel > .table-bordered > tfoot > tr:last-child > td,
5723 5723 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5724 5724 .panel > .table-bordered > tbody > tr:last-child > th,
5725 5725 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5726 5726 .panel > .table-bordered > tfoot > tr:last-child > th,
5727 5727 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5728 5728 border-bottom: 0;
5729 5729 }
5730 5730 .panel > .table-responsive {
5731 5731 border: 0;
5732 5732 margin-bottom: 0;
5733 5733 }
5734 5734 .panel-group {
5735 5735 margin-bottom: 20px;
5736 5736 }
5737 5737 .panel-group .panel {
5738 5738 margin-bottom: 0;
5739 5739 border-radius: 4px;
5740 5740 }
5741 5741 .panel-group .panel + .panel {
5742 5742 margin-top: 5px;
5743 5743 }
5744 5744 .panel-group .panel-heading {
5745 5745 border-bottom: 0;
5746 5746 }
5747 5747 .panel-group .panel-heading + .panel-collapse > .panel-body,
5748 5748 .panel-group .panel-heading + .panel-collapse > .list-group {
5749 5749 border-top: 1px solid #ddd;
5750 5750 }
5751 5751 .panel-group .panel-footer {
5752 5752 border-top: 0;
5753 5753 }
5754 5754 .panel-group .panel-footer + .panel-collapse .panel-body {
5755 5755 border-bottom: 1px solid #ddd;
5756 5756 }
5757 5757 .panel-default {
5758 5758 border-color: #ddd;
5759 5759 }
5760 5760 .panel-default > .panel-heading {
5761 5761 color: #333333;
5762 5762 background-color: #f5f5f5;
5763 5763 border-color: #ddd;
5764 5764 }
5765 5765 .panel-default > .panel-heading + .panel-collapse > .panel-body {
5766 5766 border-top-color: #ddd;
5767 5767 }
5768 5768 .panel-default > .panel-heading .badge {
5769 5769 color: #f5f5f5;
5770 5770 background-color: #333333;
5771 5771 }
5772 5772 .panel-default > .panel-footer + .panel-collapse > .panel-body {
5773 5773 border-bottom-color: #ddd;
5774 5774 }
5775 5775 .panel-primary {
5776 5776 border-color: #337ab7;
5777 5777 }
5778 5778 .panel-primary > .panel-heading {
5779 5779 color: #fff;
5780 5780 background-color: #337ab7;
5781 5781 border-color: #337ab7;
5782 5782 }
5783 5783 .panel-primary > .panel-heading + .panel-collapse > .panel-body {
5784 5784 border-top-color: #337ab7;
5785 5785 }
5786 5786 .panel-primary > .panel-heading .badge {
5787 5787 color: #337ab7;
5788 5788 background-color: #fff;
5789 5789 }
5790 5790 .panel-primary > .panel-footer + .panel-collapse > .panel-body {
5791 5791 border-bottom-color: #337ab7;
5792 5792 }
5793 5793 .panel-success {
5794 5794 border-color: #d6e9c6;
5795 5795 }
5796 5796 .panel-success > .panel-heading {
5797 5797 color: #3c763d;
5798 5798 background-color: #dff0d8;
5799 5799 border-color: #d6e9c6;
5800 5800 }
5801 5801 .panel-success > .panel-heading + .panel-collapse > .panel-body {
5802 5802 border-top-color: #d6e9c6;
5803 5803 }
5804 5804 .panel-success > .panel-heading .badge {
5805 5805 color: #dff0d8;
5806 5806 background-color: #3c763d;
5807 5807 }
5808 5808 .panel-success > .panel-footer + .panel-collapse > .panel-body {
5809 5809 border-bottom-color: #d6e9c6;
5810 5810 }
5811 5811 .panel-info {
5812 5812 border-color: #bce8f1;
5813 5813 }
5814 5814 .panel-info > .panel-heading {
5815 5815 color: #31708f;
5816 5816 background-color: #d9edf7;
5817 5817 border-color: #bce8f1;
5818 5818 }
5819 5819 .panel-info > .panel-heading + .panel-collapse > .panel-body {
5820 5820 border-top-color: #bce8f1;
5821 5821 }
5822 5822 .panel-info > .panel-heading .badge {
5823 5823 color: #d9edf7;
5824 5824 background-color: #31708f;
5825 5825 }
5826 5826 .panel-info > .panel-footer + .panel-collapse > .panel-body {
5827 5827 border-bottom-color: #bce8f1;
5828 5828 }
5829 5829 .panel-warning {
5830 5830 border-color: #faebcc;
5831 5831 }
5832 5832 .panel-warning > .panel-heading {
5833 5833 color: #8a6d3b;
5834 5834 background-color: #fcf8e3;
5835 5835 border-color: #faebcc;
5836 5836 }
5837 5837 .panel-warning > .panel-heading + .panel-collapse > .panel-body {
5838 5838 border-top-color: #faebcc;
5839 5839 }
5840 5840 .panel-warning > .panel-heading .badge {
5841 5841 color: #fcf8e3;
5842 5842 background-color: #8a6d3b;
5843 5843 }
5844 5844 .panel-warning > .panel-footer + .panel-collapse > .panel-body {
5845 5845 border-bottom-color: #faebcc;
5846 5846 }
5847 5847 .panel-danger {
5848 5848 border-color: #ebccd1;
5849 5849 }
5850 5850 .panel-danger > .panel-heading {
5851 5851 color: #a94442;
5852 5852 background-color: #f2dede;
5853 5853 border-color: #ebccd1;
5854 5854 }
5855 5855 .panel-danger > .panel-heading + .panel-collapse > .panel-body {
5856 5856 border-top-color: #ebccd1;
5857 5857 }
5858 5858 .panel-danger > .panel-heading .badge {
5859 5859 color: #f2dede;
5860 5860 background-color: #a94442;
5861 5861 }
5862 5862 .panel-danger > .panel-footer + .panel-collapse > .panel-body {
5863 5863 border-bottom-color: #ebccd1;
5864 5864 }
5865 5865 .embed-responsive {
5866 5866 position: relative;
5867 5867 display: block;
5868 5868 height: 0;
5869 5869 padding: 0;
5870 5870 overflow: hidden;
5871 5871 }
5872 5872 .embed-responsive .embed-responsive-item,
5873 5873 .embed-responsive iframe,
5874 5874 .embed-responsive embed,
5875 5875 .embed-responsive object,
5876 5876 .embed-responsive video {
5877 5877 position: absolute;
5878 5878 top: 0;
5879 5879 left: 0;
5880 5880 bottom: 0;
5881 5881 height: 100%;
5882 5882 width: 100%;
5883 5883 border: 0;
5884 5884 }
5885 5885 .embed-responsive-16by9 {
5886 5886 padding-bottom: 56.25%;
5887 5887 }
5888 5888 .embed-responsive-4by3 {
5889 5889 padding-bottom: 75%;
5890 5890 }
5891 5891 .well {
5892 5892 min-height: 20px;
5893 5893 padding: 19px;
5894 5894 margin-bottom: 20px;
5895 5895 background-color: #f5f5f5;
5896 5896 border: 1px solid #e3e3e3;
5897 5897 border-radius: 4px;
5898 5898 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5899 5899 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5900 5900 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5901 5901 -o-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5902 5902 -ms-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5903 5903 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5904 5904 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05) 0 5px rgba(77, 77, 77, 0.5);
5905 5905 }
5906 5906 .well blockquote {
5907 5907 border-color: #ddd;
5908 5908 border-color: rgba(0, 0, 0, 0.15);
5909 5909 }
5910 5910 .well-lg {
5911 5911 padding: 24px;
5912 5912 border-radius: 6px;
5913 5913 }
5914 5914 .well-sm {
5915 5915 padding: 9px;
5916 5916 border-radius: 3px;
5917 5917 }
5918 5918 .close {
5919 5919 float: right;
5920 5920 font-size: 21px;
5921 5921 font-weight: bold;
5922 5922 line-height: 1;
5923 5923 color: #000;
5924 5924 text-shadow: 0 1px 0 #fff;
5925 5925 opacity: 0.2;
5926 5926 filter: alpha(opacity=20);
5927 5927 }
5928 5928 .close:hover,
5929 5929 .close:focus {
5930 5930 color: #000;
5931 5931 text-decoration: none;
5932 5932 cursor: pointer;
5933 5933 opacity: 0.5;
5934 5934 filter: alpha(opacity=50);
5935 5935 }
5936 5936 button.close {
5937 5937 padding: 0;
5938 5938 cursor: pointer;
5939 5939 background: transparent;
5940 5940 border: 0;
5941 5941 -webkit-appearance: none;
5942 5942 }
5943 5943 .modal-open {
5944 5944 overflow: hidden;
5945 5945 }
5946 5946 .modal {
5947 5947 display: none;
5948 5948 overflow: hidden;
5949 5949 position: fixed;
5950 5950 top: 0;
5951 5951 right: 0;
5952 5952 bottom: 0;
5953 5953 left: 0;
5954 5954 z-index: 1050;
5955 5955 -webkit-overflow-scrolling: touch;
5956 5956 outline: 0;
5957 5957 }
5958 5958 .modal.fade .modal-dialog {
5959 5959 -webkit-transform: translate(0, -25%);
5960 5960 -ms-transform: translate(0, -25%);
5961 5961 -o-transform: translate(0, -25%);
5962 5962 transform: translate(0, -25%);
5963 5963 -webkit-transition: -webkit-transform 0.3s ease-out;
5964 5964 -moz-transition: -moz-transform 0.3s ease-out;
5965 5965 -o-transition: -o-transform 0.3s ease-out;
5966 5966 transition: transform 0.3s ease-out;
5967 5967 }
5968 5968 .modal.in .modal-dialog {
5969 5969 -webkit-transform: translate(0, 0);
5970 5970 -ms-transform: translate(0, 0);
5971 5971 -o-transform: translate(0, 0);
5972 5972 transform: translate(0, 0);
5973 5973 }
5974 5974 .modal-open .modal {
5975 5975 overflow-x: hidden;
5976 5976 overflow-y: auto;
5977 5977 }
5978 5978 .modal-dialog {
5979 5979 position: relative;
5980 5980 width: auto;
5981 5981 margin: 10px;
5982 5982 }
5983 5983 .modal-content {
5984 5984 position: relative;
5985 5985 background-color: #fff;
5986 5986 border: 1px solid #999;
5987 5987 border: 1px solid rgba(0, 0, 0, 0.2);
5988 5988 border-radius: 6px;
5989 5989 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5990 5990 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5991 5991 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
5992 5992 -o-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
5993 5993 -ms-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
5994 5994 -moz-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
5995 5995 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
5996 5996 background-clip: padding-box;
5997 5997 outline: 0;
5998 5998 }
5999 5999 .modal-backdrop {
6000 6000 position: fixed;
6001 6001 top: 0;
6002 6002 right: 0;
6003 6003 bottom: 0;
6004 6004 left: 0;
6005 6005 z-index: 1040;
6006 6006 background-color: #000;
6007 6007 }
6008 6008 .modal-backdrop.fade {
6009 6009 opacity: 0;
6010 6010 filter: alpha(opacity=0);
6011 6011 }
6012 6012 .modal-backdrop.in {
6013 6013 opacity: 0.5;
6014 6014 filter: alpha(opacity=50);
6015 6015 }
6016 6016 .modal-header {
6017 6017 padding: 15px;
6018 6018 border-bottom: 1px solid #e5e5e5;
6019 6019 }
6020 6020 .modal-header .close {
6021 6021 margin-top: -2px;
6022 6022 }
6023 6023 .modal-title {
6024 6024 margin: 0;
6025 6025 line-height: 1.42857143;
6026 6026 }
6027 6027 .modal-body {
6028 6028 position: relative;
6029 6029 padding: 15px;
6030 6030 }
6031 6031 .modal-footer {
6032 6032 padding: 15px;
6033 6033 text-align: right;
6034 6034 border-top: 1px solid #e5e5e5;
6035 6035 }
6036 6036 .modal-footer .btn + .btn {
6037 6037 margin-left: 5px;
6038 6038 margin-bottom: 0;
6039 6039 }
6040 6040 .modal-footer .btn-group .btn + .btn {
6041 6041 margin-left: -1px;
6042 6042 }
6043 6043 .modal-footer .btn-block + .btn-block {
6044 6044 margin-left: 0;
6045 6045 }
6046 6046 .modal-scrollbar-measure {
6047 6047 position: absolute;
6048 6048 top: -9999px;
6049 6049 width: 50px;
6050 6050 height: 50px;
6051 6051 overflow: scroll;
6052 6052 }
6053 6053 @media (min-width: 768px) {
6054 6054 .modal-dialog {
6055 6055 width: 600px;
6056 6056 margin: 30px auto;
6057 6057 }
6058 6058 .modal-content {
6059 6059 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
6060 6060 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
6061 6061 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
6062 6062 -o-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
6063 6063 -ms-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
6064 6064 -moz-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
6065 6065 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5) 0 5px rgba(77, 77, 77, 0.5);
6066 6066 }
6067 6067 .modal-sm {
6068 6068 width: 300px;
6069 6069 }
6070 6070 }
6071 6071 @media (min-width: 992px) {
6072 6072 .modal-lg {
6073 6073 width: 900px;
6074 6074 }
6075 6075 }
6076 6076 .tooltip {
6077 6077 position: absolute;
6078 6078 z-index: 1070;
6079 6079 display: block;
6080 6080 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
6081 6081 font-style: normal;
6082 6082 font-weight: normal;
6083 6083 letter-spacing: normal;
6084 6084 line-break: auto;
6085 6085 line-height: 1.42857143;
6086 6086 text-align: left;
6087 6087 text-align: start;
6088 6088 text-decoration: none;
6089 6089 text-shadow: none;
6090 6090 text-transform: none;
6091 6091 white-space: normal;
6092 6092 word-break: normal;
6093 6093 word-spacing: normal;
6094 6094 word-wrap: normal;
6095 6095 font-size: 12px;
6096 6096 opacity: 0;
6097 6097 filter: alpha(opacity=0);
6098 6098 }
6099 6099 .tooltip.in {
6100 6100 opacity: 0.9;
6101 6101 filter: alpha(opacity=90);
6102 6102 }
6103 6103 .tooltip.top {
6104 6104 margin-top: -3px;
6105 6105 padding: 5px 0;
6106 6106 }
6107 6107 .tooltip.right {
6108 6108 margin-left: 3px;
6109 6109 padding: 0 5px;
6110 6110 }
6111 6111 .tooltip.bottom {
6112 6112 margin-top: 3px;
6113 6113 padding: 5px 0;
6114 6114 }
6115 6115 .tooltip.left {
6116 6116 margin-left: -3px;
6117 6117 padding: 0 5px;
6118 6118 }
6119 6119 .tooltip-inner {
6120 6120 max-width: 200px;
6121 6121 padding: 3px 8px;
6122 6122 color: #fff;
6123 6123 text-align: center;
6124 6124 background-color: #000;
6125 6125 border-radius: 4px;
6126 6126 }
6127 6127 .tooltip-arrow {
6128 6128 position: absolute;
6129 6129 width: 0;
6130 6130 height: 0;
6131 6131 border-color: transparent;
6132 6132 border-style: solid;
6133 6133 }
6134 6134 .tooltip.top .tooltip-arrow {
6135 6135 bottom: 0;
6136 6136 left: 50%;
6137 6137 margin-left: -5px;
6138 6138 border-width: 5px 5px 0;
6139 6139 border-top-color: #000;
6140 6140 }
6141 6141 .tooltip.top-left .tooltip-arrow {
6142 6142 bottom: 0;
6143 6143 right: 5px;
6144 6144 margin-bottom: -5px;
6145 6145 border-width: 5px 5px 0;
6146 6146 border-top-color: #000;
6147 6147 }
6148 6148 .tooltip.top-right .tooltip-arrow {
6149 6149 bottom: 0;
6150 6150 left: 5px;
6151 6151 margin-bottom: -5px;
6152 6152 border-width: 5px 5px 0;
6153 6153 border-top-color: #000;
6154 6154 }
6155 6155 .tooltip.right .tooltip-arrow {
6156 6156 top: 50%;
6157 6157 left: 0;
6158 6158 margin-top: -5px;
6159 6159 border-width: 5px 5px 5px 0;
6160 6160 border-right-color: #000;
6161 6161 }
6162 6162 .tooltip.left .tooltip-arrow {
6163 6163 top: 50%;
6164 6164 right: 0;
6165 6165 margin-top: -5px;
6166 6166 border-width: 5px 0 5px 5px;
6167 6167 border-left-color: #000;
6168 6168 }
6169 6169 .tooltip.bottom .tooltip-arrow {
6170 6170 top: 0;
6171 6171 left: 50%;
6172 6172 margin-left: -5px;
6173 6173 border-width: 0 5px 5px;
6174 6174 border-bottom-color: #000;
6175 6175 }
6176 6176 .tooltip.bottom-left .tooltip-arrow {
6177 6177 top: 0;
6178 6178 right: 5px;
6179 6179 margin-top: -5px;
6180 6180 border-width: 0 5px 5px;
6181 6181 border-bottom-color: #000;
6182 6182 }
6183 6183 .tooltip.bottom-right .tooltip-arrow {
6184 6184 top: 0;
6185 6185 left: 5px;
6186 6186 margin-top: -5px;
6187 6187 border-width: 0 5px 5px;
6188 6188 border-bottom-color: #000;
6189 6189 }
6190 6190 .popover {
6191 6191 position: absolute;
6192 6192 top: 0;
6193 6193 left: 0;
6194 6194 z-index: 1060;
6195 6195 display: none;
6196 6196 max-width: 276px;
6197 6197 padding: 1px;
6198 6198 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
6199 6199 font-style: normal;
6200 6200 font-weight: normal;
6201 6201 letter-spacing: normal;
6202 6202 line-break: auto;
6203 6203 line-height: 1.42857143;
6204 6204 text-align: left;
6205 6205 text-align: start;
6206 6206 text-decoration: none;
6207 6207 text-shadow: none;
6208 6208 text-transform: none;
6209 6209 white-space: normal;
6210 6210 word-break: normal;
6211 6211 word-spacing: normal;
6212 6212 word-wrap: normal;
6213 6213 font-size: 14px;
6214 6214 background-color: #fff;
6215 6215 background-clip: padding-box;
6216 6216 border: 1px solid #ccc;
6217 6217 border: 1px solid rgba(0, 0, 0, 0.2);
6218 6218 border-radius: 6px;
6219 6219 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
6220 6220 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
6221 6221 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2) 0 5px rgba(77, 77, 77, 0.5);
6222 6222 -o-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2) 0 5px rgba(77, 77, 77, 0.5);
6223 6223 -ms-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2) 0 5px rgba(77, 77, 77, 0.5);
6224 6224 -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2) 0 5px rgba(77, 77, 77, 0.5);
6225 6225 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2) 0 5px rgba(77, 77, 77, 0.5);
6226 6226 }
6227 6227 .popover.top {
6228 6228 margin-top: -10px;
6229 6229 }
6230 6230 .popover.right {
6231 6231 margin-left: 10px;
6232 6232 }
6233 6233 .popover.bottom {
6234 6234 margin-top: 10px;
6235 6235 }
6236 6236 .popover.left {
6237 6237 margin-left: -10px;
6238 6238 }
6239 6239 .popover-title {
6240 6240 margin: 0;
6241 6241 padding: 8px 14px;
6242 6242 font-size: 14px;
6243 6243 background-color: #f7f7f7;
6244 6244 border-bottom: 1px solid #ebebeb;
6245 6245 border-radius: 5px 5px 0 0;
6246 6246 }
6247 6247 .popover-content {
6248 6248 padding: 9px 14px;
6249 6249 }
6250 6250 .popover > .arrow,
6251 6251 .popover > .arrow:after {
6252 6252 position: absolute;
6253 6253 display: block;
6254 6254 width: 0;
6255 6255 height: 0;
6256 6256 border-color: transparent;
6257 6257 border-style: solid;
6258 6258 }
6259 6259 .popover > .arrow {
6260 6260 border-width: 11px;
6261 6261 }
6262 6262 .popover > .arrow:after {
6263 6263 border-width: 10px;
6264 6264 content: "";
6265 6265 }
6266 6266 .popover.top > .arrow {
6267 6267 left: 50%;
6268 6268 margin-left: -11px;
6269 6269 border-bottom-width: 0;
6270 6270 border-top-color: #999999;
6271 6271 border-top-color: rgba(0, 0, 0, 0.25);
6272 6272 bottom: -11px;
6273 6273 }
6274 6274 .popover.top > .arrow:after {
6275 6275 content: " ";
6276 6276 bottom: 1px;
6277 6277 margin-left: -10px;
6278 6278 border-bottom-width: 0;
6279 6279 border-top-color: #fff;
6280 6280 }
6281 6281 .popover.right > .arrow {
6282 6282 top: 50%;
6283 6283 left: -11px;
6284 6284 margin-top: -11px;
6285 6285 border-left-width: 0;
6286 6286 border-right-color: #999999;
6287 6287 border-right-color: rgba(0, 0, 0, 0.25);
6288 6288 }
6289 6289 .popover.right > .arrow:after {
6290 6290 content: " ";
6291 6291 left: 1px;
6292 6292 bottom: -10px;
6293 6293 border-left-width: 0;
6294 6294 border-right-color: #fff;
6295 6295 }
6296 6296 .popover.bottom > .arrow {
6297 6297 left: 50%;
6298 6298 margin-left: -11px;
6299 6299 border-top-width: 0;
6300 6300 border-bottom-color: #999999;
6301 6301 border-bottom-color: rgba(0, 0, 0, 0.25);
6302 6302 top: -11px;
6303 6303 }
6304 6304 .popover.bottom > .arrow:after {
6305 6305 content: " ";
6306 6306 top: 1px;
6307 6307 margin-left: -10px;
6308 6308 border-top-width: 0;
6309 6309 border-bottom-color: #fff;
6310 6310 }
6311 6311 .popover.left > .arrow {
6312 6312 top: 50%;
6313 6313 right: -11px;
6314 6314 margin-top: -11px;
6315 6315 border-right-width: 0;
6316 6316 border-left-color: #999999;
6317 6317 border-left-color: rgba(0, 0, 0, 0.25);
6318 6318 }
6319 6319 .popover.left > .arrow:after {
6320 6320 content: " ";
6321 6321 right: 1px;
6322 6322 border-right-width: 0;
6323 6323 border-left-color: #fff;
6324 6324 bottom: -10px;
6325 6325 }
6326 6326 .carousel {
6327 6327 position: relative;
6328 6328 }
6329 6329 .carousel-inner {
6330 6330 position: relative;
6331 6331 overflow: hidden;
6332 6332 width: 100%;
6333 6333 }
6334 6334 .carousel-inner > .item {
6335 6335 display: none;
6336 6336 position: relative;
6337 6337 -webkit-transition: 0.6s ease-in-out left;
6338 6338 -o-transition: 0.6s ease-in-out left;
6339 6339 transition: 0.6s ease-in-out left;
6340 6340 }
6341 6341 .carousel-inner > .item > img,
6342 6342 .carousel-inner > .item > a > img {
6343 6343 line-height: 1;
6344 6344 }
6345 6345 @media all and (transform-3d), (-webkit-transform-3d) {
6346 6346 .carousel-inner > .item {
6347 6347 -webkit-transition: -webkit-transform 0.6s ease-in-out;
6348 6348 -moz-transition: -moz-transform 0.6s ease-in-out;
6349 6349 -o-transition: -o-transform 0.6s ease-in-out;
6350 6350 transition: transform 0.6s ease-in-out;
6351 6351 -webkit-backface-visibility: hidden;
6352 6352 -moz-backface-visibility: hidden;
6353 6353 backface-visibility: hidden;
6354 6354 -webkit-perspective: 1000px;
6355 6355 -moz-perspective: 1000px;
6356 6356 perspective: 1000px;
6357 6357 }
6358 6358 .carousel-inner > .item.next,
6359 6359 .carousel-inner > .item.active.right {
6360 6360 -webkit-transform: translate3d(100%, 0, 0);
6361 6361 transform: translate3d(100%, 0, 0);
6362 6362 left: 0;
6363 6363 }
6364 6364 .carousel-inner > .item.prev,
6365 6365 .carousel-inner > .item.active.left {
6366 6366 -webkit-transform: translate3d(-100%, 0, 0);
6367 6367 transform: translate3d(-100%, 0, 0);
6368 6368 left: 0;
6369 6369 }
6370 6370 .carousel-inner > .item.next.left,
6371 6371 .carousel-inner > .item.prev.right,
6372 6372 .carousel-inner > .item.active {
6373 6373 -webkit-transform: translate3d(0, 0, 0);
6374 6374 transform: translate3d(0, 0, 0);
6375 6375 left: 0;
6376 6376 }
6377 6377 }
6378 6378 .carousel-inner > .active,
6379 6379 .carousel-inner > .next,
6380 6380 .carousel-inner > .prev {
6381 6381 display: block;
6382 6382 }
6383 6383 .carousel-inner > .active {
6384 6384 left: 0;
6385 6385 }
6386 6386 .carousel-inner > .next,
6387 6387 .carousel-inner > .prev {
6388 6388 position: absolute;
6389 6389 top: 0;
6390 6390 width: 100%;
6391 6391 }
6392 6392 .carousel-inner > .next {
6393 6393 left: 100%;
6394 6394 }
6395 6395 .carousel-inner > .prev {
6396 6396 left: -100%;
6397 6397 }
6398 6398 .carousel-inner > .next.left,
6399 6399 .carousel-inner > .prev.right {
6400 6400 left: 0;
6401 6401 }
6402 6402 .carousel-inner > .active.left {
6403 6403 left: -100%;
6404 6404 }
6405 6405 .carousel-inner > .active.right {
6406 6406 left: 100%;
6407 6407 }
6408 6408 .carousel-control {
6409 6409 position: absolute;
6410 6410 top: 0;
6411 6411 left: 0;
6412 6412 bottom: 0;
6413 6413 width: 15%;
6414 6414 opacity: 0.5;
6415 6415 filter: alpha(opacity=50);
6416 6416 font-size: 20px;
6417 6417 color: #fff;
6418 6418 text-align: center;
6419 6419 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6420 6420 background-color: rgba(0, 0, 0, 0);
6421 6421 }
6422 6422 .carousel-control.left {
6423 6423 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6424 6424 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6425 6425 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6426 6426 background-repeat: repeat-x;
6427 6427 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
6428 6428 }
6429 6429 .carousel-control.right {
6430 6430 left: auto;
6431 6431 right: 0;
6432 6432 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6433 6433 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6434 6434 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6435 6435 background-repeat: repeat-x;
6436 6436 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
6437 6437 }
6438 6438 .carousel-control:hover,
6439 6439 .carousel-control:focus {
6440 6440 outline: 0;
6441 6441 color: #fff;
6442 6442 text-decoration: none;
6443 6443 opacity: 0.9;
6444 6444 filter: alpha(opacity=90);
6445 6445 }
6446 6446 .carousel-control .icon-prev,
6447 6447 .carousel-control .icon-next,
6448 6448 .carousel-control .glyphicon-chevron-left,
6449 6449 .carousel-control .glyphicon-chevron-right {
6450 6450 position: absolute;
6451 6451 top: 50%;
6452 6452 margin-top: -10px;
6453 6453 z-index: 5;
6454 6454 display: inline-block;
6455 6455 }
6456 6456 .carousel-control .icon-prev,
6457 6457 .carousel-control .glyphicon-chevron-left {
6458 6458 left: 50%;
6459 6459 margin-left: -10px;
6460 6460 }
6461 6461 .carousel-control .icon-next,
6462 6462 .carousel-control .glyphicon-chevron-right {
6463 6463 right: 50%;
6464 6464 margin-right: -10px;
6465 6465 }
6466 6466 .carousel-control .icon-prev,
6467 6467 .carousel-control .icon-next {
6468 6468 width: 20px;
6469 6469 height: 20px;
6470 6470 line-height: 1;
6471 6471 font-family: serif;
6472 6472 }
6473 6473 .carousel-control .icon-prev:before {
6474 6474 content: '\2039';
6475 6475 }
6476 6476 .carousel-control .icon-next:before {
6477 6477 content: '\203a';
6478 6478 }
6479 6479 .carousel-indicators {
6480 6480 position: absolute;
6481 6481 bottom: 10px;
6482 6482 left: 50%;
6483 6483 z-index: 15;
6484 6484 width: 60%;
6485 6485 margin-left: -30%;
6486 6486 padding-left: 0;
6487 6487 list-style: none;
6488 6488 text-align: center;
6489 6489 }
6490 6490 .carousel-indicators li {
6491 6491 display: inline-block;
6492 6492 width: 10px;
6493 6493 height: 10px;
6494 6494 margin: 1px;
6495 6495 text-indent: -999px;
6496 6496 border: 1px solid #fff;
6497 6497 border-radius: 10px;
6498 6498 cursor: pointer;
6499 6499 background-color: #000 \9;
6500 6500 background-color: rgba(0, 0, 0, 0);
6501 6501 }
6502 6502 .carousel-indicators .active {
6503 6503 margin: 0;
6504 6504 width: 12px;
6505 6505 height: 12px;
6506 6506 background-color: #fff;
6507 6507 }
6508 6508 .carousel-caption {
6509 6509 position: absolute;
6510 6510 left: 15%;
6511 6511 right: 15%;
6512 6512 bottom: 20px;
6513 6513 z-index: 10;
6514 6514 padding-top: 20px;
6515 6515 padding-bottom: 20px;
6516 6516 color: #fff;
6517 6517 text-align: center;
6518 6518 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6519 6519 }
6520 6520 .carousel-caption .btn {
6521 6521 text-shadow: none;
6522 6522 }
6523 6523 @media screen and (min-width: 768px) {
6524 6524 .carousel-control .glyphicon-chevron-left,
6525 6525 .carousel-control .glyphicon-chevron-right,
6526 6526 .carousel-control .icon-prev,
6527 6527 .carousel-control .icon-next {
6528 6528 width: 30px;
6529 6529 height: 30px;
6530 6530 margin-top: -10px;
6531 6531 font-size: 30px;
6532 6532 }
6533 6533 .carousel-control .glyphicon-chevron-left,
6534 6534 .carousel-control .icon-prev {
6535 6535 margin-left: -10px;
6536 6536 }
6537 6537 .carousel-control .glyphicon-chevron-right,
6538 6538 .carousel-control .icon-next {
6539 6539 margin-right: -10px;
6540 6540 }
6541 6541 .carousel-caption {
6542 6542 left: 20%;
6543 6543 right: 20%;
6544 6544 padding-bottom: 30px;
6545 6545 }
6546 6546 .carousel-indicators {
6547 6547 bottom: 20px;
6548 6548 }
6549 6549 }
6550 6550 .clearfix:before,
6551 6551 .clearfix:after,
6552 6552 .dl-horizontal dd:before,
6553 6553 .dl-horizontal dd:after,
6554 6554 .container:before,
6555 6555 .container:after,
6556 6556 .container-fluid:before,
6557 6557 .container-fluid:after,
6558 6558 .row:before,
6559 6559 .row:after,
6560 6560 .form-horizontal .form-group:before,
6561 6561 .form-horizontal .form-group:after,
6562 6562 .btn-toolbar:before,
6563 6563 .btn-toolbar:after,
6564 6564 .btn-group-vertical > .btn-group:before,
6565 6565 .btn-group-vertical > .btn-group:after,
6566 6566 .nav:before,
6567 6567 .nav:after,
6568 6568 .navbar:before,
6569 6569 .navbar:after,
6570 6570 .navbar-header:before,
6571 6571 .navbar-header:after,
6572 6572 .navbar-collapse:before,
6573 6573 .navbar-collapse:after,
6574 6574 .pager:before,
6575 6575 .pager:after,
6576 6576 .panel-body:before,
6577 6577 .panel-body:after,
6578 6578 .modal-header:before,
6579 6579 .modal-header:after,
6580 6580 .modal-footer:before,
6581 6581 .modal-footer:after {
6582 6582 content: " ";
6583 6583 display: table;
6584 6584 }
6585 6585 .clearfix:after,
6586 6586 .dl-horizontal dd:after,
6587 6587 .container:after,
6588 6588 .container-fluid:after,
6589 6589 .row:after,
6590 6590 .form-horizontal .form-group:after,
6591 6591 .btn-toolbar:after,
6592 6592 .btn-group-vertical > .btn-group:after,
6593 6593 .nav:after,
6594 6594 .navbar:after,
6595 6595 .navbar-header:after,
6596 6596 .navbar-collapse:after,
6597 6597 .pager:after,
6598 6598 .panel-body:after,
6599 6599 .modal-header:after,
6600 6600 .modal-footer:after {
6601 6601 clear: both;
6602 6602 }
6603 6603 .center-block {
6604 6604 display: block;
6605 6605 margin-left: auto;
6606 6606 margin-right: auto;
6607 6607 }
6608 6608 .pull-right {
6609 6609 float: right !important;
6610 6610 }
6611 6611 .pull-left {
6612 6612 float: left !important;
6613 6613 }
6614 6614 .hide {
6615 6615 display: none !important;
6616 6616 }
6617 6617 .show {
6618 6618 display: block !important;
6619 6619 }
6620 6620 .invisible {
6621 6621 visibility: hidden;
6622 6622 }
6623 6623 .text-hide {
6624 6624 font: 0/0 a;
6625 6625 color: transparent;
6626 6626 text-shadow: none;
6627 6627 background-color: transparent;
6628 6628 border: 0;
6629 6629 }
6630 6630 .hidden {
6631 6631 display: none !important;
6632 6632 }
6633 6633 .affix {
6634 6634 position: fixed;
6635 6635 }
6636 6636 @-ms-viewport {
6637 6637 width: device-width;
6638 6638 }
6639 6639 .visible-xs,
6640 6640 .visible-sm,
6641 6641 .visible-md,
6642 6642 .visible-lg {
6643 6643 display: none !important;
6644 6644 }
6645 6645 .visible-xs-block,
6646 6646 .visible-xs-inline,
6647 6647 .visible-xs-inline-block,
6648 6648 .visible-sm-block,
6649 6649 .visible-sm-inline,
6650 6650 .visible-sm-inline-block,
6651 6651 .visible-md-block,
6652 6652 .visible-md-inline,
6653 6653 .visible-md-inline-block,
6654 6654 .visible-lg-block,
6655 6655 .visible-lg-inline,
6656 6656 .visible-lg-inline-block {
6657 6657 display: none !important;
6658 6658 }
6659 6659 @media (max-width: 767px) {
6660 6660 .visible-xs {
6661 6661 display: block !important;
6662 6662 }
6663 6663 table.visible-xs {
6664 6664 display: table !important;
6665 6665 }
6666 6666 tr.visible-xs {
6667 6667 display: table-row !important;
6668 6668 }
6669 6669 th.visible-xs,
6670 6670 td.visible-xs {
6671 6671 display: table-cell !important;
6672 6672 }
6673 6673 }
6674 6674 @media (max-width: 767px) {
6675 6675 .visible-xs-block {
6676 6676 display: block !important;
6677 6677 }
6678 6678 }
6679 6679 @media (max-width: 767px) {
6680 6680 .visible-xs-inline {
6681 6681 display: inline !important;
6682 6682 }
6683 6683 }
6684 6684 @media (max-width: 767px) {
6685 6685 .visible-xs-inline-block {
6686 6686 display: inline-block !important;
6687 6687 }
6688 6688 }
6689 6689 @media (min-width: 768px) and (max-width: 991px) {
6690 6690 .visible-sm {
6691 6691 display: block !important;
6692 6692 }
6693 6693 table.visible-sm {
6694 6694 display: table !important;
6695 6695 }
6696 6696 tr.visible-sm {
6697 6697 display: table-row !important;
6698 6698 }
6699 6699 th.visible-sm,
6700 6700 td.visible-sm {
6701 6701 display: table-cell !important;
6702 6702 }
6703 6703 }
6704 6704 @media (min-width: 768px) and (max-width: 991px) {
6705 6705 .visible-sm-block {
6706 6706 display: block !important;
6707 6707 }
6708 6708 }
6709 6709 @media (min-width: 768px) and (max-width: 991px) {
6710 6710 .visible-sm-inline {
6711 6711 display: inline !important;
6712 6712 }
6713 6713 }
6714 6714 @media (min-width: 768px) and (max-width: 991px) {
6715 6715 .visible-sm-inline-block {
6716 6716 display: inline-block !important;
6717 6717 }
6718 6718 }
6719 6719 @media (min-width: 992px) and (max-width: 1199px) {
6720 6720 .visible-md {
6721 6721 display: block !important;
6722 6722 }
6723 6723 table.visible-md {
6724 6724 display: table !important;
6725 6725 }
6726 6726 tr.visible-md {
6727 6727 display: table-row !important;
6728 6728 }
6729 6729 th.visible-md,
6730 6730 td.visible-md {
6731 6731 display: table-cell !important;
6732 6732 }
6733 6733 }
6734 6734 @media (min-width: 992px) and (max-width: 1199px) {
6735 6735 .visible-md-block {
6736 6736 display: block !important;
6737 6737 }
6738 6738 }
6739 6739 @media (min-width: 992px) and (max-width: 1199px) {
6740 6740 .visible-md-inline {
6741 6741 display: inline !important;
6742 6742 }
6743 6743 }
6744 6744 @media (min-width: 992px) and (max-width: 1199px) {
6745 6745 .visible-md-inline-block {
6746 6746 display: inline-block !important;
6747 6747 }
6748 6748 }
6749 6749 @media (min-width: 1200px) {
6750 6750 .visible-lg {
6751 6751 display: block !important;
6752 6752 }
6753 6753 table.visible-lg {
6754 6754 display: table !important;
6755 6755 }
6756 6756 tr.visible-lg {
6757 6757 display: table-row !important;
6758 6758 }
6759 6759 th.visible-lg,
6760 6760 td.visible-lg {
6761 6761 display: table-cell !important;
6762 6762 }
6763 6763 }
6764 6764 @media (min-width: 1200px) {
6765 6765 .visible-lg-block {
6766 6766 display: block !important;
6767 6767 }
6768 6768 }
6769 6769 @media (min-width: 1200px) {
6770 6770 .visible-lg-inline {
6771 6771 display: inline !important;
6772 6772 }
6773 6773 }
6774 6774 @media (min-width: 1200px) {
6775 6775 .visible-lg-inline-block {
6776 6776 display: inline-block !important;
6777 6777 }
6778 6778 }
6779 6779 @media (max-width: 767px) {
6780 6780 .hidden-xs {
6781 6781 display: none !important;
6782 6782 }
6783 6783 }
6784 6784 @media (min-width: 768px) and (max-width: 991px) {
6785 6785 .hidden-sm {
6786 6786 display: none !important;
6787 6787 }
6788 6788 }
6789 6789 @media (min-width: 992px) and (max-width: 1199px) {
6790 6790 .hidden-md {
6791 6791 display: none !important;
6792 6792 }
6793 6793 }
6794 6794 @media (min-width: 1200px) {
6795 6795 .hidden-lg {
6796 6796 display: none !important;
6797 6797 }
6798 6798 }
6799 6799 .visible-print {
6800 6800 display: none !important;
6801 6801 }
6802 6802 @media print {
6803 6803 .visible-print {
6804 6804 display: block !important;
6805 6805 }
6806 6806 table.visible-print {
6807 6807 display: table !important;
6808 6808 }
6809 6809 tr.visible-print {
6810 6810 display: table-row !important;
6811 6811 }
6812 6812 th.visible-print,
6813 6813 td.visible-print {
6814 6814 display: table-cell !important;
6815 6815 }
6816 6816 }
6817 6817 .visible-print-block {
6818 6818 display: none !important;
6819 6819 }
6820 6820 @media print {
6821 6821 .visible-print-block {
6822 6822 display: block !important;
6823 6823 }
6824 6824 }
6825 6825 .visible-print-inline {
6826 6826 display: none !important;
6827 6827 }
6828 6828 @media print {
6829 6829 .visible-print-inline {
6830 6830 display: inline !important;
6831 6831 }
6832 6832 }
6833 6833 .visible-print-inline-block {
6834 6834 display: none !important;
6835 6835 }
6836 6836 @media print {
6837 6837 .visible-print-inline-block {
6838 6838 display: inline-block !important;
6839 6839 }
6840 6840 }
6841 6841 @media print {
6842 6842 .hidden-print {
6843 6843 display: none !important;
6844 6844 }
6845 6845 }
6846 6846 /*!
6847 6847 * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
6848 6848 * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
6849 6849 */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}
6850 6850 /*-- Chart --*/
6851 6851 .c3 svg {
6852 6852 font: 10px sans-serif; }
6853 6853
6854 6854 .c3 path, .c3 line {
6855 6855 fill: none;
6856 6856 stroke: #000; }
6857 6857
6858 6858 .c3 text {
6859 6859 -webkit-user-select: none;
6860 6860 -moz-user-select: none;
6861 6861 user-select: none; }
6862 6862
6863 6863 .c3-legend-item-tile, .c3-xgrid-focus, .c3-ygrid, .c3-event-rect, .c3-bars path {
6864 6864 shape-rendering: crispEdges; }
6865 6865
6866 6866 .c3-chart-arc path {
6867 6867 stroke: #fff; }
6868 6868
6869 6869 .c3-chart-arc text {
6870 6870 fill: #fff;
6871 6871 font-size: 13px; }
6872 6872
6873 6873 /*-- Axis --*/
6874 6874 /*-- Grid --*/
6875 6875 .c3-grid line {
6876 6876 stroke: #aaa; }
6877 6877
6878 6878 .c3-grid text {
6879 6879 fill: #aaa; }
6880 6880
6881 6881 .c3-xgrid, .c3-ygrid {
6882 6882 stroke-dasharray: 3 3; }
6883 6883
6884 6884 /*-- Text on Chart --*/
6885 6885 .c3-text.c3-empty {
6886 6886 fill: #808080;
6887 6887 font-size: 2em; }
6888 6888
6889 6889 /*-- Line --*/
6890 6890 .c3-line {
6891 6891 stroke-width: 1px; }
6892 6892
6893 6893 /*-- Point --*/
6894 6894 .c3-circle._expanded_ {
6895 6895 stroke-width: 1px;
6896 6896 stroke: white; }
6897 6897
6898 6898 .c3-selected-circle {
6899 6899 fill: white;
6900 6900 stroke-width: 2px; }
6901 6901
6902 6902 /*-- Bar --*/
6903 6903 .c3-bar {
6904 6904 stroke-width: 0; }
6905 6905
6906 6906 .c3-bar._expanded_ {
6907 6907 fill-opacity: 0.75; }
6908 6908
6909 6909 /*-- Focus --*/
6910 6910 .c3-target.c3-focused {
6911 6911 opacity: 1; }
6912 6912
6913 6913 .c3-target.c3-focused path.c3-line, .c3-target.c3-focused path.c3-step {
6914 6914 stroke-width: 2px; }
6915 6915
6916 6916 .c3-target.c3-defocused {
6917 6917 opacity: 0.3 !important; }
6918 6918
6919 6919 /*-- Region --*/
6920 6920 .c3-region {
6921 6921 fill: steelblue;
6922 6922 fill-opacity: 0.1; }
6923 6923
6924 6924 /*-- Brush --*/
6925 6925 .c3-brush .extent {
6926 6926 fill-opacity: 0.1; }
6927 6927
6928 6928 /*-- Select - Drag --*/
6929 6929 /*-- Legend --*/
6930 6930 .c3-legend-item {
6931 6931 font-size: 12px; }
6932 6932
6933 6933 .c3-legend-item-hidden {
6934 6934 opacity: 0.15; }
6935 6935
6936 6936 .c3-legend-background {
6937 6937 opacity: 0.75;
6938 6938 fill: white;
6939 6939 stroke: lightgray;
6940 6940 stroke-width: 1; }
6941 6941
6942 6942 /*-- Tooltip --*/
6943 6943 .c3-tooltip-container {
6944 6944 z-index: 10; }
6945 6945
6946 6946 .c3-tooltip {
6947 6947 border-collapse: collapse;
6948 6948 border-spacing: 0;
6949 6949 background-color: #fff;
6950 6950 empty-cells: show;
6951 6951 -webkit-box-shadow: 7px 7px 12px -9px #777777;
6952 6952 -moz-box-shadow: 7px 7px 12px -9px #777777;
6953 6953 box-shadow: 7px 7px 12px -9px #777777;
6954 6954 opacity: 0.9; }
6955 6955
6956 6956 .c3-tooltip tr {
6957 6957 border: 1px solid #CCC; }
6958 6958
6959 6959 .c3-tooltip th {
6960 6960 background-color: #aaa;
6961 6961 font-size: 14px;
6962 6962 padding: 2px 5px;
6963 6963 text-align: left;
6964 6964 color: #FFF; }
6965 6965
6966 6966 .c3-tooltip td {
6967 6967 font-size: 13px;
6968 6968 padding: 3px 6px;
6969 6969 background-color: #fff;
6970 6970 border-left: 1px dotted #999; }
6971 6971
6972 6972 .c3-tooltip td > span {
6973 6973 display: inline-block;
6974 6974 width: 10px;
6975 6975 height: 10px;
6976 6976 margin-right: 6px; }
6977 6977
6978 6978 .c3-tooltip td.value {
6979 6979 text-align: right; }
6980 6980
6981 6981 /*-- Area --*/
6982 6982 .c3-area {
6983 6983 stroke-width: 0;
6984 6984 opacity: 0.2; }
6985 6985
6986 6986 /*-- Arc --*/
6987 6987 .c3-chart-arcs-title {
6988 6988 dominant-baseline: middle;
6989 6989 font-size: 1.3em; }
6990 6990
6991 6991 .c3-chart-arcs .c3-chart-arcs-background {
6992 6992 fill: #e0e0e0;
6993 6993 stroke: none; }
6994 6994
6995 6995 .c3-chart-arcs .c3-chart-arcs-gauge-unit {
6996 6996 fill: #000;
6997 6997 font-size: 16px; }
6998 6998
6999 6999 .c3-chart-arcs .c3-chart-arcs-gauge-max {
7000 7000 fill: #777; }
7001 7001
7002 7002 .c3-chart-arcs .c3-chart-arcs-gauge-min {
7003 7003 fill: #777; }
7004 7004
7005 7005 .c3-chart-arc .c3-gauge-value {
7006 7006 fill: #000;
7007 7007 /* font-size: 28px !important;*/ }
7008 7008
7009 7009 .color-secondary {
7010 7010 color: #848484;
7011 7011 }
7012 7012 .color-header {
7013 7013 color: #615c63;
7014 7014 }
7015 7015 /**** UTILS ******/
7016 7016 /************************** OUR CODE ****************************************/
7017 7017 body {
7018 7018 background-color: #f5f5f5;
7019 7019 height: 100%;
7020 7020 margin: 0px;
7021 7021 padding: 0px;
7022 7022 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
7023 7023 }
7024 7024 html {
7025 7025 height: 100%;
7026 7026 }
7027 7027 #holder {
7028 7028 min-height: 100%;
7029 7029 position: relative;
7030 7030 padding-top: 65px;
7031 7031 margin: 0px auto;
7032 7032 }
7033 7033 #holder #outer-content {
7034 7034 padding-bottom: 270px;
7035 7035 }
7036 7036 @media (max-width: 767px) {
7037 7037 #outer-content {
7038 7038 padding-bottom: 700px !important;
7039 7039 }
7040 7040 }
7041 7041 .footer {
7042 7042 position: absolute;
7043 7043 bottom: 0;
7044 7044 width: 100%;
7045 7045 /* Set the fixed height of the footer here */
7046 7046 min-height: 250px;
7047 7047 padding: 35px 15px 15px 15px;
7048 7048 background-image: url("/static/appenlight/images/footer_bg.png");
7049 7049 color: #ffffff;
7050 7050 }
7051 7051 .footer ul {
7052 7052 padding: 0px;
7053 7053 }
7054 7054 .footer ul li {
7055 7055 list-style: none;
7056 7056 }
7057 7057 .footer a {
7058 7058 color: #ffffff !important;
7059 7059 }
7060 7060 .footer a:link,
7061 7061 .footer a:visited {
7062 7062 color: #ffffff !important;
7063 7063 }
7064 7064 .footer hr {
7065 7065 background-color: #382f2d;
7066 7066 margin: 10px 0px;
7067 7067 border-bottom: 1px solid #4a454d;
7068 7068 }
7069 7069 .full-width {
7070 7070 width: 100%;
7071 7071 }
7072 7072 #container-footer-push {
7073 7073 height: 75px;
7074 7074 }
7075 7075 #container-wrapper {
7076 7076 min-height: 100%;
7077 7077 height: auto !important;
7078 7078 height: 100%;
7079 7079 margin: 0px auto -65px;
7080 7080 }
7081 7081 h1.page-title {
7082 7082 border-bottom: 2px solid #ff6f00;
7083 7083 }
7084 7084 a:not(.btn):link,
7085 7085 a:not(.btn):visited,
7086 7086 a:not(.btn) {
7087 7087 color: #17607d;
7088 7088 text-decoration: none;
7089 7089 cursor: pointer;
7090 7090 }
7091 7091 a:not(.btn):link:hover,
7092 7092 a:not(.btn):visited:hover,
7093 7093 a:not(.btn):hover {
7094 7094 color: #002a4a;
7095 7095 cursor: pointer;
7096 7096 }
7097 7097 .user-unlogged #holder {
7098 7098 padding-top: 125px;
7099 7099 }
7100 7100 .user-unlogged .navbar-fixed-top {
7101 7101 position: absolute;
7102 7102 min-height: 125px;
7103 7103 background-image: url("/static/appenlight/images/nav_bg.jpg");
7104 7104 background-repeat: no-repeat;
7105 7105 background-position: center;
7106 7106 border: 0px;
7107 7107 background-color: transparent;
7108 7108 }
7109 7109 .user-unlogged .navbar-fixed-top .pattern {
7110 7110 background-image: url(/static/appenlight/images/dots2_bg.png);
7111 7111 max-width: 1600px;
7112 7112 margin: 0px auto;
7113 7113 min-height: 125px;
7114 7114 }
7115 7115 .user-unlogged .navbar-fixed-top .btn-orange {
7116 7116 margin-top: 35px;
7117 7117 }
7118 7118 .user-unlogged .navbar-fixed-top .navbar-nav {
7119 7119 margin-left: 0px !important;
7120 7120 margin-right: 0px !important;
7121 7121 }
7122 7122 .user-unlogged .nav > li > a {
7123 7123 margin-top: 35px;
7124 7124 color: #ffffff;
7125 7125 }
7126 7126 .user-unlogged .nav > li > a:link,
7127 7127 .user-unlogged .nav > li > a:visited {
7128 7128 color: #ffffff;
7129 7129 }
7130 7130 #top-navbar .navbar-brand {
7131 7131 padding: 9px 0px 0px 20px;
7132 7132 }
7133 7133 #top-navbar .navbar-nav > li {
7134 7134 float: left;
7135 7135 }
7136 7136 /* forms */
7137 7137 .form-error {
7138 7138 border-radius: 3px 3px 3px 3px;
7139 7139 margin-bottom: 5px !important;
7140 7140 padding: 5px 10px;
7141 7141 }
7142 7142 .SelectField,
7143 7143 .SubmitField,
7144 7144 .BooleanField,
7145 7145 input[type=checkbox],
7146 7146 input[type=submit],
7147 7147 input[type=select],
7148 7148 button {
7149 7149 width: auto;
7150 7150 }
7151 7151 /* flash */
7152 7152 .flashMessages {
7153 7153 padding: 0px;
7154 7154 margin: 0px;
7155 7155 }
7156 7156 .alert-notice {
7157 7157 color: #468847;
7158 7158 background-color: #dff0d8;
7159 7159 border-color: #d6e9c6;
7160 7160 }
7161 7161 .alert-warning {
7162 7162 color: #c09853;
7163 7163 background-color: #fcf8e3;
7164 7164 border-color: #fbeed5;
7165 7165 }
7166 7166 .alert-error {
7167 7167 color: #b94a48;
7168 7168 background-color: #f2dede;
7169 7169 border-color: #eed3d7;
7170 7170 }
7171 7171 /* icons */
7172 7172 .icon {
7173 7173 background-repeat: no-repeat;
7174 7174 width: 16px;
7175 7175 height: 16px;
7176 7176 display: -moz-inline-box;
7177 7177 display: inline-block;
7178 7178 vertical-align: middle;
7179 7179 margin: 0px 5px 0px 5px;
7180 7180 background-position: center center;
7181 7181 }
7182 7182 .icon.big {
7183 7183 background-repeat: no-repeat;
7184 7184 width: 32px;
7185 7185 height: 32px;
7186 7186 display: -moz-inline-box;
7187 7187 display: inline-block;
7188 7188 vertical-align: middle;
7189 7189 margin: 0px 5px 0px 5px;
7190 7190 }
7191 7191 /******************* tables ****************/
7192 7192 .table-striped > tbody > tr:nth-of-type(even) {
7193 7193 background-color: #fbfbfb;
7194 7194 }
7195 7195 .table {
7196 7196 table-layout: fixed;
7197 7197 }
7198 7198 .table caption {
7199 7199 color: #4c4c4c;
7200 7200 font-weight: bold;
7201 7201 text-align: center;
7202 7202 background-color: #f6f6f6;
7203 7203 }
7204 7204 .table thead {
7205 7205 background-color: #f6f6f6;
7206 7206 }
7207 7207 .table caption a:link,
7208 7208 .table table.stylized caption a:visited {
7209 7209 color: #ffffff;
7210 7210 text-decoration: none;
7211 7211 font-weight: bold;
7212 7212 }
7213 7213 .table caption a:link,
7214 7214 .table table.stylized caption a:hover {
7215 7215 color: #ffcc00;
7216 7216 text-decoration: none;
7217 7217 font-weight: bold;
7218 7218 }
7219 7219 .table thead > tr > th {
7220 7220 border-bottom: 1px solid #d7d7d7 !important;
7221 7221 font-size: 86%;
7222 7222 }
7223 7223 .table tbody > tr > td {
7224 7224 border-top: 0px;
7225 7225 vertical-align: middle;
7226 7226 }
7227 7227 .table .no {
7228 7228 width: 30px;
7229 7229 }
7230 7230 .table td.ordering.dsc,
7231 7231 .table td.ordering.asc {
7232 7232 padding-right: 20px;
7233 7233 -webkit-transition: all 250ms;
7234 7234 -moz-transition: all 250ms;
7235 7235 -o-transition: all 250ms;
7236 7236 transition: all 250ms;
7237 7237 /* position: relative; */
7238 7238 }
7239 7239 .table td.ordering .marker {
7240 7240 display: block;
7241 7241 float: right;
7242 7242 height: 10px;
7243 7243 margin: -13px -15px 0px 0;
7244 7244 width: 10px;
7245 7245 background-repeat: no-repeat;
7246 7246 }
7247 7247 .table td.ordering.asc .marker {
7248 7248 background-image: url("/static/appenlight/images/dark_asc.png");
7249 7249 }
7250 7250 .table td.ordering.dsc .marker {
7251 7251 background-image: url("/static/appenlight/images/dark_dsc.png");
7252 7252 }
7253 7253 .table td.ordering a:link,
7254 7254 .table td.ordering a:visited {
7255 7255 color: #212121 !important;
7256 7256 font-weight: bold;
7257 7257 text-decoration: underline;
7258 7258 }
7259 7259 .btn.orange-special {
7260 7260 border-radius: 5px;
7261 7261 -o-border-radius: 5px;
7262 7262 -ms-border-radius: 5px;
7263 7263 -moz-border-radius: 5px;
7264 7264 -webkit-border-radius: 5px;
7265 7265 background-color: #ff8400;
7266 7266 font-size: 100%;
7267 7267 padding: 10px !important;
7268 7268 box-shadow: 0 0 5px rgba(77, 77, 77, 0.25);
7269 7269 -o-box-shadow: 0 0 5px rgba(77, 77, 77, 0.25);
7270 7270 -ms-box-shadow: 0 0 5px rgba(77, 77, 77, 0.25);
7271 7271 -moz-box-shadow: 0 0 5px rgba(77, 77, 77, 0.25);
7272 7272 -webkit-box-shadow: 0 0 5px rgba(77, 77, 77, 0.25);
7273 7273 color: #ffffff !important;
7274 7274 text-shadow: 0 1px 1px #5F1C00;
7275 7275 border: 1px solid #ec560f;
7276 7276 background: #ff7b0d;
7277 7277 /* Old browsers */
7278 7278 text-transform: uppercase;
7279 7279 display: inline-block;
7280 7280 -webkit-transition: all 250ms;
7281 7281 -moz-transition: all 250ms;
7282 7282 -o-transition: all 250ms;
7283 7283 transition: all 250ms;
7284 7284 }
7285 7285 .btn.orange-special:hover {
7286 7286 box-shadow: 0 0 15px rgba(255, 114, 42, 0.75);
7287 7287 -o-box-shadow: 0 0 15px rgba(255, 114, 42, 0.75);
7288 7288 -ms-box-shadow: 0 0 15px rgba(255, 114, 42, 0.75);
7289 7289 -moz-box-shadow: 0 0 15px rgba(255, 114, 42, 0.75);
7290 7290 -webkit-box-shadow: 0 0 15px rgba(255, 114, 42, 0.75);
7291 7291 border: 1px solid #d1722a;
7292 7292 }
7293 7293 .sign-in-form {
7294 7294 position: relative;
7295 7295 margin: 0px;
7296 7296 }
7297 7297 .sign-in-form fieldset {
7298 7298 border: 0px !important;
7299 7299 display: inline-block;
7300 7300 }
7301 7301 .sign-in-form .action_links {
7302 7302 position: absolute;
7303 7303 top: 4px;
7304 7304 right: 10px;
7305 7305 }
7306 7306 .sign-in-form .action_links li {
7307 7307 list-style: none;
7308 7308 }
7309 7309 .sign-in-form legend {
7310 7310 display: none;
7311 7311 }
7312 7312 .sign-in-form .form-fields {
7313 7313 padding: 0px;
7314 7314 margin: 0px;
7315 7315 }
7316 7316 .sign-in-form .form-fields li {
7317 7317 display: inline-block;
7318 7318 }
7319 7319 .sign-in-form .form-fields li#row-sign_in_user_name,
7320 7320 .sign-in-form .form-fields li#sign_in_user_password {
7321 7321 width: 100px;
7322 7322 margin: 0px 15px 0px 0px;
7323 7323 }
7324 7324 .sign-in-form .form-fields li #sign_in_user_name {
7325 7325 width: 90px;
7326 7326 }
7327 7327 .sign-in-form .form-fields li #sign_in_user_password {
7328 7328 width: 90px;
7329 7329 }
7330 7330 .word-wrap {
7331 7331 white-space: pre-wrap;
7332 7332 /* css-3 */
7333 7333 white-space: -moz-pre-wrap;
7334 7334 /* Mozilla, since 1999 */
7335 7335 white-space: -pre-wrap;
7336 7336 /* Opera 4-6 */
7337 7337 white-space: -o-pre-wrap;
7338 7338 /* Opera 7 */
7339 7339 word-wrap: break-word;
7340 7340 /* Internet Explorer 5.5+ */
7341 7341 }
7342 7342 .word-wrap.break-all {
7343 7343 word-break: break-all;
7344 7344 }
7345 7345 pre,
7346 7346 code {
7347 7347 background-color: #ffffff;
7348 7348 color: #4c4c4c;
7349 7349 font-family: monospace;
7350 7350 }
7351 7351 /* common in section */
7352 7352 .errors-small-list {
7353 7353 width: 100%;
7354 7354 table-layout: fixed;
7355 7355 }
7356 7356 .errors-small-list td {
7357 7357 padding: 0px 5px 10px 5px;
7358 7358 }
7359 7359 .errors-small-list td.occurences {
7360 7360 width: 40px;
7361 7361 }
7362 7362 .errors-small-list .duration {
7363 7363 font-size: 80%;
7364 7364 background-color: #e6e6e6;
7365 7365 padding: 2px 5px;
7366 7366 display: inline-block;
7367 7367 color: #000000;
7368 7368 border-radius: 2px;
7369 7369 -o-border-radius: 2px;
7370 7370 -ms-border-radius: 2px;
7371 7371 -moz-border-radius: 2px;
7372 7372 -webkit-border-radius: 2px;
7373 7373 margin: 0px 5px 0px 2px;
7374 7374 }
7375 7375 .errors-small-list span.occurences {
7376 7376 font-size: 86%;
7377 7377 font-weight: bold;
7378 7378 background-color: #ff8400;
7379 7379 border-radius: 3px;
7380 7380 color: #ffffff;
7381 7381 display: inline-block;
7382 7382 min-height: 33px;
7383 7383 min-width: 33px;
7384 7384 padding: 8px 0 0;
7385 7385 text-align: center;
7386 7386 }
7387 7387 .errors-small-list a.error-type {
7388 7388 font-weight: bold;
7389 7389 font-size: 86%;
7390 7390 }
7391 7391 .errors-small-list .url {
7392 7392 color: #777777;
7393 7393 font-size: 80%;
7394 7394 }
7395 7395 .errors-small-list td.info {
7396 7396 width: 150px;
7397 7397 font-size: 70%;
7398 7398 }
7399 7399 .errors-small-list td .report {
7400 7400 line-height: 100%;
7401 7401 }
7402 7402 /****** paginator ********/
7403 7403 .paginator {
7404 7404 margin: 5px 0px 5px 0px;
7405 7405 padding: 5px 0px 5px 0px;
7406 7406 font-size: 80%;
7407 7407 text-align: right;
7408 7408 }
7409 7409 .paginator a,
7410 7410 .paginator span {
7411 7411 margin: 0px 6px 0px 2px;
7412 7412 padding: 3px 7px;
7413 7413 text-decoration: none;
7414 7414 border-radius: 15px;
7415 7415 -o-border-radius: 15px;
7416 7416 -ms-border-radius: 15px;
7417 7417 -moz-border-radius: 15px;
7418 7418 -webkit-border-radius: 15px;
7419 7419 border: 1px solid #dcdcdc;
7420 7420 box-shadow: 0px 0px 5px transparent;
7421 7421 -o-box-shadow: 0px 0px 5px transparent;
7422 7422 -ms-box-shadow: 0px 0px 5px transparent;
7423 7423 -moz-box-shadow: 0px 0px 5px transparent;
7424 7424 -webkit-box-shadow: 0px 0px 5px transparent;
7425 7425 background-color: #ffffff;
7426 7426 -webkit-transition: all 250ms;
7427 7427 -moz-transition: all 250ms;
7428 7428 -o-transition: all 250ms;
7429 7429 transition: all 250ms;
7430 7430 }
7431 7431 .paginator a.pager_curpage,
7432 7432 .paginator span.pager_curpage {
7433 7433 font-weight: bold;
7434 7434 background-color: #FF6F00;
7435 7435 color: #ffffff;
7436 7436 border: 3px solid #ff4e00;
7437 7437 }
7438 7438 .paginator a.pager_link:link,
7439 7439 .paginator span.pager_link:link,
7440 7440 .paginator a.pager_link:visited,
7441 7441 .paginator span.pager_link:visited,
7442 7442 .paginator a .prev,
7443 7443 .paginator span .prev,
7444 7444 .paginator a .next,
7445 7445 .paginator span .next {
7446 7446 background-color: #ffffff;
7447 7447 color: #000000;
7448 7448 }
7449 7449 .paginator a.pager_link:hover,
7450 7450 .paginator span.pager_link:hover,
7451 7451 .paginator a:hover,
7452 7452 .paginator span:hover {
7453 7453 background-color: #FF6F00;
7454 7454 color: #ffffff;
7455 7455 border: 1px solid #FF6F00;
7456 7456 }
7457 7457 .paginator a.pager_dotdot,
7458 7458 .paginator span.pager_dotdot {
7459 7459 background-color: transparent;
7460 7460 border: 0px;
7461 7461 box-shadow: 0px 0px 5px transparent;
7462 7462 -o-box-shadow: 0px 0px 5px transparent;
7463 7463 -ms-box-shadow: 0px 0px 5px transparent;
7464 7464 -moz-box-shadow: 0px 0px 5px transparent;
7465 7465 -webkit-box-shadow: 0px 0px 5px transparent;
7466 7466 color: #000000;
7467 7467 }
7468 7468 .notFoundPage #content .heading-text {
7469 7469 font-size: 250%;
7470 7470 }
7471 7471 .errorPage #content .heading-text {
7472 7472 font-size: 250%;
7473 7473 }
7474 7474 .forbiddenPage #content .heading-text {
7475 7475 font-size: 250%;
7476 7476 }
7477 7477 .ajax_loader_3 {
7478 7478 width: 66px;
7479 7479 height: 66px;
7480 7480 background-image: url('../images/ajax_loader_3.gif');
7481 7481 }
7482 7482 .clear {
7483 7483 clear: both;
7484 7484 }
7485 7485 /***** content positioning *****/
7486 7486 .position-absolute {
7487 7487 position: absolute;
7488 7488 }
7489 7489 .position-relative {
7490 7490 position: relative;
7491 7491 }
7492 7492 .increse-zindex {
7493 7493 z-index: 500;
7494 7494 }
7495 7495 .m-x-auto {
7496 7496 margin-right: auto !important;
7497 7497 margin-left: auto !important;
7498 7498 }
7499 7499 .m-a-10 {
7500 7500 margin: 150px !important;
7501 7501 }
7502 7502 .m-t-10 {
7503 7503 margin-top: 150px !important;
7504 7504 }
7505 7505 .m-l-10 {
7506 7506 margin-left: 150px !important;
7507 7507 }
7508 7508 .m-r-10 {
7509 7509 margin-right: 150px !important;
7510 7510 }
7511 7511 .m-b-10 {
7512 7512 margin-bottom: 150px !important;
7513 7513 }
7514 7514 .p-a-10 {
7515 7515 padding: 150px !important;
7516 7516 }
7517 7517 .p-t-10 {
7518 7518 padding-top: 150px !important;
7519 7519 }
7520 7520 .p-l-10 {
7521 7521 padding-left: 150px !important;
7522 7522 }
7523 7523 .p-r-10 {
7524 7524 padding-right: 150px !important;
7525 7525 }
7526 7526 .p-b-10 {
7527 7527 padding-bottom: 150px !important;
7528 7528 }
7529 7529 .m-a-9 {
7530 7530 margin: 135px !important;
7531 7531 }
7532 7532 .m-t-9 {
7533 7533 margin-top: 135px !important;
7534 7534 }
7535 7535 .m-l-9 {
7536 7536 margin-left: 135px !important;
7537 7537 }
7538 7538 .m-r-9 {
7539 7539 margin-right: 135px !important;
7540 7540 }
7541 7541 .m-b-9 {
7542 7542 margin-bottom: 135px !important;
7543 7543 }
7544 7544 .p-a-9 {
7545 7545 padding: 135px !important;
7546 7546 }
7547 7547 .p-t-9 {
7548 7548 padding-top: 135px !important;
7549 7549 }
7550 7550 .p-l-9 {
7551 7551 padding-left: 135px !important;
7552 7552 }
7553 7553 .p-r-9 {
7554 7554 padding-right: 135px !important;
7555 7555 }
7556 7556 .p-b-9 {
7557 7557 padding-bottom: 135px !important;
7558 7558 }
7559 7559 .m-a-8 {
7560 7560 margin: 120px !important;
7561 7561 }
7562 7562 .m-t-8 {
7563 7563 margin-top: 120px !important;
7564 7564 }
7565 7565 .m-l-8 {
7566 7566 margin-left: 120px !important;
7567 7567 }
7568 7568 .m-r-8 {
7569 7569 margin-right: 120px !important;
7570 7570 }
7571 7571 .m-b-8 {
7572 7572 margin-bottom: 120px !important;
7573 7573 }
7574 7574 .p-a-8 {
7575 7575 padding: 120px !important;
7576 7576 }
7577 7577 .p-t-8 {
7578 7578 padding-top: 120px !important;
7579 7579 }
7580 7580 .p-l-8 {
7581 7581 padding-left: 120px !important;
7582 7582 }
7583 7583 .p-r-8 {
7584 7584 padding-right: 120px !important;
7585 7585 }
7586 7586 .p-b-8 {
7587 7587 padding-bottom: 120px !important;
7588 7588 }
7589 7589 .m-a-7 {
7590 7590 margin: 105px !important;
7591 7591 }
7592 7592 .m-t-7 {
7593 7593 margin-top: 105px !important;
7594 7594 }
7595 7595 .m-l-7 {
7596 7596 margin-left: 105px !important;
7597 7597 }
7598 7598 .m-r-7 {
7599 7599 margin-right: 105px !important;
7600 7600 }
7601 7601 .m-b-7 {
7602 7602 margin-bottom: 105px !important;
7603 7603 }
7604 7604 .p-a-7 {
7605 7605 padding: 105px !important;
7606 7606 }
7607 7607 .p-t-7 {
7608 7608 padding-top: 105px !important;
7609 7609 }
7610 7610 .p-l-7 {
7611 7611 padding-left: 105px !important;
7612 7612 }
7613 7613 .p-r-7 {
7614 7614 padding-right: 105px !important;
7615 7615 }
7616 7616 .p-b-7 {
7617 7617 padding-bottom: 105px !important;
7618 7618 }
7619 7619 .m-a-6 {
7620 7620 margin: 90px !important;
7621 7621 }
7622 7622 .m-t-6 {
7623 7623 margin-top: 90px !important;
7624 7624 }
7625 7625 .m-l-6 {
7626 7626 margin-left: 90px !important;
7627 7627 }
7628 7628 .m-r-6 {
7629 7629 margin-right: 90px !important;
7630 7630 }
7631 7631 .m-b-6 {
7632 7632 margin-bottom: 90px !important;
7633 7633 }
7634 7634 .p-a-6 {
7635 7635 padding: 90px !important;
7636 7636 }
7637 7637 .p-t-6 {
7638 7638 padding-top: 90px !important;
7639 7639 }
7640 7640 .p-l-6 {
7641 7641 padding-left: 90px !important;
7642 7642 }
7643 7643 .p-r-6 {
7644 7644 padding-right: 90px !important;
7645 7645 }
7646 7646 .p-b-6 {
7647 7647 padding-bottom: 90px !important;
7648 7648 }
7649 7649 .m-a-5 {
7650 7650 margin: 75px !important;
7651 7651 }
7652 7652 .m-t-5 {
7653 7653 margin-top: 75px !important;
7654 7654 }
7655 7655 .m-l-5 {
7656 7656 margin-left: 75px !important;
7657 7657 }
7658 7658 .m-r-5 {
7659 7659 margin-right: 75px !important;
7660 7660 }
7661 7661 .m-b-5 {
7662 7662 margin-bottom: 75px !important;
7663 7663 }
7664 7664 .p-a-5 {
7665 7665 padding: 75px !important;
7666 7666 }
7667 7667 .p-t-5 {
7668 7668 padding-top: 75px !important;
7669 7669 }
7670 7670 .p-l-5 {
7671 7671 padding-left: 75px !important;
7672 7672 }
7673 7673 .p-r-5 {
7674 7674 padding-right: 75px !important;
7675 7675 }
7676 7676 .p-b-5 {
7677 7677 padding-bottom: 75px !important;
7678 7678 }
7679 7679 .m-a-4 {
7680 7680 margin: 60px !important;
7681 7681 }
7682 7682 .m-t-4 {
7683 7683 margin-top: 60px !important;
7684 7684 }
7685 7685 .m-l-4 {
7686 7686 margin-left: 60px !important;
7687 7687 }
7688 7688 .m-r-4 {
7689 7689 margin-right: 60px !important;
7690 7690 }
7691 7691 .m-b-4 {
7692 7692 margin-bottom: 60px !important;
7693 7693 }
7694 7694 .p-a-4 {
7695 7695 padding: 60px !important;
7696 7696 }
7697 7697 .p-t-4 {
7698 7698 padding-top: 60px !important;
7699 7699 }
7700 7700 .p-l-4 {
7701 7701 padding-left: 60px !important;
7702 7702 }
7703 7703 .p-r-4 {
7704 7704 padding-right: 60px !important;
7705 7705 }
7706 7706 .p-b-4 {
7707 7707 padding-bottom: 60px !important;
7708 7708 }
7709 7709 .m-a-3 {
7710 7710 margin: 45px !important;
7711 7711 }
7712 7712 .m-t-3 {
7713 7713 margin-top: 45px !important;
7714 7714 }
7715 7715 .m-l-3 {
7716 7716 margin-left: 45px !important;
7717 7717 }
7718 7718 .m-r-3 {
7719 7719 margin-right: 45px !important;
7720 7720 }
7721 7721 .m-b-3 {
7722 7722 margin-bottom: 45px !important;
7723 7723 }
7724 7724 .p-a-3 {
7725 7725 padding: 45px !important;
7726 7726 }
7727 7727 .p-t-3 {
7728 7728 padding-top: 45px !important;
7729 7729 }
7730 7730 .p-l-3 {
7731 7731 padding-left: 45px !important;
7732 7732 }
7733 7733 .p-r-3 {
7734 7734 padding-right: 45px !important;
7735 7735 }
7736 7736 .p-b-3 {
7737 7737 padding-bottom: 45px !important;
7738 7738 }
7739 7739 .m-a-2 {
7740 7740 margin: 30px !important;
7741 7741 }
7742 7742 .m-t-2 {
7743 7743 margin-top: 30px !important;
7744 7744 }
7745 7745 .m-l-2 {
7746 7746 margin-left: 30px !important;
7747 7747 }
7748 7748 .m-r-2 {
7749 7749 margin-right: 30px !important;
7750 7750 }
7751 7751 .m-b-2 {
7752 7752 margin-bottom: 30px !important;
7753 7753 }
7754 7754 .p-a-2 {
7755 7755 padding: 30px !important;
7756 7756 }
7757 7757 .p-t-2 {
7758 7758 padding-top: 30px !important;
7759 7759 }
7760 7760 .p-l-2 {
7761 7761 padding-left: 30px !important;
7762 7762 }
7763 7763 .p-r-2 {
7764 7764 padding-right: 30px !important;
7765 7765 }
7766 7766 .p-b-2 {
7767 7767 padding-bottom: 30px !important;
7768 7768 }
7769 7769 .m-a-1 {
7770 7770 margin: 15px !important;
7771 7771 }
7772 7772 .m-t-1 {
7773 7773 margin-top: 15px !important;
7774 7774 }
7775 7775 .m-l-1 {
7776 7776 margin-left: 15px !important;
7777 7777 }
7778 7778 .m-r-1 {
7779 7779 margin-right: 15px !important;
7780 7780 }
7781 7781 .m-b-1 {
7782 7782 margin-bottom: 15px !important;
7783 7783 }
7784 7784 .p-a-1 {
7785 7785 padding: 15px !important;
7786 7786 }
7787 7787 .p-t-1 {
7788 7788 padding-top: 15px !important;
7789 7789 }
7790 7790 .p-l-1 {
7791 7791 padding-left: 15px !important;
7792 7792 }
7793 7793 .p-r-1 {
7794 7794 padding-right: 15px !important;
7795 7795 }
7796 7796 .p-b-1 {
7797 7797 padding-bottom: 15px !important;
7798 7798 }
7799 7799 .m-a-0 {
7800 7800 margin: 0px !important;
7801 7801 }
7802 7802 .m-t-0 {
7803 7803 margin-top: 0px !important;
7804 7804 }
7805 7805 .m-l-0 {
7806 7806 margin-left: 0px !important;
7807 7807 }
7808 7808 .m-r-0 {
7809 7809 margin-right: 0px !important;
7810 7810 }
7811 7811 .m-b-0 {
7812 7812 margin-bottom: 0px !important;
7813 7813 }
7814 7814 .p-a-0 {
7815 7815 padding: 0px !important;
7816 7816 }
7817 7817 .p-t-0 {
7818 7818 padding-top: 0px !important;
7819 7819 }
7820 7820 .p-l-0 {
7821 7821 padding-left: 0px !important;
7822 7822 }
7823 7823 .p-r-0 {
7824 7824 padding-right: 0px !important;
7825 7825 }
7826 7826 .p-b-0 {
7827 7827 padding-bottom: 0px !important;
7828 7828 }
7829 7829 hr {
7830 7830 background-color: #dcdcdc;
7831 7831 border: 0px;
7832 7832 height: 1px;
7833 7833 }
7834 7834 h1,
7835 7835 h2,
7836 7836 h3,
7837 7837 h4 {
7838 7838 font-weight: normal;
7839 7839 }
7840 7840 h1 {
7841 7841 font-size: 2em;
7842 7842 }
7843 7843 h2 {
7844 7844 font-size: 1.8em;
7845 7845 }
7846 7846 h3 {
7847 7847 font-size: 1.6em;
7848 7848 }
7849 7849 h4 {
7850 7850 font-size: 1.4em;
7851 7851 }
7852 7852 .alert:last-of-type {
7853 7853 margin-bottom: 0px;
7854 7854 }
7855 7855 #menu .header {
7856 7856 margin: 0px 0px 10px 0px;
7857 7857 font-size: 86%;
7858 7858 text-transform: uppercase;
7859 7859 font-weight: bold;
7860 7860 }
7861 7861 #menu label {
7862 7862 font-size: 86%;
7863 7863 }
7864 7864 #menu form {
7865 7865 margin-bottom: 0px;
7866 7866 }
7867 7867 #menu .form-fields {
7868 7868 padding: 0px;
7869 7869 }
7870 7870 #menu .TextField,
7871 7871 #menu .SelectField,
7872 7872 #menu .PasswordField {
7873 7873 width: 170px;
7874 7874 }
7875 7875 #menu .panel-heading {
7876 7876 font-weight: bold;
7877 7877 }
7878 7878 .ellipsis {
7879 7879 white-space: nowrap;
7880 7880 overflow: hidden;
7881 7881 text-overflow: ellipsis;
7882 7882 -o-text-overflow: ellipsis;
7883 7883 -ms-text-overflow: ellipsis;
7884 7884 }
7885 7885 .hidden {
7886 7886 display: none;
7887 7887 }
7888 7888 .dim {
7889 7889 opacity: 0.5;
7890 7890 }
7891 7891 /* GRAPHS */
7892 7892 .graphs,
7893 7893 .graph {
7894 7894 position: relative;
7895 7895 }
7896 7896 .bg-3 {
7897 7897 background-image: url('/static/appenlight/images/px_by_Gre3g.png');
7898 7898 }
7899 7899 .bg-2.pad-bottom,
7900 7900 .bg-3.pad-bottom {
7901 7901 padding-bottom: 20px;
7902 7902 }
7903 7903 .codehilite pre {
7904 7904 border-radius: 5px;
7905 7905 margin: 20px 0px;
7906 7906 }
7907 7907 .admonition {
7908 7908 margin: 0px 0px 10px 0px;
7909 7909 padding: 20px;
7910 7910 background-color: #ffffff;
7911 7911 border: 1px solid #dddddd;
7912 7912 border-radius: 4px;
7913 7913 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
7914 7914 }
7915 7915 .admonition .admonition-title {
7916 7916 font-weight: bold;
7917 7917 }
7918 7918 .admonition.important .admonition-title {
7919 7919 color: #b90f0f;
7920 7920 }
7921 7921 .admonition.note .admonition-title {
7922 7922 color: #23a54b;
7923 7923 }
7924 7924 .white-text {
7925 7925 color: #ffffff;
7926 7926 }
7927 7927 .perf_stats .stat {
7928 7928 margin-right: 10px;
7929 7929 }
7930 7930 .perf_stats .bar {
7931 7931 height: 10px;
7932 7932 display: inline-block;
7933 7933 }
7934 7934 .perf_stats .custom {
7935 7935 background-color: #98df8a;
7936 7936 }
7937 7937 .perf_stats .tmpl {
7938 7938 background-color: #4bcf4b;
7939 7939 }
7940 7940 .perf_stats .remote {
7941 7941 background-color: #ffbb78;
7942 7942 }
7943 7943 .perf_stats .nosql {
7944 7944 background-color: #ff7f0e;
7945 7945 }
7946 7946 .perf_stats .sql {
7947 7947 background-color: #aec7e8;
7948 7948 }
7949 7949 .perf_stats .main {
7950 7950 background-color: #2898e6;
7951 7951 }
7952 7952 .pagination .active > a,
7953 7953 .pagination .active > span,
7954 7954 .pagination .active > a:hover,
7955 7955 .pagination .active > span:hover,
7956 7956 .pagination .active > a:focus,
7957 7957 .pagination .active > span:focus {
7958 7958 z-index: 2;
7959 7959 color: #ffffff;
7960 7960 cursor: pointer;
7961 7961 background-color: #ff8400;
7962 7962 background-color: #d64700;
7963 7963 border-color: #d64700;
7964 7964 }
7965 7965 .pagination .disabled > span,
7966 7966 .pagination .disabled > a,
7967 7967 .pagination .disabled > a:hover,
7968 7968 .pagination .disabled > a:focus {
7969 7969 color: #999999;
7970 7970 cursor: not-allowed;
7971 7971 background-color: #ffffff;
7972 7972 border-color: #dddddd;
7973 7973 }
7974 7974 .search-params .tag {
7975 7975 border-radius: 5px 5px 5px 5px;
7976 7976 display: inline-block;
7977 7977 margin: 0px 5px 5px 0;
7978 7978 padding: 5px 5px;
7979 7979 text-shadow: 0 1px 1px rgba(0, 0, 0, 0.15);
7980 7980 background-color: #D9EDF7;
7981 7981 border: 1px solid #BCE8F1;
7982 7982 color: #3A87AD;
7983 7983 }
7984 7984 .search-params .tag a {
7985 7985 color: #3A87AD;
7986 7986 }
7987 7987 .user-assignment {
7988 7988 border: 1px solid #eeeeee;
7989 7989 padding: 5px;
7990 7990 border-radius: 3px;
7991 7991 vertical-align: top;
7992 7992 cursor: pointer;
7993 7993 }
7994 7994 .user-assignment img {
7995 7995 vertical-align: top;
7996 7996 max-height: 50px;
7997 7997 float: left;
7998 7998 margin-right: 7px;
7999 7999 border-radius: 60px;
8000 8000 }
8001 8001 .user-assignment:hover {
8002 8002 border: 1px solid #aaeeff;
8003 8003 }
8004 8004 .graphs {
8005 8005 min-height: 50px;
8006 8006 }
8007 8007 .panel-heading {
8008 8008 padding: 14px;
8009 8009 background: -moz-linear-gradient(top, rgba(252, 254, 255, 0) 0%, rgba(0, 0, 0, 0.05) 100%);
8010 8010 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(252, 254, 255, 0)), color-stop(100%, rgba(0, 0, 0, 0.05)));
8011 8011 background: -webkit-linear-gradient(top, rgba(252, 254, 255, 0) 0%, rgba(0, 0, 0, 0.05) 100%);
8012 8012 background: -o-linear-gradient(top, rgba(252, 254, 255, 0) 0%, rgba(0, 0, 0, 0.05) 100%);
8013 8013 background: -ms-linear-gradient(top, rgba(252, 254, 255, 0) 0%, rgba(0, 0, 0, 0.05) 100%);
8014 8014 background: linear-gradient(to bottom, rgba(252, 254, 255, 0) 0%, rgba(0, 0, 0, 0.05) 100%);
8015 8015 }
8016 8016 .typeahead-tags a {
8017 8017 border: 1px solid #eeeeee;
8018 8018 padding: 10px 20px !important;
8019 8019 min-width: 400px;
8020 8020 }
8021 8021 .typeahead-tags .tag {
8022 8022 font-weight: bold;
8023 8023 }
8024 8024 .typeahead-tags .tag strong {
8025 8025 background-color: #ff8400;
8026 8026 color: #ffffff;
8027 8027 }
8028 8028 .typeahead-tags .description {
8029 8029 font-size: 85%;
8030 8030 }
8031 8031 .typeahead-tags .example {
8032 8032 font-style: italic;
8033 8033 font-family: monospace;
8034 8034 font-size: 85%;
8035 8035 color: #808080;
8036 8036 }
8037 8037 .orange-dots {
8038 8038 color: #ff8400;
8039 8039 font-size: 5px;
8040 8040 }
8041 8041 .orange-dots .fa {
8042 8042 margin: 0px 3px;
8043 8043 }
8044 8044 .orange-dots .fa:first-child {
8045 8045 margin: 0px 3px 0px 0px;
8046 8046 }
8047 8047 .gray-dots {
8048 8048 color: #dcdcdc;
8049 8049 font-size: 5px;
8050 8050 }
8051 8051 .gray-dots .fa {
8052 8052 margin: 0px 3px;
8053 8053 }
8054 8054 .gray-dots .fa:first-child {
8055 8055 margin: 0px 3px 0px 0px;
8056 8056 }
8057 8057 .user-unlogged #logo-normal {
8058 8058 display: inline-block;
8059 8059 width: 264px;
8060 8060 height: 48px;
8061 8061 background-image: url('/static/appenlight/images/ix-appenlight-logo.png');
8062 8062 margin-top: 25px;
8063 8063 }
8064 8064 .user-unlogged #logo-icon {
8065 8065 display: inline-block;
8066 8066 width: 53px;
8067 8067 height: 48px;
8068 8068 background-image: url('/static/appenlight/images/ix-appenlight-icon.png');
8069 8069 margin-top: 25px;
8070 8070 }
8071 8071 .user-logged #logo-normal {
8072 8072 display: inline-block;
8073 8073 width: 176px;
8074 8074 height: 32px;
8075 8075 background-image: url('/static/appenlight/images/appenlight-logo.png');
8076 8076 }
8077 8077 .user-logged #logo-icon {
8078 8078 display: inline-block;
8079 8079 width: 32px;
8080 8080 height: 32px;
8081 8081 background-image: url('/static/appenlight/images/appenlight-icon.png');
8082 8082 }
8083 8083 .btn-green {
8084 8084 background-color: #93b715 !important;
8085 8085 border-color: #93b715 !important;
8086 8086 box-shadow: none !important;
8087 8087 padding: 10px;
8088 8088 text-transform: uppercase;
8089 8089 color: #ffffff;
8090 8090 font-weight: bold;
8091 8091 }
8092 8092 .btn-orange {
8093 8093 background-color: #ff8400 !important;
8094 8094 border-color: #ff8400 !important;
8095 8095 box-shadow: none !important;
8096 8096 padding: 10px;
8097 8097 text-transform: uppercase;
8098 8098 color: #ffffff !important;
8099 8099 font-weight: bold;
8100 8100 }
8101 8101 .list-group-item.active,
8102 8102 .list-group-item.active:hover,
8103 8103 .list-group-item.active:focus {
8104 8104 background-color: transparent;
8105 8105 font-weight: bold;
8106 8106 border-color: transparent;
8107 8107 }
8108 8108 .list-group.sub-group {
8109 8109 margin: -10px -15px;
8110 8110 }
8111 8111 .sub-group .list-group-item {
8112 8112 background-color: #f5f5f5;
8113 8113 }
8114 8114 .panel .breadcrumb {
8115 8115 margin-bottom: 0px;
8116 8116 padding: 0px;
8117 8117 background-color: transparent;
8118 8118 }
8119 8119 .panel .breadcrumb a {
8120 8120 color: #333333;
8121 8121 }
8122 8122 .bold {
8123 8123 font-weight: bold;
8124 8124 }
8125 8125 .table > thead > tr > th {
8126 8126 border-bottom: 1px solid #a0a0a0;
8127 8127 }
8128 8128 .ng-hide {
8129 8129 display: none;
8130 8130 }
8131 8131 /* smart table */
8132 8132 .st-sort-ascent:after {
8133 8133 content: '\25B2';
8134 8134 }
8135 8135 .st-sort-descent:after {
8136 8136 content: '\25BC';
8137 8137 }
8138 8138 .slim-input {
8139 8139 width: auto;
8140 8140 max-width: 125px;
8141 8141 }
8142 8142 .input-autosize {
8143 8143 width: auto;
8144 8144 display: inline-block;
8145 8145 }
8146 8146 .application-management .tab-content {
8147 8147 padding-top: 15px;
8148 8148 }
8149 8149 .applications-list table .resource_name {
8150 8150 min-width: 250px;
8151 8151 }
8152 8152 .applications-list table .options {
8153 8153 min-width: 230px;
8154 8154 }
8155 8155 .top-state-dashboard .agg-form .form-control {
8156 8156 width: 200px;
8157 8157 }
8158 8158 .state-dashboard-list table .options {
8159 8159 width: 250px;
8160 8160 }
8161 8161 /* dashboard */
8162 8162 .top-state-front_dashboard .tutorial {
8163 8163 padding: 20px;
8164 8164 background-color: #ffffff;
8165 8165 border: 1px solid #dddddd;
8166 8166 border-radius: 4px;
8167 8167 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
8168 8168 }
8169 8169 .top-state-front_dashboard .pause_stream {
8170 8170 position: absolute;
8171 8171 top: 7px;
8172 8172 right: 50px;
8173 8173 }
8174 8174 .top-state-front_dashboard .limit_stream {
8175 8175 position: absolute;
8176 8176 top: 7px;
8177 8177 right: 10px;
8178 8178 }
8179 8179 .top-state-front_dashboard .combined-stat {
8180 8180 display: block;
8181 8181 min-width: 20%;
8182 8182 display: inline-block;
8183 8183 color: #ffffff;
8184 8184 position: relative;
8185 8185 text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
8186 8186 }
8187 8187 .top-state-front_dashboard .combined-stat small {
8188 8188 font-size: 75%;
8189 8189 }
8190 8190 .top-state-front_dashboard .combined-stat:link,
8191 8191 .top-state-front_dashboard .combined-stat:visited,
8192 8192 .top-state-front_dashboard .combined-stat:hover {
8193 8193 color: #ffffff !important;
8194 8194 }
8195 8195 .top-state-front_dashboard .combined-stat .fa-chevron-right {
8196 8196 opacity: 0.3;
8197 8197 position: absolute;
8198 8198 right: 5px;
8199 8199 top: 40px;
8200 8200 text-shadow: 0px 0px 0px;
8201 8201 }
8202 8202 .top-state-front_dashboard .combined-stat strong {
8203 8203 font-size: 160%;
8204 8204 display: inline-block;
8205 8205 margin: 5px 0;
8206 8206 }
8207 8207 .top-state-front_dashboard #error-rate {
8208 8208 background-color: #b90f0f;
8209 8209 }
8210 8210 .top-state-front_dashboard #error-rate:hover {
8211 8211 -webkit-transition: all 250ms;
8212 8212 -moz-transition: all 250ms;
8213 8213 -o-transition: all 250ms;
8214 8214 transition: all 250ms;
8215 8215 background-color: #e81313;
8216 8216 }
8217 8217 .top-state-front_dashboard #satisfying-requests {
8218 8218 background-color: #23a54b;
8219 8219 }
8220 8220 .top-state-front_dashboard #tolerated-requests {
8221 8221 background-color: #ff8400;
8222 8222 }
8223 8223 .top-state-front_dashboard #tolerated-requests:hover {
8224 8224 -webkit-transition: all 250ms;
8225 8225 -moz-transition: all 250ms;
8226 8226 -o-transition: all 250ms;
8227 8227 transition: all 250ms;
8228 8228 background-color: #ff9d33;
8229 8229 }
8230 8230 .top-state-front_dashboard #frustrating-requests {
8231 8231 background-color: #d64700;
8232 8232 }
8233 8233 .top-state-front_dashboard #frustrating-requests:hover {
8234 8234 -webkit-transition: all 250ms;
8235 8235 -moz-transition: all 250ms;
8236 8236 -o-transition: all 250ms;
8237 8237 transition: all 250ms;
8238 8238 background-color: #ff5b0a;
8239 8239 }
8240 8240 .top-state-front_dashboard #uptime-stats {
8241 8241 background-color: #17607d;
8242 8242 }
8243 8243 .top-state-front_dashboard #uptime-stats:hover {
8244 8244 -webkit-transition: all 250ms;
8245 8245 -moz-transition: all 250ms;
8246 8246 -o-transition: all 250ms;
8247 8247 transition: all 250ms;
8248 8248 background-color: #1f81a8;
8249 8249 }
8250 8250 .top-state-front_dashboard #server-container {
8251 8251 margin-bottom: 10px;
8252 8252 }
8253 8253 .top-state-front_dashboard #server-container .servers {
8254 8254 list-style: none;
8255 8255 margin: 0px;
8256 8256 }
8257 8257 .top-state-front_dashboard #server-container .frustrating .apdex {
8258 8258 color: #b90f0f;
8259 8259 }
8260 8260 .top-state-front_dashboard #server-container .satisfactory .apdex {
8261 8261 color: #23a54b;
8262 8262 }
8263 8263 .top-state-front_dashboard #server-container .tolerating .apdex {
8264 8264 color: #ff8400;
8265 8265 }
8266 8266 .top-state-front_dashboard #assigned-container {
8267 8267 padding: 20px;
8268 8268 background-color: #ffffff;
8269 8269 border: 1px solid #dddddd;
8270 8270 border-radius: 4px;
8271 8271 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
8272 8272 margin-top: 15px;
8273 8273 }
8274 8274 .top-state-front_dashboard #trending-container {
8275 8275 padding: 20px;
8276 8276 background-color: #ffffff;
8277 8277 border: 1px solid #dddddd;
8278 8278 border-radius: 4px;
8279 8279 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
8280 8280 max-height: 800px;
8281 8281 overflow: auto;
8282 8282 margin-top: 15px;
8283 8283 }
8284 8284 .top-state-front_dashboard #report-timespan-picker-holder {
8285 8285 text-align: right;
8286 8286 }
8287 8287 .top-state-front_dashboard #graph-container {
8288 8288 padding: 20px;
8289 8289 background-color: #ffffff;
8290 8290 border: 1px solid #dddddd;
8291 8291 border-radius: 4px;
8292 8292 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
8293 8293 margin: 0px 0px 10px 0px;
8294 8294 }
8295 8295 .top-state-front_dashboard #report_graph {
8296 8296 margin: auto;
8297 8297 border: 1px solid #B5BCC7;
8298 8298 width: 1008px;
8299 8299 overflow: hidden;
8300 8300 cursor: pointer;
8301 8301 min-height: 200px;
8302 8302 background-color: #ffffff;
8303 8303 background-image: url('/static/appenlight/images/ajax_loader_3.gif');
8304 8304 background-position: center center;
8305 8305 background-repeat: no-repeat;
8306 8306 }
8307 8307 .top-state-front_dashboard #report_graph:hover {
8308 8308 border: 1px solid #FF6F00;
8309 8309 -webkit-transition-duration: 0.5s;
8310 8310 -moz-transition-duration: 0.5s;
8311 8311 -o-transition-duration: 0.5s;
8312 8312 }
8313 8313 .top-state-front_dashboard #report_graph img {
8314 8314 -webkit-transition-duration: 0.5s;
8315 8315 -moz-transition-duration: 0.5s;
8316 8316 -o-transition-duration: 0.5s;
8317 8317 }
8318 8318 .top-state-front_dashboard #report_graph.toggle img {
8319 8319 margin-left: -1005px;
8320 8320 -webkit-transition-duration: 0.5s;
8321 8321 -moz-transition-duration: 0.5s;
8322 8322 -o-transition-duration: 0.5s;
8323 8323 }
8324 8324 .top-state-front_dashboard .point {
8325 8325 border-radius: 30px;
8326 8326 -o-border-radius: 30px;
8327 8327 -ms-border-radius: 30px;
8328 8328 -moz-border-radius: 30px;
8329 8329 -webkit-border-radius: 30px;
8330 8330 background-color: #ff8400;
8331 8331 font-size: 200%;
8332 8332 font-weight: bold;
8333 8333 padding: 5px 17px;
8334 8334 margin: 0px 10px 0px 0px;
8335 8335 vertical-align: middle;
8336 8336 color: #ffffff;
8337 8337 float: left;
8338 8338 }
8339 8339 .top-state-front_dashboard #slow-statements {
8340 8340 table-layout: fixed;
8341 8341 width: 100%;
8342 8342 }
8343 8343 .top-state-front_dashboard #slow-statements td {
8344 8344 padding: 0px 5px 10px 5px;
8345 8345 }
8346 8346 .top-state-front_dashboard #slow-statements .statement {
8347 8347 font-size: 80%;
8348 8348 padding: 10px 5px 0px 0px;
8349 8349 font-weight: bold;
8350 8350 }
8351 8351 .top-state-front_dashboard #slow-statements td.occurences {
8352 8352 width: 40px;
8353 8353 }
8354 8354 .top-state-front_dashboard #slow-statements span.occurences {
8355 8355 font-size: 86%;
8356 8356 font-weight: bold;
8357 8357 background-color: #ff8400;
8358 8358 border-radius: 3px;
8359 8359 color: #ffffff;
8360 8360 display: inline-block;
8361 8361 min-height: 33px;
8362 8362 min-width: 33px;
8363 8363 padding: 8px;
8364 8364 margin-top: 8px;
8365 8365 text-align: center;
8366 8366 }
8367 8367 .top-state-front_dashboard #slow-statements .type {
8368 8368 font-size: 80%;
8369 8369 background-color: #4c4c4c;
8370 8370 padding: 2px 5px;
8371 8371 display: inline-block;
8372 8372 color: #ffffff;
8373 8373 border-radius: 2px;
8374 8374 -o-border-radius: 2px;
8375 8375 -ms-border-radius: 2px;
8376 8376 -moz-border-radius: 2px;
8377 8377 -webkit-border-radius: 2px;
8378 8378 }
8379 8379 .top-state-front_dashboard #slow-statements .subtype {
8380 8380 font-size: 80%;
8381 8381 background-color: #ff8400;
8382 8382 padding: 2px 5px;
8383 8383 display: inline-block;
8384 8384 color: #ffffff;
8385 8385 border-radius: 2px;
8386 8386 -o-border-radius: 2px;
8387 8387 -ms-border-radius: 2px;
8388 8388 -moz-border-radius: 2px;
8389 8389 -webkit-border-radius: 2px;
8390 8390 }
8391 8391 .top-state-front_dashboard #slow-statements .duration {
8392 8392 font-size: 80%;
8393 8393 background-color: #4c4c4c;
8394 8394 padding: 2px 5px;
8395 8395 display: inline-block;
8396 8396 color: #ffffff;
8397 8397 border-radius: 2px;
8398 8398 -o-border-radius: 2px;
8399 8399 -ms-border-radius: 2px;
8400 8400 -moz-border-radius: 2px;
8401 8401 -webkit-border-radius: 2px;
8402 8402 margin: 0px 5px 0px 0px;
8403 8403 }
8404 8404 .top-state-front_dashboard #slow-statements .report-list {
8405 8405 font-size: 80%;
8406 8406 }
8407 8407 .top-state-front_dashboard #view-breakdown-container {
8408 8408 max-height: 472px;
8409 8409 overflow: auto;
8410 8410 }
8411 8411 .top-state-front_dashboard #view-breakdown-container .report-list {
8412 8412 font-size: 86%;
8413 8413 }
8414 8414 .top-state-front_dashboard #view-breakdown-container .view-name {
8415 8415 position: relative;
8416 8416 }
8417 8417 .top-state-front_dashboard #view-breakdown-container .view-name small {
8418 8418 font-weight: bold;
8419 8419 }
8420 8420 .top-state-front_dashboard #view-breakdown-container .stats {
8421 8421 margin-bottom: 5px;
8422 8422 }
8423 8423 .top-state-front_dashboard #view-breakdown-container .bar {
8424 8424 border-radius: 5px;
8425 8425 box-shadow: 0px 0px 3px #cc6a00 inset;
8426 8426 height: 10px;
8427 8427 background-color: #ff8400;
8428 8428 }
8429 8429 .top-state-front_dashboard #slow-statements-container,
8430 8430 .top-state-front_dashboard #slow-urls-container {
8431 8431 padding: 20px;
8432 8432 background-color: #ffffff;
8433 8433 border: 1px solid #dddddd;
8434 8434 border-radius: 4px;
8435 8435 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
8436 8436 max-height: 800px;
8437 8437 overflow-y: auto;
8438 8438 margin-top: 15px;
8439 8439 }
8440 8440 .top-state-front_dashboard #slow-statements-container table,
8441 8441 .top-state-front_dashboard #slow-urls-container table {
8442 8442 border: 0px;
8443 8443 }
8444 8444 .top-state-front_dashboard input.row-title {
8445 8445 min-width: 250px;
8446 8446 max-width: 400px;
8447 8447 display: inline-block;
8448 8448 }
8449 8449 .top-state-front_dashboard .chart-layout-form {
8450 8450 margin-bottom: 15px;
8451 8451 }
8452 8452 form.graph-type.form-inline {
8453 8453 margin: 0 10px 10px 0;
8454 8454 }
8455 8455 form.graph-type.form-inline select {
8456 8456 margin-right: 10px;
8457 8457 }
8458 table.log-list tbody > tr > td {
8459 vertical-align: top;
8460 }
8458 8461 table.log-list .http_status {
8459 8462 width: 52px;
8460 8463 }
8461 8464 table.log-list .when {
8462 8465 width: 150px;
8463 8466 }
8464 8467 table.log-list .tick {
8465 8468 width: 20px !important;
8466 8469 }
8467 8470 table.log-list .c1 {
8468 8471 width: 130px;
8469 8472 }
8470 8473 table.log-list .c1 .app_name {
8471 8474 font-weight: bold;
8472 8475 }
8473 8476 table.log-list .c1 .server {
8474 8477 color: #777777;
8475 8478 }
8476 8479 table.log-list .c2 {
8477 8480 word-break: break-all;
8478 8481 word-wrap: break-word;
8479 8482 }
8480 8483 table.log-list .c2 .namespace {
8481 8484 color: #ff8400;
8482 8485 font-weight: bold;
8483 8486 }
8484 8487 table.log-list .odd .c3,
8485 8488 table.log-list .even .c3 {
8486 8489 width: 90px;
8487 8490 font-size: 85%;
8488 8491 }
8489 8492 table.log-list .tag {
8490 8493 display: inline-block;
8491 8494 margin: 0 5px 0 0px;
8492 8495 padding: 2px 5px 1px;
8493 8496 font-size: 75%;
8494 8497 border-radius: 2px;
8495 8498 -o-border-radius: 2px;
8496 8499 -ms-border-radius: 2px;
8497 8500 -moz-border-radius: 2px;
8498 8501 -webkit-border-radius: 2px;
8499 8502 box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.15);
8500 8503 -o-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.15);
8501 8504 -ms-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.15);
8502 8505 -moz-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.15);
8503 8506 -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.15);
8504 8507 border: 0px solid #dcdcdc;
8505 8508 background-color: #f6f6f6;
8506 8509 letter-spacing: 0.5px;
8507 8510 color: #888888;
8508 8511 }
8509 8512 table.log-list .tag .name {
8510 8513 text-transform: uppercase;
8511 8514 }
8512 8515 table.log-list .tag:hover {
8513 8516 -webkit-transition: all 250ms;
8514 8517 -moz-transition: all 250ms;
8515 8518 -o-transition: all 250ms;
8516 8519 transition: all 250ms;
8517 8520 -moz-transform: scale(1.2);
8518 8521 -webkit-transform: scale(1.2);
8519 8522 -o-transform: scale(1.2);
8520 8523 -ms-transform: scale(1.2);
8521 8524 transform: scale(1.2);
8522 8525 }
8523 8526 table.log-list .unknown {
8524 8527 color: #4c4c4c !important;
8525 8528 }
8526 8529 table.log-list .debug {
8527 8530 background-color: #23a54b !important;
8528 8531 color: #ffffff !important;
8529 8532 }
8530 8533 table.log-list .info {
8531 8534 background-color: #e5f4fa !important;
8532 8535 color: #17607d !important;
8533 8536 border-color: #5bbbe1;
8534 8537 }
8535 8538 table.log-list .warning {
8536 8539 background-color: #ffffff !important;
8537 8540 color: #ff8400 !important;
8538 8541 border-color: #ffd5a8;
8539 8542 }
8540 8543 table.log-list .error {
8541 8544 background-color: #fffbfb !important;
8542 8545 color: #b90f0f !important;
8543 8546 border-color: #fbcccc;
8544 8547 }
8545 8548 table.log-list .critical {
8546 8549 background-color: #000000 !important;
8547 8550 color: #ffffff !important;
8548 8551 background-color: #000000;
8549 8552 }
8550 8553 table.log-list .log {
8551 8554 font-size: 85%;
8552 8555 margin-top: 5px;
8556 white-space: pre-wrap;
8553 8557 }
8554 8558 .register-section #social_block {
8555 8559 margin-bottom: 20px;
8556 8560 }
8557 8561 .register-section #social_block h2 {
8558 8562 margin-bottom: 30px;
8559 8563 }
8560 8564 .register-section #social_providers {
8561 8565 list-style: none;
8562 8566 margin: 20px 0px;
8563 8567 padding: 0px;
8564 8568 }
8565 8569 .register-section #social_providers li {
8566 8570 display: inline-block;
8567 8571 margin: 0px 10px;
8568 8572 }
8569 8573 .register-section #row-email .description {
8570 8574 font-size: 70%;
8571 8575 }
8572 8576 .register-section #social-form .btn {
8573 8577 color: #ffffff;
8574 8578 margin-bottom: 10px;
8575 8579 text-align: left;
8576 8580 font-weight: bold;
8577 8581 text-transform: uppercase;
8578 8582 border: 1px solid #151515;
8579 8583 }
8580 8584 .register-section #social-form span {
8581 8585 vertical-align: middle;
8582 8586 min-width: 30px;
8583 8587 }
8584 8588 .register-section #btn-google {
8585 8589 background-color: #BB2A2A !important;
8586 8590 border: 1px solid #8C0202 !important;
8587 8591 }
8588 8592 .register-section #btn-twitter {
8589 8593 background-color: #10B8F8 !important;
8590 8594 border: 1px solid #0195CF !important;
8591 8595 }
8592 8596 .register-section #btn-bitbucket {
8593 8597 background-color: #205081 !important;
8594 8598 border: 1px solid #1D4A78 !important;
8595 8599 }
8596 8600 .register-section #btn-github {
8597 8601 background-color: #333333 !important;
8598 8602 border: 1px solid #222222 !important;
8599 8603 }
8600 8604 .register-section #btn-bitbucket i {
8601 8605 font-size: 150%;
8602 8606 }
8603 8607 .register-section #btn-demo {
8604 8608 border: 1px solid #239100 !important;
8605 8609 }
8606 8610 .top-state-report h3 {
8607 8611 margin: 0 0 15px;
8608 8612 }
8609 8613 .top-state-report .tab-pane {
8610 8614 padding: 15px;
8611 8615 border-bottom: 1px solid #ddd;
8612 8616 border-right: 1px solid #ddd;
8613 8617 border-left: 1px solid #ddd;
8614 8618 border-radius: 4px;
8615 8619 }
8616 8620 .top-state-report .perf_stats,
8617 8621 .top-state-report .report-table {
8618 8622 margin-bottom: 30px;
8619 8623 }
8620 8624 .top-state-report .affected-user-list {
8621 8625 margin: 0px;
8622 8626 padding: 0px;
8623 8627 }
8624 8628 .top-state-report .affected-user-list li {
8625 8629 list-style: none;
8626 8630 padding-bottom: 5px;
8627 8631 }
8628 8632 .top-state-report .inspect_vars .glyphicon {
8629 8633 margin: 0 2px;
8630 8634 padding: 2px 5px 5px;
8631 8635 }
8632 8636 .top-state-report .priority {
8633 8637 border-radius: 20px 20px 20px 20px;
8634 8638 display: inline-block;
8635 8639 font-size: 79.4%;
8636 8640 font-weight: bold;
8637 8641 height: 15px;
8638 8642 padding: 1px 0 0;
8639 8643 text-align: center;
8640 8644 width: 15px;
8641 8645 position: absolute;
8642 8646 margin-left: 22px;
8643 8647 margin-top: -7px;
8644 8648 box-shadow: 0px 0px 2px #ffffff;
8645 8649 }
8646 8650 .top-state-report .priority-1 {
8647 8651 background-color: #ffe9e9;
8648 8652 color: #ff7b7b;
8649 8653 border-radius: 20px 20px 20px 20px;
8650 8654 display: inline-block;
8651 8655 font-size: 79.4%;
8652 8656 font-weight: bold;
8653 8657 height: 15px;
8654 8658 padding: 1px 0 0;
8655 8659 text-align: center;
8656 8660 width: 15px;
8657 8661 position: absolute;
8658 8662 margin-left: 22px;
8659 8663 margin-top: -7px;
8660 8664 box-shadow: 0px 0px 2px #ffffff;
8661 8665 }
8662 8666 .top-state-report .priority-2 {
8663 8667 background-color: #ffd3d3;
8664 8668 color: #ffffff;
8665 8669 border-radius: 20px 20px 20px 20px;
8666 8670 display: inline-block;
8667 8671 font-size: 79.4%;
8668 8672 font-weight: bold;
8669 8673 height: 15px;
8670 8674 padding: 1px 0 0;
8671 8675 text-align: center;
8672 8676 width: 15px;
8673 8677 position: absolute;
8674 8678 margin-left: 22px;
8675 8679 margin-top: -7px;
8676 8680 box-shadow: 0px 0px 2px #ffffff;
8677 8681 }
8678 8682 .top-state-report .priority-3 {
8679 8683 background-color: #ffbdbd;
8680 8684 color: #ffffff;
8681 8685 border-radius: 20px 20px 20px 20px;
8682 8686 display: inline-block;
8683 8687 font-size: 79.4%;
8684 8688 font-weight: bold;
8685 8689 height: 15px;
8686 8690 padding: 1px 0 0;
8687 8691 text-align: center;
8688 8692 width: 15px;
8689 8693 position: absolute;
8690 8694 margin-left: 22px;
8691 8695 margin-top: -7px;
8692 8696 box-shadow: 0px 0px 2px #ffffff;
8693 8697 }
8694 8698 .top-state-report .priority-4 {
8695 8699 background-color: #ffa7a7;
8696 8700 color: #ffffff;
8697 8701 border-radius: 20px 20px 20px 20px;
8698 8702 display: inline-block;
8699 8703 font-size: 79.4%;
8700 8704 font-weight: bold;
8701 8705 height: 15px;
8702 8706 padding: 1px 0 0;
8703 8707 text-align: center;
8704 8708 width: 15px;
8705 8709 position: absolute;
8706 8710 margin-left: 22px;
8707 8711 margin-top: -7px;
8708 8712 box-shadow: 0px 0px 2px #ffffff;
8709 8713 }
8710 8714 .top-state-report .priority-5 {
8711 8715 background-color: #ff9191;
8712 8716 color: #ffffff;
8713 8717 border-radius: 20px 20px 20px 20px;
8714 8718 display: inline-block;
8715 8719 font-size: 79.4%;
8716 8720 font-weight: bold;
8717 8721 height: 15px;
8718 8722 padding: 1px 0 0;
8719 8723 text-align: center;
8720 8724 width: 15px;
8721 8725 position: absolute;
8722 8726 margin-left: 22px;
8723 8727 margin-top: -7px;
8724 8728 box-shadow: 0px 0px 2px #ffffff;
8725 8729 }
8726 8730 .top-state-report .priority-6 {
8727 8731 background-color: #ff7b7b;
8728 8732 color: #ffffff;
8729 8733 border-radius: 20px 20px 20px 20px;
8730 8734 display: inline-block;
8731 8735 font-size: 79.4%;
8732 8736 font-weight: bold;
8733 8737 height: 15px;
8734 8738 padding: 1px 0 0;
8735 8739 text-align: center;
8736 8740 width: 15px;
8737 8741 position: absolute;
8738 8742 margin-left: 22px;
8739 8743 margin-top: -7px;
8740 8744 box-shadow: 0px 0px 2px #ffffff;
8741 8745 }
8742 8746 .top-state-report .priority-7 {
8743 8747 background-color: #ff6565;
8744 8748 color: #ffffff;
8745 8749 border-radius: 20px 20px 20px 20px;
8746 8750 display: inline-block;
8747 8751 font-size: 79.4%;
8748 8752 font-weight: bold;
8749 8753 height: 15px;
8750 8754 padding: 1px 0 0;
8751 8755 text-align: center;
8752 8756 width: 15px;
8753 8757 position: absolute;
8754 8758 margin-left: 22px;
8755 8759 margin-top: -7px;
8756 8760 box-shadow: 0px 0px 2px #ffffff;
8757 8761 }
8758 8762 .top-state-report .priority-8 {
8759 8763 background-color: #ff4f4f;
8760 8764 color: #ffffff;
8761 8765 border-radius: 20px 20px 20px 20px;
8762 8766 display: inline-block;
8763 8767 font-size: 79.4%;
8764 8768 font-weight: bold;
8765 8769 height: 15px;
8766 8770 padding: 1px 0 0;
8767 8771 text-align: center;
8768 8772 width: 15px;
8769 8773 position: absolute;
8770 8774 margin-left: 22px;
8771 8775 margin-top: -7px;
8772 8776 box-shadow: 0px 0px 2px #ffffff;
8773 8777 }
8774 8778 .top-state-report .priority-9 {
8775 8779 background-color: #ff3939;
8776 8780 color: #ffffff;
8777 8781 border-radius: 20px 20px 20px 20px;
8778 8782 display: inline-block;
8779 8783 font-size: 79.4%;
8780 8784 font-weight: bold;
8781 8785 height: 15px;
8782 8786 padding: 1px 0 0;
8783 8787 text-align: center;
8784 8788 width: 15px;
8785 8789 position: absolute;
8786 8790 margin-left: 22px;
8787 8791 margin-top: -7px;
8788 8792 box-shadow: 0px 0px 2px #ffffff;
8789 8793 }
8790 8794 .top-state-report .priority-10 {
8791 8795 background-color: #ff2323;
8792 8796 color: #ffffff;
8793 8797 border-radius: 20px 20px 20px 20px;
8794 8798 display: inline-block;
8795 8799 font-size: 79.4%;
8796 8800 font-weight: bold;
8797 8801 height: 15px;
8798 8802 padding: 1px 0 0;
8799 8803 text-align: center;
8800 8804 width: 15px;
8801 8805 position: absolute;
8802 8806 margin-left: 22px;
8803 8807 margin-top: -7px;
8804 8808 box-shadow: 0px 0px 2px #ffffff;
8805 8809 }
8806 8810 .top-state-report .table.report-list {
8807 8811 table-layout: fixed;
8808 8812 }
8809 8813 .top-state-report .table.report-list .occurences {
8810 8814 width: 45px;
8811 8815 }
8812 8816 .top-state-report .table.report-list .priority {
8813 8817 width: 45px;
8814 8818 }
8815 8819 .top-state-report .table.report-list .when {
8816 8820 width: 120px;
8817 8821 }
8818 8822 .top-state-report .table.report-list .report {
8819 8823 font-weight: bold;
8820 8824 }
8821 8825 .top-state-report .table.report-list tbody td {
8822 8826 padding: 15px;
8823 8827 }
8824 8828 .top-state-report .table.report-list .occurences .count {
8825 8829 background-color: #ff8400;
8826 8830 border-radius: 3px;
8827 8831 color: #FFFFFF;
8828 8832 display: inline-block;
8829 8833 font-weight: bold;
8830 8834 height: 33px;
8831 8835 padding: 7px 0 0;
8832 8836 text-align: center;
8833 8837 width: 33px;
8834 8838 }
8835 8839 .top-state-report .table.report-list .occurences .fixed {
8836 8840 background-color: #23a54b;
8837 8841 }
8838 8842 .top-state-report .table.report-list .occurences .public {
8839 8843 background-color: #002a4a;
8840 8844 }
8841 8845 .top-state-report .table.report-list .occurences .reviewed {
8842 8846 background-color: #dcdcdc;
8843 8847 color: #000000;
8844 8848 }
8845 8849 .top-state-report .table.report-list .when {
8846 8850 font-size: 80%;
8847 8851 }
8848 8852 .top-state-report .table.report-list .url {
8849 8853 color: #777777;
8850 8854 font-weight: normal;
8851 8855 }
8852 8856 .top-state-report .table.report-list .tick {
8853 8857 width: 20px !important;
8854 8858 }
8855 8859 .top-state-report .table.report-list .application {
8856 8860 width: 150px;
8857 8861 }
8858 8862 .top-state-report .table.report-list td.application {
8859 8863 font-size: 80%;
8860 8864 }
8861 8865 .top-state-report .table.report-list td.application .app_name {
8862 8866 font-weight: bold;
8863 8867 }
8864 8868 .top-state-report .table.report-list td.application .server {
8865 8869 color: #777777;
8866 8870 }
8867 8871 .top-state-report #request-details-container #request-details {
8868 8872 font-size: 80%;
8869 8873 }
8870 8874 .top-state-report #request-details-container #request-details > ul {
8871 8875 padding: 0px;
8872 8876 }
8873 8877 .top-state-report #request-details-container #request-details li {
8874 8878 margin: 0px 0px 10px 0px;
8875 8879 list-style: none;
8876 8880 }
8877 8881 .top-state-report .reformat {
8878 8882 padding: 20px;
8879 8883 background-color: #ffffff;
8880 8884 border: 1px solid #dddddd;
8881 8885 border-radius: 4px;
8882 8886 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
8883 8887 }
8884 8888 .top-state-report .reformat pre {
8885 8889 font-size: 0.88em;
8886 8890 font-family: monospace, monospace;
8887 8891 line-height: 1.8em;
8888 8892 color: #555555;
8889 8893 border-radius: 0px;
8890 8894 -o-border-radius: 0px;
8891 8895 -ms-border-radius: 0px;
8892 8896 -moz-border-radius: 0px;
8893 8897 -webkit-border-radius: 0px;
8894 8898 border: 0px;
8895 8899 margin: 0px;
8896 8900 }
8897 8901 .top-state-report .report-table {
8898 8902 font-size: 86%;
8899 8903 width: 100%;
8900 8904 }
8901 8905 .top-state-report .report-table td.table-label {
8902 8906 width: 115px;
8903 8907 }
8904 8908 .top-state-report .report-table.with-ellipsis {
8905 8909 table-layout: fixed;
8906 8910 }
8907 8911 .top-state-report .report-table.with-tags td.table-label {
8908 8912 width: 150px;
8909 8913 white-space: pre-wrap;
8910 8914 /* css-3 */
8911 8915 white-space: -moz-pre-wrap;
8912 8916 /* Mozilla, since 1999 */
8913 8917 white-space: -pre-wrap;
8914 8918 /* Opera 4-6 */
8915 8919 white-space: -o-pre-wrap;
8916 8920 /* Opera 7 */
8917 8921 word-wrap: break-word;
8918 8922 /* Internet Explorer 5.5+ */
8919 8923 }
8920 8924 .top-state-report .report-table.with-tags td.table-label.break-all {
8921 8925 word-break: break-all;
8922 8926 }
8923 8927 .top-state-report .report-table td.data {
8924 8928 padding-bottom: 10px;
8925 8929 vertical-align: top;
8926 8930 }
8927 8931 .top-state-report .report-table td.table-label {
8928 8932 min-width: 115px;
8929 8933 text-align: left;
8930 8934 padding: 0px 10px 0px 0px;
8931 8935 font-weight: bold;
8932 8936 line-height: 1.5em;
8933 8937 vertical-align: top;
8934 8938 }
8935 8939 .top-state-report .userRepresentation {
8936 8940 min-width: 200px;
8937 8941 height: 55px;
8938 8942 overflow: hidden;
8939 8943 margin-bottom: 5px;
8940 8944 list-style: none;
8941 8945 padding: 5px;
8942 8946 -webkit-transition-duration: 0.25s;
8943 8947 -moz-transition-duration: 0.25s;
8944 8948 -o-transition-duration: 0.25s;
8945 8949 transition-duration: 0.25s;
8946 8950 }
8947 8951 .top-state-report .userRepresentation p {
8948 8952 margin: 0px;
8949 8953 }
8950 8954 .top-state-report .userRepresentation:hover {
8951 8955 background-color: #ff6f00;
8952 8956 -webkit-transition-duration: 0.25s;
8953 8957 -moz-transition-duration: 0.25s;
8954 8958 -o-transition-duration: 0.25s;
8955 8959 transition-duration: 0.25s;
8956 8960 }
8957 8961 .top-state-report .userRepresentation img {
8958 8962 float: left;
8959 8963 height: 50px;
8960 8964 max-width: 50px;
8961 8965 margin: 0px 5px 0px 0px;
8962 8966 }
8963 8967 .top-state-report .user_picker {
8964 8968 font-size: 80%;
8965 8969 }
8966 8970 .top-state-report .user_picker .column {
8967 8971 width: 33%;
8968 8972 float: left;
8969 8973 }
8970 8974 .top-state-report .user_picker ul {
8971 8975 padding: 0px;
8972 8976 height: 400px;
8973 8977 overflow: auto;
8974 8978 min-width: 250px;
8975 8979 border: 1px solid #eeeeee;
8976 8980 padding: 5px;
8977 8981 margin: 5px 0px;
8978 8982 }
8979 8983 .top-state-report .comment-holder {
8980 8984 border: 1px solid #dcdcdc;
8981 8985 }
8982 8986 .top-state-report .comment-holder {
8983 8987 background-color: #FFFFFF;
8984 8988 border: 1px solid #E1E1E1;
8985 8989 margin-bottom: 5px;
8986 8990 padding: 10px;
8987 8991 }
8988 8992 .top-state-report .comment-holder .icon.big {
8989 8993 margin: 0 0 0 -7px;
8990 8994 }
8991 8995 .top-state-report #comment_create .TextAreaField {
8992 8996 width: 90%;
8993 8997 height: 70px;
8994 8998 }
8995 8999 .top-state-report #basic-info_pane {
8996 9000 position: relative;
8997 9001 }
8998 9002 .top-state-report .switch_detail_holder {
8999 9003 position: absolute;
9000 9004 right: 10px;
9001 9005 font-size: 70%;
9002 9006 }
9003 9007 .top-state-report #similar-reports .notice {
9004 9008 color: #7f7f7f;
9005 9009 }
9006 9010 .top-state-report .frames {
9007 9011 margin-top: 15px;
9008 9012 padding: 20px;
9009 9013 background-color: #ffffff;
9010 9014 border: 1px solid #dddddd;
9011 9015 border-radius: 4px;
9012 9016 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
9013 9017 }
9014 9018 .top-state-report .frames .frame {
9015 9019 padding-bottom: 10px;
9016 9020 }
9017 9021 .top-state-report .frames .frame .icon {
9018 9022 padding: 10px;
9019 9023 }
9020 9024 .top-state-report .frames .frame.even {
9021 9025 background-color: #f9f9f9;
9022 9026 }
9023 9027 .top-state-report .frames .frameline,
9024 9028 .top-state-report .frames .cline {
9025 9029 line-height: 150%;
9026 9030 color: #b2b2b2;
9027 9031 }
9028 9032 .top-state-report .frames .mono {
9029 9033 font-family: monospace;
9030 9034 white-space: pre-wrap;
9031 9035 font-size: 86%;
9032 9036 }
9033 9037 .top-state-report .frames .dim:hover {
9034 9038 opacity: 0.8;
9035 9039 }
9036 9040 .top-state-report .frames .file {
9037 9041 color: #17607d;
9038 9042 font-weight: bold;
9039 9043 }
9040 9044 .top-state-report .frames .cline {
9041 9045 padding-left: 50px;
9042 9046 color: #212121;
9043 9047 }
9044 9048 .top-state-report .frames .line {
9045 9049 color: #002a4a;
9046 9050 font-weight: bold;
9047 9051 }
9048 9052 .top-state-report .frames .fn {
9049 9053 color: #d64700;
9050 9054 font-weight: bold;
9051 9055 }
9052 9056 .top-state-report .var-listing td {
9053 9057 padding: 10px 10px 10px 10px;
9054 9058 }
9055 9059 .top-state-report .var-listing .var-label {
9056 9060 margin-right: 10px;
9057 9061 font-weight: bold;
9058 9062 text-align: right;
9059 9063 vertical-align: top;
9060 9064 max-width: 200px;
9061 9065 overflow: hidden;
9062 9066 text-overflow: ellipsis;
9063 9067 }
9064 9068 .top-state-report .var-listing .odd {
9065 9069 background-color: rgba(0, 0, 0, 0.024);
9066 9070 }
9067 9071 .top-state-report .report-section #row-start_date,
9068 9072 .top-state-report .report-section #row-end_date,
9069 9073 .top-state-report .report-section #row-priority,
9070 9074 .top-state-report .report-section #row-http_status {
9071 9075 display: inline-block;
9072 9076 width: 110px;
9073 9077 }
9074 9078 .top-state-report .report-section .no-vars {
9075 9079 width: 31px;
9076 9080 display: inline-block;
9077 9081 }
9078 9082 .top-state-report .slow-report-section #row-start_date,
9079 9083 .top-state-report .slow-report-section #row-end_date {
9080 9084 display: inline-block;
9081 9085 width: 110px;
9082 9086 }
9083 9087 .top-state-report .slow-report-section #row-priority {
9084 9088 display: inline-block;
9085 9089 width: 75px;
9086 9090 }
9087 9091 .top-state-report .slow-report-section #row-min_request_time {
9088 9092 display: inline-block;
9089 9093 width: 140px;
9090 9094 }
9091 9095 .top-state-report .slow-report-section #row-min_request_time input {
9092 9096 width: 75px;
9093 9097 }
9094 9098 .top-state-report .fixed {
9095 9099 color: #b90f0f;
9096 9100 }
9097 9101 .top-state-report .not-fixed {
9098 9102 color: #23a54b;
9099 9103 }
9100 9104 .state-report-list_slow table.report-list .occurences {
9101 9105 width: 45px;
9102 9106 }
9103 9107 .state-report-list_slow table.report-list .report {
9104 9108 font-weight: bold;
9105 9109 }
9106 9110 .state-report-list_slow table.report-list .status {
9107 9111 width: 30px;
9108 9112 }
9109 9113 .state-report-list_slow table.report-list .average_duration {
9110 9114 width: 85px;
9111 9115 font-weight: bold;
9112 9116 }
9113 9117 .state-report-list_slow table.report-list .when {
9114 9118 width: 120px;
9115 9119 }
9116 9120 .state-report-list_slow table.report-list .tick {
9117 9121 width: 20px !important;
9118 9122 }
9119 9123 .top-state-uptime table .problem {
9120 9124 color: #b90f0f;
9121 9125 font-weight: bold;
9122 9126 }
9123 9127 .top-state-uptime table .problem td {
9124 9128 background-color: #FFE2E2 !important;
9125 9129 }
9126 9130 .top-state-uptime table .interval {
9127 9131 width: 150px;
9128 9132 }
9129 9133 .top-state-uptime table .retries {
9130 9134 width: 90px;
9131 9135 text-align: center;
9132 9136 }
9133 9137 .top-state-uptime table .http_status {
9134 9138 width: 150px;
9135 9139 text-align: center;
9136 9140 }
9137 9141 .top-state-uptime table .location {
9138 9142 width: 200px;
9139 9143 text-align: center;
9140 9144 }
9141 9145 .top-state-uptime .uptime-list table {
9142 9146 border: 0 !important;
9143 9147 }
9144 9148 .state-applications-integrations .integration {
9145 9149 width: 100%;
9146 9150 margin-bottom: 10px;
9147 9151 white-space: normal;
9148 9152 min-height: 60px;
9149 9153 text-align: left;
9150 9154 }
9151 9155 .top-state-events .event-table .icons {
9152 9156 width: 50px;
9153 9157 vertical-align: middle;
9154 9158 }
9155 9159 .top-state-events .event-table .options {
9156 9160 width: 50px;
9157 9161 }
9158 9162 .state-user-profile-auth_tokens .table .expires,
9159 9163 .state-user-profile-auth_tokens .table .created {
9160 9164 width: 130px;
9161 9165 }
9162 9166 .state-user-profile-auth_tokens .table .options {
9163 9167 width: 80px;
9164 9168 }
9165 9169 @media (min-width: 1200px) {
9166 9170 .top-state-admin .container {
9167 9171 width: 100%;
9168 9172 max-width: 1600px;
9169 9173 }
9170 9174 }
9171 9175 .state-admin-user-list table .user_name {
9172 9176 width: 250px;
9173 9177 }
9174 9178 .state-admin-user-list table .email {
9175 9179 width: 250px;
9176 9180 }
9177 9181 .state-admin-user-list table .options {
9178 9182 width: 100px;
9179 9183 }
9180 9184 .state-admin-user-list table .status {
9181 9185 width: 50px;
9182 9186 }
9183 9187 .codehilite .hll {
9184 9188 background-color: #ffffcc;
9185 9189 }
9186 9190 .codehilite {
9187 9191 background: #ffffff;
9188 9192 }
9189 9193 .codehilite .c {
9190 9194 color: #888888;
9191 9195 }
9192 9196 /* Comment */
9193 9197 .codehilite .err {
9194 9198 color: #FF0000;
9195 9199 }
9196 9200 /* Error */
9197 9201 .codehilite .k {
9198 9202 color: #008800;
9199 9203 font-weight: bold;
9200 9204 }
9201 9205 /* Keyword */
9202 9206 .codehilite .o {
9203 9207 color: #333333;
9204 9208 }
9205 9209 /* Operator */
9206 9210 .codehilite .cm {
9207 9211 color: #888888;
9208 9212 }
9209 9213 /* Comment.Multiline */
9210 9214 .codehilite .cp {
9211 9215 color: #557799;
9212 9216 }
9213 9217 /* Comment.Preproc */
9214 9218 .codehilite .c1 {
9215 9219 color: #888888;
9216 9220 }
9217 9221 /* Comment.Single */
9218 9222 .codehilite .cs {
9219 9223 color: #cc0000;
9220 9224 font-weight: bold;
9221 9225 }
9222 9226 /* Comment.Special */
9223 9227 .codehilite .gd {
9224 9228 color: #A00000;
9225 9229 }
9226 9230 /* Generic.Deleted */
9227 9231 .codehilite .ge {
9228 9232 font-style: italic;
9229 9233 }
9230 9234 /* Generic.Emph */
9231 9235 .codehilite .gr {
9232 9236 color: #FF0000;
9233 9237 }
9234 9238 /* Generic.Error */
9235 9239 .codehilite .gh {
9236 9240 color: #000080;
9237 9241 font-weight: bold;
9238 9242 }
9239 9243 /* Generic.Heading */
9240 9244 .codehilite .gi {
9241 9245 color: #00A000;
9242 9246 }
9243 9247 /* Generic.Inserted */
9244 9248 .codehilite .go {
9245 9249 color: #888888;
9246 9250 }
9247 9251 /* Generic.Output */
9248 9252 .codehilite .gp {
9249 9253 color: #c65d09;
9250 9254 font-weight: bold;
9251 9255 }
9252 9256 /* Generic.Prompt */
9253 9257 .codehilite .gs {
9254 9258 font-weight: bold;
9255 9259 }
9256 9260 /* Generic.Strong */
9257 9261 .codehilite .gu {
9258 9262 color: #800080;
9259 9263 font-weight: bold;
9260 9264 }
9261 9265 /* Generic.Subheading */
9262 9266 .codehilite .gt {
9263 9267 color: #0044DD;
9264 9268 }
9265 9269 /* Generic.Traceback */
9266 9270 .codehilite .kc {
9267 9271 color: #008800;
9268 9272 font-weight: bold;
9269 9273 }
9270 9274 /* Keyword.Constant */
9271 9275 .codehilite .kd {
9272 9276 color: #008800;
9273 9277 font-weight: bold;
9274 9278 }
9275 9279 /* Keyword.Declaration */
9276 9280 .codehilite .kn {
9277 9281 color: #008800;
9278 9282 font-weight: bold;
9279 9283 }
9280 9284 /* Keyword.Namespace */
9281 9285 .codehilite .kp {
9282 9286 color: #003388;
9283 9287 font-weight: bold;
9284 9288 }
9285 9289 /* Keyword.Pseudo */
9286 9290 .codehilite .kr {
9287 9291 color: #008800;
9288 9292 font-weight: bold;
9289 9293 }
9290 9294 /* Keyword.Reserved */
9291 9295 .codehilite .kt {
9292 9296 color: #333399;
9293 9297 font-weight: bold;
9294 9298 }
9295 9299 /* Keyword.Type */
9296 9300 .codehilite .m {
9297 9301 color: #6600EE;
9298 9302 font-weight: bold;
9299 9303 }
9300 9304 /* Literal.Number */
9301 9305 .codehilite .s {
9302 9306 color: #7D560A;
9303 9307 }
9304 9308 /* Literal.String */
9305 9309 .codehilite .na {
9306 9310 color: #0000CC;
9307 9311 }
9308 9312 /* Name.Attribute */
9309 9313 .codehilite .nb {
9310 9314 color: #007020;
9311 9315 }
9312 9316 /* Name.Builtin */
9313 9317 .codehilite .nc {
9314 9318 color: #BB0066;
9315 9319 font-weight: bold;
9316 9320 }
9317 9321 /* Name.Class */
9318 9322 .codehilite .no {
9319 9323 color: #003366;
9320 9324 font-weight: bold;
9321 9325 }
9322 9326 /* Name.Constant */
9323 9327 .codehilite .nd {
9324 9328 color: #555555;
9325 9329 font-weight: bold;
9326 9330 }
9327 9331 /* Name.Decorator */
9328 9332 .codehilite .ni {
9329 9333 color: #880000;
9330 9334 font-weight: bold;
9331 9335 }
9332 9336 /* Name.Entity */
9333 9337 .codehilite .ne {
9334 9338 color: #FF0000;
9335 9339 font-weight: bold;
9336 9340 }
9337 9341 /* Name.Exception */
9338 9342 .codehilite .nf {
9339 9343 color: #0066BB;
9340 9344 font-weight: bold;
9341 9345 }
9342 9346 /* Name.Function */
9343 9347 .codehilite .nl {
9344 9348 color: #997700;
9345 9349 font-weight: bold;
9346 9350 }
9347 9351 /* Name.Label */
9348 9352 .codehilite .nn {
9349 9353 color: #0e84b5;
9350 9354 font-weight: bold;
9351 9355 }
9352 9356 /* Name.Namespace */
9353 9357 .codehilite .nt {
9354 9358 color: #007700;
9355 9359 }
9356 9360 /* Name.Tag */
9357 9361 .codehilite .nv {
9358 9362 color: #996633;
9359 9363 }
9360 9364 /* Name.Variable */
9361 9365 .codehilite .ow {
9362 9366 color: #000000;
9363 9367 font-weight: bold;
9364 9368 }
9365 9369 /* Operator.Word */
9366 9370 .codehilite .w {
9367 9371 color: #bbbbbb;
9368 9372 }
9369 9373 /* Text.Whitespace */
9370 9374 .codehilite .mf {
9371 9375 color: #6600EE;
9372 9376 font-weight: bold;
9373 9377 }
9374 9378 /* Literal.Number.Float */
9375 9379 .codehilite .mh {
9376 9380 color: #005588;
9377 9381 font-weight: bold;
9378 9382 }
9379 9383 /* Literal.Number.Hex */
9380 9384 .codehilite .mi {
9381 9385 color: #0000DD;
9382 9386 font-weight: bold;
9383 9387 }
9384 9388 /* Literal.Number.Integer */
9385 9389 .codehilite .mo {
9386 9390 color: #4400EE;
9387 9391 font-weight: bold;
9388 9392 }
9389 9393 /* Literal.Number.Oct */
9390 9394 .codehilite .sb {
9391 9395 background-color: #fff0f0;
9392 9396 }
9393 9397 /* Literal.String.Backtick */
9394 9398 .codehilite .sc {
9395 9399 color: #0044DD;
9396 9400 }
9397 9401 /* Literal.String.Char */
9398 9402 .codehilite .sd {
9399 9403 color: #DD4422;
9400 9404 }
9401 9405 /* Literal.String.Doc */
9402 9406 .codehilite .s2 {
9403 9407 color: #7D560A;
9404 9408 }
9405 9409 /* Literal.String.Double */
9406 9410 .codehilite .se {
9407 9411 color: #666666;
9408 9412 font-weight: bold;
9409 9413 background-color: #fff0f0;
9410 9414 }
9411 9415 /* Literal.String.Escape */
9412 9416 .codehilite .sh {
9413 9417 background-color: #fff0f0;
9414 9418 }
9415 9419 /* Literal.String.Heredoc */
9416 9420 .codehilite .si {
9417 9421 background-color: #eeeeee;
9418 9422 }
9419 9423 /* Literal.String.Interpol */
9420 9424 .codehilite .sx {
9421 9425 color: #DD2200;
9422 9426 background-color: #fff0f0;
9423 9427 }
9424 9428 /* Literal.String.Other */
9425 9429 .codehilite .sr {
9426 9430 color: #000000;
9427 9431 background-color: #fff0ff;
9428 9432 }
9429 9433 /* Literal.String.Regex */
9430 9434 .codehilite .s1 {
9431 9435 color: #7D560A;
9432 9436 }
9433 9437 /* Literal.String.Single */
9434 9438 .codehilite .ss {
9435 9439 color: #AA6600;
9436 9440 }
9437 9441 /* Literal.String.Symbol */
9438 9442 .codehilite .bp {
9439 9443 color: #007020;
9440 9444 }
9441 9445 /* Name.Builtin.Pseudo */
9442 9446 .codehilite .vc {
9443 9447 color: #336699;
9444 9448 }
9445 9449 /* Name.Variable.Class */
9446 9450 .codehilite .vg {
9447 9451 color: #dd7700;
9448 9452 font-weight: bold;
9449 9453 }
9450 9454 /* Name.Variable.Global */
9451 9455 .codehilite .vi {
9452 9456 color: #3333BB;
9453 9457 }
9454 9458 /* Name.Variable.Instance */
9455 9459 .codehilite .il {
9456 9460 color: #0000DD;
9457 9461 font-weight: bold;
9458 9462 }
9459 9463 /* Literal.Number.Integer.Long */
9460 9464 .jh-root,
9461 9465 .jh-type-object,
9462 9466 .jh-type-array,
9463 9467 .jh-key,
9464 9468 .jh-value,
9465 9469 .jh-root tr {
9466 9470 -webkit-box-sizing: border-box;
9467 9471 /* Safari/Chrome, other WebKit */
9468 9472 -moz-box-sizing: border-box;
9469 9473 /* Firefox, other Gecko */
9470 9474 box-sizing: border-box;
9471 9475 /* Opera/IE 8+ */
9472 9476 }
9473 9477 .jh-key,
9474 9478 .jh-value {
9475 9479 margin: 0;
9476 9480 padding: 10px;
9477 9481 }
9478 9482 .jh-type-bool,
9479 9483 .jh-type-number {
9480 9484 font-weight: bold;
9481 9485 text-align: center;
9482 9486 color: #5286BC;
9483 9487 }
9484 9488 .jh-type-string {
9485 9489 font-style: italic;
9486 9490 color: #839B00;
9487 9491 word-break: break-all;
9488 9492 }
9489 9493 .jh-array-key {
9490 9494 font-style: italic;
9491 9495 font-size: small;
9492 9496 text-align: center;
9493 9497 }
9494 9498 .jh-object-key,
9495 9499 .jh-array-key {
9496 9500 color: #444;
9497 9501 vertical-align: top;
9498 9502 }
9499 9503 .jh-type-object > tr:nth-child(odd),
9500 9504 .jh-type-array > tr:nth-child(odd) {
9501 9505 background-color: #f5f5f5;
9502 9506 }
9503 9507 .jh-type-object > tr:nth-child(even),
9504 9508 .jh-type-array > tr:nth-child(even) {
9505 9509 background-color: #fff;
9506 9510 }
9507 9511 .jh-type-object,
9508 9512 .jh-type-array {
9509 9513 width: 100%;
9510 9514 border-collapse: collapse;
9511 9515 }
9512 9516 .jh-root {
9513 9517 margin: 0.2em;
9514 9518 }
9515 9519 th.jh-key {
9516 9520 text-align: left;
9517 9521 padding: 10px;
9518 9522 width: 50px;
9519 9523 }
9520 9524 .jh-type-object > tr,
9521 9525 .jh-type-array > tr {
9522 9526 border-bottom: none;
9523 9527 }
9524 9528 .jh-empty {
9525 9529 font-style: italic;
9526 9530 color: #999;
9527 9531 font-size: small;
9528 9532 }
9529 9533 @media (min-width: 1200px) {
9530 9534 .container {
9531 9535 width: 100%;
9532 9536 max-width: 1600px;
9533 9537 }
9534 9538 }
@@ -1,12968 +1,12966 b''
1 1 // Underscore.js 1.6.0
2 2 // http://underscorejs.org
3 3 // (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
4 4 // Underscore may be freely distributed under the MIT license.
5 5
6 6 (function() {
7 7
8 8 // Baseline setup
9 9 // --------------
10 10
11 11 // Establish the root object, `window` in the browser, or `exports` on the server.
12 12 var root = this;
13 13
14 14 // Save the previous value of the `_` variable.
15 15 var previousUnderscore = root._;
16 16
17 17 // Establish the object that gets returned to break out of a loop iteration.
18 18 var breaker = {};
19 19
20 20 // Save bytes in the minified (but not gzipped) version:
21 21 var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
22 22
23 23 // Create quick reference variables for speed access to core prototypes.
24 24 var
25 25 push = ArrayProto.push,
26 26 slice = ArrayProto.slice,
27 27 concat = ArrayProto.concat,
28 28 toString = ObjProto.toString,
29 29 hasOwnProperty = ObjProto.hasOwnProperty;
30 30
31 31 // All **ECMAScript 5** native function implementations that we hope to use
32 32 // are declared here.
33 33 var
34 34 nativeForEach = ArrayProto.forEach,
35 35 nativeMap = ArrayProto.map,
36 36 nativeReduce = ArrayProto.reduce,
37 37 nativeReduceRight = ArrayProto.reduceRight,
38 38 nativeFilter = ArrayProto.filter,
39 39 nativeEvery = ArrayProto.every,
40 40 nativeSome = ArrayProto.some,
41 41 nativeIndexOf = ArrayProto.indexOf,
42 42 nativeLastIndexOf = ArrayProto.lastIndexOf,
43 43 nativeIsArray = Array.isArray,
44 44 nativeKeys = Object.keys,
45 45 nativeBind = FuncProto.bind;
46 46
47 47 // Create a safe reference to the Underscore object for use below.
48 48 var _ = function(obj) {
49 49 if (obj instanceof _) return obj;
50 50 if (!(this instanceof _)) return new _(obj);
51 51 this._wrapped = obj;
52 52 };
53 53
54 54 // Export the Underscore object for **Node.js**, with
55 55 // backwards-compatibility for the old `require()` API. If we're in
56 56 // the browser, add `_` as a global object via a string identifier,
57 57 // for Closure Compiler "advanced" mode.
58 58 if (typeof exports !== 'undefined') {
59 59 if (typeof module !== 'undefined' && module.exports) {
60 60 exports = module.exports = _;
61 61 }
62 62 exports._ = _;
63 63 } else {
64 64 root._ = _;
65 65 }
66 66
67 67 // Current version.
68 68 _.VERSION = '1.6.0';
69 69
70 70 // Collection Functions
71 71 // --------------------
72 72
73 73 // The cornerstone, an `each` implementation, aka `forEach`.
74 74 // Handles objects with the built-in `forEach`, arrays, and raw objects.
75 75 // Delegates to **ECMAScript 5**'s native `forEach` if available.
76 76 var each = _.each = _.forEach = function(obj, iterator, context) {
77 77 if (obj == null) return obj;
78 78 if (nativeForEach && obj.forEach === nativeForEach) {
79 79 obj.forEach(iterator, context);
80 80 } else if (obj.length === +obj.length) {
81 81 for (var i = 0, length = obj.length; i < length; i++) {
82 82 if (iterator.call(context, obj[i], i, obj) === breaker) return;
83 83 }
84 84 } else {
85 85 var keys = _.keys(obj);
86 86 for (var i = 0, length = keys.length; i < length; i++) {
87 87 if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
88 88 }
89 89 }
90 90 return obj;
91 91 };
92 92
93 93 // Return the results of applying the iterator to each element.
94 94 // Delegates to **ECMAScript 5**'s native `map` if available.
95 95 _.map = _.collect = function(obj, iterator, context) {
96 96 var results = [];
97 97 if (obj == null) return results;
98 98 if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
99 99 each(obj, function(value, index, list) {
100 100 results.push(iterator.call(context, value, index, list));
101 101 });
102 102 return results;
103 103 };
104 104
105 105 var reduceError = 'Reduce of empty array with no initial value';
106 106
107 107 // **Reduce** builds up a single result from a list of values, aka `inject`,
108 108 // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
109 109 _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
110 110 var initial = arguments.length > 2;
111 111 if (obj == null) obj = [];
112 112 if (nativeReduce && obj.reduce === nativeReduce) {
113 113 if (context) iterator = _.bind(iterator, context);
114 114 return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
115 115 }
116 116 each(obj, function(value, index, list) {
117 117 if (!initial) {
118 118 memo = value;
119 119 initial = true;
120 120 } else {
121 121 memo = iterator.call(context, memo, value, index, list);
122 122 }
123 123 });
124 124 if (!initial) throw new TypeError(reduceError);
125 125 return memo;
126 126 };
127 127
128 128 // The right-associative version of reduce, also known as `foldr`.
129 129 // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
130 130 _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
131 131 var initial = arguments.length > 2;
132 132 if (obj == null) obj = [];
133 133 if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
134 134 if (context) iterator = _.bind(iterator, context);
135 135 return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
136 136 }
137 137 var length = obj.length;
138 138 if (length !== +length) {
139 139 var keys = _.keys(obj);
140 140 length = keys.length;
141 141 }
142 142 each(obj, function(value, index, list) {
143 143 index = keys ? keys[--length] : --length;
144 144 if (!initial) {
145 145 memo = obj[index];
146 146 initial = true;
147 147 } else {
148 148 memo = iterator.call(context, memo, obj[index], index, list);
149 149 }
150 150 });
151 151 if (!initial) throw new TypeError(reduceError);
152 152 return memo;
153 153 };
154 154
155 155 // Return the first value which passes a truth test. Aliased as `detect`.
156 156 _.find = _.detect = function(obj, predicate, context) {
157 157 var result;
158 158 any(obj, function(value, index, list) {
159 159 if (predicate.call(context, value, index, list)) {
160 160 result = value;
161 161 return true;
162 162 }
163 163 });
164 164 return result;
165 165 };
166 166
167 167 // Return all the elements that pass a truth test.
168 168 // Delegates to **ECMAScript 5**'s native `filter` if available.
169 169 // Aliased as `select`.
170 170 _.filter = _.select = function(obj, predicate, context) {
171 171 var results = [];
172 172 if (obj == null) return results;
173 173 if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
174 174 each(obj, function(value, index, list) {
175 175 if (predicate.call(context, value, index, list)) results.push(value);
176 176 });
177 177 return results;
178 178 };
179 179
180 180 // Return all the elements for which a truth test fails.
181 181 _.reject = function(obj, predicate, context) {
182 182 return _.filter(obj, function(value, index, list) {
183 183 return !predicate.call(context, value, index, list);
184 184 }, context);
185 185 };
186 186
187 187 // Determine whether all of the elements match a truth test.
188 188 // Delegates to **ECMAScript 5**'s native `every` if available.
189 189 // Aliased as `all`.
190 190 _.every = _.all = function(obj, predicate, context) {
191 191 predicate || (predicate = _.identity);
192 192 var result = true;
193 193 if (obj == null) return result;
194 194 if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
195 195 each(obj, function(value, index, list) {
196 196 if (!(result = result && predicate.call(context, value, index, list))) return breaker;
197 197 });
198 198 return !!result;
199 199 };
200 200
201 201 // Determine if at least one element in the object matches a truth test.
202 202 // Delegates to **ECMAScript 5**'s native `some` if available.
203 203 // Aliased as `any`.
204 204 var any = _.some = _.any = function(obj, predicate, context) {
205 205 predicate || (predicate = _.identity);
206 206 var result = false;
207 207 if (obj == null) return result;
208 208 if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
209 209 each(obj, function(value, index, list) {
210 210 if (result || (result = predicate.call(context, value, index, list))) return breaker;
211 211 });
212 212 return !!result;
213 213 };
214 214
215 215 // Determine if the array or object contains a given value (using `===`).
216 216 // Aliased as `include`.
217 217 _.contains = _.include = function(obj, target) {
218 218 if (obj == null) return false;
219 219 if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
220 220 return any(obj, function(value) {
221 221 return value === target;
222 222 });
223 223 };
224 224
225 225 // Invoke a method (with arguments) on every item in a collection.
226 226 _.invoke = function(obj, method) {
227 227 var args = slice.call(arguments, 2);
228 228 var isFunc = _.isFunction(method);
229 229 return _.map(obj, function(value) {
230 230 return (isFunc ? method : value[method]).apply(value, args);
231 231 });
232 232 };
233 233
234 234 // Convenience version of a common use case of `map`: fetching a property.
235 235 _.pluck = function(obj, key) {
236 236 return _.map(obj, _.property(key));
237 237 };
238 238
239 239 // Convenience version of a common use case of `filter`: selecting only objects
240 240 // containing specific `key:value` pairs.
241 241 _.where = function(obj, attrs) {
242 242 return _.filter(obj, _.matches(attrs));
243 243 };
244 244
245 245 // Convenience version of a common use case of `find`: getting the first object
246 246 // containing specific `key:value` pairs.
247 247 _.findWhere = function(obj, attrs) {
248 248 return _.find(obj, _.matches(attrs));
249 249 };
250 250
251 251 // Return the maximum element or (element-based computation).
252 252 // Can't optimize arrays of integers longer than 65,535 elements.
253 253 // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
254 254 _.max = function(obj, iterator, context) {
255 255 if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
256 256 return Math.max.apply(Math, obj);
257 257 }
258 258 var result = -Infinity, lastComputed = -Infinity;
259 259 each(obj, function(value, index, list) {
260 260 var computed = iterator ? iterator.call(context, value, index, list) : value;
261 261 if (computed > lastComputed) {
262 262 result = value;
263 263 lastComputed = computed;
264 264 }
265 265 });
266 266 return result;
267 267 };
268 268
269 269 // Return the minimum element (or element-based computation).
270 270 _.min = function(obj, iterator, context) {
271 271 if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
272 272 return Math.min.apply(Math, obj);
273 273 }
274 274 var result = Infinity, lastComputed = Infinity;
275 275 each(obj, function(value, index, list) {
276 276 var computed = iterator ? iterator.call(context, value, index, list) : value;
277 277 if (computed < lastComputed) {
278 278 result = value;
279 279 lastComputed = computed;
280 280 }
281 281 });
282 282 return result;
283 283 };
284 284
285 285 // Shuffle an array, using the modern version of the
286 286 // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
287 287 _.shuffle = function(obj) {
288 288 var rand;
289 289 var index = 0;
290 290 var shuffled = [];
291 291 each(obj, function(value) {
292 292 rand = _.random(index++);
293 293 shuffled[index - 1] = shuffled[rand];
294 294 shuffled[rand] = value;
295 295 });
296 296 return shuffled;
297 297 };
298 298
299 299 // Sample **n** random values from a collection.
300 300 // If **n** is not specified, returns a single random element.
301 301 // The internal `guard` argument allows it to work with `map`.
302 302 _.sample = function(obj, n, guard) {
303 303 if (n == null || guard) {
304 304 if (obj.length !== +obj.length) obj = _.values(obj);
305 305 return obj[_.random(obj.length - 1)];
306 306 }
307 307 return _.shuffle(obj).slice(0, Math.max(0, n));
308 308 };
309 309
310 310 // An internal function to generate lookup iterators.
311 311 var lookupIterator = function(value) {
312 312 if (value == null) return _.identity;
313 313 if (_.isFunction(value)) return value;
314 314 return _.property(value);
315 315 };
316 316
317 317 // Sort the object's values by a criterion produced by an iterator.
318 318 _.sortBy = function(obj, iterator, context) {
319 319 iterator = lookupIterator(iterator);
320 320 return _.pluck(_.map(obj, function(value, index, list) {
321 321 return {
322 322 value: value,
323 323 index: index,
324 324 criteria: iterator.call(context, value, index, list)
325 325 };
326 326 }).sort(function(left, right) {
327 327 var a = left.criteria;
328 328 var b = right.criteria;
329 329 if (a !== b) {
330 330 if (a > b || a === void 0) return 1;
331 331 if (a < b || b === void 0) return -1;
332 332 }
333 333 return left.index - right.index;
334 334 }), 'value');
335 335 };
336 336
337 337 // An internal function used for aggregate "group by" operations.
338 338 var group = function(behavior) {
339 339 return function(obj, iterator, context) {
340 340 var result = {};
341 341 iterator = lookupIterator(iterator);
342 342 each(obj, function(value, index) {
343 343 var key = iterator.call(context, value, index, obj);
344 344 behavior(result, key, value);
345 345 });
346 346 return result;
347 347 };
348 348 };
349 349
350 350 // Groups the object's values by a criterion. Pass either a string attribute
351 351 // to group by, or a function that returns the criterion.
352 352 _.groupBy = group(function(result, key, value) {
353 353 _.has(result, key) ? result[key].push(value) : result[key] = [value];
354 354 });
355 355
356 356 // Indexes the object's values by a criterion, similar to `groupBy`, but for
357 357 // when you know that your index values will be unique.
358 358 _.indexBy = group(function(result, key, value) {
359 359 result[key] = value;
360 360 });
361 361
362 362 // Counts instances of an object that group by a certain criterion. Pass
363 363 // either a string attribute to count by, or a function that returns the
364 364 // criterion.
365 365 _.countBy = group(function(result, key) {
366 366 _.has(result, key) ? result[key]++ : result[key] = 1;
367 367 });
368 368
369 369 // Use a comparator function to figure out the smallest index at which
370 370 // an object should be inserted so as to maintain order. Uses binary search.
371 371 _.sortedIndex = function(array, obj, iterator, context) {
372 372 iterator = lookupIterator(iterator);
373 373 var value = iterator.call(context, obj);
374 374 var low = 0, high = array.length;
375 375 while (low < high) {
376 376 var mid = (low + high) >>> 1;
377 377 iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
378 378 }
379 379 return low;
380 380 };
381 381
382 382 // Safely create a real, live array from anything iterable.
383 383 _.toArray = function(obj) {
384 384 if (!obj) return [];
385 385 if (_.isArray(obj)) return slice.call(obj);
386 386 if (obj.length === +obj.length) return _.map(obj, _.identity);
387 387 return _.values(obj);
388 388 };
389 389
390 390 // Return the number of elements in an object.
391 391 _.size = function(obj) {
392 392 if (obj == null) return 0;
393 393 return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
394 394 };
395 395
396 396 // Array Functions
397 397 // ---------------
398 398
399 399 // Get the first element of an array. Passing **n** will return the first N
400 400 // values in the array. Aliased as `head` and `take`. The **guard** check
401 401 // allows it to work with `_.map`.
402 402 _.first = _.head = _.take = function(array, n, guard) {
403 403 if (array == null) return void 0;
404 404 if ((n == null) || guard) return array[0];
405 405 if (n < 0) return [];
406 406 return slice.call(array, 0, n);
407 407 };
408 408
409 409 // Returns everything but the last entry of the array. Especially useful on
410 410 // the arguments object. Passing **n** will return all the values in
411 411 // the array, excluding the last N. The **guard** check allows it to work with
412 412 // `_.map`.
413 413 _.initial = function(array, n, guard) {
414 414 return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
415 415 };
416 416
417 417 // Get the last element of an array. Passing **n** will return the last N
418 418 // values in the array. The **guard** check allows it to work with `_.map`.
419 419 _.last = function(array, n, guard) {
420 420 if (array == null) return void 0;
421 421 if ((n == null) || guard) return array[array.length - 1];
422 422 return slice.call(array, Math.max(array.length - n, 0));
423 423 };
424 424
425 425 // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
426 426 // Especially useful on the arguments object. Passing an **n** will return
427 427 // the rest N values in the array. The **guard**
428 428 // check allows it to work with `_.map`.
429 429 _.rest = _.tail = _.drop = function(array, n, guard) {
430 430 return slice.call(array, (n == null) || guard ? 1 : n);
431 431 };
432 432
433 433 // Trim out all falsy values from an array.
434 434 _.compact = function(array) {
435 435 return _.filter(array, _.identity);
436 436 };
437 437
438 438 // Internal implementation of a recursive `flatten` function.
439 439 var flatten = function(input, shallow, output) {
440 440 if (shallow && _.every(input, _.isArray)) {
441 441 return concat.apply(output, input);
442 442 }
443 443 each(input, function(value) {
444 444 if (_.isArray(value) || _.isArguments(value)) {
445 445 shallow ? push.apply(output, value) : flatten(value, shallow, output);
446 446 } else {
447 447 output.push(value);
448 448 }
449 449 });
450 450 return output;
451 451 };
452 452
453 453 // Flatten out an array, either recursively (by default), or just one level.
454 454 _.flatten = function(array, shallow) {
455 455 return flatten(array, shallow, []);
456 456 };
457 457
458 458 // Return a version of the array that does not contain the specified value(s).
459 459 _.without = function(array) {
460 460 return _.difference(array, slice.call(arguments, 1));
461 461 };
462 462
463 463 // Split an array into two arrays: one whose elements all satisfy the given
464 464 // predicate, and one whose elements all do not satisfy the predicate.
465 465 _.partition = function(array, predicate) {
466 466 var pass = [], fail = [];
467 467 each(array, function(elem) {
468 468 (predicate(elem) ? pass : fail).push(elem);
469 469 });
470 470 return [pass, fail];
471 471 };
472 472
473 473 // Produce a duplicate-free version of the array. If the array has already
474 474 // been sorted, you have the option of using a faster algorithm.
475 475 // Aliased as `unique`.
476 476 _.uniq = _.unique = function(array, isSorted, iterator, context) {
477 477 if (_.isFunction(isSorted)) {
478 478 context = iterator;
479 479 iterator = isSorted;
480 480 isSorted = false;
481 481 }
482 482 var initial = iterator ? _.map(array, iterator, context) : array;
483 483 var results = [];
484 484 var seen = [];
485 485 each(initial, function(value, index) {
486 486 if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
487 487 seen.push(value);
488 488 results.push(array[index]);
489 489 }
490 490 });
491 491 return results;
492 492 };
493 493
494 494 // Produce an array that contains the union: each distinct element from all of
495 495 // the passed-in arrays.
496 496 _.union = function() {
497 497 return _.uniq(_.flatten(arguments, true));
498 498 };
499 499
500 500 // Produce an array that contains every item shared between all the
501 501 // passed-in arrays.
502 502 _.intersection = function(array) {
503 503 var rest = slice.call(arguments, 1);
504 504 return _.filter(_.uniq(array), function(item) {
505 505 return _.every(rest, function(other) {
506 506 return _.contains(other, item);
507 507 });
508 508 });
509 509 };
510 510
511 511 // Take the difference between one array and a number of other arrays.
512 512 // Only the elements present in just the first array will remain.
513 513 _.difference = function(array) {
514 514 var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
515 515 return _.filter(array, function(value){ return !_.contains(rest, value); });
516 516 };
517 517
518 518 // Zip together multiple lists into a single array -- elements that share
519 519 // an index go together.
520 520 _.zip = function() {
521 521 var length = _.max(_.pluck(arguments, 'length').concat(0));
522 522 var results = new Array(length);
523 523 for (var i = 0; i < length; i++) {
524 524 results[i] = _.pluck(arguments, '' + i);
525 525 }
526 526 return results;
527 527 };
528 528
529 529 // Converts lists into objects. Pass either a single array of `[key, value]`
530 530 // pairs, or two parallel arrays of the same length -- one of keys, and one of
531 531 // the corresponding values.
532 532 _.object = function(list, values) {
533 533 if (list == null) return {};
534 534 var result = {};
535 535 for (var i = 0, length = list.length; i < length; i++) {
536 536 if (values) {
537 537 result[list[i]] = values[i];
538 538 } else {
539 539 result[list[i][0]] = list[i][1];
540 540 }
541 541 }
542 542 return result;
543 543 };
544 544
545 545 // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
546 546 // we need this function. Return the position of the first occurrence of an
547 547 // item in an array, or -1 if the item is not included in the array.
548 548 // Delegates to **ECMAScript 5**'s native `indexOf` if available.
549 549 // If the array is large and already in sort order, pass `true`
550 550 // for **isSorted** to use binary search.
551 551 _.indexOf = function(array, item, isSorted) {
552 552 if (array == null) return -1;
553 553 var i = 0, length = array.length;
554 554 if (isSorted) {
555 555 if (typeof isSorted == 'number') {
556 556 i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
557 557 } else {
558 558 i = _.sortedIndex(array, item);
559 559 return array[i] === item ? i : -1;
560 560 }
561 561 }
562 562 if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
563 563 for (; i < length; i++) if (array[i] === item) return i;
564 564 return -1;
565 565 };
566 566
567 567 // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
568 568 _.lastIndexOf = function(array, item, from) {
569 569 if (array == null) return -1;
570 570 var hasIndex = from != null;
571 571 if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
572 572 return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
573 573 }
574 574 var i = (hasIndex ? from : array.length);
575 575 while (i--) if (array[i] === item) return i;
576 576 return -1;
577 577 };
578 578
579 579 // Generate an integer Array containing an arithmetic progression. A port of
580 580 // the native Python `range()` function. See
581 581 // [the Python documentation](http://docs.python.org/library/functions.html#range).
582 582 _.range = function(start, stop, step) {
583 583 if (arguments.length <= 1) {
584 584 stop = start || 0;
585 585 start = 0;
586 586 }
587 587 step = arguments[2] || 1;
588 588
589 589 var length = Math.max(Math.ceil((stop - start) / step), 0);
590 590 var idx = 0;
591 591 var range = new Array(length);
592 592
593 593 while(idx < length) {
594 594 range[idx++] = start;
595 595 start += step;
596 596 }
597 597
598 598 return range;
599 599 };
600 600
601 601 // Function (ahem) Functions
602 602 // ------------------
603 603
604 604 // Reusable constructor function for prototype setting.
605 605 var ctor = function(){};
606 606
607 607 // Create a function bound to a given object (assigning `this`, and arguments,
608 608 // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
609 609 // available.
610 610 _.bind = function(func, context) {
611 611 var args, bound;
612 612 if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
613 613 if (!_.isFunction(func)) throw new TypeError;
614 614 args = slice.call(arguments, 2);
615 615 return bound = function() {
616 616 if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
617 617 ctor.prototype = func.prototype;
618 618 var self = new ctor;
619 619 ctor.prototype = null;
620 620 var result = func.apply(self, args.concat(slice.call(arguments)));
621 621 if (Object(result) === result) return result;
622 622 return self;
623 623 };
624 624 };
625 625
626 626 // Partially apply a function by creating a version that has had some of its
627 627 // arguments pre-filled, without changing its dynamic `this` context. _ acts
628 628 // as a placeholder, allowing any combination of arguments to be pre-filled.
629 629 _.partial = function(func) {
630 630 var boundArgs = slice.call(arguments, 1);
631 631 return function() {
632 632 var position = 0;
633 633 var args = boundArgs.slice();
634 634 for (var i = 0, length = args.length; i < length; i++) {
635 635 if (args[i] === _) args[i] = arguments[position++];
636 636 }
637 637 while (position < arguments.length) args.push(arguments[position++]);
638 638 return func.apply(this, args);
639 639 };
640 640 };
641 641
642 642 // Bind a number of an object's methods to that object. Remaining arguments
643 643 // are the method names to be bound. Useful for ensuring that all callbacks
644 644 // defined on an object belong to it.
645 645 _.bindAll = function(obj) {
646 646 var funcs = slice.call(arguments, 1);
647 647 if (funcs.length === 0) throw new Error('bindAll must be passed function names');
648 648 each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
649 649 return obj;
650 650 };
651 651
652 652 // Memoize an expensive function by storing its results.
653 653 _.memoize = function(func, hasher) {
654 654 var memo = {};
655 655 hasher || (hasher = _.identity);
656 656 return function() {
657 657 var key = hasher.apply(this, arguments);
658 658 return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
659 659 };
660 660 };
661 661
662 662 // Delays a function for the given number of milliseconds, and then calls
663 663 // it with the arguments supplied.
664 664 _.delay = function(func, wait) {
665 665 var args = slice.call(arguments, 2);
666 666 return setTimeout(function(){ return func.apply(null, args); }, wait);
667 667 };
668 668
669 669 // Defers a function, scheduling it to run after the current call stack has
670 670 // cleared.
671 671 _.defer = function(func) {
672 672 return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
673 673 };
674 674
675 675 // Returns a function, that, when invoked, will only be triggered at most once
676 676 // during a given window of time. Normally, the throttled function will run
677 677 // as much as it can, without ever going more than once per `wait` duration;
678 678 // but if you'd like to disable the execution on the leading edge, pass
679 679 // `{leading: false}`. To disable execution on the trailing edge, ditto.
680 680 _.throttle = function(func, wait, options) {
681 681 var context, args, result;
682 682 var timeout = null;
683 683 var previous = 0;
684 684 options || (options = {});
685 685 var later = function() {
686 686 previous = options.leading === false ? 0 : _.now();
687 687 timeout = null;
688 688 result = func.apply(context, args);
689 689 context = args = null;
690 690 };
691 691 return function() {
692 692 var now = _.now();
693 693 if (!previous && options.leading === false) previous = now;
694 694 var remaining = wait - (now - previous);
695 695 context = this;
696 696 args = arguments;
697 697 if (remaining <= 0) {
698 698 clearTimeout(timeout);
699 699 timeout = null;
700 700 previous = now;
701 701 result = func.apply(context, args);
702 702 context = args = null;
703 703 } else if (!timeout && options.trailing !== false) {
704 704 timeout = setTimeout(later, remaining);
705 705 }
706 706 return result;
707 707 };
708 708 };
709 709
710 710 // Returns a function, that, as long as it continues to be invoked, will not
711 711 // be triggered. The function will be called after it stops being called for
712 712 // N milliseconds. If `immediate` is passed, trigger the function on the
713 713 // leading edge, instead of the trailing.
714 714 _.debounce = function(func, wait, immediate) {
715 715 var timeout, args, context, timestamp, result;
716 716
717 717 var later = function() {
718 718 var last = _.now() - timestamp;
719 719 if (last < wait) {
720 720 timeout = setTimeout(later, wait - last);
721 721 } else {
722 722 timeout = null;
723 723 if (!immediate) {
724 724 result = func.apply(context, args);
725 725 context = args = null;
726 726 }
727 727 }
728 728 };
729 729
730 730 return function() {
731 731 context = this;
732 732 args = arguments;
733 733 timestamp = _.now();
734 734 var callNow = immediate && !timeout;
735 735 if (!timeout) {
736 736 timeout = setTimeout(later, wait);
737 737 }
738 738 if (callNow) {
739 739 result = func.apply(context, args);
740 740 context = args = null;
741 741 }
742 742
743 743 return result;
744 744 };
745 745 };
746 746
747 747 // Returns a function that will be executed at most one time, no matter how
748 748 // often you call it. Useful for lazy initialization.
749 749 _.once = function(func) {
750 750 var ran = false, memo;
751 751 return function() {
752 752 if (ran) return memo;
753 753 ran = true;
754 754 memo = func.apply(this, arguments);
755 755 func = null;
756 756 return memo;
757 757 };
758 758 };
759 759
760 760 // Returns the first function passed as an argument to the second,
761 761 // allowing you to adjust arguments, run code before and after, and
762 762 // conditionally execute the original function.
763 763 _.wrap = function(func, wrapper) {
764 764 return _.partial(wrapper, func);
765 765 };
766 766
767 767 // Returns a function that is the composition of a list of functions, each
768 768 // consuming the return value of the function that follows.
769 769 _.compose = function() {
770 770 var funcs = arguments;
771 771 return function() {
772 772 var args = arguments;
773 773 for (var i = funcs.length - 1; i >= 0; i--) {
774 774 args = [funcs[i].apply(this, args)];
775 775 }
776 776 return args[0];
777 777 };
778 778 };
779 779
780 780 // Returns a function that will only be executed after being called N times.
781 781 _.after = function(times, func) {
782 782 return function() {
783 783 if (--times < 1) {
784 784 return func.apply(this, arguments);
785 785 }
786 786 };
787 787 };
788 788
789 789 // Object Functions
790 790 // ----------------
791 791
792 792 // Retrieve the names of an object's properties.
793 793 // Delegates to **ECMAScript 5**'s native `Object.keys`
794 794 _.keys = function(obj) {
795 795 if (!_.isObject(obj)) return [];
796 796 if (nativeKeys) return nativeKeys(obj);
797 797 var keys = [];
798 798 for (var key in obj) if (_.has(obj, key)) keys.push(key);
799 799 return keys;
800 800 };
801 801
802 802 // Retrieve the values of an object's properties.
803 803 _.values = function(obj) {
804 804 var keys = _.keys(obj);
805 805 var length = keys.length;
806 806 var values = new Array(length);
807 807 for (var i = 0; i < length; i++) {
808 808 values[i] = obj[keys[i]];
809 809 }
810 810 return values;
811 811 };
812 812
813 813 // Convert an object into a list of `[key, value]` pairs.
814 814 _.pairs = function(obj) {
815 815 var keys = _.keys(obj);
816 816 var length = keys.length;
817 817 var pairs = new Array(length);
818 818 for (var i = 0; i < length; i++) {
819 819 pairs[i] = [keys[i], obj[keys[i]]];
820 820 }
821 821 return pairs;
822 822 };
823 823
824 824 // Invert the keys and values of an object. The values must be serializable.
825 825 _.invert = function(obj) {
826 826 var result = {};
827 827 var keys = _.keys(obj);
828 828 for (var i = 0, length = keys.length; i < length; i++) {
829 829 result[obj[keys[i]]] = keys[i];
830 830 }
831 831 return result;
832 832 };
833 833
834 834 // Return a sorted list of the function names available on the object.
835 835 // Aliased as `methods`
836 836 _.functions = _.methods = function(obj) {
837 837 var names = [];
838 838 for (var key in obj) {
839 839 if (_.isFunction(obj[key])) names.push(key);
840 840 }
841 841 return names.sort();
842 842 };
843 843
844 844 // Extend a given object with all the properties in passed-in object(s).
845 845 _.extend = function(obj) {
846 846 each(slice.call(arguments, 1), function(source) {
847 847 if (source) {
848 848 for (var prop in source) {
849 849 obj[prop] = source[prop];
850 850 }
851 851 }
852 852 });
853 853 return obj;
854 854 };
855 855
856 856 // Return a copy of the object only containing the whitelisted properties.
857 857 _.pick = function(obj) {
858 858 var copy = {};
859 859 var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
860 860 each(keys, function(key) {
861 861 if (key in obj) copy[key] = obj[key];
862 862 });
863 863 return copy;
864 864 };
865 865
866 866 // Return a copy of the object without the blacklisted properties.
867 867 _.omit = function(obj) {
868 868 var copy = {};
869 869 var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
870 870 for (var key in obj) {
871 871 if (!_.contains(keys, key)) copy[key] = obj[key];
872 872 }
873 873 return copy;
874 874 };
875 875
876 876 // Fill in a given object with default properties.
877 877 _.defaults = function(obj) {
878 878 each(slice.call(arguments, 1), function(source) {
879 879 if (source) {
880 880 for (var prop in source) {
881 881 if (obj[prop] === void 0) obj[prop] = source[prop];
882 882 }
883 883 }
884 884 });
885 885 return obj;
886 886 };
887 887
888 888 // Create a (shallow-cloned) duplicate of an object.
889 889 _.clone = function(obj) {
890 890 if (!_.isObject(obj)) return obj;
891 891 return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
892 892 };
893 893
894 894 // Invokes interceptor with the obj, and then returns obj.
895 895 // The primary purpose of this method is to "tap into" a method chain, in
896 896 // order to perform operations on intermediate results within the chain.
897 897 _.tap = function(obj, interceptor) {
898 898 interceptor(obj);
899 899 return obj;
900 900 };
901 901
902 902 // Internal recursive comparison function for `isEqual`.
903 903 var eq = function(a, b, aStack, bStack) {
904 904 // Identical objects are equal. `0 === -0`, but they aren't identical.
905 905 // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
906 906 if (a === b) return a !== 0 || 1 / a == 1 / b;
907 907 // A strict comparison is necessary because `null == undefined`.
908 908 if (a == null || b == null) return a === b;
909 909 // Unwrap any wrapped objects.
910 910 if (a instanceof _) a = a._wrapped;
911 911 if (b instanceof _) b = b._wrapped;
912 912 // Compare `[[Class]]` names.
913 913 var className = toString.call(a);
914 914 if (className != toString.call(b)) return false;
915 915 switch (className) {
916 916 // Strings, numbers, dates, and booleans are compared by value.
917 917 case '[object String]':
918 918 // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
919 919 // equivalent to `new String("5")`.
920 920 return a == String(b);
921 921 case '[object Number]':
922 922 // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
923 923 // other numeric values.
924 924 return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
925 925 case '[object Date]':
926 926 case '[object Boolean]':
927 927 // Coerce dates and booleans to numeric primitive values. Dates are compared by their
928 928 // millisecond representations. Note that invalid dates with millisecond representations
929 929 // of `NaN` are not equivalent.
930 930 return +a == +b;
931 931 // RegExps are compared by their source patterns and flags.
932 932 case '[object RegExp]':
933 933 return a.source == b.source &&
934 934 a.global == b.global &&
935 935 a.multiline == b.multiline &&
936 936 a.ignoreCase == b.ignoreCase;
937 937 }
938 938 if (typeof a != 'object' || typeof b != 'object') return false;
939 939 // Assume equality for cyclic structures. The algorithm for detecting cyclic
940 940 // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
941 941 var length = aStack.length;
942 942 while (length--) {
943 943 // Linear search. Performance is inversely proportional to the number of
944 944 // unique nested structures.
945 945 if (aStack[length] == a) return bStack[length] == b;
946 946 }
947 947 // Objects with different constructors are not equivalent, but `Object`s
948 948 // from different frames are.
949 949 var aCtor = a.constructor, bCtor = b.constructor;
950 950 if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
951 951 _.isFunction(bCtor) && (bCtor instanceof bCtor))
952 952 && ('constructor' in a && 'constructor' in b)) {
953 953 return false;
954 954 }
955 955 // Add the first object to the stack of traversed objects.
956 956 aStack.push(a);
957 957 bStack.push(b);
958 958 var size = 0, result = true;
959 959 // Recursively compare objects and arrays.
960 960 if (className == '[object Array]') {
961 961 // Compare array lengths to determine if a deep comparison is necessary.
962 962 size = a.length;
963 963 result = size == b.length;
964 964 if (result) {
965 965 // Deep compare the contents, ignoring non-numeric properties.
966 966 while (size--) {
967 967 if (!(result = eq(a[size], b[size], aStack, bStack))) break;
968 968 }
969 969 }
970 970 } else {
971 971 // Deep compare objects.
972 972 for (var key in a) {
973 973 if (_.has(a, key)) {
974 974 // Count the expected number of properties.
975 975 size++;
976 976 // Deep compare each member.
977 977 if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
978 978 }
979 979 }
980 980 // Ensure that both objects contain the same number of properties.
981 981 if (result) {
982 982 for (key in b) {
983 983 if (_.has(b, key) && !(size--)) break;
984 984 }
985 985 result = !size;
986 986 }
987 987 }
988 988 // Remove the first object from the stack of traversed objects.
989 989 aStack.pop();
990 990 bStack.pop();
991 991 return result;
992 992 };
993 993
994 994 // Perform a deep comparison to check if two objects are equal.
995 995 _.isEqual = function(a, b) {
996 996 return eq(a, b, [], []);
997 997 };
998 998
999 999 // Is a given array, string, or object empty?
1000 1000 // An "empty" object has no enumerable own-properties.
1001 1001 _.isEmpty = function(obj) {
1002 1002 if (obj == null) return true;
1003 1003 if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
1004 1004 for (var key in obj) if (_.has(obj, key)) return false;
1005 1005 return true;
1006 1006 };
1007 1007
1008 1008 // Is a given value a DOM element?
1009 1009 _.isElement = function(obj) {
1010 1010 return !!(obj && obj.nodeType === 1);
1011 1011 };
1012 1012
1013 1013 // Is a given value an array?
1014 1014 // Delegates to ECMA5's native Array.isArray
1015 1015 _.isArray = nativeIsArray || function(obj) {
1016 1016 return toString.call(obj) == '[object Array]';
1017 1017 };
1018 1018
1019 1019 // Is a given variable an object?
1020 1020 _.isObject = function(obj) {
1021 1021 return obj === Object(obj);
1022 1022 };
1023 1023
1024 1024 // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
1025 1025 each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
1026 1026 _['is' + name] = function(obj) {
1027 1027 return toString.call(obj) == '[object ' + name + ']';
1028 1028 };
1029 1029 });
1030 1030
1031 1031 // Define a fallback version of the method in browsers (ahem, IE), where
1032 1032 // there isn't any inspectable "Arguments" type.
1033 1033 if (!_.isArguments(arguments)) {
1034 1034 _.isArguments = function(obj) {
1035 1035 return !!(obj && _.has(obj, 'callee'));
1036 1036 };
1037 1037 }
1038 1038
1039 1039 // Optimize `isFunction` if appropriate.
1040 1040 if (typeof (/./) !== 'function') {
1041 1041 _.isFunction = function(obj) {
1042 1042 return typeof obj === 'function';
1043 1043 };
1044 1044 }
1045 1045
1046 1046 // Is a given object a finite number?
1047 1047 _.isFinite = function(obj) {
1048 1048 return isFinite(obj) && !isNaN(parseFloat(obj));
1049 1049 };
1050 1050
1051 1051 // Is the given value `NaN`? (NaN is the only number which does not equal itself).
1052 1052 _.isNaN = function(obj) {
1053 1053 return _.isNumber(obj) && obj != +obj;
1054 1054 };
1055 1055
1056 1056 // Is a given value a boolean?
1057 1057 _.isBoolean = function(obj) {
1058 1058 return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
1059 1059 };
1060 1060
1061 1061 // Is a given value equal to null?
1062 1062 _.isNull = function(obj) {
1063 1063 return obj === null;
1064 1064 };
1065 1065
1066 1066 // Is a given variable undefined?
1067 1067 _.isUndefined = function(obj) {
1068 1068 return obj === void 0;
1069 1069 };
1070 1070
1071 1071 // Shortcut function for checking if an object has a given property directly
1072 1072 // on itself (in other words, not on a prototype).
1073 1073 _.has = function(obj, key) {
1074 1074 return hasOwnProperty.call(obj, key);
1075 1075 };
1076 1076
1077 1077 // Utility Functions
1078 1078 // -----------------
1079 1079
1080 1080 // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
1081 1081 // previous owner. Returns a reference to the Underscore object.
1082 1082 _.noConflict = function() {
1083 1083 root._ = previousUnderscore;
1084 1084 return this;
1085 1085 };
1086 1086
1087 1087 // Keep the identity function around for default iterators.
1088 1088 _.identity = function(value) {
1089 1089 return value;
1090 1090 };
1091 1091
1092 1092 _.constant = function(value) {
1093 1093 return function () {
1094 1094 return value;
1095 1095 };
1096 1096 };
1097 1097
1098 1098 _.property = function(key) {
1099 1099 return function(obj) {
1100 1100 return obj[key];
1101 1101 };
1102 1102 };
1103 1103
1104 1104 // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
1105 1105 _.matches = function(attrs) {
1106 1106 return function(obj) {
1107 1107 if (obj === attrs) return true; //avoid comparing an object to itself.
1108 1108 for (var key in attrs) {
1109 1109 if (attrs[key] !== obj[key])
1110 1110 return false;
1111 1111 }
1112 1112 return true;
1113 1113 }
1114 1114 };
1115 1115
1116 1116 // Run a function **n** times.
1117 1117 _.times = function(n, iterator, context) {
1118 1118 var accum = Array(Math.max(0, n));
1119 1119 for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
1120 1120 return accum;
1121 1121 };
1122 1122
1123 1123 // Return a random integer between min and max (inclusive).
1124 1124 _.random = function(min, max) {
1125 1125 if (max == null) {
1126 1126 max = min;
1127 1127 min = 0;
1128 1128 }
1129 1129 return min + Math.floor(Math.random() * (max - min + 1));
1130 1130 };
1131 1131
1132 1132 // A (possibly faster) way to get the current timestamp as an integer.
1133 1133 _.now = Date.now || function() { return new Date().getTime(); };
1134 1134
1135 1135 // List of HTML entities for escaping.
1136 1136 var entityMap = {
1137 1137 escape: {
1138 1138 '&': '&amp;',
1139 1139 '<': '&lt;',
1140 1140 '>': '&gt;',
1141 1141 '"': '&quot;',
1142 1142 "'": '&#x27;'
1143 1143 }
1144 1144 };
1145 1145 entityMap.unescape = _.invert(entityMap.escape);
1146 1146
1147 1147 // Regexes containing the keys and values listed immediately above.
1148 1148 var entityRegexes = {
1149 1149 escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
1150 1150 unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
1151 1151 };
1152 1152
1153 1153 // Functions for escaping and unescaping strings to/from HTML interpolation.
1154 1154 _.each(['escape', 'unescape'], function(method) {
1155 1155 _[method] = function(string) {
1156 1156 if (string == null) return '';
1157 1157 return ('' + string).replace(entityRegexes[method], function(match) {
1158 1158 return entityMap[method][match];
1159 1159 });
1160 1160 };
1161 1161 });
1162 1162
1163 1163 // If the value of the named `property` is a function then invoke it with the
1164 1164 // `object` as context; otherwise, return it.
1165 1165 _.result = function(object, property) {
1166 1166 if (object == null) return void 0;
1167 1167 var value = object[property];
1168 1168 return _.isFunction(value) ? value.call(object) : value;
1169 1169 };
1170 1170
1171 1171 // Add your own custom functions to the Underscore object.
1172 1172 _.mixin = function(obj) {
1173 1173 each(_.functions(obj), function(name) {
1174 1174 var func = _[name] = obj[name];
1175 1175 _.prototype[name] = function() {
1176 1176 var args = [this._wrapped];
1177 1177 push.apply(args, arguments);
1178 1178 return result.call(this, func.apply(_, args));
1179 1179 };
1180 1180 });
1181 1181 };
1182 1182
1183 1183 // Generate a unique integer id (unique within the entire client session).
1184 1184 // Useful for temporary DOM ids.
1185 1185 var idCounter = 0;
1186 1186 _.uniqueId = function(prefix) {
1187 1187 var id = ++idCounter + '';
1188 1188 return prefix ? prefix + id : id;
1189 1189 };
1190 1190
1191 1191 // By default, Underscore uses ERB-style template delimiters, change the
1192 1192 // following template settings to use alternative delimiters.
1193 1193 _.templateSettings = {
1194 1194 evaluate : /<%([\s\S]+?)%>/g,
1195 1195 interpolate : /<%=([\s\S]+?)%>/g,
1196 1196 escape : /<%-([\s\S]+?)%>/g
1197 1197 };
1198 1198
1199 1199 // When customizing `templateSettings`, if you don't want to define an
1200 1200 // interpolation, evaluation or escaping regex, we need one that is
1201 1201 // guaranteed not to match.
1202 1202 var noMatch = /(.)^/;
1203 1203
1204 1204 // Certain characters need to be escaped so that they can be put into a
1205 1205 // string literal.
1206 1206 var escapes = {
1207 1207 "'": "'",
1208 1208 '\\': '\\',
1209 1209 '\r': 'r',
1210 1210 '\n': 'n',
1211 1211 '\t': 't',
1212 1212 '\u2028': 'u2028',
1213 1213 '\u2029': 'u2029'
1214 1214 };
1215 1215
1216 1216 var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
1217 1217
1218 1218 // JavaScript micro-templating, similar to John Resig's implementation.
1219 1219 // Underscore templating handles arbitrary delimiters, preserves whitespace,
1220 1220 // and correctly escapes quotes within interpolated code.
1221 1221 _.template = function(text, data, settings) {
1222 1222 var render;
1223 1223 settings = _.defaults({}, settings, _.templateSettings);
1224 1224
1225 1225 // Combine delimiters into one regular expression via alternation.
1226 1226 var matcher = new RegExp([
1227 1227 (settings.escape || noMatch).source,
1228 1228 (settings.interpolate || noMatch).source,
1229 1229 (settings.evaluate || noMatch).source
1230 1230 ].join('|') + '|$', 'g');
1231 1231
1232 1232 // Compile the template source, escaping string literals appropriately.
1233 1233 var index = 0;
1234 1234 var source = "__p+='";
1235 1235 text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
1236 1236 source += text.slice(index, offset)
1237 1237 .replace(escaper, function(match) { return '\\' + escapes[match]; });
1238 1238
1239 1239 if (escape) {
1240 1240 source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
1241 1241 }
1242 1242 if (interpolate) {
1243 1243 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
1244 1244 }
1245 1245 if (evaluate) {
1246 1246 source += "';\n" + evaluate + "\n__p+='";
1247 1247 }
1248 1248 index = offset + match.length;
1249 1249 return match;
1250 1250 });
1251 1251 source += "';\n";
1252 1252
1253 1253 // If a variable is not specified, place data values in local scope.
1254 1254 if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
1255 1255
1256 1256 source = "var __t,__p='',__j=Array.prototype.join," +
1257 1257 "print=function(){__p+=__j.call(arguments,'');};\n" +
1258 1258 source + "return __p;\n";
1259 1259
1260 1260 try {
1261 1261 render = new Function(settings.variable || 'obj', '_', source);
1262 1262 } catch (e) {
1263 1263 e.source = source;
1264 1264 throw e;
1265 1265 }
1266 1266
1267 1267 if (data) return render(data, _);
1268 1268 var template = function(data) {
1269 1269 return render.call(this, data, _);
1270 1270 };
1271 1271
1272 1272 // Provide the compiled function source as a convenience for precompilation.
1273 1273 template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
1274 1274
1275 1275 return template;
1276 1276 };
1277 1277
1278 1278 // Add a "chain" function, which will delegate to the wrapper.
1279 1279 _.chain = function(obj) {
1280 1280 return _(obj).chain();
1281 1281 };
1282 1282
1283 1283 // OOP
1284 1284 // ---------------
1285 1285 // If Underscore is called as a function, it returns a wrapped object that
1286 1286 // can be used OO-style. This wrapper holds altered versions of all the
1287 1287 // underscore functions. Wrapped objects may be chained.
1288 1288
1289 1289 // Helper function to continue chaining intermediate results.
1290 1290 var result = function(obj) {
1291 1291 return this._chain ? _(obj).chain() : obj;
1292 1292 };
1293 1293
1294 1294 // Add all of the Underscore functions to the wrapper object.
1295 1295 _.mixin(_);
1296 1296
1297 1297 // Add all mutator Array functions to the wrapper.
1298 1298 each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
1299 1299 var method = ArrayProto[name];
1300 1300 _.prototype[name] = function() {
1301 1301 var obj = this._wrapped;
1302 1302 method.apply(obj, arguments);
1303 1303 if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
1304 1304 return result.call(this, obj);
1305 1305 };
1306 1306 });
1307 1307
1308 1308 // Add all accessor Array functions to the wrapper.
1309 1309 each(['concat', 'join', 'slice'], function(name) {
1310 1310 var method = ArrayProto[name];
1311 1311 _.prototype[name] = function() {
1312 1312 return result.call(this, method.apply(this._wrapped, arguments));
1313 1313 };
1314 1314 });
1315 1315
1316 1316 _.extend(_.prototype, {
1317 1317
1318 1318 // Start chaining a wrapped Underscore object.
1319 1319 chain: function() {
1320 1320 this._chain = true;
1321 1321 return this;
1322 1322 },
1323 1323
1324 1324 // Extracts the result from a wrapped and chained object.
1325 1325 value: function() {
1326 1326 return this._wrapped;
1327 1327 }
1328 1328
1329 1329 });
1330 1330
1331 1331 // AMD registration happens at the end for compatibility with AMD loaders
1332 1332 // that may not enforce next-turn semantics on modules. Even though general
1333 1333 // practice for AMD registration is to be anonymous, underscore registers
1334 1334 // as a named module because, like jQuery, it is a base library that is
1335 1335 // popular enough to be bundled in a third party lib, but not be part of
1336 1336 // an AMD load request. Those cases could generate an error when an
1337 1337 // anonymous define() is called outside of a loader request.
1338 1338 if (typeof define === 'function' && define.amd) {
1339 1339 define('underscore', [], function() {
1340 1340 return _;
1341 1341 });
1342 1342 }
1343 1343 }).call(this);
1344 1344
1345 1345 ;/*
1346 1346 AngularJS v1.5.5
1347 1347 (c) 2010-2016 Google, Inc. http://angularjs.org
1348 1348 License: MIT
1349 1349 */
1350 1350 (function(v){'use strict';function O(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.5/"+(a?a+"/":"")+b;for(b=1;b<arguments.length;b++){d=d+(1==b?"?":"&")+"p"+(b-1)+"=";var c=encodeURIComponent,e;e=arguments[b];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;d+=c(e)}return Error(d)}}function ya(a){if(null==a||Va(a))return!1;if(K(a)||F(a)||B&&a instanceof B)return!0;
1351 1351 var b="length"in Object(a)&&a.length;return Q(b)&&(0<=b&&(b-1 in a||a instanceof Array)||"function"==typeof a.item)}function q(a,b,d){var c,e;if(a)if(E(a))for(c in a)"prototype"==c||"length"==c||"name"==c||a.hasOwnProperty&&!a.hasOwnProperty(c)||b.call(d,a[c],c,a);else if(K(a)||ya(a)){var f="object"!==typeof a;c=0;for(e=a.length;c<e;c++)(f||c in a)&&b.call(d,a[c],c,a)}else if(a.forEach&&a.forEach!==q)a.forEach(b,d,a);else if(oc(a))for(c in a)b.call(d,a[c],c,a);else if("function"===typeof a.hasOwnProperty)for(c in a)a.hasOwnProperty(c)&&
1352 1352 b.call(d,a[c],c,a);else for(c in a)ua.call(a,c)&&b.call(d,a[c],c,a);return a}function pc(a,b,d){for(var c=Object.keys(a).sort(),e=0;e<c.length;e++)b.call(d,a[c[e]],c[e]);return c}function qc(a){return function(b,d){a(d,b)}}function Xd(){return++nb}function Nb(a,b,d){for(var c=a.$$hashKey,e=0,f=b.length;e<f;++e){var g=b[e];if(G(g)||E(g))for(var h=Object.keys(g),k=0,l=h.length;k<l;k++){var n=h[k],m=g[n];d&&G(m)?fa(m)?a[n]=new Date(m.valueOf()):Wa(m)?a[n]=new RegExp(m):m.nodeName?a[n]=m.cloneNode(!0):
1353 1353 Ob(m)?a[n]=m.clone():(G(a[n])||(a[n]=K(m)?[]:{}),Nb(a[n],[m],!0)):a[n]=m}}c?a.$$hashKey=c:delete a.$$hashKey;return a}function R(a){return Nb(a,za.call(arguments,1),!1)}function Yd(a){return Nb(a,za.call(arguments,1),!0)}function X(a){return parseInt(a,10)}function Pb(a,b){return R(Object.create(a),b)}function C(){}function Xa(a){return a}function da(a){return function(){return a}}function rc(a){return E(a.toString)&&a.toString!==ma}function y(a){return"undefined"===typeof a}function x(a){return"undefined"!==
1354 1354 typeof a}function G(a){return null!==a&&"object"===typeof a}function oc(a){return null!==a&&"object"===typeof a&&!sc(a)}function F(a){return"string"===typeof a}function Q(a){return"number"===typeof a}function fa(a){return"[object Date]"===ma.call(a)}function E(a){return"function"===typeof a}function Wa(a){return"[object RegExp]"===ma.call(a)}function Va(a){return a&&a.window===a}function Ya(a){return a&&a.$evalAsync&&a.$watch}function Da(a){return"boolean"===typeof a}function Zd(a){return a&&Q(a.length)&&
1355 1355 $d.test(ma.call(a))}function Ob(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function ae(a){var b={};a=a.split(",");var d;for(d=0;d<a.length;d++)b[a[d]]=!0;return b}function va(a){return P(a.nodeName||a[0]&&a[0].nodeName)}function Za(a,b){var d=a.indexOf(b);0<=d&&a.splice(d,1);return d}function qa(a,b){function d(a,b){var d=b.$$hashKey,e;if(K(a)){e=0;for(var f=a.length;e<f;e++)b.push(c(a[e]))}else if(oc(a))for(e in a)b[e]=c(a[e]);else if(a&&"function"===typeof a.hasOwnProperty)for(e in a)a.hasOwnProperty(e)&&
1356 1356 (b[e]=c(a[e]));else for(e in a)ua.call(a,e)&&(b[e]=c(a[e]));d?b.$$hashKey=d:delete b.$$hashKey;return b}function c(a){if(!G(a))return a;var b=f.indexOf(a);if(-1!==b)return g[b];if(Va(a)||Ya(a))throw Aa("cpws");var b=!1,c=e(a);void 0===c&&(c=K(a)?[]:Object.create(sc(a)),b=!0);f.push(a);g.push(c);return b?d(a,c):c}function e(a){switch(ma.call(a)){case "[object Int8Array]":case "[object Int16Array]":case "[object Int32Array]":case "[object Float32Array]":case "[object Float64Array]":case "[object Uint8Array]":case "[object Uint8ClampedArray]":case "[object Uint16Array]":case "[object Uint32Array]":return new a.constructor(c(a.buffer));
1357 1357 case "[object ArrayBuffer]":if(!a.slice){var b=new ArrayBuffer(a.byteLength);(new Uint8Array(b)).set(new Uint8Array(a));return b}return a.slice(0);case "[object Boolean]":case "[object Number]":case "[object String]":case "[object Date]":return new a.constructor(a.valueOf());case "[object RegExp]":return b=new RegExp(a.source,a.toString().match(/[^\/]*$/)[0]),b.lastIndex=a.lastIndex,b;case "[object Blob]":return new a.constructor([a],{type:a.type})}if(E(a.cloneNode))return a.cloneNode(!0)}var f=[],
1358 1358 g=[];if(b){if(Zd(b)||"[object ArrayBuffer]"===ma.call(b))throw Aa("cpta");if(a===b)throw Aa("cpi");K(b)?b.length=0:q(b,function(a,d){"$$hashKey"!==d&&delete b[d]});f.push(a);g.push(b);return d(a,b)}return c(a)}function ha(a,b){if(K(a)){b=b||[];for(var d=0,c=a.length;d<c;d++)b[d]=a[d]}else if(G(a))for(d in b=b||{},a)if("$"!==d.charAt(0)||"$"!==d.charAt(1))b[d]=a[d];return b||a}function pa(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var d=typeof a,c;if(d==typeof b&&
1359 1359 "object"==d)if(K(a)){if(!K(b))return!1;if((d=a.length)==b.length){for(c=0;c<d;c++)if(!pa(a[c],b[c]))return!1;return!0}}else{if(fa(a))return fa(b)?pa(a.getTime(),b.getTime()):!1;if(Wa(a))return Wa(b)?a.toString()==b.toString():!1;if(Ya(a)||Ya(b)||Va(a)||Va(b)||K(b)||fa(b)||Wa(b))return!1;d=T();for(c in a)if("$"!==c.charAt(0)&&!E(a[c])){if(!pa(a[c],b[c]))return!1;d[c]=!0}for(c in b)if(!(c in d)&&"$"!==c.charAt(0)&&x(b[c])&&!E(b[c]))return!1;return!0}return!1}function $a(a,b,d){return a.concat(za.call(b,
1360 1360 d))}function tc(a,b){var d=2<arguments.length?za.call(arguments,2):[];return!E(b)||b instanceof RegExp?b:d.length?function(){return arguments.length?b.apply(a,$a(d,arguments,0)):b.apply(a,d)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function be(a,b){var d=b;"string"===typeof a&&"$"===a.charAt(0)&&"$"===a.charAt(1)?d=void 0:Va(b)?d="$WINDOW":b&&v.document===b?d="$DOCUMENT":Ya(b)&&(d="$SCOPE");return d}function ab(a,b){if(!y(a))return Q(b)||(b=b?2:null),JSON.stringify(a,be,
1361 1361 b)}function uc(a){return F(a)?JSON.parse(a):a}function vc(a,b){a=a.replace(ce,"");var d=Date.parse("Jan 01, 1970 00:00:00 "+a)/6E4;return isNaN(d)?b:d}function Qb(a,b,d){d=d?-1:1;var c=a.getTimezoneOffset();b=vc(b,c);d*=b-c;a=new Date(a.getTime());a.setMinutes(a.getMinutes()+d);return a}function wa(a){a=B(a).clone();try{a.empty()}catch(b){}var d=B("<div>").append(a).html();try{return a[0].nodeType===Ma?P(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+P(b)})}catch(c){return P(d)}}
1362 1362 function wc(a){try{return decodeURIComponent(a)}catch(b){}}function xc(a){var b={};q((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=wc(e),x(e)&&(f=x(f)?wc(f):!0,ua.call(b,e)?K(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Rb(a){var b=[];q(a,function(a,c){K(a)?q(a,function(a){b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))}):b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))});return b.length?b.join("&"):""}
1363 1363 function ob(a){return ja(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ja(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function de(a,b){var d,c,e=Na.length;for(c=0;c<e;++c)if(d=Na[c]+b,F(d=a.getAttribute(d)))return d;return null}function ee(a,b){var d,c,e={};q(Na,function(b){b+="app";!d&&a.hasAttribute&&a.hasAttribute(b)&&(d=a,c=a.getAttribute(b))});
1364 1364 q(Na,function(b){b+="app";var e;!d&&(e=a.querySelector("["+b.replace(":","\\:")+"]"))&&(d=e,c=e.getAttribute(b))});d&&(e.strictDi=null!==de(d,"strict-di"),b(d,c?[c]:[],e))}function yc(a,b,d){G(d)||(d={});d=R({strictDi:!1},d);var c=function(){a=B(a);if(a.injector()){var c=a[0]===v.document?"document":wa(a);throw Aa("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);
1365 1365 b.unshift("ng");c=bb(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;v&&e.test(v.name)&&(d.debugInfoEnabled=!0,v.name=v.name.replace(e,""));if(v&&!f.test(v.name))return c();v.name=v.name.replace(f,"");ea.resumeBootstrap=function(a){q(a,function(a){b.push(a)});return c()};E(ea.resumeDeferredBootstrap)&&ea.resumeDeferredBootstrap()}function fe(){v.name=
1366 1366 "NG_ENABLE_DEBUG_INFO!"+v.name;v.location.reload()}function ge(a){a=ea.element(a).injector();if(!a)throw Aa("test");return a.get("$$testability")}function zc(a,b){b=b||"_";return a.replace(he,function(a,c){return(c?b:"")+a.toLowerCase()})}function ie(){var a;if(!Ac){var b=pb();(Z=y(b)?v.jQuery:b?v[b]:void 0)&&Z.fn.on?(B=Z,R(Z.fn,{scope:Oa.scope,isolateScope:Oa.isolateScope,controller:Oa.controller,injector:Oa.injector,inheritedData:Oa.inheritedData}),a=Z.cleanData,Z.cleanData=function(b){for(var c,
1367 1367 e=0,f;null!=(f=b[e]);e++)(c=Z._data(f,"events"))&&c.$destroy&&Z(f).triggerHandler("$destroy");a(b)}):B=U;ea.element=B;Ac=!0}}function qb(a,b,d){if(!a)throw Aa("areq",b||"?",d||"required");return a}function Pa(a,b,d){d&&K(a)&&(a=a[a.length-1]);qb(E(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Qa(a,b){if("hasOwnProperty"===a)throw Aa("badname",b);}function Bc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g<f;g++)c=
1368 1368 b[g],a&&(a=(e=a)[c]);return!d&&E(a)?tc(e,a):a}function rb(a){for(var b=a[0],d=a[a.length-1],c,e=1;b!==d&&(b=b.nextSibling);e++)if(c||a[e]!==b)c||(c=B(za.call(a,0,e))),c.push(b);return c||a}function T(){return Object.create(null)}function je(a){function b(a,b,c){return a[b]||(a[b]=c())}var d=O("$injector"),c=O("ng");a=b(a,"angular",Object);a.$$minErr=a.$$minErr||O;return b(a,"module",function(){var a={};return function(f,g,h){if("hasOwnProperty"===f)throw c("badname","module");g&&a.hasOwnProperty(f)&&
1369 1369 (a[f]=null);return b(a,f,function(){function a(b,d,e,f){f||(f=c);return function(){f[e||"push"]([b,d,arguments]);return M}}function b(a,d){return function(b,e){e&&E(e)&&(e.$$moduleName=f);c.push([a,d,arguments]);return M}}if(!g)throw d("nomod",f);var c=[],e=[],r=[],N=a("$injector","invoke","push",e),M={_invokeQueue:c,_configBlocks:e,_runBlocks:r,requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide",
1370 1370 "constant","unshift"),decorator:b("$provide","decorator"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),component:b("$compileProvider","component"),config:N,run:function(a){r.push(a);return this}};h&&N(h);return M})}})}function ke(a){R(a,{bootstrap:yc,copy:qa,extend:R,merge:Yd,equals:pa,element:B,forEach:q,injector:bb,noop:C,bind:tc,toJson:ab,fromJson:uc,identity:Xa,isUndefined:y,
1371 1371 isDefined:x,isString:F,isFunction:E,isObject:G,isNumber:Q,isElement:Ob,isArray:K,version:le,isDate:fa,lowercase:P,uppercase:sb,callbacks:{counter:0},getTestability:ge,$$minErr:O,$$csp:Ea,reloadWithDebugInfo:fe});Sb=je(v);Sb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:me});a.provider("$compile",Cc).directive({a:ne,input:Dc,textarea:Dc,form:oe,script:pe,select:qe,style:re,option:se,ngBind:te,ngBindHtml:ue,ngBindTemplate:ve,ngClass:we,ngClassEven:xe,ngClassOdd:ye,ngCloak:ze,ngController:Ae,
1372 1372 ngForm:Be,ngHide:Ce,ngIf:De,ngInclude:Ee,ngInit:Fe,ngNonBindable:Ge,ngPluralize:He,ngRepeat:Ie,ngShow:Je,ngStyle:Ke,ngSwitch:Le,ngSwitchWhen:Me,ngSwitchDefault:Ne,ngOptions:Oe,ngTransclude:Pe,ngModel:Qe,ngList:Re,ngChange:Se,pattern:Ec,ngPattern:Ec,required:Fc,ngRequired:Fc,minlength:Gc,ngMinlength:Gc,maxlength:Hc,ngMaxlength:Hc,ngValue:Te,ngModelOptions:Ue}).directive({ngInclude:Ve}).directive(tb).directive(Ic);a.provider({$anchorScroll:We,$animate:Xe,$animateCss:Ye,$$animateJs:Ze,$$animateQueue:$e,
1373 1373 $$AnimateRunner:af,$$animateAsyncRun:bf,$browser:cf,$cacheFactory:df,$controller:ef,$document:ff,$exceptionHandler:gf,$filter:Jc,$$forceReflow:hf,$interpolate:jf,$interval:kf,$http:lf,$httpParamSerializer:mf,$httpParamSerializerJQLike:nf,$httpBackend:of,$xhrFactory:pf,$location:qf,$log:rf,$parse:sf,$rootScope:tf,$q:uf,$$q:vf,$sce:wf,$sceDelegate:xf,$sniffer:yf,$templateCache:zf,$templateRequest:Af,$$testability:Bf,$timeout:Cf,$window:Df,$$rAF:Ef,$$jqLite:Ff,$$HashMap:Gf,$$cookieReader:Hf})}])}function cb(a){return a.replace(If,
1374 1374 function(a,d,c,e){return e?c.toUpperCase():c}).replace(Jf,"Moz$1")}function Kc(a){a=a.nodeType;return 1===a||!a||9===a}function Lc(a,b){var d,c,e=b.createDocumentFragment(),f=[];if(Tb.test(a)){d=d||e.appendChild(b.createElement("div"));c=(Kf.exec(a)||["",""])[1].toLowerCase();c=ia[c]||ia._default;d.innerHTML=c[1]+a.replace(Lf,"<$1></$2>")+c[2];for(c=c[0];c--;)d=d.lastChild;f=$a(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";q(f,function(a){e.appendChild(a)});
1375 1375 return e}function Mc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function U(a){if(a instanceof U)return a;var b;F(a)&&(a=V(a),b=!0);if(!(this instanceof U)){if(b&&"<"!=a.charAt(0))throw Ub("nosel");return new U(a)}if(b){b=v.document;var d;a=(d=Mf.exec(a))?[b.createElement(d[1])]:(d=Lc(a,b))?d.childNodes:[]}Nc(this,a)}function Vb(a){return a.cloneNode(!0)}function ub(a,b){b||db(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c<e;c++)db(d[c])}function Oc(a,
1376 1376 b,d,c){if(x(c))throw Ub("offargs");var e=(c=vb(a))&&c.events,f=c&&c.handle;if(f)if(b){var g=function(b){var c=e[b];x(d)&&Za(c||[],d);x(d)&&c&&0<c.length||(a.removeEventListener(b,f,!1),delete e[b])};q(b.split(" "),function(a){g(a);wb[a]&&g(wb[a])})}else for(b in e)"$destroy"!==b&&a.removeEventListener(b,f,!1),delete e[b]}function db(a,b){var d=a.ng339,c=d&&eb[d];c&&(b?delete c.data[b]:(c.handle&&(c.events.$destroy&&c.handle({},"$destroy"),Oc(a)),delete eb[d],a.ng339=void 0))}function vb(a,b){var d=
1377 1377 a.ng339,d=d&&eb[d];b&&!d&&(a.ng339=d=++Nf,d=eb[d]={events:{},data:{},handle:void 0});return d}function Wb(a,b,d){if(Kc(a)){var c=x(d),e=!c&&b&&!G(b),f=!b;a=(a=vb(a,!e))&&a.data;if(c)a[b]=d;else{if(f)return a;if(e)return a&&a[b];R(a,b)}}}function xb(a,b){return a.getAttribute?-1<(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" "):!1}function yb(a,b){b&&a.setAttribute&&q(b.split(" "),function(b){a.setAttribute("class",V((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g,
1378 1378 " ").replace(" "+V(b)+" "," ")))})}function zb(a,b){if(b&&a.setAttribute){var d=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(b.split(" "),function(a){a=V(a);-1===d.indexOf(" "+a+" ")&&(d+=a+" ")});a.setAttribute("class",V(d))}}function Nc(a,b){if(b)if(b.nodeType)a[a.length++]=b;else{var d=b.length;if("number"===typeof d&&b.window!==b){if(d)for(var c=0;c<d;c++)a[a.length++]=b[c]}else a[a.length++]=b}}function Pc(a,b){return Ab(a,"$"+(b||"ngController")+"Controller")}function Ab(a,
1379 1379 b,d){9==a.nodeType&&(a=a.documentElement);for(b=K(b)?b:[b];a;){for(var c=0,e=b.length;c<e;c++)if(x(d=B.data(a,b[c])))return d;a=a.parentNode||11===a.nodeType&&a.host}}function Qc(a){for(ub(a,!0);a.firstChild;)a.removeChild(a.firstChild)}function Bb(a,b){b||ub(a);var d=a.parentNode;d&&d.removeChild(a)}function Of(a,b){b=b||v;if("complete"===b.document.readyState)b.setTimeout(a);else B(b).on("load",a)}function Rc(a,b){var d=Cb[b.toLowerCase()];return d&&Sc[va(a)]&&d}function Pf(a,b){var d=function(c,
1380 1380 d){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=b[d||c.type],g=f?f.length:0;if(g){if(y(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};var k=f.specialHandlerWrapper||Qf;1<g&&(f=ha(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||k(a,c,f[l])}};d.elem=
1381 1381 a;return d}function Qf(a,b,d){d.call(a,b)}function Rf(a,b,d){var c=b.relatedTarget;c&&(c===a||Sf.call(a,c))||d.call(a,b)}function Ff(){this.$get=function(){return R(U,{hasClass:function(a,b){a.attr&&(a=a[0]);return xb(a,b)},addClass:function(a,b){a.attr&&(a=a[0]);return zb(a,b)},removeClass:function(a,b){a.attr&&(a=a[0]);return yb(a,b)}})}}function Fa(a,b){var d=a&&a.$$hashKey;if(d)return"function"===typeof d&&(d=a.$$hashKey()),d;d=typeof a;return d="function"==d||"object"==d&&null!==a?a.$$hashKey=
1382 1382 d+":"+(b||Xd)():d+":"+a}function Ra(a,b){if(b){var d=0;this.nextUid=function(){return++d}}q(a,this.put,this)}function Tc(a){a=Function.prototype.toString.call(a).replace(Tf,"");return a.match(Uf)||a.match(Vf)}function Wf(a){return(a=Tc(a))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function bb(a,b){function d(a){return function(b,c){if(G(b))q(b,qc(a));else return a(b,c)}}function c(a,b){Qa(a,"service");if(E(b)||K(b))b=r.instantiate(b);if(!b.$get)throw Ga("pget",a);return m[a+"Provider"]=
1383 1383 b}function e(a,b){return function(){var c=w.invoke(b,this);if(y(c))throw Ga("undef",a);return c}}function f(a,b,d){return c(a,{$get:!1!==d?e(a,b):b})}function g(a){qb(y(a)||K(a),"modulesToLoad","not an array");var b=[],c;q(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=r.get(e[0]);f[e[1]].apply(f,e[2])}}if(!n.get(a)){n.put(a,!0);try{F(a)?(c=Sb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):E(a)?b.push(r.invoke(a)):K(a)?b.push(r.invoke(a)):
1384 1384 Pa(a,"module")}catch(e){throw K(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ga("modulerr",a,e.stack||e.message||e);}}});return b}function h(a,c){function d(b,e){if(a.hasOwnProperty(b)){if(a[b]===k)throw Ga("cdep",b+" <- "+l.join(" <- "));return a[b]}try{return l.unshift(b),a[b]=k,a[b]=c(b,e)}catch(f){throw a[b]===k&&delete a[b],f;}finally{l.shift()}}function e(a,c,f){var g=[];a=bb.$$annotate(a,b,f);for(var h=0,k=a.length;h<k;h++){var l=a[h];
1385 1385 if("string"!==typeof l)throw Ga("itkn",l);g.push(c&&c.hasOwnProperty(l)?c[l]:d(l,f))}return g}return{invoke:function(a,b,c,d){"string"===typeof c&&(d=c,c=null);c=e(a,c,d);K(a)&&(a=a[a.length-1]);d=11>=Ca?!1:"function"===typeof a&&/^(?:class\s|constructor\()/.test(Function.prototype.toString.call(a));return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=K(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d,
1386 1386 a))},get:d,annotate:bb.$$annotate,has:function(b){return m.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],n=new Ra([],!0),m={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,da(b),!1)}),constant:d(function(a,b){Qa(a,"constant");m[a]=b;N[a]=b}),decorator:function(a,b){var c=r.get(a+"Provider"),d=c.$get;c.$get=function(){var a=w.invoke(d,c);return w.invoke(b,null,
1387 1387 {$delegate:a})}}}},r=m.$injector=h(m,function(a,b){ea.isString(b)&&l.push(b);throw Ga("unpr",l.join(" <- "));}),N={},M=h(N,function(a,b){var c=r.get(a+"Provider",b);return w.invoke(c.$get,c,void 0,a)}),w=M;m.$injectorProvider={$get:da(M)};var p=g(a),w=M.get("$injector");w.strictDi=b;q(p,function(a){a&&w.invoke(a)});return w}function We(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,
1388 1388 function(a){if("a"===va(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;E(c)?c=c():Ob(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):Q(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=F(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===
1389 1389 b&&""===a||Of(function(){c.$evalAsync(g)})});return g}]}function fb(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;K(a)&&(a=a.join(" "));K(b)&&(b=b.join(" "));return a+" "+b}function Xf(a){F(a)&&(a=a.split(" "));var b=T();q(a,function(a){a.length&&(b[a]=!0)});return b}function Ha(a){return G(a)?a:{}}function Yf(a,b,d,c){function e(a){try{a.apply(null,za.call(arguments,1))}finally{if(M--,0===M)for(;w.length;)try{w.pop()()}catch(b){d.error(b)}}}function f(){u=null;g();h()}function g(){p=I();
1390 1390 p=y(p)?null:p;pa(p,L)&&(p=L);L=p}function h(){if(t!==k.url()||H!==p)t=k.url(),H=p,q(J,function(a){a(k.url(),p)})}var k=this,l=a.location,n=a.history,m=a.setTimeout,r=a.clearTimeout,N={};k.isMock=!1;var M=0,w=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){M++};k.notifyWhenNoOutstandingRequests=function(a){0===M?a():w.push(a)};var p,H,t=l.href,z=b.find("base"),u=null,I=c.history?function(){try{return n.state}catch(a){}}:C;g();H=p;k.url=function(b,d,e){y(e)&&(e=null);l!==
1391 1391 a.location&&(l=a.location);n!==a.history&&(n=a.history);if(b){var f=H===e;if(t===b&&(!c.history||f))return k;var h=t&&Ia(t)===Ia(b);t=b;H=e;if(!c.history||h&&f){if(!h||u)u=b;d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b;l.href!==b&&(u=b)}else n[d?"replaceState":"pushState"](e,"",b),g(),H=p;return k}return u||l.href.replace(/%27/g,"'")};k.state=function(){return p};var J=[],D=!1,L=null;k.onUrlChange=function(b){if(!D){if(c.history)B(a).on("popstate",f);B(a).on("hashchange",
1392 1392 f);D=!0}J.push(b);return b};k.$$applicationDestroyed=function(){B(a).off("hashchange popstate",f)};k.$$checkUrlChange=h;k.baseHref=function(){var a=z.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;M++;c=m(function(){delete N[c];e(a)},b||0);N[c]=!0;return c};k.defer.cancel=function(a){return N[a]?(delete N[a],r(a),e(C),!0):!1}}function cf(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new Yf(a,c,b,d)}]}function df(){this.$get=
1393 1393 function(){function a(a,c){function e(a){a!=m&&(r?r==a&&(r=a.n):r=a,f(a.n,a.p),f(a,m),m=a,m.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw O("$cacheFactory")("iid",a);var g=0,h=R({},c,{id:a}),k=T(),l=c&&c.capacity||Number.MAX_VALUE,n=T(),m=null,r=null;return b[a]={put:function(a,b){if(!y(b)){if(l<Number.MAX_VALUE){var c=n[a]||(n[a]={key:a});e(c)}a in k||g++;k[a]=b;g>l&&this.remove(r.key);return b}},get:function(a){if(l<Number.MAX_VALUE){var b=n[a];if(!b)return;e(b)}return k[a]},
1394 1394 remove:function(a){if(l<Number.MAX_VALUE){var b=n[a];if(!b)return;b==m&&(m=b.p);b==r&&(r=b.n);f(b.n,b.p);delete n[a]}a in k&&(delete k[a],g--)},removeAll:function(){k=T();g=0;n=T();m=r=null},destroy:function(){n=h=k=null;delete b[a]},info:function(){return R({},h,{size:g})}}}var b={};a.info=function(){var a={};q(b,function(b,e){a[e]=b.info()});return a};a.get=function(a){return b[a]};return a}}function zf(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Cc(a,b){function d(a,
1395 1395 b,c){var d=/^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/,e=T();q(a,function(a,f){if(a in n)e[f]=n[a];else{var g=a.match(d);if(!g)throw ga("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f};g[4]&&(n[a]=e[f])}});return e}function c(a){var b=a.charAt(0);if(!b||b!==P(b))throw ga("baddir",a);if(a!==a.trim())throw ga("baddir",a);}var e={},f=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,g=/(([\w\-]+)(?:\:([^;]+))?;?)/,
1396 1396 h=ae("ngSrc,ngSrcset,src,srcset"),k=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/,n=T();this.directive=function M(b,d){Qa(b,"directive");F(b)?(c(b),qb(d,"directiveFactory"),e.hasOwnProperty(b)||(e[b]=[],a.factory(b+"Directive",["$injector","$exceptionHandler",function(a,c){var d=[];q(e[b],function(e,f){try{var g=a.invoke(e);E(g)?g={compile:da(g)}:!g.compile&&g.link&&(g.compile=da(g.link));g.priority=g.priority||0;g.index=f;g.name=g.name||b;g.require=g.require||g.controller&&g.name;g.restrict=
1397 1397 g.restrict||"EA";g.$$moduleName=e.$$moduleName;d.push(g)}catch(h){c(h)}});return d}])),e[b].push(d)):q(b,qc(M));return this};this.component=function(a,b){function c(a){function e(b){return E(b)||K(b)?function(c,d){return a.invoke(b,this,{$element:c,$attrs:d})}:b}var f=b.template||b.templateUrl?b.template:"",g={controller:d,controllerAs:Uc(b.controller)||b.controllerAs||"$ctrl",template:e(f),templateUrl:e(b.templateUrl),transclude:b.transclude,scope:{},bindToController:b.bindings||{},restrict:"E",
1398 1398 require:b.require};q(b,function(a,b){"$"===b.charAt(0)&&(g[b]=a)});return g}var d=b.controller||function(){};q(b,function(a,b){"$"===b.charAt(0)&&(c[b]=a,E(d)&&(d[b]=a))});c.$inject=["$injector"];return this.directive(a,c)};this.aHrefSanitizationWhitelist=function(a){return x(a)?(b.aHrefSanitizationWhitelist(a),this):b.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(a){return x(a)?(b.imgSrcSanitizationWhitelist(a),this):b.imgSrcSanitizationWhitelist()};var m=!0;this.debugInfoEnabled=
1399 1399 function(a){return x(a)?(m=a,this):m};var r=10;this.onChangesTtl=function(a){return arguments.length?(r=a,this):r};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate","$$sanitizeUri",function(a,b,c,n,t,z,u,I,J,D){function L(){try{if(!--qa)throw Z=void 0,ga("infchng",r);u.$apply(function(){for(var a=0,b=Z.length;a<b;++a)Z[a]();Z=void 0})}finally{qa++}}function S(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<
1400 1400 e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a}function $(a,b,c){na.innerHTML="<span "+b+">";b=na.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function A(a,b){try{a.addClass(b)}catch(c){}}function ba(a,b,c,d,e){a instanceof B||(a=B(a));for(var f=/\S+/,g=0,h=a.length;g<h;g++){var k=a[g];k.nodeType===Ma&&k.nodeValue.match(f)&&Mc(k,a[g]=v.document.createElement("span"))}var l=s(a,b,a,c,d,e);ba.$$addScopeClass(a);var m=null;return function(b,
1401 1401 c,d){qb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var f=d.parentBoundTranscludeFn,g=d.transcludeControllers;d=d.futureParentElement;f&&f.$$boundTransclude&&(f=f.$$boundTransclude);m||(m=(d=d&&d[0])?"foreignobject"!==va(d)&&ma.call(d).match(/SVG/)?"svg":"html":"html");d="html"!==m?B(ca(m,B("<div>").append(a).html())):c?Oa.clone.call(a):a;if(g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);ba.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function s(a,b,c,d,e,f){function g(a,
1402 1402 c,d,e){var f,k,l,m,n,t,p;if(r)for(p=Array(c.length),m=0;m<h.length;m+=3)f=h[m],p[f]=c[f];else p=c;m=0;for(n=h.length;m<n;)k=p[h[m++]],c=h[m++],f=h[m++],c?(c.scope?(l=a.$new(),ba.$$addScopeInfo(B(k),l)):l=a,t=c.transcludeOnThisElement?ka(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?ka(a,b):null,c(f,l,k,d,t)):f&&f(a,k.childNodes,void 0,e)}for(var h=[],k,l,m,n,r,t=0;t<a.length;t++){k=new S;l=x(a[t],[],k,0===t?d:void 0,e);(f=l.length?Ba(l,a[t],k,b,c,null,[],[],f):null)&&f.scope&&ba.$$addScopeClass(k.$$element);
1403 1403 k=f&&f.terminal||!(m=a[t].childNodes)||!m.length?null:s(m,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||k)h.push(t,f,k),n=!0,r=r||f;f=null}return n?g:null}function ka(a,b,c){function d(e,f,g,h,k){e||(e=a.$new(!1,k),e.$$transcluded=!0);return b(e,f,{parentBoundTranscludeFn:c,transcludeControllers:g,futureParentElement:h})}var e=d.$$slots=T(),f;for(f in b.$$slots)e[f]=b.$$slots[f]?ka(a,b.$$slots[f],c):null;return d}function x(a,b,c,d,e){var h=c.$attr,k;switch(a.nodeType){case 1:la(b,
1404 1404 xa(va(a)),"E",d,e);for(var l,m,n,t=a.attributes,r=0,p=t&&t.length;r<p;r++){var I=!1,D=!1;l=t[r];k=l.name;m=V(l.value);l=xa(k);if(n=ya.test(l))k=k.replace(Vc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});(l=l.match(Aa))&&Q(l[1])&&(I=k,D=k.substr(0,k.length-5)+"end",k=k.substr(0,k.length-6));l=xa(k.toLowerCase());h[l]=k;if(n||!c.hasOwnProperty(l))c[l]=m,Rc(a,l)&&(c[l]=!0);fa(a,b,m,l,n);la(b,l,"A",d,e,I,D)}a=a.className;G(a)&&(a=a.animVal);if(F(a)&&""!==a)for(;k=g.exec(a);)l=xa(k[2]),
1405 1405 la(b,l,"C",d,e)&&(c[l]=V(k[3])),a=a.substr(k.index+k[0].length);break;case Ma:if(11===Ca)for(;a.parentNode&&a.nextSibling&&a.nextSibling.nodeType===Ma;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);X(b,a.nodeValue);break;case 8:try{if(k=f.exec(a.nodeValue))l=xa(k[1]),la(b,l,"M",d,e)&&(c[l]=V(k[2]))}catch(J){}}b.sort(Y);return b}function Wc(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ga("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&
1406 1406 e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return B(d)}function Xc(a,b,c){return function(d,e,f,g,h){e=Wc(e[0],b,c);return a(d,e,f,g,h)}}function Yb(a,b,c,d,e,f){var g;return a?ba(b,c,d,e,f):function(){g||(g=ba(b,c,d,e,f),b=c=f=null);return g.apply(this,arguments)}}function Ba(a,b,d,e,f,g,h,k,l){function m(a,b,c,d){if(a){c&&(a=Xc(a,c,d));a.require=A.require;a.directiveName=M;if(D===A||A.$$isolateScope)a=ha(a,{isolateScope:!0});h.push(a)}if(b){c&&(b=Xc(b,c,d));
1407 1407 b.require=A.require;b.directiveName=M;if(D===A||A.$$isolateScope)b=ha(b,{isolateScope:!0});k.push(b)}}function n(a,c,e,f,g){function l(a,b,c,d){var e;Ya(a)||(d=c,c=b,b=a,a=void 0);H&&(e=u);c||(c=H?z.parent():z);if(d){var f=g.$$slots[d];if(f)return f(a,b,e,c,$);if(y(f))throw ga("noslot",d,wa(z));}else return g(a,b,e,c,$)}var m,t,p,A,w,u,L,z;b===e?(f=d,z=d.$$element):(z=B(e),f=new S(z,d));w=c;D?A=c.$new(!0):r&&(w=c.$parent);g&&(L=l,L.$$boundTransclude=g,L.isSlotFilled=function(a){return!!g.$$slots[a]});
1408 1408 I&&(u=O(z,f,L,I,A,c,D));D&&(ba.$$addScopeInfo(z,A,!0,!(J&&(J===D||J===D.$$originalDirective))),ba.$$addScopeClass(z,!0),A.$$isolateBindings=D.$$isolateBindings,t=ia(c,f,A,A.$$isolateBindings,D),t.removeWatches&&A.$on("$destroy",t.removeWatches));for(m in u){t=I[m];p=u[m];var Xb=t.$$bindings.bindToController;p.bindingInfo=p.identifier&&Xb?ia(w,f,p.instance,Xb,t):{};var M=p();M!==p.instance&&(p.instance=M,z.data("$"+t.name+"Controller",M),p.bindingInfo.removeWatches&&p.bindingInfo.removeWatches(),p.bindingInfo=
1409 1409 ia(w,f,p.instance,Xb,t))}q(I,function(a,b){var c=a.require;a.bindToController&&!K(c)&&G(c)&&R(u[b].instance,gb(b,c,z,u))});q(u,function(a){var b=a.instance;E(b.$onChanges)&&b.$onChanges(a.bindingInfo.initialChanges);E(b.$onInit)&&b.$onInit();E(b.$onDestroy)&&w.$on("$destroy",function(){b.$onDestroy()})});m=0;for(t=h.length;m<t;m++)p=h[m],ja(p,p.isolateScope?A:c,z,f,p.require&&gb(p.directiveName,p.require,z,u),L);var $=c;D&&(D.template||null===D.templateUrl)&&($=A);a&&a($,e.childNodes,void 0,g);for(m=
1410 1410 k.length-1;0<=m;m--)p=k[m],ja(p,p.isolateScope?A:c,z,f,p.require&&gb(p.directiveName,p.require,z,u),L);q(u,function(a){a=a.instance;E(a.$postLink)&&a.$postLink()})}l=l||{};for(var t=-Number.MAX_VALUE,r=l.newScopeDirective,I=l.controllerDirectives,D=l.newIsolateScopeDirective,J=l.templateDirective,w=l.nonTlbTranscludeDirective,u=!1,L=!1,H=l.hasElementTranscludeDirective,z=d.$$element=B(b),A,M,$,s=e,Sa,ka=!1,C=!1,v,F=0,Ba=a.length;F<Ba;F++){A=a[F];var P=A.$$start,Q=A.$$end;P&&(z=Wc(b,P,Q));$=void 0;
1411 1411 if(t>A.priority)break;if(v=A.scope)A.templateUrl||(G(v)?(W("new/isolated scope",D||r,A,z),D=A):W("new/isolated scope",D,A,z)),r=r||A;M=A.name;if(!ka&&(A.replace&&(A.templateUrl||A.template)||A.transclude&&!A.$$tlb)){for(v=F+1;ka=a[v++];)if(ka.transclude&&!ka.$$tlb||ka.replace&&(ka.templateUrl||ka.template)){C=!0;break}ka=!0}!A.templateUrl&&A.controller&&(v=A.controller,I=I||T(),W("'"+M+"' controller",I[M],A,z),I[M]=A);if(v=A.transclude)if(u=!0,A.$$tlb||(W("transclusion",w,A,z),w=A),"element"==v)H=
1412 1412 !0,t=A.priority,$=z,z=d.$$element=B(ba.$$createComment(M,d[M])),b=z[0],da(f,za.call($,0),b),$[0].$$parentNode=$[0].parentNode,s=Yb(C,$,e,t,g&&g.name,{nonTlbTranscludeDirective:w});else{var la=T();$=B(Vb(b)).contents();if(G(v)){$=[];var Y=T(),X=T();q(v,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a;Y[a]=b;la[b]=null;X[b]=c});q(z.contents(),function(a){var b=Y[xa(va(a))];b?(X[b]=!0,la[b]=la[b]||[],la[b].push(a)):$.push(a)});q(X,function(a,b){if(!a)throw ga("reqslot",b);});for(var Z in la)la[Z]&&
1413 1413 (la[Z]=Yb(C,la[Z],e))}z.empty();s=Yb(C,$,e,void 0,void 0,{needsNewScope:A.$$isolateScope||A.$$newScope});s.$$slots=la}if(A.template)if(L=!0,W("template",J,A,z),J=A,v=E(A.template)?A.template(z,d):A.template,v=ta(v),A.replace){g=A;$=Tb.test(v)?Yc(ca(A.templateNamespace,V(v))):[];b=$[0];if(1!=$.length||1!==b.nodeType)throw ga("tplrt",M,"");da(f,z,b);Ba={$attr:{}};v=x(b,[],Ba);var ea=a.splice(F+1,a.length-(F+1));(D||r)&&Zc(v,D,r);a=a.concat(v).concat(ea);U(d,Ba);Ba=a.length}else z.html(v);if(A.templateUrl)L=
1414 1414 !0,W("template",J,A,z),J=A,A.replace&&(g=A),n=aa(a.splice(F,a.length-F),z,d,f,u&&s,h,k,{controllerDirectives:I,newScopeDirective:r!==A&&r,newIsolateScopeDirective:D,templateDirective:J,nonTlbTranscludeDirective:w}),Ba=a.length;else if(A.compile)try{Sa=A.compile(z,d,s),E(Sa)?m(null,Sa,P,Q):Sa&&m(Sa.pre,Sa.post,P,Q)}catch(fa){c(fa,wa(z))}A.terminal&&(n.terminal=!0,t=Math.max(t,A.priority))}n.scope=r&&!0===r.scope;n.transcludeOnThisElement=u;n.templateOnThisElement=L;n.transclude=s;l.hasElementTranscludeDirective=
1415 1415 H;return n}function gb(a,b,c,d){var e;if(F(b)){var f=b.match(k);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e=g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw ga("ctreq",b,a);}else if(K(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=gb(a,b[g],c,d);else G(b)&&(e={},q(b,function(b,f){e[f]=gb(a,b,c,d)}));return e||null}function O(a,b,c,d,e,f,g){var h=T(),k;for(k in d){var l=d[k],m={$scope:l===g||l.$$isolateScope?e:f,
1416 1416 $element:a,$attrs:b,$transclude:c},n=l.controller;"@"==n&&(n=b[l.name]);m=z(n,m,!0,l.controllerAs);h[l.name]=m;a.data("$"+l.name+"Controller",m.instance)}return h}function Zc(a,b,c){for(var d=0,e=a.length;d<e;d++)a[d]=Pb(a[d],{$$isolateScope:b,$$newScope:c})}function la(b,f,g,h,k,l,m){if(f===k)return null;k=null;if(e.hasOwnProperty(f)){var n;f=a.get(f+"Directive");for(var t=0,r=f.length;t<r;t++)try{if(n=f[t],(y(h)||h>n.priority)&&-1!=n.restrict.indexOf(g)){l&&(n=Pb(n,{$$start:l,$$end:m}));if(!n.$$bindings){var I=
1417 1417 n,D=n,A=n.name,J={isolateScope:null,bindToController:null};G(D.scope)&&(!0===D.bindToController?(J.bindToController=d(D.scope,A,!0),J.isolateScope={}):J.isolateScope=d(D.scope,A,!1));G(D.bindToController)&&(J.bindToController=d(D.bindToController,A,!0));if(G(J.bindToController)){var w=D.controller,z=D.controllerAs;if(!w)throw ga("noctrl",A);if(!Uc(w,z))throw ga("noident",A);}var u=I.$$bindings=J;G(u.isolateScope)&&(n.$$isolateBindings=u.isolateScope)}b.push(n);k=n}}catch(L){c(L)}}return k}function Q(b){if(e.hasOwnProperty(b))for(var c=
1418 1418 a.get(b+"Directive"),d=0,f=c.length;d<f;d++)if(b=c[d],b.multiElement)return!0;return!1}function U(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,f){"class"==f?(A(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function aa(a,b,c,d,e,f,
1419 1419 g,h){var k=[],l,m,t=b[0],p=a.shift(),r=Pb(p,{templateUrl:null,transclude:null,replace:null,$$originalDirective:p}),I=E(p.templateUrl)?p.templateUrl(b,c):p.templateUrl,D=p.templateNamespace;b.empty();n(I).then(function(n){var J,w;n=ta(n);if(p.replace){n=Tb.test(n)?Yc(ca(D,V(n))):[];J=n[0];if(1!=n.length||1!==J.nodeType)throw ga("tplrt",p.name,I);n={$attr:{}};da(d,b,J);var z=x(J,[],n);G(p.scope)&&Zc(z,!0);a=z.concat(a);U(c,n)}else J=t,b.html(n);a.unshift(r);l=Ba(a,J,c,e,b,p,f,g,h);q(d,function(a,c){a==
1420 1420 J&&(d[c]=b[0])});for(m=s(b[0].childNodes,e);k.length;){n=k.shift();w=k.shift();var u=k.shift(),L=k.shift(),z=b[0];if(!n.$$destroyed){if(w!==t){var S=w.className;h.hasElementTranscludeDirective&&p.replace||(z=Vb(J));da(u,B(w),z);A(B(z),S)}w=l.transcludeOnThisElement?ka(n,l.transclude,L):L;l(m,n,z,d,w)}}k=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(k?k.push(b,c,d,a):(l.transcludeOnThisElement&&(a=ka(b,l.transclude,e)),l(m,b,c,d,a)))}}function Y(a,b){var c=b.priority-a.priority;return 0!==
1421 1421 c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function W(a,b,c,d){function e(a){return a?" (module: "+a+")":""}if(b)throw ga("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),a,wa(d));}function X(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&ba.$$addBindingClass(a);return function(a,c){var e=c.parent();b||ba.$$addBindingClass(e);ba.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function ca(a,b){a=
1422 1422 P(a||"html");switch(a){case "svg":case "math":var c=v.document.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function ea(a,b){if("srcdoc"==b)return I.HTML;var c=va(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return I.RESOURCE_URL}function fa(a,c,d,e,f){var g=ea(a,e);f=h[e]||f;var k=b(d,!0,g,f);if(k){if("multiple"===e&&"select"===va(a))throw ga("selmulti",wa(a));c.push({priority:100,compile:function(){return{pre:function(a,
1423 1423 c,h){c=h.$$observers||(h.$$observers=T());if(l.test(e))throw ga("nodomevents");var m=h[e];m!==d&&(k=m&&b(m,!0,g,f),d=m);k&&(h[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function da(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=
1424 1424 c);break}f&&f.replaceChild(c,d);a=v.document.createDocumentFragment();for(g=0;g<e;g++)a.appendChild(b[g]);B.hasData(d)&&(B.data(c,B.data(d)),B(d).off("$destroy"));B.cleanData(a.querySelectorAll("*"));for(g=1;g<e;g++)delete b[g];b[0]=c;b.length=1}function ha(a,b){return R(function(){return a.apply(null,arguments)},a,b)}function ja(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,wa(d))}}function ia(a,c,d,e,f){function g(b,c,e){E(d.$onChanges)&&c!==e&&(Z||(a.$$postDigest(L),Z=[]),m||(m={},Z.push(h)),m[b]&&
1425 1425 (e=m[b].previousValue),m[b]=new Db(e,c))}function h(){d.$onChanges(m);m=void 0}var k=[],l={},m;q(e,function(e,h){var m=e.attrName,n=e.optional,p,r,I,D;switch(e.mode){case "@":n||ua.call(c,m)||(d[h]=c[m]=void 0);c.$observe(m,function(a){if(F(a)||Da(a))g(h,a,d[h]),d[h]=a});c.$$observers[m].$$scope=a;p=c[m];F(p)?d[h]=b(p)(a):Da(p)&&(d[h]=p);l[h]=new Db(Zb,d[h]);break;case "=":if(!ua.call(c,m)){if(n)break;c[m]=void 0}if(n&&!c[m])break;r=t(c[m]);D=r.literal?pa:function(a,b){return a===b||a!==a&&b!==b};
1426 1426 I=r.assign||function(){p=d[h]=r(a);throw ga("nonassign",c[m],m,f.name);};p=d[h]=r(a);n=function(b){D(b,d[h])||(D(b,p)?I(a,b=d[h]):d[h]=b);return p=b};n.$stateful=!0;n=e.collection?a.$watchCollection(c[m],n):a.$watch(t(c[m],n),null,r.literal);k.push(n);break;case "<":if(!ua.call(c,m)){if(n)break;c[m]=void 0}if(n&&!c[m])break;r=t(c[m]);d[h]=r(a);l[h]=new Db(Zb,d[h]);n=a.$watch(r,function(a,b){a===b&&(b=d[h]);g(h,a,b);d[h]=a},r.literal);k.push(n);break;case "&":r=c.hasOwnProperty(m)?t(c[m]):C;if(r===
1427 1427 C&&n)break;d[h]=function(b){return r(a,b)}}});return{initialChanges:l,removeWatches:k.length&&function(){for(var a=0,b=k.length;a<b;++a)k[a]()}}}var oa=/^\w/,na=v.document.createElement("div"),qa=r,Z;S.prototype={$normalize:xa,$addClass:function(a){a&&0<a.length&&J.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&J.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=$c(a,b);c&&c.length&&J.addClass(this.$$element,c);(c=$c(b,a))&&c.length&&J.removeClass(this.$$element,
1428 1428 c)},$set:function(a,b,d,e){var f=Rc(this.$$element[0],a),g=ad[a],h=a;f?(this.$$element.prop(a,b),e=f):g&&(this[g]=b,h=g);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=zc(a,"-"));f=va(this.$$element);if("a"===f&&("href"===a||"xlinkHref"===a)||"img"===f&&"src"===a)this[a]=b=D(b,"src"===a);else if("img"===f&&"srcset"===a){for(var f="",g=V(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(g)?k:/(,)/,g=g.split(k),k=Math.floor(g.length/2),l=0;l<k;l++)var m=2*l,f=f+D(V(g[m]),!0),f=
1429 1429 f+(" "+V(g[m+1]));g=V(g[2*l]).split(/\s/);f+=D(V(g[0]),!0);2===g.length&&(f+=" "+V(g[1]));this[a]=b=f}!1!==d&&(null===b||y(b)?this.$$element.removeAttr(e):oa.test(e)?this.$$element.attr(e,b):$(this.$$element[0],e,b));(a=this.$$observers)&&q(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=T()),e=d[a]||(d[a]=[]);e.push(b);u.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||y(c[a])||b(c[a])});return function(){Za(e,b)}}};var ra=b.startSymbol(),
1430 1430 sa=b.endSymbol(),ta="{{"==ra&&"}}"==sa?Xa:function(a){return a.replace(/\{\{/g,ra).replace(/}}/g,sa)},ya=/^ngAttr[A-Z]/,Aa=/^(.+)Start$/;ba.$$addBindingInfo=m?function(a,b){var c=a.data("$binding")||[];K(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:C;ba.$$addBindingClass=m?function(a){A(a,"ng-binding")}:C;ba.$$addScopeInfo=m?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:C;ba.$$addScopeClass=m?function(a,b){A(a,b?"ng-isolate-scope":"ng-scope")}:C;ba.$$createComment=
1431 1431 function(a,b){var c="";m&&(c=" "+(a||"")+": "+(b||"")+" ");return v.document.createComment(c)};return ba}]}function Db(a,b){this.previousValue=a;this.currentValue=b}function xa(a){return cb(a.replace(Vc,""))}function $c(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f<c.length;f++){for(var g=c[f],h=0;h<e.length;h++)if(g==e[h])continue a;d+=(0<d.length?" ":"")+g}return d}function Yc(a){a=B(a);var b=a.length;if(1>=b)return a;for(;b--;)8===a[b].nodeType&&Zf.call(a,b,1);return a}function Uc(a,
1432 1432 b){if(b&&F(b))return b;if(F(a)){var d=bd.exec(a);if(d)return d[3]}}function ef(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,c){Qa(b,"controller");G(b)?R(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!G(a.$scope))throw O("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,n,m;h=!0===h;k&&F(k)&&(m=k);if(F(f)){k=f.match(bd);if(!k)throw $f("ctrlfmt",f);n=k[1];m=
1433 1433 m||k[3];f=a.hasOwnProperty(n)?a[n]:Bc(g.$scope,n,!0)||(b?Bc(c,n,!0):void 0);Pa(f,n,!0)}if(h)return h=(K(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),m&&e(g,m,l,n||f.name),R(function(){var a=d.invoke(f,l,g,n);a!==l&&(G(a)||E(a))&&(l=a,m&&e(g,m,l,n||f.name));return l},{instance:l,identifier:m});l=d.instantiate(f,g,n);m&&e(g,m,l,n||f.name);return l}}]}function ff(){this.$get=["$window",function(a){return B(a.document)}]}function gf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,
1434 1434 arguments)}}]}function $b(a){return G(a)?fa(a)?a.toISOString():ab(a):a}function mf(){this.$get=function(){return function(a){if(!a)return"";var b=[];pc(a,function(a,c){null===a||y(a)||(K(a)?q(a,function(a){b.push(ja(c)+"="+ja($b(a)))}):b.push(ja(c)+"="+ja($b(a))))});return b.join("&")}}}function nf(){this.$get=function(){return function(a){function b(a,e,f){null===a||y(a)||(K(a)?q(a,function(a,c){b(a,e+"["+(G(a)?c:"")+"]")}):G(a)&&!fa(a)?pc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ja(e)+
1435 1435 "="+ja($b(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function ac(a,b){if(F(a)){var d=a.replace(ag,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(cd))||(c=(c=d.match(bg))&&cg[c[0]].test(d));c&&(a=uc(d))}}return a}function dd(a){var b=T(),d;F(a)?q(a.split("\n"),function(a){d=a.indexOf(":");var e=P(V(a.substr(0,d)));a=V(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):G(a)&&q(a,function(a,d){var f=P(d),g=V(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function ed(a){var b;
1436 1436 return function(d){b||(b=dd(a));return d?(d=b[P(d)],void 0===d&&(d=null),d):b}}function fd(a,b,d,c){if(E(c))return c(a,b,d);q(c,function(c){a=c(a,b,d)});return a}function lf(){var a=this.defaults={transformResponse:[ac],transformRequest:[function(a){return G(a)&&"[object File]"!==ma.call(a)&&"[object Blob]"!==ma.call(a)&&"[object FormData]"!==ma.call(a)?ab(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ha(bc),put:ha(bc),patch:ha(bc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",
1437 1437 paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return x(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return x(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function n(b){function c(a){var b=R({},a);b.data=fd(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};q(a,function(a,
1438 1438 e){E(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!G(b))throw O("$http")("badreq",b);if(!F(b.url))throw O("$http")("badreq",b.url);var f=R({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c=a.headers,d=R({},b.headers),f,g,h,c=R({},c.common,c[P(b.method)]);a:for(f in c){g=P(f);for(h in d)if(P(h)===g)continue a;d[f]=c[f]}return e(d,ha(b))}(b);f.method=sb(f.method);f.paramSerializer=F(f.paramSerializer)?
1439 1439 l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=fd(b.data,ed(d),void 0,b.transformRequest);y(e)&&q(d,function(a,b){"content-type"===P(b)&&delete d[b]});y(b.withCredentials)&&!y(a.withCredentials)&&(b.withCredentials=a.withCredentials);return m(b,e).then(c,c)},void 0],h=k.when(f);for(q(M,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var n=g.shift(),
1440 1440 h=h.then(b,n)}d?(h.success=function(a){Pa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Pa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=gd("success"),h.error=gd("error"));return h}function m(c,d){function g(a){if(a){var c={};q(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function l(a,c,d,e){function f(){m(c,a,d,e)}L&&(200<=a&&300>a?L.put(A,[a,c,dd(d),
1441 1441 e]):L.remove(A));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function m(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?J.resolve:J.reject)({data:a,status:b,headers:ed(d),config:c,statusText:e})}function u(a){m(a.data,a.status,ha(a.headers()),a.statusText)}function I(){var a=n.pendingRequests.indexOf(c);-1!==a&&n.pendingRequests.splice(a,1)}var J=k.defer(),D=J.promise,L,S,M=c.headers,A=r(c.url,c.paramSerializer(c.params));n.pendingRequests.push(c);D.then(I,I);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&
1442 1442 "JSONP"!==c.method||(L=G(c.cache)?c.cache:G(a.cache)?a.cache:N);L&&(S=L.get(A),x(S)?S&&E(S.then)?S.then(u,u):K(S)?m(S[1],S[0],ha(S[2]),S[3]):m(S,200,{},"OK"):L.put(A,D));y(S)&&((S=hd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(M[c.xsrfHeaderName||a.xsrfHeaderName]=S),e(c.method,A,d,l,M,c.timeout,c.withCredentials,c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers)));return D}function r(a,b){0<b.length&&(a+=(-1==a.indexOf("?")?"?":"&")+b);return a}var N=g("$http");a.paramSerializer=
1443 1443 F(a.paramSerializer)?l.get(a.paramSerializer):a.paramSerializer;var M=[];q(c,function(a){M.unshift(F(a)?l.get(a):l.invoke(a))});n.pendingRequests=[];(function(a){q(arguments,function(a){n[a]=function(b,c){return n(R({},c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){q(arguments,function(a){n[a]=function(b,c,d){return n(R({},d||{},{method:a,url:b,data:c}))}})})("post","put","patch");n.defaults=a;return n}]}function pf(){this.$get=function(){return function(){return new v.XMLHttpRequest}}}
1444 1444 function of(){this.$get=["$browser","$window","$document","$xhrFactory",function(a,b,d,c){return dg(a,c,a.defer,b.angular.callbacks,d[0])}]}function dg(a,b,d,c,e){function f(a,b,d){var f=e.createElement("script"),n=null;f.type="text/javascript";f.src=a;f.async=!0;n=function(a){f.removeEventListener("load",n,!1);f.removeEventListener("error",n,!1);e.body.removeChild(f);f=null;var g=-1,N="unknown";a&&("load"!==a.type||c[b].called||(a={type:"error"}),N=a.type,g="error"===a.type?404:200);d&&d(g,N)};f.addEventListener("load",
1445 1445 n,!1);f.addEventListener("error",n,!1);e.body.appendChild(f);return n}return function(e,h,k,l,n,m,r,N,M,w){function p(){z&&z();u&&u.abort()}function H(b,c,e,f,g){x(J)&&d.cancel(J);z=u=null;b(c,e,f,g);a.$$completeOutstandingRequest(C)}a.$$incOutstandingRequestCount();h=h||a.url();if("jsonp"==P(e)){var t="_"+(c.counter++).toString(36);c[t]=function(a){c[t].data=a;c[t].called=!0};var z=f(h.replace("JSON_CALLBACK","angular.callbacks."+t),t,function(a,b){H(l,a,c[t].data,"",b);c[t]=C})}else{var u=b(e,h);
1446 1446 u.open(e,h,!0);q(n,function(a,b){x(a)&&u.setRequestHeader(b,a)});u.onload=function(){var a=u.statusText||"",b="response"in u?u.response:u.responseText,c=1223===u.status?204:u.status;0===c&&(c=b?200:"file"==ra(h).protocol?404:0);H(l,c,b,u.getAllResponseHeaders(),a)};e=function(){H(l,-1,null,null,"")};u.onerror=e;u.onabort=e;q(M,function(a,b){u.addEventListener(b,a)});q(w,function(a,b){u.upload.addEventListener(b,a)});r&&(u.withCredentials=!0);if(N)try{u.responseType=N}catch(I){if("json"!==N)throw I;
1447 1447 }u.send(y(k)?null:k)}if(0<m)var J=d(p,m);else m&&E(m.then)&&m.then(p)}}function jf(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a};this.endSymbol=function(a){return a?(b=a,this):b};this.$get=["$parse","$exceptionHandler","$sce",function(d,c,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(m,a).replace(r,b)}function h(a,b,c,d){var e;return e=a.$watch(function(a){e();return d(a)},b,c)}function k(f,k,m,r){function H(a){try{var b=a;a=m?e.getTrusted(m,b):e.valueOf(b);
1448 1448 var d;if(r&&!x(a))d=a;else if(null==a)d="";else{switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=ab(a)}d=a}return d}catch(g){c(Ja.interr(f,g))}}if(!f.length||-1===f.indexOf(a)){var t;k||(k=g(f),t=da(k),t.exp=f,t.expressions=[],t.$$watchDelegate=h);return t}r=!!r;var z,u,I=0,J=[],D=[];t=f.length;for(var L=[],S=[];I<t;)if(-1!=(z=f.indexOf(a,I))&&-1!=(u=f.indexOf(b,z+l)))I!==z&&L.push(g(f.substring(I,z))),I=f.substring(z+l,u),J.push(I),D.push(d(I,H)),I=u+n,S.push(L.length),L.push("");
1449 1449 else{I!==t&&L.push(g(f.substring(I)));break}m&&1<L.length&&Ja.throwNoconcat(f);if(!k||J.length){var q=function(a){for(var b=0,c=J.length;b<c;b++){if(r&&y(a[b]))return;L[S[b]]=a[b]}return L.join("")};return R(function(a){var b=0,d=J.length,e=Array(d);try{for(;b<d;b++)e[b]=D[b](a);return q(e)}catch(g){c(Ja.interr(f,g))}},{exp:f,expressions:J,$$watchDelegate:function(a,b){var c;return a.$watchGroup(D,function(d,e){var f=q(d);E(b)&&b.call(this,f,d!==e?c:f,a);c=f})}})}}var l=a.length,n=b.length,m=new RegExp(a.replace(/./g,
1450 1450 f),"g"),r=new RegExp(b.replace(/./g,f),"g");k.startSymbol=function(){return a};k.endSymbol=function(){return b};return k}]}function kf(){this.$get=["$rootScope","$window","$q","$$q","$browser",function(a,b,d,c,e){function f(f,k,l,n){function m(){r?f.apply(null,N):f(p)}var r=4<arguments.length,N=r?za.call(arguments,4):[],q=b.setInterval,w=b.clearInterval,p=0,H=x(n)&&!n,t=(H?c:d).defer(),z=t.promise;l=x(l)?l:0;z.$$intervalId=q(function(){H?e.defer(m):a.$evalAsync(m);t.notify(p++);0<l&&p>=l&&(t.resolve(p),
1451 1451 w(z.$$intervalId),delete g[z.$$intervalId]);H||a.$apply()},k);g[z.$$intervalId]=t;return z}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function cc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=ob(a[b]);return a.join("/")}function id(a,b){var d=ra(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=X(d.port)||eg[d.protocol]||null}function jd(a,b){var d="/"!==a.charAt(0);
1452 1452 d&&(a="/"+a);var c=ra(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=xc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function na(a,b){if(0===b.indexOf(a))return b.substr(a.length)}function Ia(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function hb(a){return a.replace(/(#.+)|#$/,"$1")}function dc(a,b,d){this.$$html5=!0;d=d||"";id(a,this);this.$$parse=function(a){var d=na(b,
1453 1453 a);if(!F(d))throw Eb("ipthprfx",a,b);jd(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Rb(this.$$search),d=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;x(f=na(a,c))?(g=f,g=x(f=na(d,f))?b+(na("/",f)||f):a+g):x(f=na(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function ec(a,b,d){id(a,this);
1454 1454 this.$$parse=function(c){var e=na(a,c)||na(b,c),f;y(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",y(e)&&(a=c,this.replace())):(f=na(d,e),y(f)&&(f=e));jd(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=Rb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=
1455 1455 function(b,d){return Ia(a)==Ia(b)?(this.$$parse(b),!0):!1}}function kd(a,b,d){this.$$html5=!0;ec.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ia(c)?f=c:(g=na(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Rb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Fb(a){return function(){return this[a]}}function ld(a,
1456 1456 b){return function(d){if(y(d))return this[a];this[a]=b(d);this.$$compose();return this}}function qf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return x(b)?(a=b,this):a};this.html5Mode=function(a){return Da(a)?(b.enabled=a,this):G(a)?(Da(a.enabled)&&(b.enabled=a.enabled),Da(a.requireBase)&&(b.requireBase=a.requireBase),Da(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,
1457 1457 c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,n;n=c.baseHref();var m=c.url(),r;if(b.enabled){if(!n&&b.requireBase)throw Eb("nobase");r=m.substring(0,m.indexOf("/",m.indexOf("//")+2))+(n||"/");n=e.history?dc:kd}else r=Ia(m),n=ec;var N=r.substr(0,Ia(r).lastIndexOf("/")+1);l=new n(r,N,"#"+a);l.$$parseLinkUrl(m,m);l.$$state=c.state();
1458 1458 var q=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=B(a.target);"a"!==va(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");G(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=ra(h.animVal).href);q.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=
1459 1459 !0))}});hb(l.absUrl())!=hb(m)&&c.url(l.absUrl(),!0);var w=!0;c.onUrlChange(function(a,b){y(na(N,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=hb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(w=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=hb(c.url()),b=hb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(w||
1460 1460 m)w=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function rf(){var a=!0,b=this;this.debugEnabled=function(b){return x(b)?(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&
1461 1461 (a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||C;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];q(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Ta(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===
1462 1462 a||"__proto__"===a)throw ca("isecfld",b);return a}function fg(a){return a+""}function sa(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a.window===a)throw ca("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ca("isecdom",b);if(a===Object)throw ca("isecobj",b);}return a}function md(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a===gg||a===hg||a===ig)throw ca("isecff",b);}}function Gb(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||
1463 1463 a==={}.constructor||a===[].constructor||a===Function.constructor))throw ca("isecaf",b);}function jg(a,b){return"undefined"!==typeof a?a:b}function nd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function aa(a,b){var d,c;switch(a.type){case s.Program:d=!0;q(a.body,function(a){aa(a.expression,b);d=d&&a.expression.constant});a.constant=d;break;case s.Literal:a.constant=!0;a.toWatch=[];break;case s.UnaryExpression:aa(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;
1464 1464 break;case s.BinaryExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:aa(a.test,b);aa(a.alternate,b);aa(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=
1465 1465 !1;a.toWatch=[a];break;case s.MemberExpression:aa(a.object,b);a.computed&&aa(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case s.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];q(a.arguments,function(a){aa(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case s.AssignmentExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;
1466 1466 a.toWatch=[a];break;case s.ArrayExpression:d=!0;c=[];q(a.elements,function(a){aa(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case s.ObjectExpression:d=!0;c=[];q(a.properties,function(a){aa(a.value,b);d=d&&a.value.constant;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant=d;a.toWatch=c;break;case s.ThisExpression:a.constant=!1;a.toWatch=[];break;case s.LocalsExpression:a.constant=!1,a.toWatch=[]}}function od(a){if(1==a.length){a=a[0].expression;
1467 1467 var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function pd(a){return a.type===s.Identifier||a.type===s.MemberExpression}function qd(a){if(1===a.body.length&&pd(a.body[0].expression))return{type:s.AssignmentExpression,left:a.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function rd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===s.ObjectExpression)}function sd(a,
1468 1468 b){this.astBuilder=a;this.$filter=b}function td(a,b){this.astBuilder=a;this.$filter=b}function Hb(a){return"constructor"==a}function fc(a){return E(a.valueOf)?a.valueOf():kg.call(a)}function sf(){var a=T(),b=T(),d={"true":!0,"false":!1,"null":null,undefined:void 0},c,e;this.addLiteral=function(a,b){d[a]=b};this.setIdentifierFns=function(a,b){c=a;e=b;return this};this.$get=["$filter",function(f){function g(c,d,e){var g,k,D;e=e||H;switch(typeof c){case "string":D=c=c.trim();var q=e?b:a;g=q[D];if(!g){":"===
1469 1469 c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2));g=e?p:w;var S=new gc(g);g=(new hc(S,f,g)).parse(c);g.constant?g.$$watchDelegate=r:k?g.$$watchDelegate=g.literal?m:n:g.inputs&&(g.$$watchDelegate=l);e&&(g=h(g));q[D]=g}return N(g,d);case "function":return N(c,d);default:return N(C,d)}}function h(a){function b(c,d,e,f){var g=H;H=!0;try{return a(c,d,e,f)}finally{H=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=h(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&
1470 1470 c<a.inputs.length;++c)a.inputs[c]=h(a.inputs[c]);b.inputs=a.inputs;return b}function k(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=fc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function l(a,b,c,d,e){var f=d.inputs,g;if(1===f.length){var h=k,f=f[0];return a.$watch(function(a){var b=f(a);k(b,h)||(g=d(a,void 0,void 0,[b]),h=b&&fc(b));return g},b,c,e)}for(var l=[],m=[],n=0,r=f.length;n<r;n++)l[n]=k,m[n]=null;return a.$watch(function(a){for(var b=!1,c=0,e=f.length;c<e;c++){var h=f[c](a);
1471 1471 if(b||(b=!k(h,l[c])))m[c]=h,l[c]=h&&fc(h)}b&&(g=d(a,void 0,void 0,m));return g},b,c,e)}function n(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;E(b)&&b.apply(this,arguments);x(a)&&d.$$postDigest(function(){x(f)&&e()})},c)}function m(a,b,c,d){function e(a){var b=!0;q(a,function(a){x(a)||(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;E(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function r(a,b,c,d){var e;
1472 1472 return e=a.$watch(function(a){e();return d(a)},b,c)}function N(a,b){if(!b)return a;var c=a.$$watchDelegate,d=!1,c=c!==m&&c!==n?function(c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}:function(c,d,e,f){e=a(c,d,e,f);c=b(e,c,d);return x(e)?c:e};a.$$watchDelegate&&a.$$watchDelegate!==l?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=l,d=!a.inputs,c.inputs=a.inputs?a.inputs:[a]);return c}var M=Ea().noUnsafeEval,w={csp:M,expensiveChecks:!1,literals:qa(d),isIdentifierStart:E(c)&&c,
1473 1473 isIdentifierContinue:E(e)&&e},p={csp:M,expensiveChecks:!0,literals:qa(d),isIdentifierStart:E(c)&&c,isIdentifierContinue:E(e)&&e},H=!1;g.$$runningExpensiveChecks=function(){return H};return g}]}function uf(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return ud(function(b){a.$evalAsync(b)},b)}]}function vf(){this.$get=["$browser","$exceptionHandler",function(a,b){return ud(function(b){a.defer(b)},b)}]}function ud(a,b){function d(){this.$$state={status:0}}function c(a,b){return function(c){b.call(a,
1474 1474 c)}}function e(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,a(function(){var a,d,e;e=c.pending;c.processScheduled=!1;c.pending=void 0;for(var f=0,g=e.length;f<g;++f){d=e[f][0];a=e[f][c.status];try{E(a)?d.resolve(a(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),b(h)}}}))}function f(){this.promise=new d}var g=O("$q",TypeError);R(d.prototype,{then:function(a,b,c){if(y(a)&&y(b)&&y(c))return this;var d=new f;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,
1475 1475 a,b,c]);0<this.$$state.status&&e(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}});R(f.prototype,{resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(g("qcycle",a)):this.$$resolve(a))},$$resolve:function(a){function d(a){k||(k=!0,h.$$resolve(a))}function f(a){k||(k=!0,h.$$reject(a))}var g,h=this,k=!1;try{if(G(a)||E(a))g=a&&a.then;E(g)?
1476 1476 (this.promise.$$state.status=-1,g.call(a,d,f,c(this,this.notify))):(this.promise.$$state.value=a,this.promise.$$state.status=1,e(this.promise.$$state))}catch(l){f(l),b(l)}},reject:function(a){this.promise.$$state.status||this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;e(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;f<g;f++){e=d[f][0];
1477 1477 a=d[f][3];try{e.notify(E(a)?a(c):c)}catch(h){b(h)}}})}});var h=function(a,b){var c=new f;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{E(c)&&(d=c())}catch(e){return h(e,!1)}return d&&E(d.then)?d.then(function(){return h(a,b)},function(a){return h(a,!1)}):h(a,b)},l=function(a,b,c,d){var e=new f;e.resolve(a);return e.promise.then(b,c,d)},n=function(a){if(!E(a))throw g("norslvr",a);var b=new f;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};n.prototype=
1478 1478 d.prototype;n.defer=function(){var a=new f;a.resolve=c(a,a.resolve);a.reject=c(a,a.reject);a.notify=c(a,a.notify);return a};n.reject=function(a){var b=new f;b.reject(a);return b.promise};n.when=l;n.resolve=l;n.all=function(a){var b=new f,c=0,d=K(a)?[]:{};q(a,function(a,e){c++;l(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return n}function Ef(){this.$get=["$window","$timeout",function(a,
1479 1479 b){var d=a.requestAnimationFrame||a.webkitRequestAnimationFrame,c=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.webkitCancelRequestAnimationFrame,e=!!d,f=e?function(a){var b=d(a);return function(){c(b)}}:function(a){var c=b(a,16.66,!1);return function(){b.cancel(c)}};f.supported=e;return f}]}function tf(){function a(a){function b(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$id=++nb;this.$$ChildScope=
1480 1480 null}b.prototype=a;return b}var b=10,d=O("$rootScope"),c=null,e=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$exceptionHandler","$parse","$browser",function(f,g,h){function k(a){a.currentScope.$$destroyed=!0}function l(a){9===Ca&&(a.$$childHead&&l(a.$$childHead),a.$$nextSibling&&l(a.$$nextSibling));a.$parent=a.$$nextSibling=a.$$prevSibling=a.$$childHead=a.$$childTail=a.$root=a.$$watchers=null}function n(){this.$id=++nb;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=
1481 1481 this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$$isolateBindings=null}function m(a){if(H.$$phase)throw d("inprog",H.$$phase);H.$$phase=a}function r(a,b){do a.$$watchersCount+=b;while(a=a.$parent)}function N(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function s(){}function w(){for(;u.length;)try{u.shift()()}catch(a){f(a)}e=
1482 1482 null}function p(){null===e&&(e=h.defer(function(){H.$apply(w)}))}n.prototype={constructor:n,$new:function(b,c){var d;c=c||this;b?(d=new n,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=a(this)),d=new this.$$ChildScope);d.$parent=c;d.$$prevSibling=c.$$childTail;c.$$childHead?(c.$$childTail.$$nextSibling=d,c.$$childTail=d):c.$$childHead=c.$$childTail=d;(b||c!=this)&&d.$on("$destroy",k);return d},$watch:function(a,b,d,e){var f=g(a);if(f.$$watchDelegate)return f.$$watchDelegate(this,b,d,f,
1483 1483 a);var h=this,k=h.$$watchers,l={fn:b,last:s,get:f,exp:e||a,eq:!!d};c=null;E(b)||(l.fn=C);k||(k=h.$$watchers=[]);k.unshift(l);r(this,1);return function(){0<=Za(k,l)&&r(h,-1);c=null}},$watchGroup:function(a,b){function c(){h=!1;k?(k=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,k=!0;if(!a.length){var l=!0;g.$evalAsync(function(){l&&b(e,e,g)});return function(){l=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});q(a,function(a,
1484 1484 b){var k=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(k)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,g,h;if(!y(e)){if(G(e))if(ya(e))for(f!==m&&(f=m,t=f.length=0,l++),a=e.length,t!==a&&(l++,f.length=t=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(l++,f[b]=g);else{f!==r&&(f=r={},t=0,l++);a=0;for(b in e)ua.call(e,b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(l++,f[b]=g)):(t++,f[b]=g,l++));if(t>
1485 1485 a)for(b in l++,f)ua.call(e,b)||(t--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1<b.length,l=0,n=g(a,c),m=[],r={},p=!0,t=0;return this.$watch(n,function(){p?(p=!1,b(e,e,d)):b(e,h,d);if(k)if(G(e))if(ya(e)){h=Array(e.length);for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)ua.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var a,g,k,l,n,r,p,q,N=b,u,x=[],y,v;m("$digest");h.$$checkUrlChange();this===H&&null!==e&&(h.defer.cancel(e),w());c=null;do{q=!1;
1486 1486 for(u=this;t.length;){try{v=t.shift(),v.scope.$eval(v.expression,v.locals)}catch(C){f(C)}c=null}a:do{if(r=u.$$watchers)for(p=r.length;p--;)try{if(a=r[p])if(n=a.get,(g=n(u))!==(k=a.last)&&!(a.eq?pa(g,k):"number"===typeof g&&"number"===typeof k&&isNaN(g)&&isNaN(k)))q=!0,c=a,a.last=a.eq?qa(g,null):g,l=a.fn,l(g,k===s?g:k,u),5>N&&(y=4-N,x[y]||(x[y]=[]),x[y].push({msg:E(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){q=!1;break a}}catch(F){f(F)}if(!(r=u.$$watchersCount&&
1487 1487 u.$$childHead||u!==this&&u.$$nextSibling))for(;u!==this&&!(r=u.$$nextSibling);)u=u.$parent}while(u=r);if((q||t.length)&&!N--)throw H.$$phase=null,d("infdig",b,x);}while(q||t.length);for(H.$$phase=null;z.length;)try{z.shift()()}catch(B){f(B)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===H&&h.$$applicationDestroyed();r(this,-this.$$watchersCount);for(var b in this.$$listenerCount)N(this,this.$$listenerCount[b],b);a&&a.$$childHead==
1488 1488 this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=C;this.$on=this.$watch=this.$watchGroup=function(){return C};this.$$listeners={};this.$$nextSibling=null;l(this)}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){H.$$phase||
1489 1489 t.length||h.defer(function(){t.length&&H.$digest()});t.push({scope:this,expression:g(a),locals:b})},$$postDigest:function(a){z.push(a)},$apply:function(a){try{m("$apply");try{return this.$eval(a)}finally{H.$$phase=null}}catch(b){f(b)}finally{try{H.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&u.push(b);a=g(a);p()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=
1490 1490 0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,N(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=$a([h],arguments,1),l,n;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(n=d.length;l<n;l++)if(d[l])try{d[l].apply(null,k)}catch(m){f(m)}else d.splice(l,1),l--,n--;if(g)return h.currentScope=null,h;e=e.$parent}while(e);
1491 1491 h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var g=$a([e],arguments,1),h,k;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,g)}catch(l){f(l)}else d.splice(h,1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=
1492 1492 null;return e}};var H=new n,t=H.$$asyncQueue=[],z=H.$$postDigestQueue=[],u=H.$$applyAsyncQueue=[];return H}]}function me(){var a=/^\s*(https?|ftp|mailto|tel|file):/,b=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(b){return x(b)?(a=b,this):a};this.imgSrcSanitizationWhitelist=function(a){return x(a)?(b=a,this):b};this.$get=function(){return function(d,c){var e=c?b:a,f;f=ra(d).href;return""===f||f.match(e)?d:"unsafe:"+f}}}function lg(a){if("self"===a)return a;
1493 1493 if(F(a)){if(-1<a.indexOf("***"))throw ta("iwcard",a);a=vd(a).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+a+"$")}if(Wa(a))return new RegExp("^"+a.source+"$");throw ta("imatcher");}function wd(a){var b=[];x(a)&&q(a,function(a){b.push(lg(a))});return b}function xf(){this.SCE_CONTEXTS=oa;var a=["self"],b=[];this.resourceUrlWhitelist=function(b){arguments.length&&(a=wd(b));return a};this.resourceUrlBlacklist=function(a){arguments.length&&(b=wd(a));return b};this.$get=["$injector",
1494 1494 function(d){function c(a,b){return"self"===a?hd(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw ta("unsafe");};d.has("$sanitize")&&(f=d.get("$sanitize"));var g=e(),h={};h[oa.HTML]=e(g);h[oa.CSS]=e(g);h[oa.URL]=e(g);h[oa.JS]=e(g);h[oa.RESOURCE_URL]=
1495 1495 e(h[oa.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw ta("icontext",a,b);if(null===b||y(b)||""===b)return b;if("string"!==typeof b)throw ta("itype",a);return new c(b)},getTrusted:function(d,e){if(null===e||y(e)||""===e)return e;var g=h.hasOwnProperty(d)?h[d]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(d===oa.RESOURCE_URL){var g=ra(e.toString()),m,r,q=!1;m=0;for(r=a.length;m<r;m++)if(c(a[m],g)){q=!0;break}if(q)for(m=0,r=b.length;m<r;m++)if(c(b[m],
1496 1496 g)){q=!1;break}if(q)return e;throw ta("insecurl",e.toString());}if(d===oa.HTML)return f(e);throw ta("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function wf(){var a=!0;this.enabled=function(b){arguments.length&&(a=!!b);return a};this.$get=["$parse","$sceDelegate",function(b,d){if(a&&8>Ca)throw ta("iequirks");var c=ha(oa);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},
1497 1497 c.valueOf=Xa);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;q(oa,function(a,b){var d=P(b);c[cb("parse_as_"+d)]=function(b){return e(a,b)};c[cb("get_trusted_"+d)]=function(b){return f(a,b)};c[cb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function yf(){this.$get=["$window","$document",function(a,b){var d={},c=!(a.chrome&&a.chrome.app&&a.chrome.app.runtime)&&a.history&&a.history.pushState,
1498 1498 e=X((/android (\d+)/.exec(P((a.navigator||{}).userAgent))||[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},h,k=/^(Moz|webkit|ms)(?=[A-Z])/,l=g.body&&g.body.style,n=!1,m=!1;if(l){for(var r in l)if(n=k.exec(r)){h=n[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");n=!!("transition"in l||h+"Transition"in l);m=!!("animation"in l||h+"Animation"in l);!e||n&&m||(n=F(l.webkitTransition),m=F(l.webkitAnimation))}return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===
1499 1499 a&&11>=Ca)return!1;if(y(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Ea(),vendorPrefix:h,transitions:n,animations:m,android:e}}]}function Af(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;F(g)&&b.get(g)||(g=e.getTrustedResourceUrl(g));var k=d.defaults&&d.defaults.transformResponse;K(k)?k=k.filter(function(a){return a!==ac}):k===ac&&(k=null);return d.get(g,
1500 1500 R({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g,a.data);return a.data},function(a){if(!h)throw mg("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Bf(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];q(a,function(a){var c=ea.element(a).data("$binding");c&&q(c,function(c){d?(new RegExp("(^|\\s)"+
1501 1501 vd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var k=a.querySelectorAll("["+g[h]+"model"+(d?"=":"*=")+'"'+b+'"]');if(k.length)return k}},getLocation:function(){return d.url()},setLocation:function(b){b!==d.url()&&(d.url(b),a.$digest())},whenStable:function(a){b.notifyWhenNoOutstandingRequests(a)}}}]}function Cf(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",
1502 1502 function(a,b,d,c,e){function f(f,k,l){E(f)||(l=k,k=f,f=C);var n=za.call(arguments,3),m=x(l)&&!l,r=(m?c:d).defer(),q=r.promise,s;s=b.defer(function(){try{r.resolve(f.apply(null,n))}catch(b){r.reject(b),e(b)}finally{delete g[q.$$timeoutId]}m||a.$apply()},k);q.$$timeoutId=s;g[s]=r;return q}var g={};f.cancel=function(a){return a&&a.$$timeoutId in g?(g[a.$$timeoutId].reject("canceled"),delete g[a.$$timeoutId],b.defer.cancel(a.$$timeoutId)):!1};return f}]}function ra(a){Ca&&(Y.setAttribute("href",a),a=
1503 1503 Y.href);Y.setAttribute("href",a);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname:"/"+Y.pathname}}function hd(a){a=F(a)?ra(a):a;return a.protocol===xd.protocol&&a.host===xd.host}function Df(){this.$get=da(v)}function yd(a){function b(a){try{return decodeURIComponent(a)}catch(b){return a}}var d=a[0]||{},
1504 1504 c={},e="";return function(){var a,g,h,k,l;a=d.cookie||"";if(a!==e)for(e=a,a=e.split("; "),c={},h=0;h<a.length;h++)g=a[h],k=g.indexOf("="),0<k&&(l=b(g.substring(0,k)),y(c[l])&&(c[l]=b(g.substring(k+1))));return c}}function Hf(){this.$get=yd}function Jc(a){function b(d,c){if(G(d)){var e={};q(d,function(a,c){e[c]=b(c,a)});return e}return a.factory(d+"Filter",c)}this.register=b;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];b("currency",zd);b("date",Ad);b("filter",ng);
1505 1505 b("json",og);b("limitTo",pg);b("lowercase",qg);b("number",Bd);b("orderBy",Cd);b("uppercase",rg)}function ng(){return function(a,b,d){if(!ya(a)){if(null==a)return a;throw O("filter")("notarray",a);}var c;switch(ic(b)){case "function":break;case "boolean":case "null":case "number":case "string":c=!0;case "object":b=sg(b,d,c);break;default:return a}return Array.prototype.filter.call(a,b)}}function sg(a,b,d){var c=G(a)&&"$"in a;!0===b?b=pa:E(b)||(b=function(a,b){if(y(a))return!1;if(null===a||null===b)return a===
1506 1506 b;if(G(b)||G(a)&&!rc(a))return!1;a=P(""+a);b=P(""+b);return-1!==a.indexOf(b)});return function(e){return c&&!G(e)?Ka(e,a.$,b,!1):Ka(e,a,b,d)}}function Ka(a,b,d,c,e){var f=ic(a),g=ic(b);if("string"===g&&"!"===b.charAt(0))return!Ka(a,b.substring(1),d,c);if(K(a))return a.some(function(a){return Ka(a,b,d,c)});switch(f){case "object":var h;if(c){for(h in a)if("$"!==h.charAt(0)&&Ka(a[h],b,d,!0))return!0;return e?!1:Ka(a,b,d,!1)}if("object"===g){for(h in b)if(e=b[h],!E(e)&&!y(e)&&(f="$"===h,!Ka(f?a:a[h],
1507 1507 e,d,f,f)))return!1;return!0}return d(a,b);case "function":return!1;default:return d(a,b)}}function ic(a){return null===a?"null":typeof a}function zd(a){var b=a.NUMBER_FORMATS;return function(a,c,e){y(c)&&(c=b.CURRENCY_SYM);y(e)&&(e=b.PATTERNS[1].maxFrac);return null==a?a:Dd(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,e).replace(/\u00A4/g,c)}}function Bd(a){var b=a.NUMBER_FORMATS;return function(a,c){return null==a?a:Dd(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,c)}}function tg(a){var b=0,d,c,e,f,g;-1<
1508 1508 (c=a.indexOf(Ed))&&(a=a.replace(Ed,""));0<(e=a.search(/e/i))?(0>c&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==jc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==jc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Fd&&(d=d.splice(0,Fd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function ug(a,b,d,c){var e=a.d,f=e.length-a.i;b=y(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0<d){e.splice(Math.max(a.i,d));for(var g=d;g<e.length;g++)e[g]=0}else for(f=
1509 1509 Math.max(0,f),a.i=1,e.length=Math.max(1,d=b+1),e[0]=0,g=1;g<d;g++)e[g]=0;if(5<=c)if(0>d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;f<Math.max(0,b);f++)e.push(0);if(b=e.reduceRight(function(a,b,c,d){b+=a;d[c]=b%10;return Math.floor(b/10)},0))e.unshift(b),a.i++}function Dd(a,b,d,c,e){if(!F(a)&&!Q(a)||isNaN(a))return"";var f=!isFinite(a),g=!1,h=Math.abs(a)+"",k="";if(f)k="\u221e";else{g=tg(h);ug(g,e,b.minFrac,b.maxFrac);k=g.d;h=g.i;e=g.e;f=[];for(g=k.reduce(function(a,
1510 1510 b){return a&&!b},!0);0>h;)k.unshift(0),h++;0<h?f=k.splice(h):(f=k,k=[0]);h=[];for(k.length>=b.lgSize&&h.unshift(k.splice(-b.lgSize).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Ib(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length<b;)a=jc+a;d&&(a=a.substr(a.length-b));return e+a}function W(a,b,d,c,e){d=
1511 1511 d||0;return function(f){f=f["get"+a]();if(0<d||f>-d)f+=d;0===f&&-12==d&&(f=12);return Ib(f,b,c,e)}}function ib(a,b,d){return function(c,e){var f=c["get"+a](),g=sb((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Gd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Hd(a){return function(b){var d=Gd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Ib(b,a)}}function kc(a,b){return 0>=a.getFullYear()?
1512 1512 b.ERAS[0]:b.ERAS[1]}function Ad(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=X(b[9]+b[10]),g=X(b[9]+b[11]));h.call(a,X(b[1]),X(b[2])-1,X(b[3]));f=X(b[4]||0)-f;g=X(b[5]||0)-g;h=X(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",h=
1513 1513 [],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;F(c)&&(c=vg.test(c)?X(c):b(c));Q(c)&&(c=new Date(c));if(!fa(c)||!isFinite(c.getTime()))return c;for(;d;)(l=wg.exec(d))?(h=$a(h,l,1),d=h.pop()):(h.push(d),d=null);var n=c.getTimezoneOffset();f&&(n=vc(f,n),c=Qb(c,f,!0));q(h,function(b){k=xg[b];g+=k?k(c,a.DATETIME_FORMATS,n):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function og(){return function(a,b){y(b)&&(b=2);return ab(a,b)}}function pg(){return function(a,b,d){b=Infinity===
1514 1514 Math.abs(Number(b))?Number(b):X(b);if(isNaN(b))return a;Q(a)&&(a=a.toString());if(!K(a)&&!F(a))return a;d=!d||isNaN(d)?0:X(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b),d)}}function Cd(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=Xa;if(E(b))h=b;else if(F(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h,
1515 1515 descending:c*d}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(a,e,f){if(null==a)return a;if(!ya(a))throw O("orderBy")("notarray",a);K(e)||(e=[e]);0===e.length&&(e=["+"]);var g=b(e,f);g.push({get:function(){return{}},descending:f?-1:1});a=Array.prototype.map.call(a,function(a,b){return{value:a,predicateValues:g.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c="string",e="null";else if("string"===c)e=e.toLowerCase();else if("object"===
1516 1516 c)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(rc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;d<e;++d){var c=a.predicateValues[d],f=b.predicateValues[d],q=0;c.type===f.type?c.value!==f.value&&(q=c.value<f.value?-1:1):q=c.type<f.type?-1:1;if(c=q*g[d].descending)break}return c});return a=a.map(function(a){return a.value})}}function La(a){E(a)&&(a={link:a});a.restrict=a.restrict||"AC";return da(a)}function Id(a,
1517 1517 b,d,c,e){var f=this,g=[];f.$error={};f.$$success={};f.$pending=void 0;f.$name=e(b.name||b.ngForm||"")(d);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;f.$$parentForm=Jb;f.$rollbackViewValue=function(){q(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){q(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Qa(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a);a.$$parentForm=f};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];
1518 1518 f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];q(f.$pending,function(b,c){f.$setValidity(c,null,a)});q(f.$error,function(b,c){f.$setValidity(c,null,a)});q(f.$$success,function(b,c){f.$setValidity(c,null,a)});Za(g,a);a.$$parentForm=Jb};Jd({ctrl:this,$element:a,set:function(a,b,c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(Za(d,c),0===d.length&&delete a[b])},$animate:c});f.$setDirty=function(){c.removeClass(a,Ua);
1519 1519 c.addClass(a,Kb);f.$dirty=!0;f.$pristine=!1;f.$$parentForm.$setDirty()};f.$setPristine=function(){c.setClass(a,Ua,Kb+" ng-submitted");f.$dirty=!1;f.$pristine=!0;f.$submitted=!1;q(g,function(a){a.$setPristine()})};f.$setUntouched=function(){q(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){c.addClass(a,"ng-submitted");f.$submitted=!0;f.$$parentForm.$setSubmitted()}}function lc(a){a.$formatters.push(function(b){return a.$isEmpty(b)?b:b.toString()})}function jb(a,b,d,c,e,f){var g=P(b[0].type);
1520 1520 if(!e.android){var h=!1;b.on("compositionstart",function(){h=!0});b.on("compositionend",function(){h=!1;l()})}var k,l=function(a){k&&(f.defer.cancel(k),k=null);if(!h){var e=b.val();a=a&&a.type;"password"===g||d.ngTrim&&"false"===d.ngTrim||(e=V(e));(c.$viewValue!==e||""===e&&c.$$hasNativeValidators)&&c.$setViewValue(e,a)}};if(e.hasEvent("input"))b.on("input",l);else{var n=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};b.on("keydown",function(a){var b=a.keyCode;91===b||15<
1521 1521 b&&19>b||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",n)}b.on("change",l);if(Kd[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Lb(a,b){return function(d,c){var e,f;if(fa(d))return d;if(F(d)){'"'==d.charAt(0)&&
1522 1522 '"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(yg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},q(e,function(a,c){c<b.length&&(f[b[c]]=+a)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0)}return NaN}}function kb(a,b,d,c){return function(e,f,g,h,k,l,n){function m(a){return a&&
1523 1523 !(a.getTime&&a.getTime()!==a.getTime())}function r(a){return x(a)&&!fa(a)?d(a)||void 0:a}Ld(e,f,g,h);jb(e,f,g,h,k,l);var q=h&&h.$options&&h.$options.timezone,s;h.$$parserName=a;h.$parsers.push(function(a){if(h.$isEmpty(a))return null;if(b.test(a))return a=d(a,s),q&&(a=Qb(a,q)),a});h.$formatters.push(function(a){if(a&&!fa(a))throw lb("datefmt",a);if(m(a))return(s=a)&&q&&(s=Qb(s,q,!0)),n("date")(a,c,q);s=null;return""});if(x(g.min)||g.ngMin){var w;h.$validators.min=function(a){return!m(a)||y(w)||d(a)>=
1524 1524 w};g.$observe("min",function(a){w=r(a);h.$validate()})}if(x(g.max)||g.ngMax){var p;h.$validators.max=function(a){return!m(a)||y(p)||d(a)<=p};g.$observe("max",function(a){p=r(a);h.$validate()})}}}function Ld(a,b,d,c){(c.$$hasNativeValidators=G(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?void 0:a})}function Md(a,b,d,c,e){if(x(c)){a=a(c);if(!a.constant)throw lb("constexpr",d,c);return a(b)}return e}function mc(a,b){a="ngClass"+a;return["$animate",
1525 1525 function(d){function c(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],n=0;n<b.length;n++)if(e==b[n])continue a;c.push(e)}return c}function e(a){var b=[];return K(a)?(q(a,function(a){b=b.concat(e(a))}),b):F(a)?a.split(" "):G(a)?(q(a,function(a,c){a&&(b=b.concat(c.split(" ")))}),b):a}return{restrict:"AC",link:function(f,g,h){function k(a){a=l(a,1);h.$addClass(a)}function l(a,b){var c=g.data("$classCounts")||T(),d=[];q(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",
1526 1526 c);return d.join(" ")}function n(a,b){var e=c(b,a),f=c(a,b),e=l(e,1),f=l(f,-1);e&&e.length&&d.addClass(g,e);f&&f.length&&d.removeClass(g,f)}function m(a){if(!0===b||f.$index%2===b){var c=e(a||[]);if(!r)k(c);else if(!pa(a,r)){var d=e(r);n(d,c)}}r=K(a)?a.map(function(a){return ha(a)}):ha(a)}var r;f.$watch(h[a],m,!0);h.$observe("class",function(b){m(f.$eval(h[a]))});"ngClass"!==a&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var m=e(f.$eval(h[a]));g===b?k(m):(g=l(m,-1),h.$removeClass(g))}})}}}]}
1527 1527 function Jd(a){function b(a,b){b&&!f[a]?(k.addClass(e,a),f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function d(a,c){a=a?"-"+zc(a,"-"):"";b(mb+a,!0===c);b(Nd+a,!1===c)}var c=a.ctrl,e=a.$element,f={},g=a.set,h=a.unset,k=a.$animate;f[Nd]=!(f[mb]=e.hasClass(mb));c.$setValidity=function(a,e,f){y(e)?(c.$pending||(c.$pending={}),g(c.$pending,a,f)):(c.$pending&&h(c.$pending,a,f),Od(c.$pending)&&(c.$pending=void 0));Da(e)?e?(h(c.$error,a,f),g(c.$$success,a,f)):(g(c.$error,a,f),h(c.$$success,a,f)):(h(c.$error,
1528 1528 a,f),h(c.$$success,a,f));c.$pending?(b(Pd,!0),c.$valid=c.$invalid=void 0,d("",null)):(b(Pd,!1),c.$valid=Od(c.$error),c.$invalid=!c.$valid,d("",c.$valid));e=c.$pending&&c.$pending[a]?void 0:c.$error[a]?!1:c.$$success[a]?!0:null;d(a,e);c.$$parentForm.$setValidity(a,e,c)}}function Od(a){if(a)for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}var zg=/^\/(.+)\/([a-z]*)$/,ua=Object.prototype.hasOwnProperty,P=function(a){return F(a)?a.toLowerCase():a},sb=function(a){return F(a)?a.toUpperCase():a},Ca,
1529 1529 B,Z,za=[].slice,Zf=[].splice,Ag=[].push,ma=Object.prototype.toString,sc=Object.getPrototypeOf,Aa=O("ng"),ea=v.angular||(v.angular={}),Sb,nb=0;Ca=v.document.documentMode;C.$inject=[];Xa.$inject=[];var K=Array.isArray,$d=/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/,V=function(a){return F(a)?a.trim():a},vd=function(a){return a.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},Ea=function(){if(!x(Ea.rules)){var a=v.document.querySelector("[ng-csp]")||
1530 1530 v.document.querySelector("[data-ng-csp]");if(a){var b=a.getAttribute("ng-csp")||a.getAttribute("data-ng-csp");Ea.rules={noUnsafeEval:!b||-1!==b.indexOf("no-unsafe-eval"),noInlineStyle:!b||-1!==b.indexOf("no-inline-style")}}else{a=Ea;try{new Function(""),b=!1}catch(d){b=!0}a.rules={noUnsafeEval:b,noInlineStyle:!1}}}return Ea.rules},pb=function(){if(x(pb.name_))return pb.name_;var a,b,d=Na.length,c,e;for(b=0;b<d;++b)if(c=Na[b],a=v.document.querySelector("["+c.replace(":","\\:")+"jq]")){e=a.getAttribute(c+
1531 1531 "jq");break}return pb.name_=e},ce=/:/g,Na=["ng-","data-ng-","ng:","x-ng-"],he=/[A-Z]/g,Ac=!1,Ma=3,le={full:"1.5.5",major:1,minor:5,dot:5,codeName:"material-conspiration"};U.expando="ng339";var eb=U.cache={},Nf=1;U._data=function(a){return this.cache[a[this.expando]]||{}};var If=/([\:\-\_]+(.))/g,Jf=/^moz([A-Z])/,wb={mouseleave:"mouseout",mouseenter:"mouseover"},Ub=O("jqLite"),Mf=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Tb=/<|&#?\w+;/,Kf=/<([\w:-]+)/,Lf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
1532 1532 ia={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option;ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead;ia.th=ia.td;var Sf=v.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Oa=U.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===
1533 1533 v.document.readyState?v.setTimeout(b):(this.on("DOMContentLoaded",b),U(v).on("load",b))},toString:function(){var a=[];q(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?B(this[a]):B(this[this.length+a])},length:0,push:Ag,sort:[].sort,splice:[].splice},Cb={};q("multiple selected checked disabled readOnly required open".split(" "),function(a){Cb[P(a)]=a});var Sc={};q("input select option textarea button form details".split(" "),function(a){Sc[a]=!0});var ad={ngMinlength:"minlength",
1534 1534 ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};q({data:Wb,removeData:db,hasData:function(a){for(var b in eb[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b<d;b++)db(a[b])}},function(a,b){U[b]=a});q({data:Wb,inheritedData:Ab,scope:function(a){return B.data(a,"$scope")||Ab(a.parentNode||a,["$isolateScope","$scope"])},isolateScope:function(a){return B.data(a,"$isolateScope")||B.data(a,"$isolateScopeNoTemplate")},controller:Pc,injector:function(a){return Ab(a,
1535 1535 "$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:xb,css:function(a,b,d){b=cb(b);if(x(d))a.style[b]=d;else return a.style[b]},attr:function(a,b,d){var c=a.nodeType;if(c!==Ma&&2!==c&&8!==c)if(c=P(b),Cb[c])if(x(d))d?(a[b]=!0,a.setAttribute(b,c)):(a[b]=!1,a.removeAttribute(c));else return a[b]||(a.attributes.getNamedItem(b)||C).specified?c:void 0;else if(x(d))a.setAttribute(b,d);else if(a.getAttribute)return a=a.getAttribute(b,2),null===a?void 0:a},prop:function(a,b,d){if(x(d))a[b]=
1536 1536 d;else return a[b]},text:function(){function a(a,d){if(y(d)){var c=a.nodeType;return 1===c||c===Ma?a.textContent:""}a.textContent=d}a.$dv="";return a}(),val:function(a,b){if(y(b)){if(a.multiple&&"select"===va(a)){var d=[];q(a.options,function(a){a.selected&&d.push(a.value||a.text)});return 0===d.length?null:d}return a.value}a.value=b},html:function(a,b){if(y(b))return a.innerHTML;ub(a,!0);a.innerHTML=b},empty:Qc},function(a,b){U.prototype[b]=function(b,c){var e,f,g=this.length;if(a!==Qc&&y(2==a.length&&
1537 1537 a!==xb&&a!==Pc?b:c)){if(G(b)){for(e=0;e<g;e++)if(a===Wb)a(this[e],b);else for(f in b)a(this[e],f,b[f]);return this}e=a.$dv;g=y(e)?Math.min(g,1):g;for(f=0;f<g;f++){var h=a(this[f],b,c);e=e?e+h:h}return e}for(e=0;e<g;e++)a(this[e],b,c);return this}});q({removeData:db,on:function(a,b,d,c){if(x(c))throw Ub("onargs");if(Kc(a)){c=vb(a,!0);var e=c.events,f=c.handle;f||(f=c.handle=Pf(a,e));c=0<=b.indexOf(" ")?b.split(" "):[b];for(var g=c.length,h=function(b,c,g){var h=e[b];h||(h=e[b]=[],h.specialHandlerWrapper=
1538 1538 c,"$destroy"===b||g||a.addEventListener(b,f,!1));h.push(d)};g--;)b=c[g],wb[b]?(h(wb[b],Rf),h(b,void 0,!0)):h(b)}},off:Oc,one:function(a,b,d){a=B(a);a.on(b,function e(){a.off(b,d);a.off(b,e)});a.on(b,d)},replaceWith:function(a,b){var d,c=a.parentNode;ub(a);q(new U(b),function(b){d?c.insertBefore(b,d.nextSibling):c.replaceChild(b,a);d=b})},children:function(a){var b=[];q(a.childNodes,function(a){1===a.nodeType&&b.push(a)});return b},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,
1539 1539 b){var d=a.nodeType;if(1===d||11===d){b=new U(b);for(var d=0,c=b.length;d<c;d++)a.appendChild(b[d])}},prepend:function(a,b){if(1===a.nodeType){var d=a.firstChild;q(new U(b),function(b){a.insertBefore(b,d)})}},wrap:function(a,b){Mc(a,B(b).eq(0).clone()[0])},remove:Bb,detach:function(a){Bb(a,!0)},after:function(a,b){var d=a,c=a.parentNode;b=new U(b);for(var e=0,f=b.length;e<f;e++){var g=b[e];c.insertBefore(g,d.nextSibling);d=g}},addClass:zb,removeClass:yb,toggleClass:function(a,b,d){b&&q(b.split(" "),
1540 1540 function(b){var e=d;y(e)&&(e=!xb(a,b));(e?zb:yb)(a,b)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},find:function(a,b){return a.getElementsByTagName?a.getElementsByTagName(b):[]},clone:Vb,triggerHandler:function(a,b,d){var c,e,f=b.type||b,g=vb(a);if(g=(g=g&&g.events)&&g[f])c={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=
1541 1541 !0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:C,type:f,target:a},b.type&&(c=R(c,b)),b=ha(g),e=d?[c].concat(d):[c],q(b,function(b){c.isImmediatePropagationStopped()||b.apply(a,e)})}},function(a,b){U.prototype[b]=function(b,c,e){for(var f,g=0,h=this.length;g<h;g++)y(f)?(f=a(this[g],b,c,e),x(f)&&(f=B(f))):Nc(f,a(this[g],b,c,e));return x(f)?f:this};U.prototype.bind=U.prototype.on;U.prototype.unbind=U.prototype.off});Ra.prototype={put:function(a,
1542 1542 b){this[Fa(a,this.nextUid)]=b},get:function(a){return this[Fa(a,this.nextUid)]},remove:function(a){var b=this[a=Fa(a,this.nextUid)];delete this[a];return b}};var Gf=[function(){this.$get=[function(){return Ra}]}],Uf=/^([^\(]+?)=>/,Vf=/^[^\(]*\(\s*([^\)]*)\)/m,Bg=/,/,Cg=/^\s*(_?)(\S+?)\1\s*$/,Tf=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=O("$injector");bb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw F(d)&&d||(d=a.name||Wf(a)),Ga("strictdi",d);
1543 1543 b=Tc(a);q(b[1].split(Bg),function(a){a.replace(Cg,function(a,b,d){c.push(d)})})}a.$inject=c}}else K(a)?(b=a.length-1,Pa(a[b],"fn"),c=a.slice(0,b)):Pa(a,"fn",!0);return c};var Qd=O("$animate"),Ze=function(){this.$get=C},$e=function(){var a=new Ra,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=F(b)?b.split(" "):K(b)?b:[],q(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){q(b,function(b){var c=a.get(b);if(c){var d=Xf(b.attr("class")),e="",f="";q(c,
1544 1544 function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});q(b,function(a){e&&zb(a,e);f&&yb(a,f)});a.remove(b)}});b.length=0}return{enabled:C,on:C,off:C,pin:C,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g,k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Xe=["$provide",function(a){var b=this;this.$$registeredAnimations=
1545 1545 Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Qd("notcsel",d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Qd("nongcls","ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h<d.length;h++){var k=
1546 1546 d[h];if(1===k.nodeType){h=k;break a}}h=void 0}!h||h.parentNode||h.previousElementSibling||(d=null)}d?d.after(a):c.prepend(a)}return{on:a.on,off:a.off,pin:a.pin,enabled:a.enabled,cancel:function(a){a.end&&a.end()},enter:function(e,f,g,h){f=f&&B(f);g=g&&B(g);f=f||g.parent();b(e,f,g);return a.push(e,"enter",Ha(h))},move:function(e,f,g,h){f=f&&B(f);g=g&&B(g);f=f||g.parent();b(e,f,g);return a.push(e,"move",Ha(h))},leave:function(b,c){return a.push(b,"leave",Ha(c),function(){b.remove()})},addClass:function(b,
1547 1547 c,g){g=Ha(g);g.addClass=fb(g.addclass,c);return a.push(b,"addClass",g)},removeClass:function(b,c,g){g=Ha(g);g.removeClass=fb(g.removeClass,c);return a.push(b,"removeClass",g)},setClass:function(b,c,g,h){h=Ha(h);h.addClass=fb(h.addClass,c);h.removeClass=fb(h.removeClass,g);return a.push(b,"setClass",h)},animate:function(b,c,g,h,k){k=Ha(k);k.from=k.from?R(k.from,c):c;k.to=k.to?R(k.to,g):g;k.tempClasses=fb(k.tempClasses,h||"ng-inline-animate");return a.push(b,"animate",k)}}}]}],bf=function(){this.$get=
1548 1548 ["$$rAF",function(a){function b(b){d.push(b);1<d.length||a(function(){for(var a=0;a<d.length;a++)d[a]();d=[]})}var d=[];return function(){var a=!1;b(function(){a=!0});return function(d){a?d():b(d)}}}]},af=function(){this.$get=["$q","$sniffer","$$animateAsyncRun","$document","$timeout",function(a,b,d,c,e){function f(a){this.setHost(a);var b=d();this._doneCallbacks=[];this._tick=function(a){var d=c[0];d&&d.hidden?e(a,0,!1):b(a)};this._state=0}f.chain=function(a,b){function c(){if(d===a.length)b(!0);
1549 1549 else a[d](function(a){!1===a?b(!1):(d++,c())})}var d=0;c()};f.all=function(a,b){function c(f){e=e&&f;++d===a.length&&b(e)}var d=0,e=!0;q(a,function(a){a.done(c)})};f.prototype={setHost:function(a){this.host=a||{}},done:function(a){2===this._state?a():this._doneCallbacks.push(a)},progress:C,getPromise:function(){if(!this.promise){var b=this;this.promise=a(function(a,c){b.done(function(b){!1===b?c():a()})})}return this.promise},then:function(a,b){return this.getPromise().then(a,b)},"catch":function(a){return this.getPromise()["catch"](a)},
1550 1550 "finally":function(a){return this.getPromise()["finally"](a)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end();this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel();this._resolve(!1)},complete:function(a){var b=this;0===b._state&&(b._state=1,b._tick(function(){b._resolve(a)}))},_resolve:function(a){2!==this._state&&(q(this._doneCallbacks,function(b){b(a)}),this._doneCallbacks.length=
1551 1551 0,this._state=2)}};return f}]},Ye=function(){this.$get=["$$rAF","$q","$$AnimateRunner",function(a,b,d){return function(b,e){function f(){a(function(){g.addClass&&(b.addClass(g.addClass),g.addClass=null);g.removeClass&&(b.removeClass(g.removeClass),g.removeClass=null);g.to&&(b.css(g.to),g.to=null);h||k.complete();h=!0});return k}var g=e||{};g.$$prepared||(g=qa(g));g.cleanupStyles&&(g.from=g.to=null);g.from&&(b.css(g.from),g.from=null);var h,k=new d;return{start:f,end:f}}}]},ga=O("$compile"),Zb=new function(){};
1552 1552 Cc.$inject=["$provide","$$sanitizeUriProvider"];Db.prototype.isFirstChange=function(){return this.previousValue===Zb};var Vc=/^((?:x|data)[\:\-_])/i,$f=O("$controller"),bd=/^(\S+)(\s+as\s+([\w$]+))?$/,hf=function(){this.$get=["$document",function(a){return function(b){b?!b.nodeType&&b instanceof B&&(b=b[0]):b=a[0].body;return b.offsetWidth+1}}]},cd="application/json",bc={"Content-Type":cd+";charset=utf-8"},bg=/^\[|^\{(?!\{)/,cg={"[":/]$/,"{":/}$/},ag=/^\)\]\}',?\n/,Dg=O("$http"),gd=function(a){return function(){throw Dg("legacy",
1553 1553 a);}},Ja=ea.$interpolateMinErr=O("$interpolate");Ja.throwNoconcat=function(a){throw Ja("noconcat",a);};Ja.interr=function(a,b){return Ja("interr",a,b.toString())};var Eg=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,eg={http:80,https:443,ftp:21},Eb=O("$location"),Fg={$$html5:!1,$$replace:!1,absUrl:Fb("$$absUrl"),url:function(a){if(y(a))return this.$$url;var b=Eg.exec(a);(b[1]||""===a)&&this.path(decodeURIComponent(b[1]));(b[2]||b[1]||""===a)&&this.search(b[3]||"");this.hash(b[5]||"");return this},protocol:Fb("$$protocol"),
1554 1554 host:Fb("$$host"),port:Fb("$$port"),path:ld("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,b){switch(arguments.length){case 0:return this.$$search;case 1:if(F(a)||Q(a))a=a.toString(),this.$$search=xc(a);else if(G(a))a=qa(a,{}),q(a,function(b,c){null==b&&delete a[c]}),this.$$search=a;else throw Eb("isrcharg");break;default:y(b)||null===b?delete this.$$search[a]:this.$$search[a]=b}this.$$compose();return this},hash:ld("$$hash",function(a){return null!==
1555 1555 a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};q([kd,ec,dc],function(a){a.prototype=Object.create(Fg);a.prototype.state=function(b){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Eb("nostate");this.$$state=y(b)?null:b;return this}});var ca=O("$parse"),gg=Function.prototype.call,hg=Function.prototype.apply,ig=Function.prototype.bind,Mb=T();q("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(a){Mb[a]=!0});var Gg={n:"\n",f:"\f",r:"\r",
1556 1556 t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdentifierStart(this.peekMultichar()))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;
1557 1557 else{var b=a+this.peek(),d=b+this.peek(2),c=Mb[b],e=Mb[d];Mb[a]||c||e?(a=e?d:c?b:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,b){return-1!==b.indexOf(a)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||
1558 1558 "\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdentifierStart:function(a){return this.options.isIdentifierStart?this.options.isIdentifierStart(a,this.codePointAt(a)):this.isValidIdentifierStart(a)},isValidIdentifierStart:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isIdentifierContinue:function(a){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(a,this.codePointAt(a)):this.isValidIdentifierContinue(a)},isValidIdentifierContinue:function(a,b){return this.isValidIdentifierStart(a,
1559 1559 b)||this.isNumber(a)},codePointAt:function(a){return 1===a.length?a.charCodeAt(0):(a.charCodeAt(0)<<10)+a.charCodeAt(1)-56613888},peekMultichar:function(){var a=this.text.charAt(this.index),b=this.peek();if(!b)return a;var d=a.charCodeAt(0),c=b.charCodeAt(0);return 55296<=d&&56319>=d&&56320<=c&&57343>=c?a+b:a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=x(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw ca("lexerr",
1560 1560 a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index<this.text.length;){var d=P(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var c=this.peek();if("e"==d&&this.isExpOperator(c))a+=d;else if(this.isExpOperator(d)&&c&&this.isNumber(c)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||c&&this.isNumber(c)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:b,text:a,constant:!0,value:Number(a)})},
1561 1561 readIdent:function(){var a=this.index;for(this.index+=this.peekMultichar().length;this.index<this.text.length;){var b=this.peekMultichar();if(!this.isIdentifierContinue(b))break;this.index+=b.length}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var b=this.index;this.index++;for(var d="",c=a,e=!1;this.index<this.text.length;){var f=this.text.charAt(this.index),c=c+f;if(e)"u"===f?(e=this.text.substring(this.index+1,this.index+5),e.match(/[\da-f]{4}/i)||
1562 1562 this.throwError("Invalid unicode escape [\\u"+e+"]"),this.index+=4,d+=String.fromCharCode(parseInt(e,16))):d+=Gg[f]||f,e=!1;else if("\\"===f)e=!0;else{if(f===a){this.index++;this.tokens.push({index:b,text:c,constant:!0,value:d});return}d+=f}this.index++}this.throwError("Unterminated quote",b)}};var s=function(a,b){this.lexer=a;this.options=b};s.Program="Program";s.ExpressionStatement="ExpressionStatement";s.AssignmentExpression="AssignmentExpression";s.ConditionalExpression="ConditionalExpression";
1563 1563 s.LogicalExpression="LogicalExpression";s.BinaryExpression="BinaryExpression";s.UnaryExpression="UnaryExpression";s.CallExpression="CallExpression";s.MemberExpression="MemberExpression";s.Identifier="Identifier";s.Literal="Literal";s.ArrayExpression="ArrayExpression";s.Property="Property";s.ObjectExpression="ObjectExpression";s.ThisExpression="ThisExpression";s.LocalsExpression="LocalsExpression";s.NGValueParameter="NGValueParameter";s.prototype={ast:function(a){this.text=a;this.tokens=this.lexer.lex(a);
1564 1564 a=this.program();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);return a},program:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.expressionStatement()),!this.expect(";"))return{type:s.Program,body:a}},expressionStatement:function(){return{type:s.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},expression:function(){return this.assignment()},
1565 1565 assignment:function(){var a=this.ternary();this.expect("=")&&(a={type:s.AssignmentExpression,left:a,right:this.assignment(),operator:"="});return a},ternary:function(){var a=this.logicalOR(),b,d;return this.expect("?")&&(b=this.expression(),this.consume(":"))?(d=this.expression(),{type:s.ConditionalExpression,test:a,alternate:b,consequent:d}):a},logicalOR:function(){for(var a=this.logicalAND();this.expect("||");)a={type:s.LogicalExpression,operator:"||",left:a,right:this.logicalAND()};return a},logicalAND:function(){for(var a=
1566 1566 this.equality();this.expect("&&");)a={type:s.LogicalExpression,operator:"&&",left:a,right:this.equality()};return a},equality:function(){for(var a=this.relational(),b;b=this.expect("==","!=","===","!==");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.relational()};return a},relational:function(){for(var a=this.additive(),b;b=this.expect("<",">","<=",">=");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),
1567 1567 b;b=this.expect("+","-");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:s.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):
1568 1568 this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?a=qa(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?a={type:s.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:s.CallExpression,
1569 1569 callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:s.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:s.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:s.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==
1570 1570 this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:s.Identifier,name:a.text}},constant:function(){return{type:s.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:s.ArrayExpression,elements:a}},
1571 1571 object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:s.Property,kind:"init"};this.peek().constant?b.key=this.constant():this.peek().identifier?b.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");b.value=this.expression();a.push(b)}while(this.expect(","))}this.consume("}");return{type:s.ObjectExpression,properties:a}},throwError:function(a,b){throw ca("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===
1572 1572 this.tokens.length)throw ca("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ca("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?
1573 1573 (this.tokens.shift(),a):!1},selfReferential:{"this":{type:s.ThisExpression},$locals:{type:s.LocalsExpression}}};sd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};aa(c,d.$filter);var e="",f;this.stage="assign";if(f=qd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+this.generateFunction("assign","s,v,l");f=od(c.body);
1574 1574 d.stage="inputs";q(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue","ensureSafeAssignContext",
1575 1575 "ifDefined","plus","text",e))(this.$filter,Ta,sa,md,fg,Gb,jg,nd,a);this.state=this.stage=void 0;e.literal=rd(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;q(b,function(b){a.push("var "+b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;q(this.state.filters,
1576 1576 function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,h,k=this,l,n;c=c||C;if(!f&&x(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case s.Program:q(a.body,function(b,c){k.recurse(b.expression,
1577 1577 void 0,void 0,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case s.Literal:n=this.escape(a.value);this.assign(b,n);c(n);break;case s.UnaryExpression:this.recurse(a.argument,void 0,void 0,function(a){h=a});n=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,n);c(n);break;case s.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a});this.recurse(a.right,void 0,void 0,function(a){h=a});n="+"===a.operator?this.plus(g,h):"-"===a.operator?this.ifDefined(g,
1578 1578 0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,n);c(n);break;case s.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case s.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case s.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",
1579 1579 a.name)+"?l:s"),d.computed=!1,d.name=a.name);Ta(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Hb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case s.MemberExpression:g=d&&(d.context=this.nextId())||
1580 1580 this.nextId();b=b||this.nextId();k.recurse(a.object,g,void 0,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),n=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,n),d&&(d.computed=!0,d.name=h);else{Ta(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),
1581 1581 k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));n=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Hb(a.property.name))n=k.ensureSafeObject(n);k.assign(b,n);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case s.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],q(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),n=h+"("+l.join(",")+")",k.assign(b,n),c(b)):(h=k.nextId(),g={},l=
1582 1582 [],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);q(a.arguments,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),n=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):n=h+"("+l.join(",")+")";n=k.ensureSafeObject(n);k.assign(b,n)},function(){k.assign(b,"undefined")});c(b)}));break;case s.AssignmentExpression:h=this.nextId();g={};if(!pd(a.left))throw ca("lval");
1583 1583 this.recurse(a.left,void 0,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);n=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,n);c(b||n)})},1);break;case s.ArrayExpression:l=[];q(a.elements,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(a)})});n="["+l.join(",")+"]";this.assign(b,n);c(n);break;case s.ObjectExpression:l=[];q(a.properties,function(a){k.recurse(a.value,
1584 1584 k.nextId(),void 0,function(b){l.push(k.escape(a.key.type===s.Identifier?a.key.name:""+a.key.value)+":"+b)})});n="{"+l.join(",")+"}";this.assign(b,n);c(n);break;case s.ThisExpression:this.assign(b,"s");c("s");break;case s.LocalsExpression:this.assign(b,"l");c("l");break;case s.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,
1585 1585 "=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+
1586 1586 "!=null"},nonComputedMember:function(a,b){var d=/[^$_a-zA-Z0-9]/g;return/[$_a-zA-Z][$_a-zA-Z0-9]*/.test(b)?a+"."+b:a+'["'+b.replace(d,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),
1587 1587 ";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g=
1588 1588 this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(F(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(Q(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw ca("esc");},nextId:function(a,
1589 1589 b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};td.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;aa(c,d.$filter);var e,f;if(e=qd(c))f=this.recurse(e);e=od(c.body);var g;e&&(g=[],q(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];q(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?C:1===
1590 1590 c.body.length?h[0]:function(a,b){var c;q(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal=rd(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case s.Literal:return this.value(a.value,b);case s.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case s.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right),
1591 1591 this["binary"+a.operator](c,e,b);case s.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case s.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case s.Identifier:return Ta(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Hb(a.name),b,d,f.expression);case s.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Ta(a.property.name,f.expression),
1592 1592 e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case s.CallExpression:return g=[],q(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var m=[],r=0;r<g.length;++r)m.push(g[r](a,c,d,f));a=e.apply(void 0,m,f);return b?{context:void 0,name:void 0,value:a}:a}:function(a,
1593 1593 c,d,n){var m=e(a,c,d,n),r;if(null!=m.value){sa(m.context,f.expression);md(m.value,f.expression);r=[];for(var q=0;q<g.length;++q)r.push(sa(g[q](a,c,d,n),f.expression));r=sa(m.value.apply(m.context,r),f.expression)}return b?{value:r}:r};case s.AssignmentExpression:return c=this.recurse(a.left,!0,1),e=this.recurse(a.right),function(a,d,g,n){var m=c(a,d,g,n);a=e(a,d,g,n);sa(m.value,f.expression);Gb(m.context);m.context[m.name]=a;return b?{value:a}:a};case s.ArrayExpression:return g=[],q(a.elements,function(a){g.push(f.recurse(a))}),
1594 1594 function(a,c,d,e){for(var f=[],r=0;r<g.length;++r)f.push(g[r](a,c,d,e));return b?{value:f}:f};case s.ObjectExpression:return g=[],q(a.properties,function(a){g.push({key:a.key.type===s.Identifier?a.key.name:""+a.key.value,value:f.recurse(a.value)})}),function(a,c,d,e){for(var f={},r=0;r<g.length;++r)f[g[r].key]=g[r].value(a,c,d,e);return b?{value:f}:f};case s.ThisExpression:return function(a){return b?{value:a}:a};case s.LocalsExpression:return function(a,c){return b?{value:c}:c};case s.NGValueParameter:return function(a,
1595 1595 c,d){return b?{value:d}:d}}},"unary+":function(a,b){return function(d,c,e,f){d=a(d,c,e,f);d=x(d)?+d:0;return b?{value:d}:d}},"unary-":function(a,b){return function(d,c,e,f){d=a(d,c,e,f);d=x(d)?-d:0;return b?{value:d}:d}},"unary!":function(a,b){return function(d,c,e,f){d=!a(d,c,e,f);return b?{value:d}:d}},"binary+":function(a,b,d){return function(c,e,f,g){var h=a(c,e,f,g);c=b(c,e,f,g);h=nd(h,c);return d?{value:h}:h}},"binary-":function(a,b,d){return function(c,e,f,g){var h=a(c,e,f,g);c=b(c,e,f,g);
1596 1596 h=(x(h)?h:0)-(x(c)?c:0);return d?{value:h}:h}},"binary*":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)*b(c,e,f,g);return d?{value:c}:c}},"binary/":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)/b(c,e,f,g);return d?{value:c}:c}},"binary%":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)%b(c,e,f,g);return d?{value:c}:c}},"binary===":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)===b(c,e,f,g);return d?{value:c}:c}},"binary!==":function(a,b,d){return function(c,e,f,g){c=a(c,
1597 1597 e,f,g)!==b(c,e,f,g);return d?{value:c}:c}},"binary==":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)==b(c,e,f,g);return d?{value:c}:c}},"binary!=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)!=b(c,e,f,g);return d?{value:c}:c}},"binary<":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<b(c,e,f,g);return d?{value:c}:c}},"binary>":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,
1598 1598 g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,
1599 1599 name:void 0,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:void 0;b&&sa(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),n,m;null!=l&&(n=b(f,g,h,k),n+="",Ta(n,e),c&&1!==c&&(Gb(l),l&&!l[n]&&(l[n]={})),m=l[n],sa(m,e));return d?{context:l,name:n,value:m}:m}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Gb(g),
1600 1600 g&&!g[b]&&(g[b]={}));h=null!=g?g[b]:void 0;(d||Hb(b))&&sa(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var hc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new s(a,d);this.astCompiler=d.csp?new td(this.ast,b):new sd(this.ast,b)};hc.prototype={constructor:hc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var kg=Object.prototype.valueOf,ta=O("$sce"),oa={HTML:"html",CSS:"css",
1601 1601 URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},mg=O("$compile"),Y=v.document.createElement("a"),xd=ra(v.location.href);yd.$inject=["$document"];Jc.$inject=["$provide"];var Fd=22,Ed=".",jc="0";zd.$inject=["$locale"];Bd.$inject=["$locale"];var xg={yyyy:W("FullYear",4,0,!1,!0),yy:W("FullYear",2,0,!0,!0),y:W("FullYear",1,0,!1,!0),MMMM:ib("Month"),MMM:ib("Month",!0),MM:W("Month",2,1),M:W("Month",1,1),LLLL:ib("Month",!1,!0),dd:W("Date",2),d:W("Date",1),HH:W("Hours",2),H:W("Hours",1),hh:W("Hours",2,-12),
1602 1602 h:W("Hours",1,-12),mm:W("Minutes",2),m:W("Minutes",1),ss:W("Seconds",2),s:W("Seconds",1),sss:W("Milliseconds",3),EEEE:ib("Day"),EEE:ib("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Ib(Math[0<a?"floor":"ceil"](a/60),2)+Ib(Math.abs(a%60),2))},ww:Hd(2),w:Hd(1),G:kc,GG:kc,GGG:kc,GGGG:function(a,b){return 0>=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},wg=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,
1603 1603 vg=/^\-?\d+$/;Ad.$inject=["$locale"];var qg=da(P),rg=da(sb);Cd.$inject=["$parse"];var ne=da({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ma.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),tb={};q(Cb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=xa("ng-"+b),e=d;"checked"===a&&(e=function(a,
1604 1604 b,e){e.ngModel!==e[c]&&d(a,b,e)});tb[c]=function(){return{restrict:"A",priority:100,link:e}}}});q(ad,function(a,b){tb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(zg))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});q(["src","srcset","href"],function(a){var b=xa("ng-"+a);tb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===
1605 1605 ma.call(c.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Ca&&f&&c.prop(f,e[g])):"href"===a&&e.$set(g,null)})}}}});var Jb={$addControl:C,$$renameControl:function(a,b){a.$name=b},$removeControl:C,$setValidity:C,$setDirty:C,$setPristine:C,$setSubmitted:C};Id.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Rd=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||C}return{name:"form",
1606 1606 restrict:a?"EAC":"E",require:["form","^^?form"],controller:Id,compile:function(d,f){d.addClass(Ua).addClass(mb);var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var m=f[0];if(!("action"in e)){var r=function(b){a.$apply(function(){m.$commitViewValue();m.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",r,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",r,!1)},0,!1)})}(f[1]||m.$$parentForm).$addControl(m);var q=g?c(m.$name):C;g&&
1607 1607 (q(a,m),e.$observe(g,function(b){m.$name!==b&&(q(a,void 0),m.$$parentForm.$$renameControl(m,b),q=c(m.$name),q(a,m))}));d.on("$destroy",function(){m.$$parentForm.$removeControl(m);q(a,void 0);R(m,Jb)})}}}}}]},oe=Rd(),Be=Rd(!0),yg=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,Hg=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Ig=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,
1608 1608 Jg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Sd=/^(\d{4,})-(\d{2})-(\d{2})$/,Td=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,nc=/^(\d{4,})-W(\d\d)$/,Ud=/^(\d{4,})-(\d\d)$/,Vd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Kd=T();q(["date","datetime-local","month","time","week"],function(a){Kd[a]=!0});var Wd={text:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c)},date:kb("date",Sd,Lb(Sd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":kb("datetimelocal",Td,Lb(Td,"yyyy MM dd HH mm ss sss".split(" ")),
1609 1609 "yyyy-MM-ddTHH:mm:ss.sss"),time:kb("time",Vd,Lb(Vd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:kb("week",nc,function(a,b){if(fa(a))return a;if(F(a)){nc.lastIndex=0;var d=nc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Gd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:kb("month",Ud,Lb(Ud,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Ld(a,b,d,c);jb(a,b,d,c,e,f);c.$$parserName=
1610 1610 "number";c.$parsers.push(function(a){if(c.$isEmpty(a))return null;if(Jg.test(a))return parseFloat(a)});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!Q(a))throw lb("numfmt",a);a=a.toString()}return a});if(x(d.min)||d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||y(g)||a>=g};d.$observe("min",function(a){x(a)&&!Q(a)&&(a=parseFloat(a,10));g=Q(a)&&!isNaN(a)?a:void 0;c.$validate()})}if(x(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||y(h)||a<=h};d.$observe("max",
1611 1611 function(a){x(a)&&!Q(a)&&(a=parseFloat(a,10));h=Q(a)&&!isNaN(a)?a:void 0;c.$validate()})}},url:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||Hg.test(d)}},email:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Ig.test(d)}},radio:function(a,b,d,c){y(d.name)&&b.attr("name",++nb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value,
1612 1612 a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue};d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Md(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Md(h,a,"ngFalseValue",d.ngFalseValue,!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return pa(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:C,button:C,submit:C,reset:C,
1613 1613 file:C},Dc=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Wd[P(g.type)]||Wd.text)(e,f,g,h[0],b,a,d,c)}}}}],Kg=/^(true|false|\d+)$/,Te=function(){return{restrict:"A",priority:100,compile:function(a,b){return Kg.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},te=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);
1614 1614 return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=y(a)?"":a})}}}}],ve=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=y(a)?"":a})}}}}],ue=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=
1615 1615 b(e.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){c.html(a.getTrustedHtml(f(b))||"")})}}}}],Se=da({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),we=mc("",!0),ye=mc("Odd",0),xe=mc("Even",1),ze=La({compile:function(a,b){b.$set("ngCloak",void 0);a.removeClass("ng-cloak")}}),Ae=[function(){return{restrict:"A",scope:!0,controller:"@",
1616 1616 priority:500}}],Ic={},Lg={blur:!0,focus:!0};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=xa("ng-"+a);Ic[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Lg[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var De=["$animate","$compile",function(a,
1617 1617 b){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var h,k,l;d.$watch(e.ngIf,function(d){d?k||g(function(d,f){k=f;d[d.length++]=b.$$createComment("end ngIf",e.ngIf);h={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=rb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],Ee=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,
1618 1618 transclude:"element",controller:ea.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,n,m,r){var q=0,s,w,p,y=function(){w&&(w.remove(),w=null);s&&(s.$destroy(),s=null);p&&(d.leave(p).then(function(){w=null}),w=p,p=null)};c.$watch(f,function(f){var n=function(){!x(h)||h&&!c.$eval(h)||b()},u=++q;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&u===q){var b=c.$new();m.template=a;a=r(b,function(a){y();d.enter(a,null,e).then(n)});s=b;p=a;s.$emit("$includeContentLoaded",
1619 1619 f);c.$eval(g)}},function(){c.$$destroyed||u!==q||(y(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(y(),m.template=null)})}}}}],Ve=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,d,c,e){ma.call(d[0]).match(/SVG/)?(d.empty(),a(Lc(e.template,v.document).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],Fe=La({priority:450,compile:function(){return{pre:function(a,
1620 1620 b,d){a.$eval(d.ngInit)}}}}),Re=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?V(e):e;c.$parsers.push(function(a){if(!y(a)){var b=[];a&&q(a.split(g),function(a){a&&b.push(f?V(a):a)});return b}});c.$formatters.push(function(a){if(K(a))return a.join(e)});c.$isEmpty=function(a){return!a||!a.length}}}},mb="ng-valid",Nd="ng-invalid",Ua="ng-pristine",Kb="ng-dirty",Pd="ng-pending",lb=O("ngModel"),Mg=["$scope",
1621 1621 "$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=void 0;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=void 0;this.$name=l(d.name||"",!1)(a);
1622 1622 this.$$parentForm=Jb;var n=e(d.ngModel),m=n.assign,r=n,s=m,v=null,w,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");r=function(a){var c=n(a);E(c)&&(c=b(a));return c};s=function(a,b){E(n(a))?f(a,{$$$p:b}):m(a,b)}}else if(!n.assign)throw lb("nonassign",d.ngModel,wa(c));};this.$render=C;this.$isEmpty=function(a){return y(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){p.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"),
1623 1623 f.addClass(c,"ng-empty")):(f.removeClass(c,"ng-empty"),f.addClass(c,"ng-not-empty"))};var H=0;Jd({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;f.removeClass(c,Kb);f.addClass(c,Ua)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;f.removeClass(c,Ua);f.addClass(c,Kb);p.$$parentForm.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")};
1624 1624 this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(v);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!Q(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,b=p.$valid,c=p.$modelValue,d=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(e){d||b===e||(p.$modelValue=e?a:void 0,p.$modelValue!==c&&p.$$writeModelToScope())})}};
1625 1625 this.$$runValidators=function(a,b,c){function d(){var c=!0;q(p.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(q(p.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;q(p.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!E(h.then))throw lb("nopromise",h);f(g,void 0);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},C):g(!0)}function f(a,b){h===H&&p.$setValidity(a,b)}function g(a){h===H&&c(a)}H++;var h=
1626 1626 H;(function(){var a=p.$$parserName||"parse";if(y(w))f(a,null);else return w||(q(p.$validators,function(a,b){f(b,null)}),q(p.$asyncValidators,function(a,b){f(b,null)})),f(a,w),w;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=p.$viewValue;g.cancel(v);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$updateEmptyClasses(a),p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=p.$$lastCommittedViewValue;
1627 1627 if(w=y(b)?void 0:!0)for(var c=0;c<p.$parsers.length;c++)if(b=p.$parsers[c](b),y(b)){w=!1;break}Q(p.$modelValue)&&isNaN(p.$modelValue)&&(p.$modelValue=r(a));var d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$rawModelValue=b;e&&(p.$modelValue=b,p.$modelValue!==d&&p.$$writeModelToScope());p.$$runValidators(b,p.$$lastCommittedViewValue,function(a){e||(p.$modelValue=a?b:void 0,p.$modelValue!==d&&p.$$writeModelToScope())})};this.$$writeModelToScope=function(){s(a,p.$modelValue);q(p.$viewChangeListeners,
1628 1628 function(a){try{a()}catch(c){b(c)}})};this.$setViewValue=function(a,b){p.$viewValue=a;p.$options&&!p.$options.updateOnDefault||p.$$debounceViewValueCommit(b)};this.$$debounceViewValueCommit=function(b){var c=0,d=p.$options;d&&x(d.debounce)&&(d=d.debounce,Q(d)?c=d:Q(d[b])?c=d[b]:Q(d["default"])&&(c=d["default"]));g.cancel(v);c?v=g(function(){p.$commitViewValue()},c):h.$$phase?p.$commitViewValue():a.$apply(function(){p.$commitViewValue()})};a.$watch(function(){var b=r(a);if(b!==p.$modelValue&&(p.$modelValue===
1629 1629 p.$modelValue||b===b)){p.$modelValue=p.$$rawModelValue=b;w=void 0;for(var c=p.$formatters,d=c.length,e=b;d--;)e=c[d](e);p.$viewValue!==e&&(p.$$updateEmptyClasses(e),p.$viewValue=p.$$lastCommittedViewValue=e,p.$render(),p.$$runValidators(b,e,C))}return b})}],Qe=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:Mg,priority:1,compile:function(b){b.addClass(Ua).addClass("ng-untouched").addClass(mb);return{pre:function(a,b,e,f){var g=f[0];b=f[1]||
1630 1630 g.$$parentForm;g.$$setOptions(f[2]&&f[2].$options);b.$addControl(g);e.$observe("name",function(a){g.$name!==a&&g.$$parentForm.$$renameControl(g,a)});a.$on("$destroy",function(){g.$$parentForm.$removeControl(g)})},post:function(b,c,e,f){var g=f[0];if(g.$options&&g.$options.updateOn)c.on(g.$options.updateOn,function(a){g.$$debounceViewValueCommit(a&&a.type)});c.on("blur",function(){g.$touched||(a.$$phase?b.$evalAsync(g.$setTouched):b.$apply(g.$setTouched))})}}}}}],Ng=/(\s+|^)default(\s+|$)/,Ue=function(){return{restrict:"A",
1631 1631 controller:["$scope","$attrs",function(a,b){var d=this;this.$options=qa(a.$eval(b.ngModelOptions));x(this.$options.updateOn)?(this.$options.updateOnDefault=!1,this.$options.updateOn=V(this.$options.updateOn.replace(Ng,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},Ge=La({terminal:!0,priority:1E3}),Og=O("ngOptions"),Pg=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
1632 1632 Oe=["$compile","$document","$parse",function(a,b,d){function c(a,b,c){function e(a,b,c,d,f){this.selectValue=a;this.viewValue=b;this.label=c;this.group=d;this.disabled=f}function f(a){var b;if(!q&&ya(a))b=a;else{b=[];for(var c in a)a.hasOwnProperty(c)&&"$"!==c.charAt(0)&&b.push(c)}return b}var m=a.match(Pg);if(!m)throw Og("iexp",a,wa(b));var r=m[5]||m[7],q=m[6];a=/ as /.test(m[0])&&m[1];var s=m[9];b=d(m[2]?m[1]:r);var w=a&&d(a)||b,p=s&&d(s),v=s?function(a,b){return p(c,b)}:function(a){return Fa(a)},
1633 1633 t=function(a,b){return v(a,L(a,b))},z=d(m[2]||m[1]),u=d(m[3]||""),y=d(m[4]||""),x=d(m[8]),D={},L=q?function(a,b){D[q]=b;D[r]=a;return D}:function(a){D[r]=a;return D};return{trackBy:s,getTrackByValue:t,getWatchables:d(x,function(a){var b=[];a=a||[];for(var d=f(a),e=d.length,g=0;g<e;g++){var h=a===d?g:d[g],l=a[h],h=L(l,h),l=v(l,h);b.push(l);if(m[2]||m[1])l=z(c,h),b.push(l);m[4]&&(h=y(c,h),b.push(h))}return b}),getOptions:function(){for(var a=[],b={},d=x(c)||[],g=f(d),h=g.length,m=0;m<h;m++){var p=d===
1634 1634 g?m:g[m],q=L(d[p],p),r=w(c,q),p=v(r,q),D=z(c,q),N=u(c,q),q=y(c,q),r=new e(p,r,D,N,q);a.push(r);b[p]=r}return{items:a,selectValueMap:b,getOptionFromViewValue:function(a){return b[t(a)]},getViewValueFromOption:function(a){return s?ea.copy(a.viewValue):a.viewValue}}}}}var e=v.document.createElement("option"),f=v.document.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","ngModel"],link:{pre:function(a,b,c,d){d[0].registerOption=C},post:function(d,h,k,l){function n(a,b){a.element=
1635 1635 b;b.disabled=a.disabled;a.label!==b.label&&(b.label=a.label,b.textContent=a.label);a.value!==b.value&&(b.value=a.selectValue)}function m(){var a=u&&r.readValue();if(u)for(var b=u.items.length-1;0<=b;b--){var c=u.items[b];c.group?Bb(c.element.parentNode):Bb(c.element)}u=I.getOptions();var d={};t&&h.prepend(w);u.items.forEach(function(a){var b;if(x(a.group)){b=d[a.group];b||(b=f.cloneNode(!1),E.appendChild(b),b.label=a.group,d[a.group]=b);var c=e.cloneNode(!1)}else b=E,c=e.cloneNode(!1);b.appendChild(c);
1636 1636 n(a,c)});h[0].appendChild(E);s.$render();s.$isEmpty(a)||(b=r.readValue(),(I.trackBy||v?pa(a,b):a===b)||(s.$setViewValue(b),s.$render()))}var r=l[0],s=l[1],v=k.multiple,w;l=0;for(var p=h.children(),y=p.length;l<y;l++)if(""===p[l].value){w=p.eq(l);break}var t=!!w,z=B(e.cloneNode(!1));z.val("?");var u,I=c(k.ngOptions,h,d),E=b[0].createDocumentFragment();v?(s.$isEmpty=function(a){return!a||0===a.length},r.writeValue=function(a){u.items.forEach(function(a){a.element.selected=!1});a&&a.forEach(function(a){if(a=
1637 1637 u.getOptionFromViewValue(a))a.element.selected=!0})},r.readValue=function(){var a=h.val()||[],b=[];q(a,function(a){(a=u.selectValueMap[a])&&!a.disabled&&b.push(u.getViewValueFromOption(a))});return b},I.trackBy&&d.$watchCollection(function(){if(K(s.$viewValue))return s.$viewValue.map(function(a){return I.getTrackByValue(a)})},function(){s.$render()})):(r.writeValue=function(a){var b=u.getOptionFromViewValue(a);b?(h[0].value!==b.selectValue&&(z.remove(),t||w.remove(),h[0].value=b.selectValue,b.element.selected=
1638 1638 !0),b.element.setAttribute("selected","selected")):null===a||t?(z.remove(),t||h.prepend(w),h.val(""),w.prop("selected",!0),w.attr("selected",!0)):(t||w.remove(),h.prepend(z),h.val("?"),z.prop("selected",!0),z.attr("selected",!0))},r.readValue=function(){var a=u.selectValueMap[h.val()];return a&&!a.disabled?(t||w.remove(),z.remove(),u.getViewValueFromOption(a)):null},I.trackBy&&d.$watch(function(){return I.getTrackByValue(s.$viewValue)},function(){s.$render()}));t?(w.remove(),a(w)(d),w.removeClass("ng-scope")):
1639 1639 w=B(e.cloneNode(!1));h.empty();m();d.$watchCollection(I.getWatchables,m)}}}}],He=["$locale","$interpolate","$log",function(a,b,d){var c=/{}/g,e=/^when(Minus)?(.+)$/;return{link:function(f,g,h){function k(a){g.text(a||"")}var l=h.count,n=h.$attr.when&&g.attr(h.$attr.when),m=h.offset||0,r=f.$eval(n)||{},s={},v=b.startSymbol(),w=b.endSymbol(),p=v+l+"-"+m+w,x=ea.noop,t;q(h,function(a,b){var c=e.exec(b);c&&(c=(c[1]?"-":"")+P(c[2]),r[c]=g.attr(h.$attr[b]))});q(r,function(a,d){s[d]=b(a.replace(c,p))});f.$watch(l,
1640 1640 function(b){var c=parseFloat(b),e=isNaN(c);e||c in r||(c=a.pluralCat(c-m));c===t||e&&Q(t)&&isNaN(t)||(x(),e=s[c],y(e)?(null!=b&&d.debug("ngPluralize: no rule defined for '"+c+"' in "+n),x=C,k()):x=f.$watch(e,k),t=c)})}}}],Ie=["$parse","$animate","$compile",function(a,b,d){var c=O("ngRepeat"),e=function(a,b,c,d,e,n,m){a[c]=d;e&&(a[e]=n);a.$index=b;a.$first=0===b;a.$last=b===m-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(b&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,
1641 1641 terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,k=d.$$createComment("end ngRepeat",h),l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!l)throw c("iexp",h);var n=l[1],m=l[2],r=l[3],s=l[4],l=n.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!l)throw c("iidexp",n);var v=l[3]||l[1],w=l[2];if(r&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(r)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(r)))throw c("badident",
1642 1642 r);var p,y,t,z,u={$id:Fa};s?p=a(s):(t=function(a,b){return Fa(b)},z=function(a){return a});return function(a,d,f,g,l){p&&(y=function(b,c,d){w&&(u[w]=b);u[v]=c;u.$index=d;return p(a,u)});var n=T();a.$watchCollection(m,function(f){var g,m,p=d[0],s,u=T(),x,D,E,C,F,B,G;r&&(a[r]=f);if(ya(f))F=f,m=y||t;else for(G in m=y||z,F=[],f)ua.call(f,G)&&"$"!==G.charAt(0)&&F.push(G);x=F.length;G=Array(x);for(g=0;g<x;g++)if(D=f===F?g:F[g],E=f[D],C=m(D,E,g),n[C])B=n[C],delete n[C],u[C]=B,G[g]=B;else{if(u[C])throw q(G,
1643 1643 function(a){a&&a.scope&&(n[a.id]=a)}),c("dupes",h,C,E);G[g]={id:C,scope:void 0,clone:void 0};u[C]=!0}for(s in n){B=n[s];C=rb(B.clone);b.leave(C);if(C[0].parentNode)for(g=0,m=C.length;g<m;g++)C[g].$$NG_REMOVED=!0;B.scope.$destroy()}for(g=0;g<x;g++)if(D=f===F?g:F[g],E=f[D],B=G[g],B.scope){s=p;do s=s.nextSibling;while(s&&s.$$NG_REMOVED);B.clone[0]!=s&&b.move(rb(B.clone),null,p);p=B.clone[B.clone.length-1];e(B.scope,g,v,E,w,D,x)}else l(function(a,c){B.scope=c;var d=k.cloneNode(!1);a[a.length++]=d;b.enter(a,
1644 1644 null,p);p=d;B.clone=a;u[B.id]=B;e(B.scope,g,v,E,w,D,x)});n=u})}}}}],Je=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngShow,function(b){a[b?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Ce=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngHide,function(b){a[b?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Ke=La(function(a,b,d){a.$watch(d.ngStyle,function(a,
1645 1645 d){d&&a!==d&&q(d,function(a,c){b.css(c,"")});a&&b.css(a)},!0)}),Le=["$animate","$compile",function(a,b){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(d,c,e,f){var g=[],h=[],k=[],l=[],n=function(a,b){return function(){a.splice(b,1)}};d.$watch(e.ngSwitch||e.on,function(c){var d,e;d=0;for(e=k.length;d<e;++d)a.cancel(k[d]);d=k.length=0;for(e=l.length;d<e;++d){var s=rb(h[d].clone);l[d].$destroy();(k[d]=a.leave(s)).then(n(k,d))}h.length=0;l.length=0;(g=f.cases["!"+
1646 1646 c]||f.cases["?"])&&q(g,function(c){c.transclude(function(d,e){l.push(e);var f=c.element;d[d.length++]=b.$$createComment("end ngSwitchWhen");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],Me=La({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,b,d,c,e){c.cases["!"+d.ngSwitchWhen]=c.cases["!"+d.ngSwitchWhen]||[];c.cases["!"+d.ngSwitchWhen].push({transclude:e,element:b})}}),Ne=La({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,
1647 1647 b,d,c,e){c.cases["?"]=c.cases["?"]||[];c.cases["?"].push({transclude:e,element:b})}}),Qg=O("ngTransclude"),Pe=La({restrict:"EAC",link:function(a,b,d,c,e){d.ngTransclude===d.$attr.ngTransclude&&(d.ngTransclude="");if(!e)throw Qg("orphan",wa(b));e(function(a){a.length&&(b.empty(),b.append(a))},null,d.ngTransclude||d.ngTranscludeSlot)}}),pe=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(b,d){"text/ng-template"==d.type&&a.put(d.id,b[0].text)}}}],Rg={$setViewValue:C,$render:C},
1648 1648 Sg=["$element","$scope",function(a,b){var d=this,c=new Ra;d.ngModelCtrl=Rg;d.unknownOption=B(v.document.createElement("option"));d.renderUnknownOption=function(b){b="? "+Fa(b)+" ?";d.unknownOption.val(b);a.prepend(d.unknownOption);a.val(b)};b.$on("$destroy",function(){d.renderUnknownOption=C});d.removeUnknownOption=function(){d.unknownOption.parent()&&d.unknownOption.remove()};d.readValue=function(){d.removeUnknownOption();return a.val()};d.writeValue=function(b){d.hasOption(b)?(d.removeUnknownOption(),
1649 1649 a.val(b),""===b&&d.emptyOption.prop("selected",!0)):null==b&&d.emptyOption?(d.removeUnknownOption(),a.val("")):d.renderUnknownOption(b)};d.addOption=function(a,b){if(8!==b[0].nodeType){Qa(a,'"option value"');""===a&&(d.emptyOption=b);var g=c.get(a)||0;c.put(a,g+1);d.ngModelCtrl.$render();b[0].hasAttribute("selected")&&(b[0].selected=!0)}};d.removeOption=function(a){var b=c.get(a);b&&(1===b?(c.remove(a),""===a&&(d.emptyOption=void 0)):c.put(a,b-1))};d.hasOption=function(a){return!!c.get(a)};d.registerOption=
1650 1650 function(a,b,c,h,k){if(h){var l;c.$observe("value",function(a){x(l)&&d.removeOption(l);l=a;d.addOption(a,b)})}else k?a.$watch(k,function(a,e){c.$set("value",a);e!==a&&d.removeOption(e);d.addOption(a,b)}):d.addOption(c.value,b);b.on("$destroy",function(){d.removeOption(c.value);d.ngModelCtrl.$render()})}}],qe=function(){return{restrict:"E",require:["select","?ngModel"],controller:Sg,priority:1,link:{pre:function(a,b,d,c){var e=c[1];if(e){var f=c[0];f.ngModelCtrl=e;b.on("change",function(){a.$apply(function(){e.$setViewValue(f.readValue())})});
1651 1651 if(d.multiple){f.readValue=function(){var a=[];q(b.find("option"),function(b){b.selected&&a.push(b.value)});return a};f.writeValue=function(a){var c=new Ra(a);q(b.find("option"),function(a){a.selected=x(c.get(a.value))})};var g,h=NaN;a.$watch(function(){h!==e.$viewValue||pa(g,e.$viewValue)||(g=ha(e.$viewValue),e.$render());h=e.$viewValue});e.$isEmpty=function(a){return!a||0===a.length}}}},post:function(a,b,d,c){var e=c[1];if(e){var f=c[0];e.$render=function(){f.writeValue(e.$viewValue)}}}}}},se=["$interpolate",
1652 1652 function(a){return{restrict:"E",priority:100,compile:function(b,d){if(x(d.value))var c=a(d.value,!0);else{var e=a(b.text(),!0);e||d.$set("value",b.text())}return function(a,b,d){var k=b.parent();(k=k.data("$selectController")||k.parent().data("$selectController"))&&k.registerOption(a,b,d,c,e)}}}}],re=da({restrict:"E",terminal:!1}),Fc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){c&&(d.required=!0,c.$validators.required=function(a,b){return!d.required||!c.$isEmpty(b)},d.$observe("required",
1653 1653 function(){c.$validate()}))}}},Ec=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e,f=d.ngPattern||d.pattern;d.$observe("pattern",function(a){F(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw O("ngPattern")("noregexp",f,a,wa(b));e=a||void 0;c.$validate()});c.$validators.pattern=function(a,b){return c.$isEmpty(b)||y(e)||e.test(b)}}}}},Hc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=-1;d.$observe("maxlength",function(a){a=
1654 1654 X(a);e=isNaN(a)?-1:a;c.$validate()});c.$validators.maxlength=function(a,b){return 0>e||c.$isEmpty(b)||b.length<=e}}}}},Gc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=X(a)||0;c.$validate()});c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};v.angular.bootstrap?v.console&&console.log("WARNING: Tried to load angular more than once."):(ie(),ke(ea),ea.module("ngLocale",[],["$provide",function(a){function b(a){a+=
1655 1655 "";var b=a.indexOf(".");return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),
1656 1656 WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a,
1657 1657 c){var e=a|0,f=c;void 0===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),B(v.document).ready(function(){ee(v.document,yc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');
1658 1658 //# sourceMappingURL=angular.min.js.map
1659 1659
1660 1660 ;/*
1661 1661 AngularJS v1.5.5
1662 1662 (c) 2010-2016 Google, Inc. http://angularjs.org
1663 1663 License: MIT
1664 1664 */
1665 1665 (function(n,c){'use strict';function l(b,a,g){var d=g.baseHref(),k=b[0];return function(b,e,f){var g,h;f=f||{};h=f.expires;g=c.isDefined(f.path)?f.path:d;c.isUndefined(e)&&(h="Thu, 01 Jan 1970 00:00:00 GMT",e="");c.isString(h)&&(h=new Date(h));e=encodeURIComponent(b)+"="+encodeURIComponent(e);e=e+(g?";path="+g:"")+(f.domain?";domain="+f.domain:"");e+=h?";expires="+h.toUTCString():"";e+=f.secure?";secure":"";f=e.length+1;4096<f&&a.warn("Cookie '"+b+"' possibly not set or overflowed because it was too large ("+
1666 1666 f+" > 4096 bytes)!");k.cookie=e}}c.module("ngCookies",["ng"]).provider("$cookies",[function(){var b=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(a,g){return{get:function(d){return a()[d]},getObject:function(d){return(d=this.get(d))?c.fromJson(d):d},getAll:function(){return a()},put:function(d,a,m){g(d,a,m?c.extend({},b,m):b)},putObject:function(d,b,a){this.put(d,c.toJson(b),a)},remove:function(a,k){g(a,void 0,k?c.extend({},b,k):b)}}}]}]);c.module("ngCookies").factory("$cookieStore",
1667 1667 ["$cookies",function(b){return{get:function(a){return b.getObject(a)},put:function(a,c){b.putObject(a,c)},remove:function(a){b.remove(a)}}}]);l.$inject=["$document","$log","$browser"];c.module("ngCookies").provider("$$cookieWriter",function(){this.$get=l})})(window,window.angular);
1668 1668 //# sourceMappingURL=angular-cookies.min.js.map
1669 1669
1670 1670 ;/*
1671 1671 AngularJS v1.5.5
1672 1672 (c) 2010-2016 Google, Inc. http://angularjs.org
1673 1673 License: MIT
1674 1674 */
1675 1675 (function(C,d){'use strict';function z(r,h,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,y){function k(){n&&(g.cancel(n),n=null);l&&(l.$destroy(),l=null);m&&(n=g.leave(m),n.then(function(){n=null}),m=null)}function x(){var b=r.current&&r.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),f=r.current;m=y(b,function(b){g.enter(b,null,m||c).then(function(){!d.isDefined(t)||t&&!a.$eval(t)||h()});k()});l=f.scope=b;l.$emit("$viewContentLoaded");
1676 1676 l.$eval(u)}else k()}var l,m,n,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,h,g){return{restrict:"ECA",priority:-400,link:function(a,c){var b=g.current,f=b.locals;c.html(f.$template);var y=d(c.contents());if(b.controller){f.$scope=a;var k=h(b.controller,f);b.controllerAs&&(a[b.controllerAs]=k);c.data("$ngControllerController",k);c.children().data("$ngControllerController",k)}a[b.resolveAs||"$resolve"]=f;y(a)}}}var w=d.module("ngRoute",["ng"]).provider("$route",function(){function r(a,
1677 1677 c){return d.extend(Object.create(a),c)}function h(a,d){var b=d.caseInsensitiveMatch,f={originalPath:a,regexp:a},g=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g,function(a,d,b,c){a="?"===c||"*?"===c?"?":null;c="*"===c||"*?"===c?"*":null;g.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=new RegExp("^"+a+"$",b?"i":"");return f}var g={};this.when=function(a,c){var b=
1678 1678 d.copy(c);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0);d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);g[a]=d.extend(b,a&&h(a,b));if(a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";g[f]=d.extend({redirectTo:a},h(f,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest",
1679 1679 "$sce",function(a,c,b,f,h,k,x){function l(b){var e=s.current;(w=(p=n())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!u)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function m(){var v=s.current,e=p;if(w)v.params=e.params,d.copy(v.params,b),a.$broadcast("$routeUpdate",v);else if(e||v)u=!1,(s.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?c.path(t(e.redirectTo,e.params)).search(e.params).replace():c.url(e.redirectTo(e.pathParams,
1680 1680 c.path(),c.search())).replace()),f.when(e).then(function(){if(e){var a=d.extend({},e.resolve),b,c;d.forEach(a,function(b,e){a[e]=d.isString(b)?h.get(b):h.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(c=e.templateUrl)&&(d.isFunction(c)&&(c=c(e.params)),d.isDefined(c)&&(e.loadedTemplateUrl=x.valueOf(c),b=k(c)));d.isDefined(b)&&(a.$template=b);return f.all(a)}}).then(function(c){e==s.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",
1681 1681 e,v))},function(b){e==s.current&&a.$broadcast("$routeChangeError",e,v,b)})}function n(){var a,b;d.forEach(g,function(f,g){var q;if(q=!b){var h=c.path();q=f.keys;var l={};if(f.regexp)if(h=f.regexp.exec(h)){for(var k=1,n=h.length;k<n;++k){var m=q[k-1],p=h[k];m&&p&&(l[m.name]=p)}q=l}else q=null;else q=null;q=a=q}q&&(b=r(f,{params:d.extend({},c.search(),a),pathParams:a}),b.$$route=f)});return b||g[null]&&r(g[null],{params:{},pathParams:{}})}function t(a,b){var c=[];d.forEach((a||"").split(":"),function(a,
1682 1682 d){if(0===d)c.push(a);else{var f=a.match(/(\w+)(?:[?*])?(.*)/),g=f[1];c.push(b[g]);c.push(f[2]||"");delete b[g]}});return c.join("")}var u=!1,p,w,s={routes:g,reload:function(){u=!0;var b={defaultPrevented:!1,preventDefault:function(){this.defaultPrevented=!0;u=!1}};a.$evalAsync(function(){l(b);b.defaultPrevented||m()})},updateParams:function(a){if(this.current&&this.current.$$route)a=d.extend({},this.current.params,a),c.path(t(this.current.$$route.originalPath,a)),c.search(a);else throw B("norout");
1683 1683 }};a.$on("$locationChangeStart",l);a.$on("$locationChangeSuccess",m);return s}]}),B=d.$$minErr("ngRoute");w.provider("$routeParams",function(){this.$get=function(){return{}}});w.directive("ngView",z);w.directive("ngView",A);z.$inject=["$route","$anchorScroll","$animate"];A.$inject=["$compile","$controller","$route"]})(window,window.angular);
1684 1684 //# sourceMappingURL=angular-route.min.js.map
1685 1685
1686 1686 ;/*
1687 1687 AngularJS v1.5.5
1688 1688 (c) 2010-2016 Google, Inc. http://angularjs.org
1689 1689 License: MIT
1690 1690 */
1691 1691 (function(P,d){'use strict';function G(t,g){g=g||{};d.forEach(g,function(d,q){delete g[q]});for(var q in t)!t.hasOwnProperty(q)||"$"===q.charAt(0)&&"$"===q.charAt(1)||(g[q]=t[q]);return g}var z=d.$$minErr("$resource"),M=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;d.module("ngResource",["ng"]).provider("$resource",function(){var t=/^https?:\/\/[^\/]*/,g=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}};
1692 1692 this.$get=["$http","$log","$q","$timeout",function(q,L,H,I){function A(d,h){return encodeURIComponent(d).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,h?"%20":"+")}function B(d,h){this.template=d;this.defaults=v({},g.defaults,h);this.urlParams={}}function J(e,h,n,k){function c(a,b){var c={};b=v({},h,b);u(b,function(b,h){x(b)&&(b=b());var f;if(b&&b.charAt&&"@"==b.charAt(0)){f=a;var l=b.substr(1);if(null==l||""===l||"hasOwnProperty"===l||!M.test("."+
1693 1693 l))throw z("badmember",l);for(var l=l.split("."),m=0,k=l.length;m<k&&d.isDefined(f);m++){var r=l[m];f=null!==f?f[r]:void 0}}else f=b;c[h]=f});return c}function N(a){return a.resource}function m(a){G(a||{},this)}var t=new B(e,k);n=v({},g.defaults.actions,n);m.prototype.toJSON=function(){var a=v({},this);delete a.$promise;delete a.$resolved;return a};u(n,function(a,b){var h=/^(POST|PUT|PATCH)$/i.test(a.method),e=a.timeout,E=d.isDefined(a.cancellable)?a.cancellable:k&&d.isDefined(k.cancellable)?k.cancellable:
1694 1694 g.defaults.cancellable;e&&!d.isNumber(e)&&(L.debug("ngResource:\n Only numeric values are allowed as `timeout`.\n Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."),delete a.timeout,e=null);m[b]=function(f,l,k,g){var r={},n,w,C;switch(arguments.length){case 4:C=g,w=k;case 3:case 2:if(x(l)){if(x(f)){w=f;C=l;break}w=l;C=k}else{r=f;n=l;w=k;break}case 1:x(f)?
1695 1695 w=f:h?n=f:r=f;break;case 0:break;default:throw z("badargs",arguments.length);}var D=this instanceof m,p=D?n:a.isArray?[]:new m(n),s={},A=a.interceptor&&a.interceptor.response||N,B=a.interceptor&&a.interceptor.responseError||void 0,y,F;u(a,function(a,b){switch(b){default:s[b]=O(a);case "params":case "isArray":case "interceptor":case "cancellable":}});!D&&E&&(y=H.defer(),s.timeout=y.promise,e&&(F=I(y.resolve,e)));h&&(s.data=n);t.setUrlParams(s,v({},c(n,a.params||{}),r),a.url);r=q(s).then(function(f){var c=
1696 1696 f.data;if(c){if(d.isArray(c)!==!!a.isArray)throw z("badcfg",b,a.isArray?"array":"object",d.isArray(c)?"array":"object",s.method,s.url);if(a.isArray)p.length=0,u(c,function(b){"object"===typeof b?p.push(new m(b)):p.push(b)});else{var l=p.$promise;G(c,p);p.$promise=l}}f.resource=p;return f},function(b){(C||K)(b);return H.reject(b)});r["finally"](function(){p.$resolved=!0;!D&&E&&(p.$cancelRequest=d.noop,I.cancel(F),y=F=s.timeout=null)});r=r.then(function(b){var a=A(b);(w||K)(a,b.headers);return a},B);
1697 1697 return D?r:(p.$promise=r,p.$resolved=!1,E&&(p.$cancelRequest=y.resolve),p)};m.prototype["$"+b]=function(a,c,d){x(a)&&(d=c,c=a,a={});a=m[b].call(this,a,this,c,d);return a.$promise||a}});m.bind=function(a){return J(e,v({},h,a),n)};return m}var K=d.noop,u=d.forEach,v=d.extend,O=d.copy,x=d.isFunction;B.prototype={setUrlParams:function(e,h,n){var k=this,c=n||k.template,g,m,q="",a=k.urlParams={};u(c.split(/\W/),function(b){if("hasOwnProperty"===b)throw z("badname");!/^\d+$/.test(b)&&b&&(new RegExp("(^|[^\\\\]):"+
1698 1698 b+"(\\W|$)")).test(c)&&(a[b]={isQueryParamValue:(new RegExp("\\?.*=:"+b+"(?:\\W|$)")).test(c)})});c=c.replace(/\\:/g,":");c=c.replace(t,function(a){q=a;return""});h=h||{};u(k.urlParams,function(a,e){g=h.hasOwnProperty(e)?h[e]:k.defaults[e];d.isDefined(g)&&null!==g?(m=a.isQueryParamValue?A(g,!0):A(g,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),c=c.replace(new RegExp(":"+e+"(\\W|$)","g"),function(a,b){return m+b})):c=c.replace(new RegExp("(/?):"+e+"(\\W|$)","g"),function(a,b,c){return"/"==
1699 1699 c.charAt(0)?c:b+c})});k.defaults.stripTrailingSlashes&&(c=c.replace(/\/+$/,"")||"/");c=c.replace(/\/\.(?=\w+($|\?))/,".");e.url=q+c.replace(/\/\\\./,"/.");u(h,function(a,c){k.urlParams[c]||(e.params=e.params||{},e.params[c]=a)})}};return J}]})})(window,window.angular);
1700 1700 //# sourceMappingURL=angular-resource.min.js.map
1701 1701
1702 1702 ;/*
1703 1703 AngularJS v1.5.5
1704 1704 (c) 2010-2016 Google, Inc. http://angularjs.org
1705 1705 License: MIT
1706 1706 */
1707 1707 (function(S,q){'use strict';function Aa(a,b,c){if(!a)throw Ma("areq",b||"?",c||"required");return a}function Ba(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;ba(a)&&(a=a.join(" "));ba(b)&&(b=b.join(" "));return a+" "+b}function Na(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function X(a,b,c){var d="";a=ba(a)?a:a&&P(a)&&a.length?a.split(/\s+/):[];r(a,function(a,f){a&&0<a.length&&(d+=0<f?" ":"",d+=c?b+a:a+b)});return d}function Oa(a){if(a instanceof G)switch(a.length){case 0:return[];
1708 1708 case 1:if(1===a[0].nodeType)return a;break;default:return G(ca(a))}if(1===a.nodeType)return G(a)}function ca(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Pa(a,b,c){r(b,function(b){a.addClass(b,c)})}function Qa(a,b,c){r(b,function(b){a.removeClass(b,c)})}function U(a){return function(b,c){c.addClass&&(Pa(a,b,c.addClass),c.addClass=null);c.removeClass&&(Qa(a,b,c.removeClass),c.removeClass=null)}}function pa(a){a=a||{};if(!a.$$prepared){var b=a.domOperation||
1709 1709 Q;a.domOperation=function(){a.$$domOperationFired=!0;b();b=Q};a.$$prepared=!0}return a}function ga(a,b){Ca(a,b);Da(a,b)}function Ca(a,b){b.from&&(a.css(b.from),b.from=null)}function Da(a,b){b.to&&(a.css(b.to),b.to=null)}function V(a,b,c){var d=b.options||{};c=c.options||{};var e=(d.addClass||"")+" "+(c.addClass||""),f=(d.removeClass||"")+" "+(c.removeClass||"");a=Ra(a.attr("class"),e,f);c.preparationClasses&&(d.preparationClasses=Y(c.preparationClasses,d.preparationClasses),delete c.preparationClasses);
1710 1710 e=d.domOperation!==Q?d.domOperation:null;Ea(d,c);e&&(d.domOperation=e);d.addClass=a.addClass?a.addClass:null;d.removeClass=a.removeClass?a.removeClass:null;b.addClass=d.addClass;b.removeClass=d.removeClass;return d}function Ra(a,b,c){function d(a){P(a)&&(a=a.split(" "));var b={};r(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);r(b,function(a,b){e[b]=1});c=d(c);r(c,function(a,b){e[b]=1===e[b]?null:-1});var f={addClass:"",removeClass:""};r(e,function(b,c){var d,e;1===b?(d="addClass",
1711 1711 e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(f[d].length&&(f[d]+=" "),f[d]+=c)});return f}function D(a){return a instanceof q.element?a[0]:a}function Sa(a,b,c){var d="";b&&(d=X(b,"ng-",!0));c.addClass&&(d=Y(d,X(c.addClass,"-add")));c.removeClass&&(d=Y(d,X(c.removeClass,"-remove")));d.length&&(c.preparationClasses=d,a.addClass(d))}function qa(a,b){var c=b?"-"+b+"s":"";la(a,[ma,c]);return[ma,c]}function ta(a,b){var c=b?"paused":"",d=Z+"PlayState";la(a,[d,c]);return[d,c]}function la(a,b){a.style[b[0]]=
1712 1712 b[1]}function Y(a,b){return a?b?a+" "+b:a:b}function Fa(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};r(c,function(a,b){var c=e[a];if(c){var s=c.charAt(0);if("-"===s||"+"===s||0<=s)c=Ta(c);0===c&&(c=null);d[b]=c}});return d}function Ta(a){var b=0;a=a.split(/\s*,\s*/);r(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function ua(a){return 0===a||null!=a}function Ga(a,b){var c=T,d=a+"s";b?c+="Duration":d+=" linear all";
1713 1713 return[c,d]}function Ha(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}function Ia(a,b,c){r(c,function(c){a[c]=da(a[c])?a[c]:b.style.getPropertyValue(c)})}var Q=q.noop,Ja=q.copy,Ea=q.extend,G=q.element,r=q.forEach,ba=q.isArray,P=q.isString,va=q.isObject,C=q.isUndefined,da=q.isDefined,Ka=q.isFunction,wa=q.isElement,T,xa,Z,ya;C(S.ontransitionend)&&
1714 1714 da(S.onwebkittransitionend)?(T="WebkitTransition",xa="webkitTransitionEnd transitionend"):(T="transition",xa="transitionend");C(S.onanimationend)&&da(S.onwebkitanimationend)?(Z="WebkitAnimation",ya="webkitAnimationEnd animationend"):(Z="animation",ya="animationend");var ra=Z+"Delay",za=Z+"Duration",ma=T+"Delay",La=T+"Duration",Ma=q.$$minErr("ng"),Ua={transitionDuration:La,transitionDelay:ma,transitionProperty:T+"Property",animationDuration:za,animationDelay:ra,animationIterationCount:Z+"IterationCount"},
1715 1715 Va={transitionDuration:La,transitionDelay:ma,animationDuration:za,animationDelay:ra};q.module("ngAnimate",[]).directive("ngAnimateSwap",["$animate","$rootScope",function(a,b){return{restrict:"A",transclude:"element",terminal:!0,priority:600,link:function(b,d,e,f,z){var B,s;b.$watchCollection(e.ngAnimateSwap||e["for"],function(e){B&&a.leave(B);s&&(s.$destroy(),s=null);if(e||0===e)s=b.$new(),z(s,function(b){B=b;a.enter(b,null,d)})})}}}]).directive("ngAnimateChildren",["$interpolate",function(a){return{link:function(b,
1716 1716 c,d){function e(a){c.data("$$ngAnimateChildren","on"===a||"true"===a)}var f=d.ngAnimateChildren;q.isString(f)&&0===f.length?c.data("$$ngAnimateChildren",!0):(e(a(f)(b)),d.$observe("ngAnimateChildren",e))}}}]).factory("$$rAFScheduler",["$$rAF",function(a){function b(a){d=d.concat(a);c()}function c(){if(d.length){for(var b=d.shift(),z=0;z<b.length;z++)b[z]();e||a(function(){e||c()})}}var d,e;d=b.queue=[];b.waitUntilQuiet=function(b){e&&e();e=a(function(){e=null;b();c()})};return b}]).provider("$$animateQueue",
1717 1717 ["$animateProvider",function(a){function b(a){if(!a)return null;a=a.split(" ");var b=Object.create(null);r(a,function(a){b[a]=!0});return b}function c(a,c){if(a&&c){var d=b(c);return a.split(" ").some(function(a){return d[a]})}}function d(a,b,c,d){return f[a].some(function(a){return a(b,c,d)})}function e(a,b){var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var f=this.rules={skip:[],cancel:[],join:[]};f.join.push(function(a,b,c){return!b.structural&&e(b)});f.skip.push(function(a,
1718 1718 b,c){return!b.structural&&!e(b)});f.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});f.skip.push(function(a,b,c){return c.structural&&2===c.state&&!b.structural});f.cancel.push(function(a,b,c){return c.structural&&b.structural});f.cancel.push(function(a,b,c){return 2===c.state&&b.structural});f.cancel.push(function(a,b,d){if(d.structural)return!1;a=b.addClass;b=b.removeClass;var e=d.addClass;d=d.removeClass;return C(a)&&C(b)||C(e)&&C(d)?!1:c(a,d)||c(b,e)});this.$get=["$$rAF","$rootScope",
1719 1719 "$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite","$$forceReflow",function(b,c,f,v,I,Wa,u,sa,w,x){function R(){var a=!1;return function(b){a?b():c.$$postDigest(function(){a=!0;b()})}}function J(a,b,c){var g=D(b),d=D(a),k=[];(a=h[c])&&r(a,function(a){ia.call(a.node,g)?k.push(a.callback):"leave"===c&&ia.call(a.node,d)&&k.push(a.callback)});return k}function k(a,b,c){var g=ca(b);return a.filter(function(a){return!(a.node===g&&(!c||a.callback===c))})}
1720 1720 function p(a,k,h){function l(c,g,d,h){f(function(){var c=J(oa,a,g);c.length?b(function(){r(c,function(b){b(a,d,h)});"close"!==d||a[0].parentNode||N.off(a)}):"close"!==d||a[0].parentNode||N.off(a)});c.progress(g,d,h)}function A(b){var c=a,g=m;g.preparationClasses&&(c.removeClass(g.preparationClasses),g.preparationClasses=null);g.activeClasses&&(c.removeClass(g.activeClasses),g.activeClasses=null);F(a,m);ga(a,m);m.domOperation();p.complete(!b)}var m=Ja(h),x,oa;if(a=Oa(a))x=D(a),oa=a.parent();var m=
1721 1721 pa(m),p=new u,f=R();ba(m.addClass)&&(m.addClass=m.addClass.join(" "));m.addClass&&!P(m.addClass)&&(m.addClass=null);ba(m.removeClass)&&(m.removeClass=m.removeClass.join(" "));m.removeClass&&!P(m.removeClass)&&(m.removeClass=null);m.from&&!va(m.from)&&(m.from=null);m.to&&!va(m.to)&&(m.to=null);if(!x)return A(),p;h=[x.className,m.addClass,m.removeClass].join(" ");if(!Xa(h))return A(),p;var s=0<=["enter","move","leave"].indexOf(k),t=v[0].hidden,w=!g||t||H.get(x);h=!w&&y.get(x)||{};var I=!!h.state;w||
1722 1722 I&&1==h.state||(w=!K(a,oa,k));if(w)return t&&l(p,k,"start"),A(),t&&l(p,k,"close"),p;s&&L(a);t={structural:s,element:a,event:k,addClass:m.addClass,removeClass:m.removeClass,close:A,options:m,runner:p};if(I){if(d("skip",a,t,h)){if(2===h.state)return A(),p;V(a,h,t);return h.runner}if(d("cancel",a,t,h))if(2===h.state)h.runner.end();else if(h.structural)h.close();else return V(a,h,t),h.runner;else if(d("join",a,t,h))if(2===h.state)V(a,t,{});else return Sa(a,s?k:null,m),k=t.event=h.event,m=V(a,h,t),h.runner}else V(a,
1723 1723 t,{});(I=t.structural)||(I="animate"===t.event&&0<Object.keys(t.options.to||{}).length||e(t));if(!I)return A(),O(a),p;var ia=(h.counter||0)+1;t.counter=ia;M(a,1,t);c.$$postDigest(function(){var b=y.get(x),c=!b,b=b||{},g=0<(a.parent()||[]).length&&("animate"===b.event||b.structural||e(b));if(c||b.counter!==ia||!g){c&&(F(a,m),ga(a,m));if(c||s&&b.event!==k)m.domOperation(),p.end();g||O(a)}else k=!b.structural&&e(b,!0)?"setClass":b.event,M(a,2),b=Wa(a,k,b.options),p.setHost(b),l(p,k,"start",{}),b.done(function(b){A(!b);
1724 1724 (b=y.get(x))&&b.counter===ia&&O(D(a));l(p,k,"close",{})})});return p}function L(a){a=D(a).querySelectorAll("[data-ng-animate]");r(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=y.get(a);if(c)switch(b){case 2:c.runner.end();case 1:y.remove(a)}})}function O(a){a=D(a);a.removeAttribute("data-ng-animate");y.remove(a)}function l(a,b){return D(a)===D(b)}function K(a,b,c){c=G(v[0].body);var g=l(a,c)||"HTML"===a[0].nodeName,d=l(a,f),h=!1,k,e=H.get(D(a));(a=G.data(a[0],"$ngAnimatePin"))&&
1725 1725 (b=a);for(b=D(b);b;){d||(d=l(b,f));if(1!==b.nodeType)break;a=y.get(b)||{};if(!h){var p=H.get(b);if(!0===p&&!1!==e){e=!0;break}else!1===p&&(e=!1);h=a.structural}if(C(k)||!0===k)a=G.data(b,"$$ngAnimateChildren"),da(a)&&(k=a);if(h&&!1===k)break;g||(g=l(b,c));if(g&&d)break;if(!d&&(a=G.data(b,"$ngAnimatePin"))){b=D(a);continue}b=b.parentNode}return(!h||k)&&!0!==e&&d&&g}function M(a,b,c){c=c||{};c.state=b;a=D(a);a.setAttribute("data-ng-animate",b);c=(b=y.get(a))?Ea(b,c):c;y.put(a,c)}var y=new I,H=new I,
1726 1726 g=null,oa=c.$watch(function(){return 0===sa.totalPendingRequests},function(a){a&&(oa(),c.$$postDigest(function(){c.$$postDigest(function(){null===g&&(g=!0)})}))}),h={},A=a.classNameFilter(),Xa=A?function(a){return A.test(a)}:function(){return!0},F=U(w),ia=S.Node.prototype.contains||function(a){return this===a||!!(this.compareDocumentPosition(a)&16)},N={on:function(a,b,c){var g=ca(b);h[a]=h[a]||[];h[a].push({node:g,callback:c});G(b).on("$destroy",function(){y.get(g)||N.off(a,b,c)})},off:function(a,
1727 1727 b,c){if(1!==arguments.length||q.isString(arguments[0])){var g=h[a];g&&(h[a]=1===arguments.length?null:k(g,b,c))}else for(g in b=arguments[0],h)h[g]=k(h[g],b)},pin:function(a,b){Aa(wa(a),"element","not an element");Aa(wa(b),"parentElement","not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,g){c=c||{};c.domOperation=g;return p(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!g;else if(wa(a)){var d=D(a),h=H.get(d);1===c?b=!h:H.put(d,!b)}else b=g=!!a;return b}};return N}]}]).provider("$$animation",
1728 1728 ["$animateProvider",function(a){function b(a){return a.data("$$animationRunner")}var c=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$HashMap","$$rAFScheduler",function(a,e,f,z,B,s){function v(a){function b(a){if(a.processed)return a;a.processed=!0;var d=a.domNode,L=d.parentNode;e.put(d,a);for(var f;L;){if(f=e.get(L)){f.processed||(f=b(f));break}L=L.parentNode}(f||c).children.push(a);return a}var c={children:[]},d,e=new B;for(d=0;d<a.length;d++){var f=a[d];e.put(f.domNode,
1729 1729 a[d]={domNode:f.domNode,fn:f.fn,children:[]})}for(d=0;d<a.length;d++)b(a[d]);return function(a){var b=[],c=[],d;for(d=0;d<a.children.length;d++)c.push(a.children[d]);a=c.length;var e=0,f=[];for(d=0;d<c.length;d++){var x=c[d];0>=a&&(a=e,e=0,b.push(f),f=[]);f.push(x.fn);x.children.forEach(function(a){e++;c.push(a)});a--}f.length&&b.push(f);return b}(c)}var I=[],q=U(a);return function(u,B,w){function x(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];r(a,function(a){var c=
1730 1730 a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function R(a){var b=[],c={};r(a,function(a,g){var d=D(a.element),e=0<=["enter","move"].indexOf(a.event),d=a.structural?x(d):[];if(d.length){var k=e?"to":"from";r(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][k]={animationID:g,element:G(a)}})}else b.push(a)});var d={},e={};r(c,function(c,h){var k=c.from,f=c.to;if(k&&f){var p=a[k.animationID],y=a[f.animationID],l=k.animationID.toString();if(!e[l]){var x=e[l]=
1731 1731 {structural:!0,beforeStart:function(){p.beforeStart();y.beforeStart()},close:function(){p.close();y.close()},classes:J(p.classes,y.classes),from:p,to:y,anchors:[]};x.classes.length?b.push(x):(b.push(p),b.push(y))}e[l].anchors.push({out:k.element,"in":f.element})}else k=k?k.animationID:f.animationID,f=k.toString(),d[f]||(d[f]=!0,b.push(a[k]))});return b}function J(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],d=0;d<a.length;d++){var k=a[d];if("ng-"!==k.substring(0,3))for(var e=0;e<b.length;e++)if(k===
1732 1732 b[e]){c.push(k);break}}return c.join(" ")}function k(a){for(var b=c.length-1;0<=b;b--){var d=c[b];if(f.has(d)&&(d=f.get(d)(a)))return d}}function p(a,c){a.from&&a.to?(b(a.from.element).setHost(c),b(a.to.element).setHost(c)):b(a.element).setHost(c)}function L(){var a=b(u);!a||"leave"===B&&w.$$domOperationFired||a.end()}function O(b){u.off("$destroy",L);u.removeData("$$animationRunner");q(u,w);ga(u,w);w.domOperation();y&&a.removeClass(u,y);u.removeClass("ng-animate");K.complete(!b)}w=pa(w);var l=0<=
1733 1733 ["enter","move","leave"].indexOf(B),K=new z({end:function(){O()},cancel:function(){O(!0)}});if(!c.length)return O(),K;u.data("$$animationRunner",K);var M=Ba(u.attr("class"),Ba(w.addClass,w.removeClass)),y=w.tempClasses;y&&(M+=" "+y,w.tempClasses=null);var H;l&&(H="ng-"+B+"-prepare",a.addClass(u,H));I.push({element:u,classes:M,event:B,structural:l,options:w,beforeStart:function(){u.addClass("ng-animate");y&&a.addClass(u,y);H&&(a.removeClass(u,H),H=null)},close:O});u.on("$destroy",L);if(1<I.length)return K;
1734 1734 e.$$postDigest(function(){var a=[];r(I,function(c){b(c.element)?a.push(c):c.close()});I.length=0;var c=R(a),d=[];r(c,function(a){d.push({domNode:D(a.from?a.from.element:a.element),fn:function(){a.beforeStart();var c,d=a.close;if(b(a.anchors?a.from.element||a.to.element:a.element)){var g=k(a);g&&(c=g.start)}c?(c=c(),c.done(function(a){d(!a)}),p(a,c)):d()}})});s(v(d))});return K}}]}]).provider("$animateCss",["$animateProvider",function(a){var b=Ha(),c=Ha();this.$get=["$window","$$jqLite","$$AnimateRunner",
1735 1735 "$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$$animateQueue",function(a,e,f,z,B,s,v,I){function q(a,b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++R))+"-"+a.getAttribute("class")+"-"+b}function u(k,f,x,s){var l;0<b.count(x)&&(l=c.get(x),l||(f=X(f,"-stagger"),e.addClass(k,f),l=Fa(a,k,s),l.animationDuration=Math.max(l.animationDuration,0),l.transitionDuration=Math.max(l.transitionDuration,0),e.removeClass(k,f),c.put(x,l)));return l||{}}function sa(a){J.push(a);
1736 1736 v.waitUntilQuiet(function(){b.flush();c.flush();for(var a=B(),d=0;d<J.length;d++)J[d](a);J.length=0})}function w(c,e,f){e=b.get(f);e||(e=Fa(a,c,Ua),"infinite"===e.animationIterationCount&&(e.animationIterationCount=1));b.put(f,e);c=e;f=c.animationDelay;e=c.transitionDelay;c.maxDelay=f&&e?Math.max(f,e):f||e;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var x=U(e),R=0,J=[];return function(a,c){function d(){l()}function v(){l(!0)}function l(b){if(!(R||
1737 1737 G&&N)){R=!0;N=!1;g.$$skipPreparationClasses||e.removeClass(a,fa);e.removeClass(a,da);ta(h,!1);qa(h,!1);r(A,function(a){h.style[a[0]]=""});x(a,g);ga(a,g);Object.keys(J).length&&r(J,function(a,b){a?h.style.setProperty(b,a):h.style.removeProperty(b)});if(g.onDone)g.onDone();ea&&ea.length&&a.off(ea.join(" "),y);var c=a.data("$$animateCss");c&&(z.cancel(c[0].timer),a.removeData("$$animateCss"));C&&C.complete(!b)}}function K(a){n.blockTransition&&qa(h,a);n.blockKeyframeAnimation&&ta(h,!!a)}function M(){C=
1738 1738 new f({end:d,cancel:v});sa(Q);l();return{$$willAnimate:!1,start:function(){return C},end:d}}function y(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));Math.max(a-V,0)>=S&&b>=m&&(G=!0,l())}function H(){function b(){if(!R){K(!1);r(A,function(a){h.style[a[0]]=a[1]});x(a,g);e.addClass(a,da);if(n.recalculateTimingStyles){na=h.className+" "+fa;ja=q(h,na);E=w(h,na,ja);$=E.maxDelay;ha=Math.max($,0);m=E.maxDuration;if(0===m){l();return}n.hasTransitions=
1739 1739 0<E.transitionDuration;n.hasAnimations=0<E.animationDuration}n.applyAnimationDelay&&($="boolean"!==typeof g.delay&&ua(g.delay)?parseFloat(g.delay):$,ha=Math.max($,0),E.animationDelay=$,aa=[ra,$+"s"],A.push(aa),h.style[aa[0]]=aa[1]);S=1E3*ha;U=1E3*m;if(g.easing){var d,f=g.easing;n.hasTransitions&&(d=T+"TimingFunction",A.push([d,f]),h.style[d]=f);n.hasAnimations&&(d=Z+"TimingFunction",A.push([d,f]),h.style[d]=f)}E.transitionDuration&&ea.push(xa);E.animationDuration&&ea.push(ya);V=Date.now();var H=S+
1740 1740 1.5*U;d=V+H;var f=a.data("$$animateCss")||[],s=!0;if(f.length){var p=f[0];(s=d>p.expectedEndTime)?z.cancel(p.timer):f.push(l)}s&&(H=z(c,H,!1),f[0]={timer:H,expectedEndTime:d},f.push(l),a.data("$$animateCss",f));if(ea.length)a.on(ea.join(" "),y);g.to&&(g.cleanupStyles&&Ia(J,h,Object.keys(g.to)),Da(a,g))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d<b.length;d++)b[d]();a.removeData("$$animateCss")}}if(!R)if(h.parentNode){var d=function(a){if(G)N&&a&&(N=!1,l());else if(N=!a,E.animationDuration)if(a=
1741 1741 ta(h,N),N)A.push(a);else{var b=A,c=b.indexOf(a);0<=a&&b.splice(c,1)}},f=0<ca&&(E.transitionDuration&&0===W.transitionDuration||E.animationDuration&&0===W.animationDuration)&&Math.max(W.animationDelay,W.transitionDelay);f?z(b,Math.floor(f*ca*1E3),!1):b();P.resume=function(){d(!0)};P.pause=function(){d(!1)}}else l()}var g=c||{};g.$$prepared||(g=pa(Ja(g)));var J={},h=D(a);if(!h||!h.parentNode||!I.enabled())return M();var A=[],B=a.attr("class"),F=Na(g),R,N,G,C,P,ha,S,m,U,V,ea=[];if(0===g.duration||!s.animations&&
1742 1742 !s.transitions)return M();var ka=g.event&&ba(g.event)?g.event.join(" "):g.event,Y="",t="";ka&&g.structural?Y=X(ka,"ng-",!0):ka&&(Y=ka);g.addClass&&(t+=X(g.addClass,"-add"));g.removeClass&&(t.length&&(t+=" "),t+=X(g.removeClass,"-remove"));g.applyClassesEarly&&t.length&&x(a,g);var fa=[Y,t].join(" ").trim(),na=B+" "+fa,da=X(fa,"-active"),B=F.to&&0<Object.keys(F.to).length;if(!(0<(g.keyframeStyle||"").length||B||fa))return M();var ja,W;0<g.stagger?(F=parseFloat(g.stagger),W={transitionDelay:F,animationDelay:F,
1743 1743 transitionDuration:0,animationDuration:0}):(ja=q(h,na),W=u(h,fa,ja,Va));g.$$skipPreparationClasses||e.addClass(a,fa);g.transitionStyle&&(F=[T,g.transitionStyle],la(h,F),A.push(F));0<=g.duration&&(F=0<h.style[T].length,F=Ga(g.duration,F),la(h,F),A.push(F));g.keyframeStyle&&(F=[Z,g.keyframeStyle],la(h,F),A.push(F));var ca=W?0<=g.staggerIndex?g.staggerIndex:b.count(ja):0;(ka=0===ca)&&!g.skipBlocking&&qa(h,9999);var E=w(h,na,ja),$=E.maxDelay;ha=Math.max($,0);m=E.maxDuration;var n={};n.hasTransitions=
1744 1744 0<E.transitionDuration;n.hasAnimations=0<E.animationDuration;n.hasTransitionAll=n.hasTransitions&&"all"==E.transitionProperty;n.applyTransitionDuration=B&&(n.hasTransitions&&!n.hasTransitionAll||n.hasAnimations&&!n.hasTransitions);n.applyAnimationDuration=g.duration&&n.hasAnimations;n.applyTransitionDelay=ua(g.delay)&&(n.applyTransitionDuration||n.hasTransitions);n.applyAnimationDelay=ua(g.delay)&&n.hasAnimations;n.recalculateTimingStyles=0<t.length;if(n.applyTransitionDuration||n.applyAnimationDuration)m=
1745 1745 g.duration?parseFloat(g.duration):m,n.applyTransitionDuration&&(n.hasTransitions=!0,E.transitionDuration=m,F=0<h.style[T+"Property"].length,A.push(Ga(m,F))),n.applyAnimationDuration&&(n.hasAnimations=!0,E.animationDuration=m,A.push([za,m+"s"]));if(0===m&&!n.recalculateTimingStyles)return M();if(null!=g.delay){var aa;"boolean"!==typeof g.delay&&(aa=parseFloat(g.delay),ha=Math.max(aa,0));n.applyTransitionDelay&&A.push([ma,aa+"s"]);n.applyAnimationDelay&&A.push([ra,aa+"s"])}null==g.duration&&0<E.transitionDuration&&
1746 1746 (n.recalculateTimingStyles=n.recalculateTimingStyles||ka);S=1E3*ha;U=1E3*m;g.skipBlocking||(n.blockTransition=0<E.transitionDuration,n.blockKeyframeAnimation=0<E.animationDuration&&0<W.animationDelay&&0===W.animationDuration);g.from&&(g.cleanupStyles&&Ia(J,h,Object.keys(g.from)),Ca(a,g));n.blockTransition||n.blockKeyframeAnimation?K(m):g.skipBlocking||qa(h,!1);return{$$willAnimate:!0,end:d,start:function(){if(!R)return P={end:d,cancel:v,resume:null,pause:null},C=new f(P),sa(H),C}}}}]}]).provider("$$animateCssDriver",
1747 1747 ["$$animationProvider",function(a){a.drivers.push("$$animateCssDriver");this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$sniffer","$$jqLite","$document",function(a,c,d,e,f,z,B){function s(a){return a.replace(/\bng-\S+\b/g,"")}function v(a,b){P(a)&&(a=a.split(" "));P(b)&&(b=b.split(" "));return a.filter(function(a){return-1===b.indexOf(a)}).join(" ")}function I(c,e,f){function k(a){var b={},c=D(a).getBoundingClientRect();r(["width","height","top","left"],function(a){var d=c[a];
1748 1748 switch(a){case "top":d+=C.scrollTop;break;case "left":d+=C.scrollLeft}b[a]=Math.floor(d)+"px"});return b}function p(){var c=s(f.attr("class")||""),d=v(c,l),c=v(l,c),d=a(z,{to:k(f),addClass:"ng-anchor-in "+d,removeClass:"ng-anchor-out "+c,delay:!0});return d.$$willAnimate?d:null}function B(){z.remove();e.removeClass("ng-animate-shim");f.removeClass("ng-animate-shim")}var z=G(D(e).cloneNode(!0)),l=s(z.attr("class")||"");e.addClass("ng-animate-shim");f.addClass("ng-animate-shim");z.addClass("ng-anchor");
1749 1749 w.append(z);var K;c=function(){var c=a(z,{addClass:"ng-anchor-out",delay:!0,from:k(e)});return c.$$willAnimate?c:null}();if(!c&&(K=p(),!K))return B();var M=c||K;return{start:function(){function a(){c&&c.end()}var b,c=M.start();c.done(function(){c=null;if(!K&&(K=p()))return c=K.start(),c.done(function(){c=null;B();b.complete()}),c;B();b.complete()});return b=new d({end:a,cancel:a})}}}function q(a,b,c,e){var f=u(a,Q),s=u(b,Q),z=[];r(e,function(a){(a=I(c,a.out,a["in"]))&&z.push(a)});if(f||s||0!==z.length)return{start:function(){function a(){r(b,
1750 1750 function(a){a.end()})}var b=[];f&&b.push(f.start());s&&b.push(s.start());r(z,function(a){b.push(a.start())});var c=new d({end:a,cancel:a});d.all(b,function(a){c.complete(a)});return c}}}function u(c){var d=c.element,e=c.options||{};c.structural&&(e.event=c.event,e.structural=!0,e.applyClassesEarly=!0,"leave"===c.event&&(e.onDone=e.domOperation));e.preparationClasses&&(e.event=Y(e.event,e.preparationClasses));c=a(d,e);return c.$$willAnimate?c:null}if(!f.animations&&!f.transitions)return Q;var C=B[0].body;
1751 1751 c=D(e);var w=G(c.parentNode&&11===c.parentNode.nodeType||C.contains(c)?c:C);U(z);return function(a){return a.from&&a.to?q(a.from,a.to,a.classes,a.anchors):u(a)}}]}]).provider("$$animateJs",["$animateProvider",function(a){this.$get=["$injector","$$AnimateRunner","$$jqLite",function(b,c,d){function e(c){c=ba(c)?c:c.split(" ");for(var d=[],e={},f=0;f<c.length;f++){var r=c[f],q=a.$$registeredAnimations[r];q&&!e[r]&&(d.push(b.get(q)),e[r]=!0)}return d}var f=U(d);return function(a,b,d,v){function q(){v.domOperation();
1752 1752 f(a,v)}function D(a,b,d,e,g){switch(d){case "animate":b=[b,e.from,e.to,g];break;case "setClass":b=[b,x,G,g];break;case "addClass":b=[b,x,g];break;case "removeClass":b=[b,G,g];break;default:b=[b,g]}b.push(e);if(a=a.apply(a,b))if(Ka(a.start)&&(a=a.start()),a instanceof c)a.done(g);else if(Ka(a))return a;return Q}function u(a,b,d,e,g){var f=[];r(e,function(e){var k=e[g];k&&f.push(function(){var e,g,f=!1,h=function(a){f||(f=!0,(g||Q)(a),e.complete(!a))};e=new c({end:function(){h()},cancel:function(){h(!0)}});
1753 1753 g=D(k,a,b,d,function(a){h(!1===a)});return e})});return f}function C(a,b,d,e,g){var f=u(a,b,d,e,g);if(0===f.length){var h,k;"beforeSetClass"===g?(h=u(a,"removeClass",d,e,"beforeRemoveClass"),k=u(a,"addClass",d,e,"beforeAddClass")):"setClass"===g&&(h=u(a,"removeClass",d,e,"removeClass"),k=u(a,"addClass",d,e,"addClass"));h&&(f=f.concat(h));k&&(f=f.concat(k))}if(0!==f.length)return function(a){var b=[];f.length&&r(f,function(a){b.push(a())});b.length?c.all(b,a):a();return function(a){r(b,function(b){a?
1754 1754 b.cancel():b.end()})}}}var w=!1;3===arguments.length&&va(d)&&(v=d,d=null);v=pa(v);d||(d=a.attr("class")||"",v.addClass&&(d+=" "+v.addClass),v.removeClass&&(d+=" "+v.removeClass));var x=v.addClass,G=v.removeClass,J=e(d),k,p;if(J.length){var L,O;"leave"==b?(O="leave",L="afterLeave"):(O="before"+b.charAt(0).toUpperCase()+b.substr(1),L=b);"enter"!==b&&"move"!==b&&(k=C(a,b,v,J,O));p=C(a,b,v,J,L)}if(k||p){var l;return{$$willAnimate:!0,end:function(){l?l.end():(w=!0,q(),ga(a,v),l=new c,l.complete(!0));return l},
1755 1755 start:function(){function b(c){w=!0;q();ga(a,v);l.complete(c)}if(l)return l;l=new c;var d,e=[];k&&e.push(function(a){d=k(a)});e.length?e.push(function(a){q();a(!0)}):q();p&&e.push(function(a){d=p(a)});l.setHost({end:function(){w||((d||Q)(void 0),b(void 0))},cancel:function(){w||((d||Q)(!0),b(!0))}});c.chain(e,b);return l}}}}}]}]).provider("$$animateJsDriver",["$$animationProvider",function(a){a.drivers.push("$$animateJsDriver");this.$get=["$$animateJs","$$AnimateRunner",function(a,c){function d(c){return a(c.element,
1756 1756 c.event,c.classes,c.options)}return function(a){if(a.from&&a.to){var b=d(a.from),q=d(a.to);if(b||q)return{start:function(){function a(){return function(){r(d,function(a){a.end()})}}var d=[];b&&d.push(b.start());q&&d.push(q.start());c.all(d,function(a){e.complete(a)});var e=new c({end:a(),cancel:a()});return e}}}else return d(a)}}]}])})(window,window.angular);
1757 1757 //# sourceMappingURL=angular-animate.min.js.map
1758 1758
1759 1759 ;/*
1760 1760 * angular-ui-bootstrap
1761 1761 * http://angular-ui.github.io/bootstrap/
1762 1762
1763 1763 * Version: 1.3.2 - 2016-04-14
1764 1764 * License: MIT
1765 1765 */angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.datepicker","ui.bootstrap.position","ui.bootstrap.datepickerPopup","ui.bootstrap.debounce","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.paging","ui.bootstrap.pager","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["uib/template/accordion/accordion-group.html","uib/template/accordion/accordion.html","uib/template/alert/alert.html","uib/template/carousel/carousel.html","uib/template/carousel/slide.html","uib/template/datepicker/datepicker.html","uib/template/datepicker/day.html","uib/template/datepicker/month.html","uib/template/datepicker/year.html","uib/template/datepickerPopup/popup.html","uib/template/modal/backdrop.html","uib/template/modal/window.html","uib/template/pager/pager.html","uib/template/pagination/pagination.html","uib/template/tooltip/tooltip-html-popup.html","uib/template/tooltip/tooltip-popup.html","uib/template/tooltip/tooltip-template-popup.html","uib/template/popover/popover-html.html","uib/template/popover/popover-template.html","uib/template/popover/popover.html","uib/template/progressbar/bar.html","uib/template/progressbar/progress.html","uib/template/progressbar/progressbar.html","uib/template/rating/rating.html","uib/template/tabs/tab.html","uib/template/tabs/tabset.html","uib/template/timepicker/timepicker.html","uib/template/typeahead/typeahead-match.html","uib/template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$q","$parse","$injector",function(a,b,c,d){var e=d.has("$animateCss")?d.get("$animateCss"):null;return{link:function(d,f,g){function h(){f.hasClass("collapse")&&f.hasClass("in")||b.resolve(l(d)).then(function(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{addClass:"in",easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start()["finally"](i):a.addClass(f,"in",{to:{height:f[0].scrollHeight+"px"}}).then(i)})}function i(){f.removeClass("collapsing").addClass("collapse").css({height:"auto"}),m(d)}function j(){return f.hasClass("collapse")||f.hasClass("in")?void b.resolve(n(d)).then(function(){f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),e?e(f,{removeClass:"in",to:{height:"0"}}).start()["finally"](k):a.removeClass(f,"in",{to:{height:"0"}}).then(k)}):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse"),o(d)}var l=c(g.expanding),m=c(g.expanded),n=c(g.collapsing),o=c(g.collapsed);d.$eval(g.uibCollapse)||f.addClass("in").addClass("collapse").attr("aria-expanded",!0).attr("aria-hidden",!1).css({height:"auto"}),d.$watch(g.uibCollapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/accordion/accordion-group.html"},scope:{heading:"@",panelClass:"@?",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass||"panel-default",a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)};var e="accordiongroup-"+a.$id+"-"+Math.floor(1e4*Math.random());a.headingId=e+"-tab",a.panelId=e+"-panel"}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:"^uibAccordionGroup",link:function(a,b,c,d){a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){if(a){var c=angular.element(b[0].querySelector("[uib-accordion-header]"));c.html(""),c.append(a)}})}}}),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$interpolate","$timeout",function(a,b,c,d){a.closeable=!!b.close;var e=angular.isDefined(b.dismissOnTimeout)?c(b.dismissOnTimeout)(a.$parent):null;e&&d(function(){a.close()},parseInt(e,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"uib/template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",["$parse",function(a){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(b,c,d,e){var f=e[0],g=e[1],h=a(d.uibUncheckable);c.find("input").css({display:"none"}),g.$render=function(){c.toggleClass(f.activeClass,angular.equals(g.$modelValue,b.$eval(d.uibBtnRadio)))},c.on(f.toggleEvent,function(){if(!d.disabled){var a=c.hasClass(f.activeClass);a&&!angular.isDefined(d.uncheckable)||b.$apply(function(){g.$setViewValue(a?null:b.$eval(d.uibBtnRadio)),g.$render()})}}),d.uibUncheckable&&b.$watch(h,function(a){d.$set("uncheckable",a?"":void 0)})}}}]).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(a,b,c,d){function e(){return g(c.btnCheckboxTrue,!0)}function f(){return g(c.btnCheckboxFalse,!1)}function g(b,c){return angular.isDefined(b)?a.$eval(b):c}var h=d[0],i=d[1];b.find("input").css({display:"none"}),i.$render=function(){b.toggleClass(h.activeClass,angular.equals(i.$modelValue,e()))},b.on(h.toggleEvent,function(){c.disabled||a.$apply(function(){i.$setViewValue(b.hasClass(h.activeClass)?f():e()),i.$render()})})}}}),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$timeout","$animate",function(a,b,c,d,e){function f(){for(;t.length;)t.shift()}function g(a){for(var b=0;b<q.length;b++)q[b].slide.active=b===a}function h(c,d,i){if(!u){if(angular.extend(c,{direction:i}),angular.extend(q[s].slide||{},{direction:i}),e.enabled(b)&&!a.$currentTransition&&q[d].element&&p.slides.length>1){q[d].element.data(r,c.direction);var j=p.getCurrentIndex();angular.isNumber(j)&&q[j].element&&q[j].element.data(r,c.direction),a.$currentTransition=!0,e.on("addClass",q[d].element,function(b,c){if("close"===c&&(a.$currentTransition=null,e.off("addClass",b),t.length)){var d=t.pop().slide,g=d.index,i=g>p.getCurrentIndex()?"next":"prev";f(),h(d,g,i)}})}a.active=c.index,s=c.index,g(d),l()}}function i(a){for(var b=0;b<q.length;b++)if(q[b].slide===a)return b}function j(){n&&(c.cancel(n),n=null)}function k(b){b.length||(a.$currentTransition=null,f())}function l(){j();var b=+a.interval;!isNaN(b)&&b>0&&(n=c(m,b))}function m(){var b=+a.interval;o&&!isNaN(b)&&b>0&&q.length?a.next():a.pause()}var n,o,p=this,q=p.slides=a.slides=[],r="uib-slideDirection",s=a.active,t=[],u=!1;p.addSlide=function(b,c){q.push({slide:b,element:c}),q.sort(function(a,b){return+a.slide.index-+b.slide.index}),(b.index===a.active||1===q.length&&!angular.isNumber(a.active))&&(a.$currentTransition&&(a.$currentTransition=null),s=b.index,a.active=b.index,g(s),p.select(q[i(b)]),1===q.length&&a.play())},p.getCurrentIndex=function(){for(var a=0;a<q.length;a++)if(q[a].slide.index===s)return a},p.next=a.next=function(){var b=(p.getCurrentIndex()+1)%q.length;return 0===b&&a.noWrap()?void a.pause():p.select(q[b],"next")},p.prev=a.prev=function(){var b=p.getCurrentIndex()-1<0?q.length-1:p.getCurrentIndex()-1;return a.noWrap()&&b===q.length-1?void a.pause():p.select(q[b],"prev")},p.removeSlide=function(b){var c=i(b),d=t.indexOf(q[c]);-1!==d&&t.splice(d,1),q.splice(c,1),q.length>0&&s===c?c>=q.length?(s=q.length-1,a.active=s,g(s),p.select(q[q.length-1])):(s=c,a.active=s,g(s),p.select(q[c])):s>c&&(s--,a.active=s),0===q.length&&(s=null,a.active=null,f())},p.select=a.select=function(b,c){var d=i(b.slide);void 0===c&&(c=d>p.getCurrentIndex()?"next":"prev"),b.slide.index===s||a.$currentTransition?b&&b.slide.index!==s&&a.$currentTransition&&t.push(q[d]):h(b.slide,d,c)},a.indexOfSlide=function(a){return+a.slide.index},a.isActive=function(b){return a.active===b.slide.index},a.isPrevDisabled=function(){return 0===a.active&&a.noWrap()},a.isNextDisabled=function(){return a.active===q.length-1&&a.noWrap()},a.pause=function(){a.noPause||(o=!1,j())},a.play=function(){o||(o=!0,l())},a.$on("$destroy",function(){u=!0,j()}),a.$watch("noTransition",function(a){e.enabled(b,!a)}),a.$watch("interval",l),a.$watchCollection("slides",k),a.$watch("active",function(a){if(angular.isNumber(a)&&s!==a){for(var b=0;b<q.length;b++)if(q[b].slide.index===a){a=b;break}var c=q[a];c&&(g(a),p.select(q[a]),s=a)}})}]).directive("uibCarousel",function(){return{transclude:!0,replace:!0,controller:"UibCarouselController",controllerAs:"carousel",templateUrl:function(a,b){return b.templateUrl||"uib/template/carousel/carousel.html"},scope:{active:"=",interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}).directive("uibSlide",function(){return{require:"^uibCarousel",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/carousel/slide.html"},scope:{actual:"=?",index:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)})}}}).animation(".item",["$animateCss",function(a){function b(a,b,c){a.removeClass(b),c&&c()}var c="uib-slideDirection";return{beforeAddClass:function(d,e,f){if("active"===e){var g=!1,h=d.data(c),i="next"===h?"left":"right",j=b.bind(this,d,i+" "+h,f);return d.addClass(h),a(d,{addClass:i}).start().done(j),function(){g=!0}}f()},beforeRemoveClass:function(d,e,f){if("active"===e){var g=!1,h=d.data(c),i="next"===h?"left":"right",j=b.bind(this,d,i,f);return a(d,{addClass:i}).start().done(j),function(){g=!0}}f()}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","dateFilter","orderByFilter",function(a,b,c,d){function e(a,b){var c=[],e=a.split(""),f=a.indexOf("'");if(f>-1){var g=!1;a=a.split("");for(var h=f;h<a.length;h++)g?("'"===a[h]&&(h+1<a.length&&"'"===a[h+1]?(a[h+1]="$",e[h+1]=""):(e[h]="",g=!1)),a[h]="$"):"'"===a[h]&&(a[h]="$",e[h]="",g=!0);a=a.join("")}return angular.forEach(n,function(d){var f=a.indexOf(d.key);if(f>-1){a=a.split(""),e[f]="("+d.regex+")",a[f]="$";for(var g=f+1,h=f+d.key.length;h>g;g++)e[g]="",a[g]="$";a=a.join(""),c.push({index:f,key:d.key,apply:d[b],matcher:d.regex})}}),{regex:new RegExp("^"+e.join("")+"$"),map:d(c,"index")}}function f(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}function g(a){return parseInt(a,10)}function h(a,b){return a&&b?l(a,b):a}function i(a,b){return a&&b?l(a,b,!0):a}function j(a,b){var c=Date.parse("Jan 01, 1970 00:00:00 "+a)/6e4;return isNaN(c)?b:c}function k(a,b){return a=new Date(a.getTime()),a.setMinutes(a.getMinutes()+b),a}function l(a,b,c){c=c?-1:1;var d=j(b,a.getTimezoneOffset());return k(a,c*(d-a.getTimezoneOffset()))}var m,n,o=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){m=b.id,this.parsers={},this.formatters={},n=[{key:"yyyy",regex:"\\d{4}",apply:function(a){this.year=+a},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"yyyy")}},{key:"yy",regex:"\\d{2}",apply:function(a){a=+a,this.year=69>a?a+2e3:a+1900},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"yy")}},{key:"y",regex:"\\d{1,4}",apply:function(a){this.year=+a},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"y")}},{key:"M!",regex:"0?[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){var b=a.getMonth();return/^[0-9]$/.test(b)?c(a,"MM"):c(a,"M")}},{key:"MMMM",regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)},formatter:function(a){return c(a,"MMMM")}},{key:"MMM",regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)},formatter:function(a){return c(a,"MMM")}},{key:"MM",regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){return c(a,"MM")}},{key:"M",regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){return c(a,"M")}},{key:"d!",regex:"[0-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){var b=a.getDate();return/^[1-9]$/.test(b)?c(a,"dd"):c(a,"d")}},{key:"dd",regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){return c(a,"dd")}},{key:"d",regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){return c(a,"d")}},{key:"EEEE",regex:b.DATETIME_FORMATS.DAY.join("|"),formatter:function(a){return c(a,"EEEE")}},{key:"EEE",regex:b.DATETIME_FORMATS.SHORTDAY.join("|"),formatter:function(a){return c(a,"EEE")}},{key:"HH",regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"HH")}},{key:"hh",regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"hh")}},{key:"H",regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"H")}},{key:"h",regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"h")}},{key:"mm",regex:"[0-5][0-9]",apply:function(a){this.minutes=+a},formatter:function(a){return c(a,"mm")}},{key:"m",regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a},formatter:function(a){return c(a,"m")}},{key:"sss",regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a},formatter:function(a){return c(a,"sss")}},{key:"ss",regex:"[0-5][0-9]",apply:function(a){this.seconds=+a},formatter:function(a){return c(a,"ss")}},{key:"s",regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a},formatter:function(a){return c(a,"s")}},{key:"a",regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)},formatter:function(a){return c(a,"a")}},{key:"Z",regex:"[+-]\\d{4}",apply:function(a){var b=a.match(/([+-])(\d{2})(\d{2})/),c=b[1],d=b[2],e=b[3];this.hours+=g(c+d),this.minutes+=g(c+e)},formatter:function(a){return c(a,"Z")}},{key:"ww",regex:"[0-4][0-9]|5[0-3]",formatter:function(a){return c(a,"ww")}},{key:"w",regex:"[0-9]|[1-4][0-9]|5[0-3]",formatter:function(a){return c(a,"w")}},{key:"GGGG",regex:b.DATETIME_FORMATS.ERANAMES.join("|").replace(/\s/g,"\\s"),formatter:function(a){return c(a,"GGGG")}},{key:"GGG",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"GGG")}},{key:"GG",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"GG")}},{key:"G",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"G")}}]},this.init(),this.filter=function(a,c){if(!angular.isDate(a)||isNaN(a)||!c)return"";c=b.DATETIME_FORMATS[c]||c,b.id!==m&&this.init(),this.formatters[c]||(this.formatters[c]=e(c,"formatter"));var d=this.formatters[c],f=d.map,g=c;return f.reduce(function(b,c,d){var e=g.match(new RegExp("(.*)"+c.key));e&&angular.isString(e[1])&&(b+=e[1],g=g.replace(e[1]+c.key,""));var h=d===f.length-1?g:"";return c.apply?b+c.apply.call(null,a)+h:b+h},"")},this.parse=function(c,d,g){if(!angular.isString(c)||!d)return c;d=b.DATETIME_FORMATS[d]||d,d=d.replace(o,"\\$&"),b.id!==m&&this.init(),this.parsers[d]||(this.parsers[d]=e(d,"apply"));var h=this.parsers[d],i=h.regex,j=h.map,k=c.match(i),l=!1;if(k&&k.length){var n,p;angular.isDate(g)&&!isNaN(g.getTime())?n={year:g.getFullYear(),month:g.getMonth(),date:g.getDate(),hours:g.getHours(),minutes:g.getMinutes(),seconds:g.getSeconds(),milliseconds:g.getMilliseconds()}:(g&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var q=1,r=k.length;r>q;q++){var s=j[q-1];"Z"===s.matcher&&(l=!0),s.apply&&s.apply.call(n,k[q])}var t=l?Date.prototype.setUTCFullYear:Date.prototype.setFullYear,u=l?Date.prototype.setUTCHours:Date.prototype.setHours;return f(n.year,n.month,n.date)&&(!angular.isDate(g)||isNaN(g.getTime())||l?(p=new Date(0),t.call(p,n.year,n.month,n.date),u.call(p,n.hours||0,n.minutes||0,n.seconds||0,n.milliseconds||0)):(p=new Date(g),t.call(p,n.year,n.month,n.date),u.call(p,n.hours,n.minutes,n.seconds,n.milliseconds))),p}},this.toTimezone=h,this.fromTimezone=i,this.timezoneToOffset=j,this.addDateMinutes=k,this.convertTimezoneToLocal=l}]),angular.module("ui.bootstrap.isClass",[]).directive("uibIsClass",["$animate",function(a){var b=/^\s*([\s\S]+?)\s+on\s+([\s\S]+?)\s*$/,c=/^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/;return{restrict:"A",compile:function(d,e){function f(a,b,c){i.push(a),j.push({scope:a,element:b}),o.forEach(function(b,c){g(b,a)}),a.$on("$destroy",h)}function g(b,d){var e=b.match(c),f=d.$eval(e[1]),g=e[2],h=k[b];if(!h){var i=function(b){var c=null;j.some(function(a){var d=a.scope.$eval(m);return d===b?(c=a,!0):void 0}),h.lastActivated!==c&&(h.lastActivated&&a.removeClass(h.lastActivated.element,f),c&&a.addClass(c.element,f),h.lastActivated=c)};k[b]=h={lastActivated:null,scope:d,watchFn:i,compareWithExp:g,watcher:d.$watch(g,i)}}h.watchFn(d.$eval(g))}function h(a){var b=a.targetScope,c=i.indexOf(b);if(i.splice(c,1),j.splice(c,1),i.length){var d=i[0];angular.forEach(k,function(a){a.scope===b&&(a.watcher=d.$watch(a.compareWithExp,a.watchFn),a.scope=d)})}else k={}}var i=[],j=[],k={},l=e.uibIsClass.match(b),m=l[2],n=l[1],o=n.split(",");return f}}}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.isClass"]).value("$datepickerSuppressError",!1).value("$datepickerLiteralWarning",!0).constant("uibDatepickerConfig",{datepickerMode:"day",formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",maxDate:null,maxMode:"year",minDate:null,minMode:"day",ngModelOptions:{},shortcutPropagation:!1,showWeeks:!0,yearColumns:5,yearRows:4}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$locale","$log","dateFilter","uibDatepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","uibDateParser",function(a,b,c,d,e,f,g,h,i,j,k){function l(b){a.datepickerMode=b,a.datepickerOptions.datepickerMode=b}var m=this,n={$setViewValue:angular.noop},o={},p=[];!!b.datepickerOptions;a.datepickerOptions||(a.datepickerOptions={}),this.modes=["day","month","year"],["customClass","dateDisabled","datepickerMode","formatDay","formatDayHeader","formatDayTitle","formatMonth","formatMonthTitle","formatYear","maxDate","maxMode","minDate","minMode","showWeeks","shortcutPropagation","startingDay","yearColumns","yearRows"].forEach(function(b){switch(b){case"customClass":case"dateDisabled":a[b]=a.datepickerOptions[b]||angular.noop;break;case"datepickerMode":a.datepickerMode=angular.isDefined(a.datepickerOptions.datepickerMode)?a.datepickerOptions.datepickerMode:h.datepickerMode;break;case"formatDay":case"formatDayHeader":case"formatDayTitle":case"formatMonth":case"formatMonthTitle":case"formatYear":m[b]=angular.isDefined(a.datepickerOptions[b])?d(a.datepickerOptions[b])(a.$parent):h[b];break;case"showWeeks":case"shortcutPropagation":case"yearColumns":case"yearRows":m[b]=angular.isDefined(a.datepickerOptions[b])?a.datepickerOptions[b]:h[b];break;case"startingDay":angular.isDefined(a.datepickerOptions.startingDay)?m.startingDay=a.datepickerOptions.startingDay:angular.isNumber(h.startingDay)?m.startingDay=h.startingDay:m.startingDay=(e.DATETIME_FORMATS.FIRSTDAYOFWEEK+8)%7;break;case"maxDate":case"minDate":a.$watch("datepickerOptions."+b,function(a){a?angular.isDate(a)?m[b]=k.fromTimezone(new Date(a),o.timezone):(i&&f.warn("Literal date support has been deprecated, please switch to date object usage"),m[b]=new Date(g(a,"medium"))):m[b]=h[b]?k.fromTimezone(new Date(h[b]),o.timezone):null,m.refreshView()});break;case"maxMode":case"minMode":a.datepickerOptions[b]?a.$watch(function(){return a.datepickerOptions[b]},function(c){m[b]=a[b]=angular.isDefined(c)?c:datepickerOptions[b],("minMode"===b&&m.modes.indexOf(a.datepickerOptions.datepickerMode)<m.modes.indexOf(m[b])||"maxMode"===b&&m.modes.indexOf(a.datepickerOptions.datepickerMode)>m.modes.indexOf(m[b]))&&(a.datepickerMode=m[b],a.datepickerOptions.datepickerMode=m[b])}):m[b]=a[b]=h[b]||null}}),a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),a.disabled=angular.isDefined(b.disabled)||!1,angular.isDefined(b.ngDisabled)&&p.push(a.$parent.$watch(b.ngDisabled,function(b){a.disabled=b,m.refreshView()})),a.isActive=function(b){return 0===m.compare(b.date,m.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(b){n=b,o=b.$options||h.ngModelOptions,a.datepickerOptions.initDate?(m.activeDate=k.fromTimezone(a.datepickerOptions.initDate,o.timezone)||new Date,a.$watch("datepickerOptions.initDate",function(a){a&&(n.$isEmpty(n.$modelValue)||n.$invalid)&&(m.activeDate=k.fromTimezone(a,o.timezone),m.refreshView())})):m.activeDate=new Date,this.activeDate=n.$modelValue?k.fromTimezone(new Date(n.$modelValue),o.timezone):k.fromTimezone(new Date,o.timezone),n.$render=function(){m.render()}},this.render=function(){if(n.$viewValue){var a=new Date(n.$viewValue),b=!isNaN(a);b?this.activeDate=k.fromTimezone(a,o.timezone):j||f.error('Datepicker directive: "ng-model" value must be a Date object')}this.refreshView()},this.refreshView=function(){if(this.element){a.selectedDt=null,this._refreshView(),a.activeDt&&(a.activeDateId=a.activeDt.uid);var b=n.$viewValue?new Date(n.$viewValue):null;b=k.fromTimezone(b,o.timezone),n.$setValidity("dateDisabled",!b||this.element&&!this.isDisabled(b))}},this.createDateObject=function(b,c){var d=n.$viewValue?new Date(n.$viewValue):null;d=k.fromTimezone(d,o.timezone);var e=new Date;e=k.fromTimezone(e,o.timezone);var f=this.compare(b,e),g={date:b,label:k.filter(b,c),selected:d&&0===this.compare(b,d),disabled:this.isDisabled(b),past:0>f,current:0===f,future:f>0,customClass:this.customClass(b)||null};return d&&0===this.compare(b,d)&&(a.selectedDt=g),m.activeDate&&0===this.compare(g.date,m.activeDate)&&(a.activeDt=g),g},this.isDisabled=function(b){return a.disabled||this.minDate&&this.compare(b,this.minDate)<0||this.maxDate&&this.compare(b,this.maxDate)>0||a.dateDisabled&&a.dateDisabled({date:b,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},a.select=function(b){if(a.datepickerMode===m.minMode){var c=n.$viewValue?k.fromTimezone(new Date(n.$viewValue),o.timezone):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),c=k.toTimezone(c,o.timezone),n.$setViewValue(c),n.$render()}else m.activeDate=b,l(m.modes[m.modes.indexOf(a.datepickerMode)-1]),a.$emit("uib:datepicker.mode");a.$broadcast("uib:datepicker.focus")},a.move=function(a){var b=m.activeDate.getFullYear()+a*(m.step.years||0),c=m.activeDate.getMonth()+a*(m.step.months||0);m.activeDate.setFullYear(b,c,1),m.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===m.maxMode&&1===b||a.datepickerMode===m.minMode&&-1===b||(l(m.modes[m.modes.indexOf(a.datepickerMode)+b]),a.$emit("uib:datepicker.mode"))},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var q=function(){m.element[0].focus()};a.$on("uib:datepicker.focus",q),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey&&!a.disabled)if(b.preventDefault(),m.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(m.isDisabled(m.activeDate))return;a.select(m.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(m.handleKeyDown(c,b),m.refreshView()):a.toggleMode("up"===c?1:-1)},a.$on("$destroy",function(){for(;p.length;)p.shift()()})}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(this.activeDate);f.setFullYear(b,d,1);var g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){var c=new Date(a.getFullYear(),a.getMonth(),a.getDate()),d=new Date(b.getFullYear(),b.getMonth(),b.getDate());return c.setFullYear(a.getFullYear()),d.setFullYear(b.getFullYear()),c-d},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(this.activeDate),b.setFullYear(e,f,1),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){var c=new Date(a.getFullYear(),a.getMonth()),d=new Date(b.getFullYear(),b.getMonth());return c.setFullYear(a.getFullYear()),d.setFullYear(b.getFullYear()),c-d},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/f,10)*f+1}var e,f;this.element=b,this.yearpickerInit=function(){e=this.yearColumns,f=this.yearRows*e,this.step={years:f}},this._refreshView=function(){for(var b,c=new Array(f),g=0,h=d(this.activeDate.getFullYear());f>g;g++)b=new Date(this.activeDate),b.setFullYear(h+g,0,1),c[g]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+g});a.title=[c[0].label,c[f-1].label].join(" - "),a.rows=this.split(c,e),a.columns=e},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=e:"right"===a?c+=1:"down"===a?c+=e:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*f:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+f-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/datepicker.html"},scope:{datepickerOptions:"=?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/day.html"},require:["^uibDatepicker","uibDaypicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/month.html"},require:["^uibDatepicker","uibMonthpicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/year.html"},require:["^uibDatepicker","uibYearpicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){var c,d,e={normal:/(auto|scroll)/,hidden:/(auto|scroll|hidden)/},f={auto:/\s?auto?\s?/i,primary:/^(top|bottom|left|right)$/,secondary:/^(top|bottom|left|right|center)$/,vertical:/^(top|bottom)$/},g=/(HTML|BODY)/;return{getRawNode:function(a){return a.nodeName?a:a[0]||a},parseStyle:function(a){return a=parseFloat(a),isFinite(a)?a:0},offsetParent:function(c){function d(a){return"static"===(b.getComputedStyle(a).position||"static")}c=this.getRawNode(c);for(var e=c.offsetParent||a[0].documentElement;e&&e!==a[0].documentElement&&d(e);)e=e.offsetParent;return e||a[0].documentElement},scrollbarWidth:function(e){if(e){if(angular.isUndefined(d)){var f=a.find("body");f.addClass("uib-position-body-scrollbar-measure"),d=b.innerWidth-f[0].clientWidth,d=isFinite(d)?d:0,f.removeClass("uib-position-body-scrollbar-measure")}return d}if(angular.isUndefined(c)){var g=angular.element('<div class="uib-position-scrollbar-measure"></div>');a.find("body").append(g),c=g[0].offsetWidth-g[0].clientWidth,c=isFinite(c)?c:0,g.remove()}return c},scrollbarPadding:function(a){a=this.getRawNode(a);var c=b.getComputedStyle(a),d=this.parseStyle(c.paddingRight),e=this.parseStyle(c.paddingBottom),f=this.scrollParent(a,!1,!0),h=this.scrollbarWidth(f,g.test(f.tagName));return{scrollbarWidth:h,widthOverflow:f.scrollWidth>f.clientWidth,right:d+h,originalRight:d,heightOverflow:f.scrollHeight>f.clientHeight,bottom:e+h,originalBottom:e}},isScrollable:function(a,c){a=this.getRawNode(a);var d=c?e.hidden:e.normal,f=b.getComputedStyle(a);return d.test(f.overflow+f.overflowY+f.overflowX);
1766 1766 },scrollParent:function(c,d,f){c=this.getRawNode(c);var g=d?e.hidden:e.normal,h=a[0].documentElement,i=b.getComputedStyle(c);if(f&&g.test(i.overflow+i.overflowY+i.overflowX))return c;var j="absolute"===i.position,k=c.parentElement||h;if(k===h||"fixed"===i.position)return h;for(;k.parentElement&&k!==h;){var l=b.getComputedStyle(k);if(j&&"static"!==l.position&&(j=!1),!j&&g.test(l.overflow+l.overflowY+l.overflowX))break;k=k.parentElement}return k},position:function(c,d){c=this.getRawNode(c);var e=this.offset(c);if(d){var f=b.getComputedStyle(c);e.top-=this.parseStyle(f.marginTop),e.left-=this.parseStyle(f.marginLeft)}var g=this.offsetParent(c),h={top:0,left:0};return g!==a[0].documentElement&&(h=this.offset(g),h.top+=g.clientTop-g.scrollTop,h.left+=g.clientLeft-g.scrollLeft),{width:Math.round(angular.isNumber(e.width)?e.width:c.offsetWidth),height:Math.round(angular.isNumber(e.height)?e.height:c.offsetHeight),top:Math.round(e.top-h.top),left:Math.round(e.left-h.left)}},offset:function(c){c=this.getRawNode(c);var d=c.getBoundingClientRect();return{width:Math.round(angular.isNumber(d.width)?d.width:c.offsetWidth),height:Math.round(angular.isNumber(d.height)?d.height:c.offsetHeight),top:Math.round(d.top+(b.pageYOffset||a[0].documentElement.scrollTop)),left:Math.round(d.left+(b.pageXOffset||a[0].documentElement.scrollLeft))}},viewportOffset:function(c,d,e){c=this.getRawNode(c),e=e!==!1;var f=c.getBoundingClientRect(),g={top:0,left:0,bottom:0,right:0},h=d?a[0].documentElement:this.scrollParent(c),i=h.getBoundingClientRect();if(g.top=i.top+h.clientTop,g.left=i.left+h.clientLeft,h===a[0].documentElement&&(g.top+=b.pageYOffset,g.left+=b.pageXOffset),g.bottom=g.top+h.clientHeight,g.right=g.left+h.clientWidth,e){var j=b.getComputedStyle(h);g.top+=this.parseStyle(j.paddingTop),g.bottom-=this.parseStyle(j.paddingBottom),g.left+=this.parseStyle(j.paddingLeft),g.right-=this.parseStyle(j.paddingRight)}return{top:Math.round(f.top-g.top),bottom:Math.round(g.bottom-f.bottom),left:Math.round(f.left-g.left),right:Math.round(g.right-f.right)}},parsePlacement:function(a){var b=f.auto.test(a);return b&&(a=a.replace(f.auto,"")),a=a.split("-"),a[0]=a[0]||"top",f.primary.test(a[0])||(a[0]="top"),a[1]=a[1]||"center",f.secondary.test(a[1])||(a[1]="center"),b?a[2]=!0:a[2]=!1,a},positionElements:function(a,c,d,e){a=this.getRawNode(a),c=this.getRawNode(c);var g=angular.isDefined(c.offsetWidth)?c.offsetWidth:c.prop("offsetWidth"),h=angular.isDefined(c.offsetHeight)?c.offsetHeight:c.prop("offsetHeight");d=this.parsePlacement(d);var i=e?this.offset(a):this.position(a),j={top:0,left:0,placement:""};if(d[2]){var k=this.viewportOffset(a,e),l=b.getComputedStyle(c),m={width:g+Math.round(Math.abs(this.parseStyle(l.marginLeft)+this.parseStyle(l.marginRight))),height:h+Math.round(Math.abs(this.parseStyle(l.marginTop)+this.parseStyle(l.marginBottom)))};if(d[0]="top"===d[0]&&m.height>k.top&&m.height<=k.bottom?"bottom":"bottom"===d[0]&&m.height>k.bottom&&m.height<=k.top?"top":"left"===d[0]&&m.width>k.left&&m.width<=k.right?"right":"right"===d[0]&&m.width>k.right&&m.width<=k.left?"left":d[0],d[1]="top"===d[1]&&m.height-i.height>k.bottom&&m.height-i.height<=k.top?"bottom":"bottom"===d[1]&&m.height-i.height>k.top&&m.height-i.height<=k.bottom?"top":"left"===d[1]&&m.width-i.width>k.right&&m.width-i.width<=k.left?"right":"right"===d[1]&&m.width-i.width>k.left&&m.width-i.width<=k.right?"left":d[1],"center"===d[1])if(f.vertical.test(d[0])){var n=i.width/2-g/2;k.left+n<0&&m.width-i.width<=k.right?d[1]="left":k.right+n<0&&m.width-i.width<=k.left&&(d[1]="right")}else{var o=i.height/2-m.height/2;k.top+o<0&&m.height-i.height<=k.bottom?d[1]="top":k.bottom+o<0&&m.height-i.height<=k.top&&(d[1]="bottom")}}switch(d[0]){case"top":j.top=i.top-h;break;case"bottom":j.top=i.top+i.height;break;case"left":j.left=i.left-g;break;case"right":j.left=i.left+i.width}switch(d[1]){case"top":j.top=i.top;break;case"bottom":j.top=i.top+i.height-h;break;case"left":j.left=i.left;break;case"right":j.left=i.left+i.width-g;break;case"center":f.vertical.test(d[0])?j.left=i.left+i.width/2-g/2:j.top=i.top+i.height/2-h/2}return j.top=Math.round(j.top),j.left=Math.round(j.left),j.placement="center"===d[1]?d[0]:d[0]+"-"+d[1],j},positionArrow:function(a,c){a=this.getRawNode(a);var d=a.querySelector(".tooltip-inner, .popover-inner");if(d){var e=angular.element(d).hasClass("tooltip-inner"),g=e?a.querySelector(".tooltip-arrow"):a.querySelector(".arrow");if(g){var h={top:"",bottom:"",left:"",right:""};if(c=this.parsePlacement(c),"center"===c[1])return void angular.element(g).css(h);var i="border-"+c[0]+"-width",j=b.getComputedStyle(g)[i],k="border-";k+=f.vertical.test(c[0])?c[0]+"-"+c[1]:c[1]+"-"+c[0],k+="-radius";var l=b.getComputedStyle(e?d:a)[k];switch(c[0]){case"top":h.bottom=e?"0":"-"+j;break;case"bottom":h.top=e?"0":"-"+j;break;case"left":h.right=e?"0":"-"+j;break;case"right":h.left=e?"0":"-"+j}h[c[1]]=l,angular.element(g).css(h)}}}}}]),angular.module("ui.bootstrap.datepickerPopup",["ui.bootstrap.datepicker","ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning",!0).constant("uibDatepickerPopupConfig",{altInputFormats:[],appendToBody:!1,clearText:"Clear",closeOnDateSelection:!0,closeText:"Done",currentText:"Today",datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"uib/template/datepickerPopup/popup.html",datepickerTemplateUrl:"uib/template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},onOpenFocus:!0,showButtonBar:!0,placement:"auto bottom-left"}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$log","$parse","$window","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout","uibDatepickerConfig","$datepickerPopupLiteralWarning",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){function q(b){var c=l.parse(b,w,a.date);if(isNaN(c))for(var d=0;d<I.length;d++)if(c=l.parse(b,I[d],a.date),!isNaN(c))return c;return c}function r(a){if(angular.isNumber(a)&&(a=new Date(a)),!a)return null;if(angular.isDate(a)&&!isNaN(a))return a;if(angular.isString(a)){var b=q(a);if(!isNaN(b))return l.toTimezone(b,J)}return F.$options&&F.$options.allowInvalid?a:void 0}function s(a,b){var d=a||b;return c.ngRequired||d?(angular.isNumber(d)&&(d=new Date(d)),d?angular.isDate(d)&&!isNaN(d)?!0:angular.isString(d)?!isNaN(q(b)):!1:!0):!0}function t(c){if(a.isOpen||!a.disabled){var d=H[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.isOpen=!1})}}function u(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!1}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}function v(){if(a.isOpen){var d=angular.element(H[0].querySelector(".uib-datepicker-popup")),e=c.popupPlacement?c.popupPlacement:m.placement,f=j.positionElements(b,d,e,y);d.css({top:f.top+"px",left:f.left+"px"}),d.hasClass("uib-position-measure")&&d.removeClass("uib-position-measure")}}var w,x,y,z,A,B,C,D,E,F,G,H,I,J,K=!1,L=[];this.init=function(e){if(F=e,G=e.$options,x=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):m.closeOnDateSelection,y=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):m.appendToBody,z=angular.isDefined(c.onOpenFocus)?a.$parent.$eval(c.onOpenFocus):m.onOpenFocus,A=angular.isDefined(c.datepickerPopupTemplateUrl)?c.datepickerPopupTemplateUrl:m.datepickerPopupTemplateUrl,B=angular.isDefined(c.datepickerTemplateUrl)?c.datepickerTemplateUrl:m.datepickerTemplateUrl,I=angular.isDefined(c.altInputFormats)?a.$parent.$eval(c.altInputFormats):m.altInputFormats,a.showButtonBar=angular.isDefined(c.showButtonBar)?a.$parent.$eval(c.showButtonBar):m.showButtonBar,m.html5Types[c.type]?(w=m.html5Types[c.type],K=!0):(w=c.uibDatepickerPopup||m.datepickerPopup,c.$observe("uibDatepickerPopup",function(a,b){var c=a||m.datepickerPopup;if(c!==w&&(w=c,F.$modelValue=null,!w))throw new Error("uibDatepickerPopup must have a date format specified.")})),!w)throw new Error("uibDatepickerPopup must have a date format specified.");if(K&&c.uibDatepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");C=angular.element("<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>"),G?(J=G.timezone,a.ngModelOptions=angular.copy(G),a.ngModelOptions.timezone=null,a.ngModelOptions.updateOnDefault===!0&&(a.ngModelOptions.updateOn=a.ngModelOptions.updateOn?a.ngModelOptions.updateOn+" default":"default"),C.attr("ng-model-options","ngModelOptions")):J=null,C.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":A}),D=angular.element(C.children()[0]),D.attr("template-url",B),a.datepickerOptions||(a.datepickerOptions={}),K&&"month"===c.type&&(a.datepickerOptions.datepickerMode="month",a.datepickerOptions.minMode="month"),D.attr("datepicker-options","datepickerOptions"),K?F.$formatters.push(function(b){return a.date=l.fromTimezone(b,J),b}):(F.$$parserName="date",F.$validators.date=s,F.$parsers.unshift(r),F.$formatters.push(function(b){return F.$isEmpty(b)?(a.date=b,b):(a.date=l.fromTimezone(b,J),angular.isNumber(a.date)&&(a.date=new Date(a.date)),l.filter(a.date,w))})),F.$viewChangeListeners.push(function(){a.date=q(F.$viewValue)}),b.on("keydown",u),H=d(C)(a),C.remove(),y?h.find("body").append(H):b.after(H),a.$on("$destroy",function(){for(a.isOpen===!0&&(i.$$phase||a.$apply(function(){a.isOpen=!1})),H.remove(),b.off("keydown",u),h.off("click",t),E&&E.off("scroll",v),angular.element(g).off("resize",v);L.length;)L.shift()()})},a.getText=function(b){return a[b+"Text"]||m[b+"Text"]},a.isDisabled=function(b){"today"===b&&(b=l.fromTimezone(new Date,J));var c={};return angular.forEach(["minDate","maxDate"],function(b){a.datepickerOptions[b]?angular.isDate(a.datepickerOptions[b])?c[b]=l.fromTimezone(new Date(a.datepickerOptions[b]),J):(p&&e.warn("Literal date support has been deprecated, please switch to date object usage"),c[b]=new Date(k(a.datepickerOptions[b],"medium"))):c[b]=null}),a.datepickerOptions&&c.minDate&&a.compare(b,c.minDate)<0||c.maxDate&&a.compare(b,c.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?l.filter(a.date,w):null;b.val(d),F.$setViewValue(d),x&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(c.stopPropagation(),a.isOpen=!1,b[0].focus())},a.select=function(b,c){if(c.stopPropagation(),"today"===b){var d=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(d.getFullYear(),d.getMonth(),d.getDate())):b=new Date(d.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(c){c.stopPropagation(),a.isOpen=!1,b[0].focus()},a.disabled=angular.isDefined(c.disabled)||!1,c.ngDisabled&&L.push(a.$parent.$watch(f(c.ngDisabled),function(b){a.disabled=b})),a.$watch("isOpen",function(d){d?a.disabled?a.isOpen=!1:n(function(){v(),z&&a.$broadcast("uib:datepicker.focus"),h.on("click",t);var d=c.popupPlacement?c.popupPlacement:m.placement;y||j.parsePlacement(d)[2]?(E=E||angular.element(j.scrollParent(b)),E&&E.on("scroll",v)):E=null,angular.element(g).on("resize",v)},0,!1):(h.off("click",t),E&&E.off("scroll",v),angular.element(g).off("resize",v))}),a.$on("uib:datepicker.mode",function(){n(v,0,!1)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{datepickerOptions:"=?",isOpen:"=?",currentText:"@",clearText:"@",closeText:"@"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepickerPopup/popup.html"}}}),angular.module("ui.bootstrap.debounce",[]).factory("$$debounce",["$timeout",function(a){return function(b,c){var d;return function(){var e=this,f=Array.prototype.slice.call(arguments);d&&a.cancel(d),d=a(function(){b.apply(e,f)},c)}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{appendToOpenClass:"uib-dropdown-open",openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b,f){c||(a.on("click",d),f.on("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b,f){c===b&&(c=null,a.off("click",d),f.off("keydown",e))};var d=function(a){if(c&&!(a&&"disabled"===c.getAutoClose()||a&&3===a.which)){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(a.stopPropagation(),c.focusToggleElement(),d()):c.isKeynavEnabled()&&-1!==[38,40].indexOf(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.appendToOpenClass,q=e.openClass,r=angular.noop,s=c.onToggle?d(c.onToggle):angular.noop,t=!1,u=null,v=!1,w=i.find("body");b.addClass("dropdown"),this.init=function(){if(c.isOpen&&(m=d(c.isOpen),r=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),angular.isDefined(c.dropdownAppendTo)){var e=d(c.dropdownAppendTo)(o);e&&(u=angular.element(e))}t=angular.isDefined(c.dropdownAppendToBody),v=angular.isDefined(c.keyboardNav),t&&!u&&(u=w),u&&n.dropdownMenu&&(u.append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen,angular.isFunction(r)&&r(o,o.isOpen),o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return v},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):b.find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(u&&n.dropdownMenu){var e,i,m=h.positionElements(b,n.dropdownMenu,"bottom-left",!0);if(e={top:m.top+"px",display:c?"block":"none"},i=n.dropdownMenu.hasClass("dropdown-menu-right"),i?(e.left="auto",e.right=window.innerWidth-(m.left+b.prop("offsetWidth"))+"px"):(e.left=m.left+"px",e.right="auto"),!t){var v=h.offset(u);e.top=m.top-v.top+"px",i?e.right=window.innerWidth-(m.left-v.left+b.prop("offsetWidth"))+"px":e.left=m.left-v.left+"px"}n.dropdownMenu.css(e)}var w=u?u:b,x=w.hasClass(u?p:q);if(x===!c&&g[c?"addClass":"removeClass"](w,u?p:q).then(function(){angular.isDefined(c)&&c!==d&&s(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o,b);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var y=angular.element('<ul class="dropdown-menu"></ul>');n.dropdownMenu.replaceWith(y),n.dropdownMenu=y}f.close(o,b),n.selectedOption=null}angular.isFunction(r)&&r(a,c)})}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c<a.length;c++)if(b===a[c].key)return a[c]},keys:function(){for(var b=[],c=0;c<a.length;c++)b.push(a[c].key);return b},top:function(){return a[a.length-1]},remove:function(b){for(var c=-1,d=0;d<a.length;d++)if(b===a[d].key){c=d;break}return a.splice(c,1)[0]},removeTop:function(){return a.splice(a.length-1,1)[0]},length:function(){return a.length}}}}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.stackedMap","ui.bootstrap.position"]).factory("$$multiMap",function(){return{createNew:function(){var a={};return{entries:function(){return Object.keys(a).map(function(b){return{key:b,value:a[b]}})},get:function(b){return a[b]},hasKey:function(b){return!!a[b]},keys:function(){return Object.keys(a)},put:function(b,c){a[b]||(a[b]=[]),a[b].push(c)},remove:function(b,c){var d=a[b];if(d){var e=d.indexOf(c);-1!==e&&d.splice(e,1),d.length||delete a[b]}}}}}}).provider("$uibResolve",function(){var a=this;this.resolver=null,this.setResolver=function(a){this.resolver=a},this.$get=["$injector","$q",function(b,c){var d=a.resolver?b.get(a.resolver):null;return{resolve:function(a,e,f,g){if(d)return d.resolve(a,e,f,g);var h=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?h.push(c.resolve(b.invoke(a))):angular.isString(a)?h.push(c.resolve(b.get(a))):h.push(c.resolve(a))}),c.all(h).then(function(b){var c={},d=0;return angular.forEach(a,function(a,e){c[e]=b[d++]}),c})}}}]}).directive("uibModalBackdrop",["$animate","$injector","$uibModalStack",function(a,b,c){function d(b,d,e){e.modalInClass&&(a.addClass(d,e.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(c,f){var g=f();b.modalOptions.animation?a.removeClass(d,e.modalInClass).then(g):g()}))}return{replace:!0,templateUrl:"uib/template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),d}}}]).directive("uibModalWindow",["$uibModalStack","$q","$animateCss","$document",function(a,b,c,d){return{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/modal/window.html"},link:function(e,f,g){f.addClass(g.windowClass||""),f.addClass(g.windowTopClass||""),e.size=g.size,e.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},f.on("click",e.close),e.$isRendered=!0;var h=b.defer();g.$observe("modalRender",function(a){"true"===a&&h.resolve()}),h.promise.then(function(){var h=null;g.modalInClass&&(h=c(f,{addClass:g.modalInClass}).start(),e.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();c(f,{removeClass:g.modalInClass}).start().then(d)})),b.when(h).then(function(){var b=a.getTop();if(b&&a.modalRendered(b.key),!d[0].activeElement||!f[0].contains(d[0].activeElement)){var c=f[0].querySelector("[autofocus]");c?c.focus():f[0].focus()}})})}}}]).directive("uibModalAnimationClass",function(){return{compile:function(a,b){b.modalAnimation&&a.addClass(b.uibModalAnimationClass)}}}).directive("uibModalTransclude",function(){return{link:function(a,b,c,d,e){e(a.$parent,function(a){b.empty(),b.append(a)})}}}).factory("$uibModalStack",["$animate","$animateCss","$document","$compile","$rootScope","$q","$$multiMap","$$stackedMap","$uibPosition",function(a,b,c,d,e,f,g,h,i){function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(){for(var a=-1,b=v.keys(),c=0;c<b.length;c++)v.get(b[c]).value.backdrop&&(a=c);return a>-1&&y>a&&(a=y),a}function l(a,b){var c=v.get(a).value,d=c.appendTo;v.remove(a),z=v.top(),z&&(y=parseInt(z.value.modalDomEl.attr("index"),10)),o(c.modalDomEl,c.modalScope,function(){var b=c.openedClass||u;w.remove(b,a);var e=w.hasKey(b);d.toggleClass(b,e),!e&&t&&t.heightOverflow&&t.scrollbarWidth&&(t.originalRight?d.css({paddingRight:t.originalRight+"px"}):d.css({paddingRight:""}),t=null),m(!0)},c.closedDeferred),n(),b&&b.focus?b.focus():d.focus&&d.focus()}function m(a){var b;v.length()>0&&(b=v.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function n(){if(r&&-1===k()){var a=s;o(r,s,function(){a=null}),r=void 0,s=void 0}}function o(b,c,d,e){function g(){g.done||(g.done=!0,a.leave(b).then(function(){b.remove(),e&&e.resolve()}),c.$destroy(),d&&d())}var h,i=null,j=function(){return h||(h=f.defer(),i=h.promise),function(){h.resolve()}};return c.$broadcast(x.NOW_CLOSING_EVENT,j),f.when(i).then(g)}function p(a){if(a.isDefaultPrevented())return a;var b=v.top();if(b)switch(a.which){case 27:b.value.keyboard&&(a.preventDefault(),e.$apply(function(){x.dismiss(b.key,"escape key press")}));break;case 9:var c=x.loadFocusElementList(b),d=!1;a.shiftKey?(x.isFocusInFirstItem(a,c)||x.isModalFocused(a,b))&&(d=x.focusLastFocusableElement(c)):x.isFocusInLastItem(a,c)&&(d=x.focusFirstFocusableElement(c)),d&&(a.preventDefault(),a.stopPropagation())}}function q(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var r,s,t,u="modal-open",v=h.createNew(),w=g.createNew(),x={NOW_CLOSING_EVENT:"modal.stack.now-closing"},y=0,z=null,A="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(k,function(a){s&&(s.index=a)}),c.on("keydown",p),e.$on("$destroy",function(){c.off("keydown",p)}),x.open=function(b,f){var g=c[0].activeElement,h=f.openedClass||u;m(!1),z=v.top(),v.add(b,{deferred:f.deferred,renderDeferred:f.renderDeferred,closedDeferred:f.closedDeferred,modalScope:f.scope,backdrop:f.backdrop,keyboard:f.keyboard,openedClass:f.openedClass,windowTopClass:f.windowTopClass,animation:f.animation,appendTo:f.appendTo}),w.put(h,b);var j=f.appendTo,l=k();if(!j.length)throw new Error("appendTo element not found. Make sure that the element passed is in DOM.");l>=0&&!r&&(s=e.$new(!0),s.modalOptions=f,s.index=l,r=angular.element('<div uib-modal-backdrop="modal-backdrop"></div>'),r.attr("backdrop-class",f.backdropClass),f.animation&&r.attr("modal-animation","true"),d(r)(s),a.enter(r,j),t=i.scrollbarPadding(j),t.heightOverflow&&t.scrollbarWidth&&j.css({paddingRight:t.right+"px"})),y=z?parseInt(z.value.modalDomEl.attr("index"),10)+1:0;var n=angular.element('<div uib-modal-window="modal-window"></div>');n.attr({"template-url":f.windowTemplateUrl,"window-class":f.windowClass,"window-top-class":f.windowTopClass,size:f.size,index:y,animate:"animate"}).html(f.content),f.animation&&n.attr("modal-animation","true"),j.addClass(h),a.enter(d(n)(f.scope),j),v.top().value.modalDomEl=n,v.top().value.modalOpener=g},x.close=function(a,b){var c=v.get(a);return c&&q(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),l(a,c.value.modalOpener),!0):!c},x.dismiss=function(a,b){var c=v.get(a);return c&&q(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),l(a,c.value.modalOpener),!0):!c},x.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},x.getTop=function(){return v.top()},x.modalRendered=function(a){var b=v.get(a);b&&b.value.renderDeferred.resolve()},x.focusFirstFocusableElement=function(a){return a.length>0?(a[0].focus(),!0):!1},x.focusLastFocusableElement=function(a){return a.length>0?(a[a.length-1].focus(),!0):!1},x.isModalFocused=function(a,b){if(a&&b){var c=b.value.modalDomEl;if(c&&c.length)return(a.target||a.srcElement)===c[0]}return!1},x.isFocusInFirstItem=function(a,b){return b.length>0?(a.target||a.srcElement)===b[0]:!1},x.isFocusInLastItem=function(a,b){return b.length>0?(a.target||a.srcElement)===b[b.length-1]:!1},x.loadFocusElementList=function(a){if(a){var b=a.value.modalDomEl;if(b&&b.length){var c=b[0].querySelectorAll(A);return c?Array.prototype.filter.call(c,function(a){return j(a)}):c}}},x}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$rootScope","$q","$document","$templateRequest","$controller","$uibResolve","$uibModalStack",function(b,c,d,e,f,g,h){function i(a){return a.template?c.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}var j={},k=null;return j.getPromiseChain=function(){return k},j.open=function(e){function j(){return r}var l=c.defer(),m=c.defer(),n=c.defer(),o=c.defer(),p={result:l.promise,opened:m.promise,closed:n.promise,rendered:o.promise,close:function(a){return h.close(p,a)},dismiss:function(a){return h.dismiss(p,a)}};if(e=angular.extend({},a.options,e),e.resolve=e.resolve||{},e.appendTo=e.appendTo||d.find("body").eq(0),!e.template&&!e.templateUrl)throw new Error("One of template or templateUrl options is required.");var q,r=c.all([i(e),g.resolve(e.resolve,{},null,null)]);return q=k=c.all([k]).then(j,j).then(function(a){var c=e.scope||b,d=c.$new();d.$close=p.close,d.$dismiss=p.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var g,i,j={};e.controller&&(j.$scope=d,j.$uibModalInstance=p,angular.forEach(a[1],function(a,b){j[b]=a}),i=f(e.controller,j,!0),e.controllerAs?(g=i.instance,e.bindToController&&(g.$close=d.$close,g.$dismiss=d.$dismiss,angular.extend(g,c)),g=i(),d[e.controllerAs]=g):g=i(),angular.isFunction(g.$onInit)&&g.$onInit()),h.open(p,{scope:d,deferred:l,renderDeferred:o,closedDeferred:n,content:a[0],animation:e.animation,backdrop:e.backdrop,keyboard:e.keyboard,backdropClass:e.backdropClass,windowTopClass:e.windowTopClass,windowClass:e.windowClass,windowTemplateUrl:e.windowTemplateUrl,size:e.size,openedClass:e.openedClass,appendTo:e.appendTo}),m.resolve(!0)},function(a){m.reject(a),l.reject(a)})["finally"](function(){k===q&&(k=null)}),p},j}]};return a}),angular.module("ui.bootstrap.paging",[]).factory("uibPaging",["$parse",function(a){return{create:function(b,c,d){b.setNumPages=d.numPages?a(d.numPages).assign:angular.noop,b.ngModelCtrl={$setViewValue:angular.noop},b._watchers=[],b.init=function(a,e){b.ngModelCtrl=a,b.config=e,a.$render=function(){b.render()},d.itemsPerPage?b._watchers.push(c.$parent.$watch(d.itemsPerPage,function(a){b.itemsPerPage=parseInt(a,10),c.totalPages=b.calculateTotalPages(),b.updatePage()})):b.itemsPerPage=e.itemsPerPage,c.$watch("totalItems",function(a,d){(angular.isDefined(a)||a!==d)&&(c.totalPages=b.calculateTotalPages(),b.updatePage())})},b.calculateTotalPages=function(){var a=b.itemsPerPage<1?1:Math.ceil(c.totalItems/b.itemsPerPage);return Math.max(a||0,1)},b.render=function(){c.page=parseInt(b.ngModelCtrl.$viewValue,10)||1},c.selectPage=function(a,d){d&&d.preventDefault();var e=!c.ngDisabled||!d;e&&c.page!==a&&a>0&&a<=c.totalPages&&(d&&d.target&&d.target.blur(),b.ngModelCtrl.$setViewValue(a),b.ngModelCtrl.$render())},c.getText=function(a){return c[a+"Text"]||b.config[a+"Text"]},c.noPrevious=function(){return 1===c.page},c.noNext=function(){return c.page===c.totalPages},b.updatePage=function(){b.setNumPages(c.$parent,c.totalPages),c.page>c.totalPages?c.selectPage(c.totalPages):b.ngModelCtrl.$render()},c.$on("$destroy",function(){for(;b._watchers.length;)b._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function(a,b,c,d){a.align=angular.isDefined(b.align)?a.$parent.$eval(b.align):d.align,c.create(this,a,b)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"Β« Previous",nextText:"Next Β»",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPagerController",controllerAs:"pager",templateUrl:function(a,b){return b.templateUrl||"uib/template/pager/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&f.init(g,a)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function(a,b,c,d,e){function f(a,b,c){return{number:a,text:b,active:c}}function g(a,b){var c=[],d=1,e=b,g=angular.isDefined(i)&&b>i;g&&(j?(d=Math.max(a-Math.floor(i/2),1),e=d+i-1,e>b&&(e=b,d=e-i+1)):(d=(Math.ceil(a/i)-1)*i+1,e=Math.min(d+i-1,b)));for(var h=d;e>=h;h++){var n=f(h,m(h),h===a);c.push(n)}if(g&&i>0&&(!j||k||l)){if(d>1){if(!l||d>3){var o=f(d-1,"...",!1);c.unshift(o)}if(l){if(3===d){var p=f(2,"2",!1);c.unshift(p)}var q=f(1,"1",!1);c.unshift(q)}}if(b>e){if(!l||b-2>e){var r=f(e+1,"...",!1);c.push(r)}if(l){if(e===b-2){var s=f(b-1,b-1,!1);c.push(s)}var t=f(b,b,!1);c.push(t)}}}return c}var h=this,i=angular.isDefined(b.maxSize)?a.$parent.$eval(b.maxSize):e.maxSize,j=angular.isDefined(b.rotate)?a.$parent.$eval(b.rotate):e.rotate,k=angular.isDefined(b.forceEllipses)?a.$parent.$eval(b.forceEllipses):e.forceEllipses,l=angular.isDefined(b.boundaryLinkNumbers)?a.$parent.$eval(b.boundaryLinkNumbers):e.boundaryLinkNumbers,m=angular.isDefined(b.pageLabel)?function(c){return a.$parent.$eval(b.pageLabel,{$page:c})}:angular.identity;a.boundaryLinks=angular.isDefined(b.boundaryLinks)?a.$parent.$eval(b.boundaryLinks):e.boundaryLinks,a.directionLinks=angular.isDefined(b.directionLinks)?a.$parent.$eval(b.directionLinks):e.directionLinks,d.create(this,a,b),b.maxSize&&h._watchers.push(a.$parent.$watch(c(b.maxSize),function(a){i=parseInt(a,10),h.render()}));var n=this.render;this.render=function(){n(),a.page>0&&a.page<=a.totalPages&&(a.pages=g(a.page,a.totalPages))}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,boundaryLinkNumbers:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0,forceEllipses:!1}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"uib/template/pagination/pagination.html"},replace:!0,link:function(a,c,d,e){var f=e[0],g=e[1];g&&f.init(g,b)}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",placementClassPrefix:"",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",outsideClick:"outsideClick",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){function n(a){if(27===a.which){var b=o.top();b&&(b.value.close(),o.removeTop(),b=null)}}var o=m.createNew();return h.on("keypress",n),k.$on("$destroy",function(){h.off("keypress",n)}),function(e,k,m,n){function p(a){var b=(a||n.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}n=angular.extend({},b,d,n);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="<div "+q+'-popup uib-title="'+r+"title"+s+'" '+(n.useContentExp?'content-exp="contentExp()" ':'content="'+r+"content"+s+'" ')+'placement="'+r+"placement"+s+'" popup-class="'+r+"popupClass"+s+'" animation="animation" is-open="isOpen" origin-scope="origScope" class="uib-position-measure"></div>';
1767 1767 return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){N.isOpen?q():m()}function m(){M&&!a.$eval(d[k+"Enable"])||(u(),x(),N.popupDelay?G||(G=g(r,N.popupDelay,!1)):r())}function q(){s(),N.popupCloseDelay?H||(H=g(t,N.popupCloseDelay,!1)):t()}function r(){return s(),u(),N.content?(v(),void N.$evalAsync(function(){N.isOpen=!0,y(!0),S()})):angular.noop}function s(){G&&(g.cancel(G),G=null),I&&(g.cancel(I),I=null)}function t(){N&&N.$evalAsync(function(){N&&(N.isOpen=!1,y(!1),N.animation?F||(F=g(w,150,!1)):w())})}function u(){H&&(g.cancel(H),H=null),F&&(g.cancel(F),F=null)}function v(){D||(E=N.$new(),D=c(E,function(a){K?h.find("body").append(a):b.after(a)}),z())}function w(){s(),u(),A(),D&&(D.remove(),D=null),E&&(E.$destroy(),E=null)}function x(){N.title=d[k+"Title"],Q?N.content=Q(a):N.content=d[e],N.popupClass=d[k+"Class"],N.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:n.placement;var b=i.parsePlacement(N.placement);J=b[1]?b[0]+"-"+b[1]:b[0];var c=parseInt(d[k+"PopupDelay"],10),f=parseInt(d[k+"PopupCloseDelay"],10);N.popupDelay=isNaN(c)?n.popupDelay:c,N.popupCloseDelay=isNaN(f)?n.popupCloseDelay:f}function y(b){P&&angular.isFunction(P.assign)&&P.assign(a,b)}function z(){R.length=0,Q?(R.push(a.$watch(Q,function(a){N.content=a,!a&&N.isOpen&&t()})),R.push(E.$watch(function(){O||(O=!0,E.$$postDigest(function(){O=!1,N&&N.isOpen&&S()}))}))):R.push(d.$observe(e,function(a){N.content=a,!a&&N.isOpen?t():S()})),R.push(d.$observe(k+"Title",function(a){N.title=a,N.isOpen&&S()})),R.push(d.$observe(k+"Placement",function(a){N.placement=a?a:n.placement,N.isOpen&&S()}))}function A(){R.length&&(angular.forEach(R,function(a){a()}),R.length=0)}function B(a){N&&N.isOpen&&D&&(b[0].contains(a.target)||D[0].contains(a.target)||q())}function C(){var a=d[k+"Trigger"];T(),L=p(a),"none"!==L.show&&L.show.forEach(function(a,c){"outsideClick"===a?(b.on("click",j),h.on("click",B)):a===L.hide[c]?b.on(a,j):a&&(b.on(a,m),b.on(L.hide[c],q)),b.on("keypress",function(a){27===a.which&&q()})})}var D,E,F,G,H,I,J,K=angular.isDefined(n.appendToBody)?n.appendToBody:!1,L=p(void 0),M=angular.isDefined(d[k+"Enable"]),N=a.$new(!0),O=!1,P=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,Q=n.useContentExp?l(d[e]):!1,R=[],S=function(){D&&D.html()&&(I||(I=g(function(){var a=i.positionElements(b,D,N.placement,K);D.css({top:a.top+"px",left:a.left+"px"}),D.hasClass(a.placement.split("-")[0])||(D.removeClass(J.split("-")[0]),D.addClass(a.placement.split("-")[0])),D.hasClass(n.placementClassPrefix+a.placement)||(D.removeClass(n.placementClassPrefix+J),D.addClass(n.placementClassPrefix+a.placement)),D.hasClass("uib-position-measure")?(i.positionArrow(D,a.placement),D.removeClass("uib-position-measure")):J!==a.placement&&i.positionArrow(D,a.placement),J=a.placement,I=null},0,!1)))};N.origScope=a,N.isOpen=!1,o.add(N,{close:t}),N.contentExp=function(){return N.content},d.$observe("disabled",function(a){a&&s(),a&&N.isOpen&&t()}),P&&a.$watch(P,function(a){N&&!a===N.isOpen&&j()});var T=function(){L.show.forEach(function(a){"outsideClick"===a?b.off("click",j):(b.off(a,m),b.off(a,j))}),L.hide.forEach(function(a){"outsideClick"===a?h.off("click",B):b.off(a,q)})};C();var U=a.$eval(d[k+"Animation"]);N.animation=angular.isDefined(U)?!!U:n.animation;var V,W=k+"AppendToBody";V=W in d&&void 0===d[W]?!0:a.$eval(d[W]),K=angular.isDefined(V)?V:K,a.$on("$destroy",function(){T(),w(),o.remove(N),N=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",["$uibPosition",function(a){return{restrict:"A",link:function(b,c,d){if(b.placement){var e=a.parsePlacement(b.placement);c.addClass(e[0])}b.popupClass&&c.addClass(b.popupClass),b.animation()&&c.addClass(d.tooltipAnimationClass)}}}]).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/tooltip/tooltip-popup.html"}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"uib/template/tooltip/tooltip-template-popup.html"}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/tooltip/tooltip-html-popup.html"}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{uibTitle:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"uib/template/popover/popover-template.html"}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",uibTitle:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/popover/popover-html.html"}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{uibTitle:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/popover/popover.html"}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){function d(){return angular.isDefined(a.maxParam)?a.maxParam:c.max}var e=this,f=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=d(),this.addBar=function(a,b,c){f||b.css({transition:"none"}),this.bars.push(a),a.max=d(),a.title=c&&angular.isDefined(c.title)?c.title:"progressbar",a.$watch("value",function(b){a.recalculatePercentage()}),a.recalculatePercentage=function(){var b=e.bars.reduce(function(a,b){return b.percent=+(100*b.value/b.max).toFixed(2),a+b.percent},0);b>100&&(a.percent-=b-100)},a.$on("$destroy",function(){b=null,e.removeBar(a)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1),this.bars.forEach(function(a){a.recalculatePercentage()})},a.$watch("maxParam",function(a){e.bars.forEach(function(a){a.max=d(),a.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{maxParam:"=?max"},templateUrl:"uib/template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"uib/template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",maxParam:"=?max",type:"@"},templateUrl:"uib/template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,enableReset:!0,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop},e=this;this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff,this.enableReset=angular.isDefined(b.enableReset)?a.$parent.$eval(b.enableReset):c.enableReset;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){if(!a.readonly&&b>=0&&b<=a.range.length){var c=e.enableReset&&d.$viewValue===b?0:b;d.$setViewValue(c),d.$render()}},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue,a.title=e.getTitle(a.value-1)}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?readOnly",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"uib/template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){function b(a){for(var b=0;b<d.tabs.length;b++)if(d.tabs[b].index===a)return b}var c,d=this;d.tabs=[],d.select=function(a,f){if(!e){var g=b(c),h=d.tabs[g];if(h){if(h.tab.onDeselect({$event:f}),f&&f.isDefaultPrevented())return;h.tab.active=!1}var i=d.tabs[a];i?(i.tab.onSelect({$event:f}),i.tab.active=!0,d.active=i.index,c=i.index):!i&&angular.isNumber(c)&&(d.active=null,c=null)}},d.addTab=function(a){if(d.tabs.push({tab:a,index:a.index}),d.tabs.sort(function(a,b){return a.index>b.index?1:a.index<b.index?-1:0}),a.index===d.active||!angular.isNumber(d.active)&&1===d.tabs.length){var c=b(a.index);d.select(c)}},d.removeTab=function(a){for(var b,c=0;c<d.tabs.length;c++)if(d.tabs[c].tab===a){b=c;break}if(d.tabs[b].index===d.active){var e=b===d.tabs.length-1?b-1:b+1%d.tabs.length;d.select(e)}d.tabs.splice(b,1)},a.$watch("tabset.active",function(a){angular.isNumber(a)&&a!==c&&d.select(b(a))});var e;a.$on("$destroy",function(){e=!0})}]).directive("uibTabset",function(){return{transclude:!0,replace:!0,scope:{},bindToController:{active:"=?",type:"@"},controller:"UibTabsetController",controllerAs:"tabset",templateUrl:function(a,b){return b.templateUrl||"uib/template/tabs/tabset.html"},link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1,angular.isUndefined(c.active)&&(a.active=0)}}}).directive("uibTab",["$parse",function(a){return{require:"^uibTabset",replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/tabs/tab.html"},transclude:!0,scope:{heading:"@",index:"=?",classes:"@?",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},controllerAs:"tab",link:function(b,c,d,e,f){b.disabled=!1,d.disable&&b.$parent.$watch(a(d.disable),function(a){b.disabled=!!a}),angular.isUndefined(d.index)&&(e.tabs&&e.tabs.length?b.index=Math.max.apply(null,e.tabs.map(function(a){return a.index}))+1:b.index=0),angular.isUndefined(d.classes)&&(b.classes=""),b.select=function(a){if(!b.disabled){for(var c,d=0;d<e.tabs.length;d++)if(e.tabs[d].tab===b){c=d;break}e.select(c,a)}},e.addTab(b),b.$on("$destroy",function(){e.removeTab(b)}),b.$transcludeFn=f}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:"^uibTab",link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}).directive("uibTabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("uib-tab-heading")||a.hasAttribute("data-uib-tab-heading")||a.hasAttribute("x-uib-tab-heading")||"uib-tab-heading"===a.tagName.toLowerCase()||"data-uib-tab-heading"===a.tagName.toLowerCase()||"x-uib-tab-heading"===a.tagName.toLowerCase()||"uib:tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^uibTabset",link:function(b,c,d){var e=b.$eval(d.uibTabContentTransclude).tab;e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,secondStep:1,showMeridian:!0,showSeconds:!1,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0,templateUrl:"uib/template/timepicker/timepicker.html"}).controller("UibTimepickerController",["$scope","$element","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(a,b,c,d,e,f,g){function h(){var b=+a.hours,c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c&&""!==a.hours?(a.showMeridian&&(12===b&&(b=0),a.meridian===v[1]&&(b+=12)),b):void 0}function i(){var b=+a.minutes,c=b>=0&&60>b;return c&&""!==a.minutes?b:void 0}function j(){var b=+a.seconds;return b>=0&&60>b?b:void 0}function k(a,b){return null===a?"":angular.isDefined(a)&&a.toString().length<2&&!b?"0"+a:a.toString()}function l(a){m(),u.$setViewValue(new Date(s)),n(a)}function m(){u.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1,a.invalidSeconds=!1}function n(b){if(u.$modelValue){var c=s.getHours(),d=s.getMinutes(),e=s.getSeconds();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:k(c,!w),"m"!==b&&(a.minutes=k(d)),a.meridian=s.getHours()<12?v[0]:v[1],"s"!==b&&(a.seconds=k(e)),a.meridian=s.getHours()<12?v[0]:v[1]}else a.hours=null,a.minutes=null,a.seconds=null,a.meridian=v[0]}function o(a){s=q(s,a),l()}function p(a,b){return q(a,60*b)}function q(a,b){var c=new Date(a.getTime()+1e3*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes(),c.getSeconds()),d}function r(){return(null===a.hours||""===a.hours)&&(null===a.minutes||""===a.minutes)&&(!a.showSeconds||a.showSeconds&&(null===a.seconds||""===a.seconds))}var s=new Date,t=[],u={$setViewValue:angular.noop},v=angular.isDefined(c.meridians)?a.$parent.$eval(c.meridians):g.meridians||f.DATETIME_FORMATS.AMPMS,w=angular.isDefined(c.padHours)?a.$parent.$eval(c.padHours):!0;a.tabindex=angular.isDefined(c.tabindex)?c.tabindex:0,b.removeAttr("tabindex"),this.init=function(b,d){u=b,u.$render=this.render,u.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),f=d.eq(1),h=d.eq(2),i=angular.isDefined(c.mousewheel)?a.$parent.$eval(c.mousewheel):g.mousewheel;i&&this.setupMousewheelEvents(e,f,h);var j=angular.isDefined(c.arrowkeys)?a.$parent.$eval(c.arrowkeys):g.arrowkeys;j&&this.setupArrowkeyEvents(e,f,h),a.readonlyInput=angular.isDefined(c.readonlyInput)?a.$parent.$eval(c.readonlyInput):g.readonlyInput,this.setupInputEvents(e,f,h)};var x=g.hourStep;c.hourStep&&t.push(a.$parent.$watch(d(c.hourStep),function(a){x=+a}));var y=g.minuteStep;c.minuteStep&&t.push(a.$parent.$watch(d(c.minuteStep),function(a){y=+a}));var z;t.push(a.$parent.$watch(d(c.min),function(a){var b=new Date(a);z=isNaN(b)?void 0:b}));var A;t.push(a.$parent.$watch(d(c.max),function(a){var b=new Date(a);A=isNaN(b)?void 0:b}));var B=!1;c.ngDisabled&&t.push(a.$parent.$watch(d(c.ngDisabled),function(a){B=a})),a.noIncrementHours=function(){var a=p(s,60*x);return B||a>A||s>a&&z>a},a.noDecrementHours=function(){var a=p(s,60*-x);return B||z>a||a>s&&a>A},a.noIncrementMinutes=function(){var a=p(s,y);return B||a>A||s>a&&z>a},a.noDecrementMinutes=function(){var a=p(s,-y);return B||z>a||a>s&&a>A},a.noIncrementSeconds=function(){var a=q(s,C);return B||a>A||s>a&&z>a},a.noDecrementSeconds=function(){var a=q(s,-C);return B||z>a||a>s&&a>A},a.noToggleMeridian=function(){return s.getHours()<12?B||p(s,720)>A:B||p(s,-720)<z};var C=g.secondStep;c.secondStep&&t.push(a.$parent.$watch(d(c.secondStep),function(a){C=+a})),a.showSeconds=g.showSeconds,c.showSeconds&&t.push(a.$parent.$watch(d(c.showSeconds),function(b){a.showSeconds=!!b})),a.showMeridian=g.showMeridian,c.showMeridian&&t.push(a.$parent.$watch(d(c.showMeridian),function(b){if(a.showMeridian=!!b,u.$error.time){var c=h(),d=i();angular.isDefined(c)&&angular.isDefined(d)&&(s.setHours(c),l())}else n()})),this.setupMousewheelEvents=function(b,c,d){var e=function(a){a.originalEvent&&(a=a.originalEvent);var b=a.wheelDelta?a.wheelDelta:-a.deltaY;return a.detail||b>0};b.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()}),d.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementSeconds():a.decrementSeconds()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c,d){b.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply()))}),c.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply()))}),d.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementSeconds(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementSeconds(),a.$apply()))})},this.setupInputEvents=function(b,c,d){if(a.readonlyInput)return a.updateHours=angular.noop,a.updateMinutes=angular.noop,void(a.updateSeconds=angular.noop);var e=function(b,c,d){u.$setViewValue(null),u.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c),angular.isDefined(d)&&(a.invalidSeconds=d)};a.updateHours=function(){var a=h(),b=i();u.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(s.setHours(a),s.setMinutes(b),z>s||s>A?e(!0):l("h")):e(!0)},b.bind("blur",function(b){u.$setTouched(),r()?m():null===a.hours||""===a.hours?e(!0):!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=k(a.hours,!w)})}),a.updateMinutes=function(){var a=i(),b=h();u.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(s.setHours(b),s.setMinutes(a),z>s||s>A?e(void 0,!0):l("m")):e(void 0,!0)},c.bind("blur",function(b){u.$setTouched(),r()?m():null===a.minutes?e(void 0,!0):!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=k(a.minutes)})}),a.updateSeconds=function(){var a=j();u.$setDirty(),angular.isDefined(a)?(s.setSeconds(a),l("s")):e(void 0,void 0,!0)},d.bind("blur",function(b){r()?m():!a.invalidSeconds&&a.seconds<10&&a.$apply(function(){a.seconds=k(a.seconds)})})},this.render=function(){var b=u.$viewValue;isNaN(b)?(u.$setValidity("time",!1),e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(s=b),z>s||s>A?(u.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):m(),n())},a.showSpinners=angular.isDefined(c.showSpinners)?a.$parent.$eval(c.showSpinners):g.showSpinners,a.incrementHours=function(){a.noIncrementHours()||o(60*x*60)},a.decrementHours=function(){a.noDecrementHours()||o(60*-x*60)},a.incrementMinutes=function(){a.noIncrementMinutes()||o(60*y)},a.decrementMinutes=function(){a.noDecrementMinutes()||o(60*-y)},a.incrementSeconds=function(){a.noIncrementSeconds()||o(C)},a.decrementSeconds=function(){a.noDecrementSeconds()||o(-C)},a.toggleMeridian=function(){var b=i(),c=h();a.noToggleMeridian()||(angular.isDefined(b)&&angular.isDefined(c)?o(720*(s.getHours()<12?60:-60)):a.meridian=a.meridian===v[0]?v[1]:v[0])},a.blur=function(){u.$setTouched()},a.$on("$destroy",function(){for(;t.length;)t.shift()()})}]).directive("uibTimepicker",["uibTimepickerConfig",function(a){return{require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(b,c){return c.templateUrl||a.templateUrl},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.debounce","ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$$debounce","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),Y()}function o(){N.position=D?l.offset(b):l.position(b),N.position.top+=b.prop("offsetHeight")}var p,q,r=[9,13,27,38,40],s=200,t=a.$eval(c.typeaheadMinLength);t||0===t||(t=1),a.$watch(c.typeaheadMinLength,function(a){t=a||0===a?a:1});var u=a.$eval(c.typeaheadWaitMs)||0,v=a.$eval(c.typeaheadEditable)!==!1;a.$watch(c.typeaheadEditable,function(a){v=a!==!1});var w,x,y=e(c.typeaheadLoading).assign||angular.noop,z=e(c.typeaheadOnSelect),A=angular.isDefined(c.typeaheadSelectOnBlur)?a.$eval(c.typeaheadSelectOnBlur):!1,B=e(c.typeaheadNoResults).assign||angular.noop,C=c.typeaheadInputFormatter?e(c.typeaheadInputFormatter):void 0,D=c.typeaheadAppendToBody?a.$eval(c.typeaheadAppendToBody):!1,E=c.typeaheadAppendTo?a.$eval(c.typeaheadAppendTo):null,F=a.$eval(c.typeaheadFocusFirst)!==!1,G=c.typeaheadSelectOnExact?a.$eval(c.typeaheadSelectOnExact):!1,H=e(c.typeaheadIsOpen).assign||angular.noop,I=a.$eval(c.typeaheadShowHint)||!1,J=e(c.ngModel),K=e(c.ngModel+"($$$p)"),L=function(b,c){return angular.isFunction(J(a))&&q&&q.$options&&q.$options.getterSetter?K(b,{$$$p:c}):J.assign(b,c)},M=m.parse(c.uibTypeahead),N=a.$new(),O=a.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());b.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q,R;I&&(Q=angular.element("<div></div>"),Q.css("position","relative"),b.after(Q),R=b.clone(),R.attr("placeholder",""),R.attr("tabindex","-1"),R.val(""),R.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),b.css({position:"relative","vertical-align":"top","background-color":"transparent"}),Q.append(R),R.after(b));var S=angular.element("<div uib-typeahead-popup></div>");S.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(c.typeaheadTemplateUrl)&&S.attr("template-url",c.typeaheadTemplateUrl),angular.isDefined(c.typeaheadPopupTemplateUrl)&&S.attr("popup-template-url",c.typeaheadPopupTemplateUrl);var T=function(){I&&R.val("")},U=function(){N.matches=[],N.activeIdx=-1,b.attr("aria-expanded",!1),T()},V=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?b.removeAttr("aria-activedescendant"):b.attr("aria-activedescendant",V(a))});var W=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},X=function(c,d){var e={$viewValue:c};y(a,!0),B(a,!1),f.when(M.source(a,e)).then(function(f){var g=c===p.$viewValue;if(g&&w)if(f&&f.length>0){N.activeIdx=F?0:-1,B(a,!1),N.matches.length=0;for(var h=0;h<f.length;h++)e[M.itemName]=f[h],N.matches.push({id:V(h),label:M.viewMapper(N,e),model:f[h]});if(N.query=c,o(),b.attr("aria-expanded",!0),G&&1===N.matches.length&&W(c,0)&&(angular.isNumber(N.debounceUpdate)||angular.isObject(N.debounceUpdate)?k(function(){N.select(0,d)},angular.isNumber(N.debounceUpdate)?N.debounceUpdate:N.debounceUpdate["default"]):N.select(0,d)),I){var i=N.matches[0].label;angular.isString(c)&&c.length>0&&i.slice(0,c.length).toUpperCase()===c.toUpperCase()?R.val(c+i.slice(c.length)):R.val("")}}else U(),B(a,!0);g&&y(a,!1)},function(){U(),y(a,!1),B(a,!0)})};D&&(angular.element(i).on("resize",n),h.find("body").on("scroll",n));var Y=k(function(){N.matches.length&&o(),N.moveInProgress=!1},s);N.moveInProgress=!1,N.query=void 0;var Z,$=function(a){Z=g(function(){X(a)},u)},_=function(){Z&&g.cancel(Z)};U(),N.assignIsOpen=function(b){H(a,b)},N.select=function(d,e){var f,h,i={};x=!0,i[M.itemName]=h=N.matches[d].model,f=M.modelMapper(a,i),L(a,f),p.$setValidity("editable",!0),p.$setValidity("parse",!0),z(a,{$item:h,$model:f,$label:M.viewMapper(a,i),$event:e}),U(),N.$eval(c.typeaheadFocusOnSelect)!==!1&&g(function(){b[0].focus()},0,!1)},b.on("keydown",function(b){if(0!==N.matches.length&&-1!==r.indexOf(b.which)){if(-1===N.activeIdx&&(9===b.which||13===b.which)||9===b.which&&b.shiftKey)return U(),void N.$digest();b.preventDefault();var c;switch(b.which){case 9:case 13:N.$apply(function(){angular.isNumber(N.debounceUpdate)||angular.isObject(N.debounceUpdate)?k(function(){N.select(N.activeIdx,b)},angular.isNumber(N.debounceUpdate)?N.debounceUpdate:N.debounceUpdate["default"]):N.select(N.activeIdx,b)});break;case 27:b.stopPropagation(),U(),a.$digest();break;case 38:N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest(),c=S.find("li")[N.activeIdx],c.parentNode.scrollTop=c.offsetTop;break;case 40:N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest(),c=S.find("li")[N.activeIdx],c.parentNode.scrollTop=c.offsetTop}}}),b.bind("focus",function(a){w=!0,0!==t||p.$viewValue||g(function(){X(p.$viewValue,a)},0)}),b.bind("blur",function(a){A&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){angular.isObject(N.debounceUpdate)&&angular.isNumber(N.debounceUpdate.blur)?k(function(){N.select(N.activeIdx,a)},N.debounceUpdate.blur):N.select(N.activeIdx,a)})),!v&&p.$error.editable&&(p.$setViewValue(),p.$setValidity("editable",!0),p.$setValidity("parse",!0),b.val("")),w=!1,x=!1});var aa=function(c){b[0]!==c.target&&3!==c.which&&0!==N.matches.length&&(U(),j.$$phase||a.$digest())};h.on("click",aa),a.$on("$destroy",function(){h.off("click",aa),(D||E)&&ba.remove(),D&&(angular.element(i).off("resize",n),h.find("body").off("scroll",n)),S.remove(),I&&Q.remove()});var ba=d(S)(N);D?h.find("body").append(ba):E?angular.element(E).eq(0).append(ba):b.after(ba),this.init=function(b,c){p=b,q=c,N.debounceUpdate=p.$options&&e(p.$options.debounce)(a),p.$parsers.unshift(function(b){return w=!0,0===t||b&&b.length>=t?u>0?(_(),$(b)):X(b):(y(a,!1),_(),U()),v?b:b?void p.$setValidity("editable",!1):(p.$setValidity("editable",!0),null)}),p.$formatters.push(function(b){var c,d,e={};return v||p.$setValidity("editable",!0),C?(e.$model=b,C(a,e)):(e[M.itemName]=b,c=M.viewMapper(a,e),e[M.itemName]=void 0,d=M.viewMapper(a,e),c!==d?c:b)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(a,b,c,d){d[2].init(d[0],d[1])}}}).directive("uibTypeaheadPopup",["$$debounce",function(a){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&",assignIsOpen:"&",debounce:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"uib/template/typeahead/typeahead-popup.html"},link:function(b,c,d){b.templateUrl=d.templateUrl,b.isOpen=function(){var a=b.matches.length>0;return b.assignIsOpen({isOpen:a}),a},b.isActive=function(a){return b.active===a},b.selectActive=function(a){b.active=a},b.selectMatch=function(c,d){var e=b.debounce();angular.isNumber(e)||angular.isObject(e)?a(function(){b.select({activeIdx:c,evt:d})},angular.isNumber(e)?e:e["default"]):b.select({activeIdx:c,evt:d})}}}}]).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"uib/template/typeahead/typeahead-match.html";a(g).then(function(a){var c=angular.element(a.trim());e.replaceWith(c),b(c)(d)})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"<strong>$&</strong>"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("uib/template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion-group.html",'<div class="panel" ng-class="panelClass || \'panel-default\'">\n <div role="tab" id="{{::headingId}}" aria-selected="{{isOpen}}" class="panel-heading" ng-keypress="toggleOpen($event)">\n <h4 class="panel-title">\n <a role="button" data-toggle="collapse" href aria-expanded="{{isOpen}}" aria-controls="{{::panelId}}" tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading"><span uib-accordion-header ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n </h4>\n </div>\n <div id="{{::panelId}}" aria-labelledby="{{::headingId}}" aria-hidden="{{!isOpen}}" role="tabpanel" class="panel-collapse collapse" uib-collapse="!isOpen">\n <div class="panel-body" ng-transclude></div>\n </div>\n</div>\n')}]),angular.module("uib/template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion.html",'<div role="tablist" class="panel-group" ng-transclude></div>')}]),angular.module("uib/template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("uib/template/alert/alert.html",'<div class="alert" ng-class="[\'alert-\' + (type || \'warning\'), closeable ? \'alert-dismissible\' : null]" role="alert">\n <button ng-show="closeable" type="button" class="close" ng-click="close({$event: $event})">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">Close</span>\n </button>\n <div ng-transclude></div>\n</div>\n')}]),angular.module("uib/template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/carousel.html",'<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">\n <div class="carousel-inner" ng-transclude></div>\n <a role="button" href class="left carousel-control" ng-click="prev()" ng-class="{ disabled: isPrevDisabled() }" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span>\n <span class="sr-only">previous</span>\n </a>\n <a role="button" href class="right carousel-control" ng-click="next()" ng-class="{ disabled: isNextDisabled() }" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span>\n <span class="sr-only">next</span>\n </a>\n <ol class="carousel-indicators" ng-show="slides.length > 1">\n <li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{ active: isActive(slide) }" ng-click="select(slide)">\n <span class="sr-only">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if="isActive(slide)">, currently active</span></span>\n </li>\n </ol>\n</div>\n');
1768 1768 }]),angular.module("uib/template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/slide.html",'<div ng-class="{\n \'active\': active\n }" class="item text-center" ng-transclude></div>\n')}]),angular.module("uib/template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/datepicker.html",'<div class="uib-datepicker" ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">\n <uib-daypicker ng-switch-when="day" tabindex="0"></uib-daypicker>\n <uib-monthpicker ng-switch-when="month" tabindex="0"></uib-monthpicker>\n <uib-yearpicker ng-switch-when="year" tabindex="0"></uib-yearpicker>\n</div>\n')}]),angular.module("uib/template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/day.html",'<table class="uib-daypicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::5 + showWeeks}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n <tr>\n <th ng-if="showWeeks" class="text-center"></th>\n <th ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-weeks" ng-repeat="row in rows track by $index">\n <td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n <td ng-repeat="dt in row" class="uib-day text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default btn-sm"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/month.html",'<table class="uib-monthpicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-months" ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row" class="uib-month text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/year.html",'<table class="uib-yearpicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::columns - 2}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-years" ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row" class="uib-year text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepickerPopup/popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepickerPopup/popup.html",'<div>\n <ul class="uib-datepicker-popup dropdown-menu uib-position-measure" dropdown-nested ng-if="isOpen" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()">\n <li ng-transclude></li>\n <li ng-if="showButtonBar" class="uib-button-bar">\n <span class="btn-group pull-left">\n <button type="button" class="btn btn-sm btn-info uib-datepicker-current" ng-click="select(\'today\', $event)" ng-disabled="isDisabled(\'today\')">{{ getText(\'current\') }}</button>\n <button type="button" class="btn btn-sm btn-danger uib-clear" ng-click="select(null, $event)">{{ getText(\'clear\') }}</button>\n </span>\n <button type="button" class="btn btn-sm btn-success pull-right uib-close" ng-click="close($event)">{{ getText(\'close\') }}</button>\n </li>\n </ul>\n</div>\n')}]),angular.module("uib/template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/backdrop.html",'<div class="modal-backdrop"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("uib/template/modal/window.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/window.html",'<div modal-render="{{$isRendered}}" tabindex="-1" role="dialog" class="modal"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1050 + index*10, display: \'block\'}">\n <div class="modal-dialog {{size ? \'modal-\' + size : \'\'}}"><div class="modal-content" uib-modal-transclude></div></div>\n</div>\n')}]),angular.module("uib/template/pager/pager.html",[]).run(["$templateCache",function(a){a.put("uib/template/pager/pager.html",'<ul class="pager">\n <li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n</ul>\n')}]),angular.module("uib/template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("uib/template/pagination/pagination.html",'<ul class="pagination">\n <li ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first"><a href ng-click="selectPage(1, $event)">{{::getText(\'first\')}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)">{{page.text}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n <li ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last"><a href ng-click="selectPage(totalPages, $event)">{{::getText(\'last\')}}</a></li>\n</ul>\n')}]),angular.module("uib/template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-html-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind-html="contentExp()"></div>\n</div>\n')}]),angular.module("uib/template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("uib/template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-template-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n</div>\n')}]),angular.module("uib/template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-html.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content" ng-bind-html="contentExp()"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-template.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content" ng-bind="content"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/bar.html",'<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n')}]),angular.module("uib/template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progress.html",'<div class="progress" ng-transclude aria-labelledby="{{::title}}"></div>')}]),angular.module("uib/template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progressbar.html",'<div class="progress">\n <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n</div>\n')}]),angular.module("uib/template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("uib/template/rating/rating.html",'<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}" aria-valuetext="{{title}}">\n <span ng-repeat-start="r in range track by $index" class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n <i ng-repeat-end ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')" ng-attr-title="{{r.title}}"></i>\n</span>\n')}]),angular.module("uib/template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tab.html",'<li ng-class="[{active: active, disabled: disabled}, classes]" class="uib-tab nav-item">\n <a href ng-click="select($event)" class="nav-link" uib-tab-heading-transclude>{{heading}}</a>\n</li>\n')}]),angular.module("uib/template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tabset.html",'<div>\n <ul class="nav nav-{{tabset.type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n <div class="tab-content">\n <div class="tab-pane"\n ng-repeat="tab in tabset.tabs"\n ng-class="{active: tabset.active === tab.index}"\n uib-tab-content-transclude="tab">\n </div>\n </div>\n</div>\n')}]),angular.module("uib/template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/timepicker/timepicker.html",'<table class="uib-timepicker">\n <tbody>\n <tr class="text-center" ng-show="::showSpinners">\n <td class="uib-increment hours"><a ng-click="incrementHours()" ng-class="{disabled: noIncrementHours()}" class="btn btn-link" ng-disabled="noIncrementHours()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td>&nbsp;</td>\n <td class="uib-increment minutes"><a ng-click="incrementMinutes()" ng-class="{disabled: noIncrementMinutes()}" class="btn btn-link" ng-disabled="noIncrementMinutes()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showSeconds">&nbsp;</td>\n <td ng-show="showSeconds" class="uib-increment seconds"><a ng-click="incrementSeconds()" ng-class="{disabled: noIncrementSeconds()}" class="btn btn-link" ng-disabled="noIncrementSeconds()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n <tr>\n <td class="form-group uib-time hours" ng-class="{\'has-error\': invalidHours}">\n <input type="text" placeholder="HH" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementHours()" ng-blur="blur()">\n </td>\n <td class="uib-separator">:</td>\n <td class="form-group uib-time minutes" ng-class="{\'has-error\': invalidMinutes}">\n <input type="text" placeholder="MM" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementMinutes()" ng-blur="blur()">\n </td>\n <td ng-show="showSeconds" class="uib-separator">:</td>\n <td class="form-group uib-time seconds" ng-class="{\'has-error\': invalidSeconds}" ng-show="showSeconds">\n <input type="text" placeholder="SS" ng-model="seconds" ng-change="updateSeconds()" class="form-control text-center" ng-readonly="readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementSeconds()" ng-blur="blur()">\n </td>\n <td ng-show="showMeridian" class="uib-time am-pm"><button type="button" ng-class="{disabled: noToggleMeridian()}" class="btn btn-default text-center" ng-click="toggleMeridian()" ng-disabled="noToggleMeridian()" tabindex="{{::tabindex}}">{{meridian}}</button></td>\n </tr>\n <tr class="text-center" ng-show="::showSpinners">\n <td class="uib-decrement hours"><a ng-click="decrementHours()" ng-class="{disabled: noDecrementHours()}" class="btn btn-link" ng-disabled="noDecrementHours()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td>&nbsp;</td>\n <td class="uib-decrement minutes"><a ng-click="decrementMinutes()" ng-class="{disabled: noDecrementMinutes()}" class="btn btn-link" ng-disabled="noDecrementMinutes()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showSeconds">&nbsp;</td>\n <td ng-show="showSeconds" class="uib-decrement seconds"><a ng-click="decrementSeconds()" ng-class="{disabled: noDecrementSeconds()}" class="btn btn-link" ng-disabled="noDecrementSeconds()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-match.html",'<a href\n tabindex="-1"\n ng-bind-html="match.label | uibTypeaheadHighlight:query"\n ng-attr-title="{{match.label}}"></a>\n')}]),angular.module("uib/template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-popup.html",'<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+\'px\', left: position().left+\'px\'}" role="listbox" aria-hidden="{{!isOpen()}}">\n <li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index, $event)" role="option" id="{{::match.id}}">\n <div uib-typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n </li>\n</ul>\n')}]),angular.module("ui.bootstrap.carousel").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibCarouselCss&&angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'),angular.$$uibCarouselCss=!0}),angular.module("ui.bootstrap.datepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'),angular.$$uibDatepickerCss=!0}),angular.module("ui.bootstrap.position").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibPositionCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'),angular.$$uibPositionCss=!0}),angular.module("ui.bootstrap.datepickerPopup").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerpopupCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px 9px 2px;}</style>'),angular.$$uibDatepickerpopupCss=!0}),angular.module("ui.bootstrap.tooltip").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTooltipCss&&angular.element(document).find("head").prepend('<style type="text/css">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'),angular.$$uibTooltipCss=!0}),angular.module("ui.bootstrap.timepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTimepickerCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-time input{width:50px;}</style>'),angular.$$uibTimepickerCss=!0}),angular.module("ui.bootstrap.typeahead").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTypeaheadCss&&angular.element(document).find("head").prepend('<style type="text/css">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'),angular.$$uibTypeaheadCss=!0});
1769 1769 ;/*!
1770 1770 * State-based routing for AngularJS
1771 1771 * @version v1.0.0-alpha.5
1772 1772 * @link http://angular-ui.github.com/ui-router
1773 1773 * @license MIT License, http://www.opensource.org/licenses/MIT
1774 1774 */
1775 1775 !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("angular-ui-router",[],e):"object"==typeof exports?exports["angular-ui-router"]=e():t["angular-ui-router"]=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(1)),r(n(53)),r(n(54)),r(n(56)),n(57),n(58),n(59),n(60),Object.defineProperty(e,"__esModule",{value:!0}),e["default"]="ui.router"},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(2)),r(n(20)),r(n(44)),r(n(40)),r(n(17)),r(n(13)),r(n(45)),r(n(49)),r(n(51));var i=n(52);e.UIRouter=i.UIRouter},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(3)),r(n(6)),r(n(7)),r(n(5)),r(n(4)),r(n(8)),r(n(9)),r(n(12))},function(t,e,n){"use strict";function r(t,e,n,r){return void 0===r&&(r=Object.keys(t)),r.filter(function(e){return"function"==typeof t[e]}).forEach(function(r){return e[r]=t[r].bind(n)})}function i(t){void 0===t&&(t={});for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=o.apply(null,[{}].concat(n));return e.extend({},i,c(t||{},Object.keys(i)))}function o(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return e.forEach(n,function(n){e.forEach(n,function(e,n){t.hasOwnProperty(n)||(t[n]=e)})}),t}function a(t,e){var n=[];for(var r in t.path){if(t.path[r]!==e.path[r])break;n.push(t.path[r])}return n}function s(t,e,n){void 0===n&&(n=Object.keys(t));for(var r=0;r<n.length;r++){var i=n[r];if(t[i]!=e[i])return!1}return!0}function u(t,e){var n={},r=_(arguments,2);for(var i in e)t(r,i)&&(n[i]=e[i]);return n}function c(t){return u.apply(null,[T].concat(_(arguments)))}function l(t){return u.apply(null,[k.not(T)].concat(_(arguments)))}function f(t,e){return v(t,k.prop(e))}function p(t,n){var r=P.isArray(t),i=r?[]:{},o=r?function(t){return i.push(t)}:function(t,e){return i[e]=t};return e.forEach(t,function(t,e){n(t,e)&&o(t,e)}),i}function h(t,n){var r;return e.forEach(t,function(t,e){r||n(t,e)&&(r=t)}),r}function v(t,n){var r=P.isArray(t)?[]:{};return e.forEach(t,function(t,e){return r[e]=n(t,e)}),r}function d(t,e){return t.push(e),t}function m(t,e){return void 0===e&&(e="assert failure"),function(n){if(!t(n))throw new Error(P.isFunction(e)?e(n):e);return!0}}function g(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];if(0===t.length)return[];var n=t.reduce(function(t,e){return Math.min(e.length,t)},9007199254740991);return Array.apply(null,Array(n)).map(function(e,n){return t.map(function(t){return t[n]})})}function y(t,e){var n,r;if(P.isArray(e)&&(n=e[0],r=e[1]),!P.isString(n))throw new Error("invalid parameters to applyPairs");return t[n]=r,t}function w(t){return t.length&&t[t.length-1]||void 0}function $(t,n){return n&&Object.keys(n).forEach(function(t){return delete n[t]}),n||(n={}),e.extend(n,t)}function b(t,e,n){return P.isArray(t)?t.forEach(e,n):void Object.keys(t).forEach(function(n){return e(t[n],n)})}function R(t,e){return Object.keys(e).forEach(function(n){return t[n]=e[n]}),t}function S(t,n){return _(arguments,1).filter(e.identity).reduce(R,t)}function x(t,e){if(t===e)return!0;if(null===t||null===e)return!1;if(t!==t&&e!==e)return!0;var n=typeof t,r=typeof e;if(n!==r||"object"!==n)return!1;var i=[t,e];if(k.all(P.isArray)(i))return E(t,e);if(k.all(P.isDate)(i))return t.getTime()===e.getTime();if(k.all(P.isRegExp)(i))return t.toString()===e.toString();if(k.all(P.isFunction)(i))return!0;var o=[P.isFunction,P.isArray,P.isDate,P.isRegExp];if(o.map(k.any).reduce(function(t,e){return t||!!e(i)},!1))return!1;var a,s={};for(a in t){if(!x(t[a],e[a]))return!1;s[a]=!0}for(a in e)if(!s[a])return!1;return!0}function E(t,e){return t.length!==e.length?!1:g(t,e).reduce(function(t,e){return t&&x(e[0],e[1])},!0)}var P=n(4),k=n(5),O="undefined"==typeof window?{}:window,C=O.angular||{};e.fromJson=C.fromJson||JSON.parse.bind(JSON),e.toJson=C.toJson||JSON.stringify.bind(JSON),e.copy=C.copy||$,e.forEach=C.forEach||b,e.extend=C.extend||S,e.equals=C.equals||x,e.identity=function(t){return t},e.noop=function(){},e.abstractKey="abstract",e.bindFunctions=r,e.inherit=function(t,n){return e.extend(new(e.extend(function(){},{prototype:t})),n)};var _=function(t,e){return void 0===e&&(e=0),Array.prototype.concat.apply(Array.prototype,Array.prototype.slice.call(t,e))},T=function(t,e){return-1!==t.indexOf(e)};e.removeFrom=k.curry(function(t,e){var n=t.indexOf(e);return n>=0&&t.splice(n,1),t}),e.defaults=i,e.merge=o,e.mergeR=function(t,n){return e.extend(t,n)},e.ancestors=a,e.equalForKeys=s,e.pick=c,e.omit=l,e.pluck=f,e.filter=p,e.find=h,e.mapObj=v,e.map=v,e.values=function(t){return Object.keys(t).map(function(e){return t[e]})},e.allTrueR=function(t,e){return t&&e},e.anyTrueR=function(t,e){return t||e},e.unnestR=function(t,e){return t.concat(e)},e.flattenR=function(t,n){return P.isArray(n)?t.concat(n.reduce(e.flattenR,[])):d(t,n)},e.unnest=function(t){return t.reduce(e.unnestR,[])},e.flatten=function(t){return t.reduce(e.flattenR,[])},e.assertPredicate=m,e.pairs=function(t){return Object.keys(t).map(function(e){return[e,t[e]]})},e.arrayTuples=g,e.applyPairs=y,e.tail=w},function(t,e,n){"use strict";function r(t){if(e.isArray(t)&&t.length){var n=t.slice(0,-1),r=t.slice(-1);return!(n.filter(i.not(e.isString)).length||r.filter(i.not(e.isFunction)).length)}return e.isFunction(t)}var i=n(5),o=Object.prototype.toString,a=function(t){return function(e){return typeof e===t}};e.isUndefined=a("undefined"),e.isDefined=i.not(e.isUndefined),e.isNull=function(t){return null===t},e.isFunction=a("function"),e.isNumber=a("number"),e.isString=a("string"),e.isObject=function(t){return null!==t&&"object"==typeof t},e.isArray=Array.isArray,e.isDate=function(t){return"[object Date]"===o.call(t)},e.isRegExp=function(t){return"[object RegExp]"===o.call(t)},e.isInjectable=r,e.isPromise=i.and(e.isObject,i.pipe(i.prop("then"),e.isFunction))},function(t,e){"use strict";function n(t){function e(n){return n.length>=r?t.apply(null,n):function(){return e(n.concat([].slice.apply(arguments)))}}var n=[].slice.apply(arguments,[1]),r=t.length;return e(n)}function r(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function i(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];return r.apply(null,[].slice.call(arguments).reverse())}function o(t,e){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r-0]=arguments[r];return t.apply(null,n)&&e.apply(null,n)}}function a(t,e){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r-0]=arguments[r];return t.apply(null,n)||e.apply(null,n)}}function s(t,e){return function(n){return n[t].apply(n,e)}}function u(t){return function(e){for(var n=0;n<t.length;n++)if(t[n][0](e))return t[n][1](e)}}e.curry=n,e.compose=r,e.pipe=i,e.prop=function(t){return function(e){return e&&e[t]}},e.propEq=n(function(t,e,n){return n&&n[t]===e}),e.parse=function(t){return i.apply(null,t.split(".").map(e.prop))},e.not=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n-0]=arguments[n];return!t.apply(null,e)}},e.and=o,e.or=a,e.all=function(t){return function(e){return e.reduce(function(e,n){return e&&!!t(n)},!0)}},e.any=function(t){return function(e){return e.reduce(function(e,n){return e||!!t(n)},!1)}},e.none=e.not(e.any),e.is=function(t){return function(e){return null!=e&&e.constructor===t||e instanceof t}},e.eq=function(t){return function(e){return t===e}},e.val=function(t){return function(){return t}},e.invoke=s,e.pattern=u},function(t,e){"use strict";var n=function(t){return function(){throw new Error(t+"(): No coreservices implementation for UI-Router is loaded. You should include one of: ['angular1.js']")}},r={$q:void 0,$injector:void 0,location:{},locationConfig:{},template:{}};e.services=r,["replace","url","path","search","hash","onChange"].forEach(function(t){return r.location[t]=n(t)}),["port","protocol","host","baseHref","html5Mode","hashPrefix"].forEach(function(t){return r.locationConfig[t]=n(t)})},function(t,e){"use strict";var n=function(){function t(t){this.text=t,this.glob=t.split(".")}return t.prototype.matches=function(t){for(var e=t.split("."),n=0,r=this.glob.length;r>n;n++)"*"===this.glob[n]&&(e[n]="*");return"**"===this.glob[0]&&(e=e.slice(e.indexOf(this.glob[1])),e.unshift("**")),"**"===this.glob[this.glob.length-1]&&(e.splice(e.indexOf(this.glob[this.glob.length-2])+1,Number.MAX_VALUE),e.push("**")),this.glob.length!=e.length?!1:e.join("")===this.glob.join("")},t.is=function(t){return t.indexOf("*")>-1},t.fromString=function(e){return this.is(e)?new t(e):null},t}();e.Glob=n},function(t,e){"use strict";var n=function(){function t(t,e){void 0===t&&(t=[]),void 0===e&&(e=null),this._items=t,this._limit=e}return t.prototype.enqueue=function(t){var e=this._items;return e.push(t),this._limit&&e.length>this._limit&&e.shift(),t},t.prototype.dequeue=function(){return this.size()?this._items.splice(0,1)[0]:void 0},t.prototype.clear=function(){var t=this._items;return this._items=[],t},t.prototype.size=function(){return this._items.length},t.prototype.remove=function(t){var e=this._items.indexOf(t);return e>-1&&this._items.splice(e,1)[0]},t.prototype.peekTail=function(){return this._items[this._items.length-1]},t.prototype.peekHead=function(){return this.size()?this._items[0]:void 0},t}();e.Queue=n},function(t,e,n){"use strict";function r(t,e){return e.length<=t?e:e.substr(0,t-3)+"..."}function i(t,e){for(;e.length<t;)e+=" ";return e}function o(t){return t.replace(/^([A-Z])/,function(t){return t.toLowerCase()}).replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}function a(t){return"Promise("+JSON.stringify(t)+")"}function s(t){var e=u(t),n=e.match(/^(function [^ ]+\([^)]*\))/);return n?n[1]:e}function u(t){var e=l.isArray(t)?t.slice(-1)[0]:t;return e&&e.toString()||"undefined"}function c(t){function e(t){if(l.isObject(t)){if(-1!==n.indexOf(t))return"[circular ref]";n.push(t)}return g(t)}var n=[];return JSON.stringify(t,function(t,n){return e(n)}).replace(/\\"/g,'"')}var l=n(4),f=n(10),p=n(3),h=n(5),v=n(11),d=n(32);e.maxLength=r,e.padString=i,e.kebobString=o,e.functionToString=s,e.fnToString=u;var m=f.Rejection.isTransitionRejectionPromise,g=h.pattern([[h.not(l.isDefined),h.val("undefined")],[l.isNull,h.val("null")],[l.isPromise,a],[m,function(t){return t._transitionRejection.toString()}],[h.is(f.Rejection),h.invoke("toString")],[h.is(v.Transition),h.invoke("toString")],[h.is(d.Resolvable),h.invoke("toString")],[l.isInjectable,s],[h.val(!0),p.identity]]);e.stringify=c,e.beforeAfterSubstr=function(t){return function(e){if(!e)return["",""];var n=e.indexOf(t);return-1===n?[e,""]:[e.substr(0,n),e.substr(n+1)]}}},function(t,e,n){"use strict";var r=n(3),i=n(6),o=n(9);!function(t){t[t.SUPERSEDED=2]="SUPERSEDED",t[t.ABORTED=3]="ABORTED",t[t.INVALID=4]="INVALID",t[t.IGNORED=5]="IGNORED"}(e.RejectType||(e.RejectType={}));var a=e.RejectType,s=function(){function t(t,e,n){this.type=t,this.message=e,this.detail=n}return t.prototype.toString=function(){var t=function(t){return t&&t.toString!==Object.prototype.toString?t.toString():o.stringify(t)},e=this.type,n=this.message,r=t(this.detail);return"TransitionRejection(type: "+e+", message: "+n+", detail: "+r+")"},t.prototype.toPromise=function(){return r.extend(i.services.$q.reject(this),{_transitionRejection:this})},t.isTransitionRejectionPromise=function(e){return e&&"function"==typeof e.then&&e._transitionRejection instanceof t},t.superseded=function(e,n){var r="The transition has been superseded by a different transition (see detail).",i=new t(a.SUPERSEDED,r,e);return n&&n.redirected&&(i.redirected=!0),i},t.redirected=function(e){return t.superseded(e,{redirected:!0})},t.invalid=function(e){var n="This transition is invalid (see detail)";return new t(a.INVALID,n,e)},t.ignored=function(e){var n="The transition was ignored.";return new t(a.IGNORED,n,e)},t.aborted=function(e){var n="The transition has been aborted.";return new t(a.ABORTED,n,e)},t}();e.Rejection=s},function(t,e,n){"use strict";var r=n(12),i=n(6),o=n(3),a=n(4),s=n(5),u=n(13),c=n(39),l=n(38),f=n(17),p=n(20),h=n(40),v=n(10),d=0,m=s.prop("self"),g=function(){function t(t,e,n){var r=this;if(this._transitionService=n,this._deferred=i.services.$q.defer(),this.promise=this._deferred.promise,this.treeChanges=function(){return r._treeChanges},this.isActive=function(){return r===r._options.current()},!e.valid())throw new Error(e.error());u.HookRegistry.mixin(new u.HookRegistry,this),this._options=o.extend({current:s.val(this)},e.options()),this.$id=d++;var a=l.PathFactory.buildToPath(t,e);a=l.PathFactory.applyViewConfigs(n.$view,a),this._treeChanges=l.PathFactory.treeChanges(t,a,this._options.reloadState),l.PathFactory.bindTransitionResolve(this._treeChanges,this)}return t.prototype.$from=function(){return o.tail(this._treeChanges.from).state},t.prototype.$to=function(){return o.tail(this._treeChanges.to).state},t.prototype.from=function(){return this.$from().self},t.prototype.to=function(){return this.$to().self},t.prototype.is=function(e){return e instanceof t?this.is({to:e.$to().name,from:e.$from().name}):!(e.to&&!u.matchState(this.$to(),e.to)||e.from&&!u.matchState(this.$from(),e.from))},t.prototype.params=function(t){return void 0===t&&(t="to"),this._treeChanges[t].map(s.prop("paramValues")).reduce(o.mergeR,{})},t.prototype.resolves=function(){return o.map(o.tail(this._treeChanges.to).resolveContext.getResolvables(),function(t){return t.data})},t.prototype.addResolves=function(t,e){void 0===e&&(e="");var n="string"==typeof e?e:e.name,r=this._treeChanges.to,i=o.find(r,function(t){return t.state.name===n});o.tail(r).resolveContext.addResolvables(h.Resolvable.makeResolvables(t),i.state)},t.prototype.previous=function(){return this._options.previous||null},t.prototype.options=function(){return this._options},t.prototype.entering=function(){return o.map(this._treeChanges.entering,s.prop("state")).map(m)},t.prototype.exiting=function(){return o.map(this._treeChanges.exiting,s.prop("state")).map(m).reverse()},t.prototype.retained=function(){return o.map(this._treeChanges.retained,s.prop("state")).map(m)},t.prototype.views=function(t,e){void 0===t&&(t="entering");var n=this._treeChanges[t];return n=e?n.filter(s.propEq("state",e)):n,n.map(s.prop("views")).filter(o.identity).reduce(o.unnestR,[])},t.prototype.redirect=function(e){var n=o.extend({},this.options(),e.options(),{previous:this});e=new f.TargetState(e.identifier(),e.$state(),e.params(),n);var r=new t(this._treeChanges.from,e,this._transitionService),i=e.options().reloadState,a=this.treeChanges().to,s=c.Node.matching(r.treeChanges().to,a).filter(function(t){return!i||!i.includes[t.state.name]}),u=function(t,e){return-1===["$stateParams","$transition$"].indexOf(e)};return s.forEach(function(t,e){return o.extend(t.resolves,o.filter(a[e].resolves,u))}),r},t.prototype._changedParams=function(){var t=this._treeChanges,e=t.to,n=t.from;if(!this._options.reload&&o.tail(e).state===o.tail(n).state){var r=e.map(function(t){return t.paramSchema}),i=[e,n].map(function(t){return t.map(function(t){return t.paramValues})}),a=i[0],s=i[1],u=o.arrayTuples(r,a,s);return u.map(function(t){var e=t[0],n=t[1],r=t[2];return p.Param.changed(e,n,r)}).reduce(o.unnestR,[])}},t.prototype.dynamic=function(){var t=this._changedParams();return t?t.map(function(t){return t.dynamic}).reduce(o.anyTrueR,!1):!1},t.prototype.ignored=function(){var t=this._changedParams();return t?0===t.length:!1},t.prototype.hookBuilder=function(){return new u.HookBuilder(this._transitionService,this,{transition:this,current:this._options.current})},t.prototype.run=function(){var t=this,e=this.hookBuilder(),n=u.TransitionHook.runSynchronousHooks,o=function(){return n(e.getOnSuccessHooks(),{},!0)},a=function(t){return n(e.getOnErrorHooks(),{$error$:t},!0)};this.promise.then(o,a);var s=n(e.getOnBeforeHooks());if(v.Rejection.isTransitionRejectionPromise(s)){s["catch"](function(){return 0});var c=s._transitionRejection;return this._deferred.reject(c),this.promise}if(!this.valid()){var l=new Error(this.error());return this._deferred.reject(l),this.promise}if(this.ignored())return r.trace.traceTransitionIgnored(this),this._deferred.reject(v.Rejection.ignored()),this.promise;var f=function(){t.success=!0,t._deferred.resolve(t),r.trace.traceSuccess(t.$to(),t)},p=function(e){return t.success=!1,t._deferred.reject(e),r.trace.traceError(e,t),i.services.$q.reject(e)};r.trace.traceTransitionStart(this);var h=e.asyncHooks().reduce(function(t,e){return t.then(e.invokeHook.bind(e))},s);return h.then(f,p),this.promise},t.prototype.valid=function(){return!this.error()},t.prototype.error=function(){var t=this.$to();return t.self[o.abstractKey]?"Cannot transition to abstract state '"+t.name+"'":p.Param.validates(t.parameters(),this.params())?void 0:"Param values not valid for state '"+t.name+"'"},t.prototype.toString=function(){var t=this.from(),e=this.to(),n=function(t){return null!==t["#"]&&void 0!==t["#"]?t:o.omit(t,"#")},r=this.$id,i=a.isObject(t)?t.name:t,u=o.toJson(n(this._treeChanges.from.map(s.prop("paramValues")).reduce(o.mergeR,{}))),c=this.valid()?"":"(X) ",l=a.isObject(e)?e.name:e,f=o.toJson(n(this.params()));return"Transition#"+r+"( '"+i+"'"+u+" -> "+c+"'"+l+"'"+f+" )"},t}();e.Transition=g},function(t,e,n){"use strict";function r(t){return t?"[ui-view#"+t.id+" tag in template from '"+(t.creationContext.name||"(root)")+"' state]: fqn: '"+t.fqn+"', name: '"+t.name+"@"+t.creationContext+"')":"ui-view (defunct)"}function i(t){return a.isNumber(t)?c[t]:c[c[t]]}var o=n(5),a=n(4),s=n(9),u=function(t){return"[ViewConfig from '"+(t.viewDecl.$context.name||"(root)")+"' state]: target ui-view: '"+t.viewDecl.$uiViewName+"@"+t.viewDecl.$uiViewContextAnchor+"'"};!function(t){t[t.RESOLVE=0]="RESOLVE",t[t.TRANSITION=1]="TRANSITION",t[t.HOOK=2]="HOOK",t[t.INVOKE=3]="INVOKE",t[t.UIVIEW=4]="UIVIEW",t[t.VIEWCONFIG=5]="VIEWCONFIG"}(e.Category||(e.Category={}));var c=e.Category,l=function(){function t(){this._enabled={},this.approximateDigests=0}return t.prototype._set=function(t,e){var n=this;e.length||(e=Object.keys(c).filter(function(t){return isNaN(parseInt(t,10))}).map(function(t){return c[t]})),e.map(i).forEach(function(e){return n._enabled[e]=t})},t.prototype.enable=function(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];this._set(!0,t)},t.prototype.disable=function(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];this._set(!1,t)},t.prototype.enabled=function(t){return!!this._enabled[i(t)]},t.prototype.traceTransitionStart=function(t){if(this.enabled(c.TRANSITION)){var e=t.$id,n=this.approximateDigests,r=s.stringify(t);console.log("Transition #"+e+" Digest #"+n+": Started -> "+r)}},t.prototype.traceTransitionIgnored=function(t){if(this.enabled(c.TRANSITION)){var e=t.$id,n=this.approximateDigests,r=s.stringify(t);console.log("Transition #"+e+" Digest #"+n+": Ignored <> "+r)}},t.prototype.traceHookInvocation=function(t,e){if(this.enabled(c.HOOK)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=o.parse("traceData.hookType")(e)||"internal",a=o.parse("traceData.context.state.name")(e)||o.parse("traceData.context")(e)||"unknown",u=s.functionToString(t.fn);console.log("Transition #"+n+" Digest #"+r+": Hook -> "+i+" context: "+a+", "+s.maxLength(200,u))}},t.prototype.traceHookResult=function(t,e,n){if(this.enabled(c.HOOK)){var r=o.parse("transition.$id")(n),i=this.approximateDigests,a=s.stringify(t),u=s.stringify(e);console.log("Transition #"+r+" Digest #"+i+": <- Hook returned: "+s.maxLength(200,a)+", transition result: "+s.maxLength(200,u))}},t.prototype.traceResolvePath=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString(),a=e&&e.resolvePolicy;console.log("Transition #"+n+" Digest #"+r+": Resolving "+i+" ("+a+")")}},t.prototype.traceResolvePathElement=function(t,e,n){if(this.enabled(c.RESOLVE)&&e.length){var r=o.parse("transition.$id")(n),i=this.approximateDigests,a=Object.keys(e).join(", "),s=t&&t.toString(),u=n&&n.resolvePolicy;console.log("Transition #"+r+" Digest #"+i+": Resolve "+s+" resolvables: ["+a+"] ("+u+")")}},t.prototype.traceResolveResolvable=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString();console.log("Transition #"+n+" Digest #"+r+": Resolving -> "+i)}},t.prototype.traceResolvableResolved=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString(),a=s.stringify(t.data);console.log("Transition #"+n+" Digest #"+r+": <- Resolved "+i+" to: "+s.maxLength(200,a))}},t.prototype.tracePathElementInvoke=function(t,e,n,r){if(this.enabled(c.INVOKE)){var i=o.parse("transition.$id")(r),a=this.approximateDigests,u=t&&t.state&&t.state.toString(),l=s.functionToString(e);console.log("Transition #"+i+" Digest #"+a+": Invoke "+r.when+": context: "+u+" "+s.maxLength(200,l))}},t.prototype.traceError=function(t,e){if(this.enabled(c.TRANSITION)){var n=e.$id,r=this.approximateDigests,i=s.stringify(e);console.log("Transition #"+n+" Digest #"+r+": <- Rejected "+i+", reason: "+t)}},t.prototype.traceSuccess=function(t,e){if(this.enabled(c.TRANSITION)){var n=e.$id,r=this.approximateDigests,i=t.name,o=s.stringify(e);console.log("Transition #"+n+" Digest #"+r+": <- Success "+o+", final state: "+i)}},t.prototype.traceUiViewEvent=function(t,e,n){void 0===n&&(n=""),this.enabled(c.UIVIEW)&&console.log("ui-view: "+s.padString(30,t)+" "+r(e)+n)},t.prototype.traceUiViewConfigUpdated=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Updating",t," with ViewConfig from context='"+e+"'")},t.prototype.traceUiViewScopeCreated=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Created scope for",t,", scope #"+e.$id)},t.prototype.traceUiViewFill=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Fill",t," with: "+s.maxLength(200,e))},t.prototype.traceViewServiceEvent=function(t,e){this.enabled(c.VIEWCONFIG)&&console.log("VIEWCONFIG: "+t+" "+u(e))},t.prototype.traceViewServiceUiViewEvent=function(t,e){this.enabled(c.VIEWCONFIG)&&console.log("VIEWCONFIG: "+t+" "+r(e))},t}();e.Trace=l;var f=new l;e.trace=f},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(14)),r(n(15)),r(n(10)),r(n(11)),r(n(16)),r(n(43))},function(t,e,n){"use strict";function r(t){return void 0===t&&(t=!1),function(e,n){var r=t?-1:1,i=(e.node.state.path.length-n.node.state.path.length)*r;return 0!==i?i:n.hook.priority-e.hook.priority}}var i=n(3),o=n(4),a=n(13),s=function(){function t(t,e,n){var o=this;this.$transitions=t,this.transition=e,this.baseHookOptions=n,this.getOnBeforeHooks=function(){return o._buildNodeHooks("onBefore","to",r(),void 0,{async:!1})},this.getOnStartHooks=function(){return o._buildNodeHooks("onStart","to",r())},this.getOnExitHooks=function(){return o._buildNodeHooks("onExit","exiting",r(!0),function(t){return{$state$:t.state}})},this.getOnRetainHooks=function(){return o._buildNodeHooks("onRetain","retained",r(),function(t){return{$state$:t.state}})},this.getOnEnterHooks=function(){return o._buildNodeHooks("onEnter","entering",r(),function(t){return{$state$:t.state}})},this.getOnFinishHooks=function(){return o._buildNodeHooks("onFinish","to",r(),function(t){return{$treeChanges$:o.treeChanges}})},this.getOnSuccessHooks=function(){return o._buildNodeHooks("onSuccess","to",r(),void 0,{async:!1,rejectIfSuperseded:!1})},this.getOnErrorHooks=function(){return o._buildNodeHooks("onError","to",r(),void 0,{async:!1,rejectIfSuperseded:!1})},this.treeChanges=e.treeChanges(),this.toState=i.tail(this.treeChanges.to).state,this.fromState=i.tail(this.treeChanges.from).state,this.transitionOptions=e.options()}return t.prototype.asyncHooks=function(){var t=this.getOnStartHooks(),e=this.getOnExitHooks(),n=this.getOnRetainHooks(),r=this.getOnEnterHooks(),o=this.getOnFinishHooks(),a=[t,e,n,r,o];return a.reduce(i.unnestR,[]).filter(i.identity)},t.prototype._buildNodeHooks=function(t,e,n,r,o){var s=this;void 0===r&&(r=function(t){return{}});var u=this._matchingHooks(t,this.treeChanges);if(!u)return[];var c=function(n){var u=n.matches(s.treeChanges),c=u[e];return c.map(function(e){var u=i.extend({bind:n.bind,traceData:{hookType:t,context:e}},s.baseHookOptions,o),c=new a.TransitionHook(n.callback,r(e),e.resolveContext,u);return{hook:n,node:e,transitionHook:c}})};return u.map(c).reduce(i.unnestR,[]).sort(n).map(function(t){return t.transitionHook})},t.prototype._matchingHooks=function(t,e){return[this.transition,this.$transitions].map(function(e){return e.getHooks(t)}).filter(i.assertPredicate(o.isArray,"broken event named: "+t)).reduce(i.unnestR,[]).filter(function(t){return t.matches(e)})},t}();e.HookBuilder=s},function(t,e,n){"use strict";function r(t,e){function n(t){for(var e=r,n=0;n<e.length;n++){var i=s.Glob.fromString(e[n]);if(i&&i.matches(t.name)||!i&&e[n]===t.name)return!0}return!1}var r=a.isString(e)?[e]:e,i=a.isFunction(r)?r:n;return!!i(t)}function i(t,e){return function(n,r,i){void 0===i&&(i={});var a=new u(n,r,i);return t[e].push(a),function(){o.removeFrom(t[e])(a)}}}var o=n(3),a=n(4),s=n(7);e.matchState=r;var u=function(){function t(t,e,n){void 0===n&&(n={}),this.callback=e,this.matchCriteria=o.extend({to:!0,from:!0,exiting:!0,retained:!0,entering:!0},t),this.priority=n.priority||0,this.bind=n.bind||null}return t._matchingNodes=function(t,e){if(e===!0)return t;var n=t.filter(function(t){return r(t.state,e)});return n.length?n:null},t.prototype.matches=function(e){var n=this.matchCriteria,r=t._matchingNodes,i={to:r([o.tail(e.to)],n.to),from:r([o.tail(e.from)],n.from),exiting:r(e.exiting,n.exiting),retained:r(e.retained,n.retained),entering:r(e.entering,n.entering)},a=["to","from","exiting","retained","entering"].map(function(t){return i[t]}).reduce(o.allTrueR,!0);return a?i:null},t}();e.EventHook=u;var c=function(){function t(){var t=this;this._transitionEvents={onBefore:[],onStart:[],onEnter:[],onRetain:[],onExit:[],onFinish:[],onSuccess:[],onError:[]},this.getHooks=function(e){return t._transitionEvents[e]},this.onBefore=i(this._transitionEvents,"onBefore"),this.onStart=i(this._transitionEvents,"onStart"),this.onEnter=i(this._transitionEvents,"onEnter"),this.onRetain=i(this._transitionEvents,"onRetain"),this.onExit=i(this._transitionEvents,"onExit"),this.onFinish=i(this._transitionEvents,"onFinish"),this.onSuccess=i(this._transitionEvents,"onSuccess"),this.onError=i(this._transitionEvents,"onError")}return t.mixin=function(t,e){Object.keys(t._transitionEvents).concat(["getHooks"]).forEach(function(n){return e[n]=t[n]})},t}();e.HookRegistry=c},function(t,e,n){"use strict";var r=n(3),i=n(9),o=n(4),a=n(5),s=n(12),u=n(6),c=n(10),l=n(17),f={async:!0,rejectIfSuperseded:!0,current:r.noop,transition:null,traceData:{},bind:null},p=function(){function t(t,e,n,i){var o=this;this.fn=t,this.locals=e,this.resolveContext=n,this.options=i,this.isSuperseded=function(){return o.options.current()!==o.options.transition},this.options=r.defaults(i,f)}return t.prototype.invokeHook=function(t){var e=this,n=this,i=n.options,o=n.fn,a=n.resolveContext,u=r.extend({},this.locals,t);if(s.trace.traceHookInvocation(this,i),i.rejectIfSuperseded&&this.isSuperseded())return c.Rejection.superseded(i.current()).toPromise();if(!i.async){var l=a.invokeNow(o,u,i);return this.handleHookResult(l)}return a.invokeLater(o,u,i).then(function(t){return e.handleHookResult(t)})},t.prototype.handleHookResult=function(t){var e=this;if(o.isDefined(t)){var n=a.pattern([[this.isSuperseded,function(){return c.Rejection.superseded(e.options.current()).toPromise()}],[a.eq(!1),function(){return c.Rejection.aborted("Hook aborted transition").toPromise()}],[a.is(l.TargetState),function(t){return c.Rejection.redirected(t).toPromise()}],[o.isPromise,function(t){return t.then(e.handleHookResult.bind(e))}]]),r=n(t);return r&&s.trace.traceHookResult(t,r,this.options),r}},t.prototype.toString=function(){var t=this,e=t.options,n=t.fn,r=a.parse("traceData.hookType")(e)||"internal",o=a.parse("traceData.context.state.name")(e)||a.parse("traceData.context")(e)||"unknown",s=i.fnToString(n);return r+" context: "+o+", "+i.maxLength(200,s)},t.runSynchronousHooks=function(t,e,n){void 0===e&&(e={}),void 0===n&&(n=!1);for(var r=[],i=0;i<t.length;i++)try{r.push(t[i].invokeHook(e))}catch(s){if(!n)return c.Rejection.aborted(s).toPromise();console.error("Swallowed exception during synchronous hook handler: "+s)}var l=r.filter(c.Rejection.isTransitionRejectionPromise);return l.length?l[0]:r.filter(o.isPromise).reduce(function(t,e){return t.then(a.val(e))},u.services.$q.when())},t}();e.TransitionHook=p},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(18)),r(n(19)),r(n(26)),r(n(33)),r(n(34)),r(n(35)),r(n(36)),r(n(37)),r(n(27))},function(t,e,n){"use strict";var r=n(4),i=n(3),o=function(){function t(e){this.stateRegistry=e,this.invalidCallbacks=[],i.bindFunctions(t.prototype,this,this)}return t.prototype.decorator=function(t,e){return this.stateRegistry.decorator(t,e)||this},t.prototype.state=function(t,e){return r.isObject(t)?e=t:e.name=t,this.stateRegistry.register(e),this},t.prototype.onInvalid=function(t){this.invalidCallbacks.push(t)},t}();e.StateProvider=o},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(5),a=n(20),s=function(t){if(!i.isString(t))return!1;var e="^"===t.charAt(0);return{val:e?t.substring(1):t,root:e}},u=function(){function t(t,e){this.matcher=t;var n=this,i=function(t){return""===t.name},u=function(){return t.find("")};this.builders={self:[function(t){return t.self.$$state=function(){return t},t.self}],parent:[function(e){return i(e)?null:t.find(n.parentName(e))||u()}],data:[function(t){return t.parent&&t.parent.data&&(t.data=t.self.data=r.inherit(t.parent.data,t.data)),t.data}],url:[function(t){var n=t,i=s(n.url),o=t.parent,a=i?e.compile(i.val,{params:t.params||{},paramMap:function(t,e){return n.reloadOnSearch===!1&&e&&(t=r.extend(t||{},{dynamic:!0})),t}}):n.url;if(!a)return null;if(!e.isMatcher(a))throw new Error("Invalid url '"+a+"' in state '"+t+"'");return i&&i.root?a:(o&&o.navigable||u()).url.append(a)}],navigable:[function(t){return!i(t)&&t.url?t:t.parent?t.parent.navigable:null}],params:[function(t){var e=function(t,e){return a.Param.fromConfig(e,null,t)},n=t.url&&t.url.parameters({inherit:!1})||[],i=r.values(r.map(r.omit(t.params||{},n.map(o.prop("id"))),e));return n.concat(i).map(function(t){return[t.id,t]}).reduce(r.applyPairs,{})}],views:[],path:[function(t){return t.parent?t.parent.path.concat(t):[t]}],includes:[function(t){var e=t.parent?r.extend({},t.parent.includes):{};return e[t.name]=!0,e}]}}return t.prototype.builder=function(t,e){var n=this.builders,r=n[t]||[];return i.isString(t)&&!i.isDefined(e)?r.length>1?r:r[0]:i.isString(t)&&i.isFunction(e)?(n[t]=r,n[t].push(e),function(){return n[t].splice(n[t].indexOf(e,1))&&null}):void 0},t.prototype.build=function(t){var e=this,n=e.matcher,i=e.builders,o=this.parentName(t);if(o&&!n.find(o))return null;for(var a in i)if(i.hasOwnProperty(a)){var s=i[a].reduce(function(t,e){return function(n){return e(n,t)}},r.noop);t[a]=s(t)}return t},t.prototype.parentName=function(t){var e=t.name||"";return-1!==e.indexOf(".")?e.substring(0,e.lastIndexOf(".")):t.parent?i.isString(t.parent)?t.parent:t.parent.name:""},t.prototype.name=function(t){var e=t.name;if(-1!==e.indexOf(".")||!t.parent)return e;var n=i.isString(t.parent)?t.parent:t.parent.name;return n?n+"."+e:e},t}();e.StateBuilder=u},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(21)),r(n(24)),r(n(25)),r(n(23))},function(t,e,n){
1776 1776 "use strict";function r(t){return t=d(t)&&{value:t}||t,s.extend(t,{$$fn:c.isInjectable(t.value)?t.value:function(){return t.value}})}function i(t,e,n,r){if(t.type&&e&&"string"!==e.name)throw new Error("Param '"+r+"' has two type configurations.");return t.type&&e&&"string"===e.name&&h.paramTypes.type(t.type)?h.paramTypes.type(t.type):e?e:t.type?t.type instanceof p.Type?t.type:h.paramTypes.type(t.type):n===m.CONFIG?h.paramTypes.type("any"):h.paramTypes.type("string")}function o(t,e){var n=t.squash;if(!e||n===!1)return!1;if(!c.isDefined(n)||null==n)return f.matcherConfig.defaultSquashPolicy();if(n===!0||c.isString(n))return n;throw new Error("Invalid squash policy: '"+n+"'. Valid policies: false, true, or arbitrary string")}function a(t,e,n,r){var i,o,a=[{from:"",to:n||e?void 0:""},{from:null,to:n||e?void 0:""}];return i=c.isArray(t.replace)?t.replace:[],c.isString(r)&&i.push({from:r,to:void 0}),o=s.map(i,u.prop("from")),s.filter(a,function(t){return-1===o.indexOf(t.from)}).concat(i)}var s=n(3),u=n(5),c=n(4),l=n(6),f=n(22),p=n(23),h=n(24),v=Object.prototype.hasOwnProperty,d=function(t){return 0===["value","type","squash","array","dynamic"].filter(v.bind(t||{})).length};!function(t){t[t.PATH=0]="PATH",t[t.SEARCH=1]="SEARCH",t[t.CONFIG=2]="CONFIG"}(e.DefType||(e.DefType={}));var m=e.DefType,g=function(){function t(t,e,n,u){function c(){var e={array:u===m.SEARCH?"auto":!1},r=t.match(/\[\]$/)?{array:!0}:{};return s.extend(e,r,n).array}n=r(n),e=i(n,e,u,t);var l=c();e=l?e.$asArray(l,u===m.SEARCH):e;var f=void 0!==n.value,p=n.dynamic===!0,h=o(n,f),v=a(n,l,f,h);s.extend(this,{id:t,type:e,location:u,squash:h,replace:v,isOptional:f,dynamic:p,config:n,array:l})}return t.prototype.isDefaultValue=function(t){return this.isOptional&&this.type.equals(this.value(),t)},t.prototype.value=function(t){var e=this,n=function(){if(!l.services.$injector)throw new Error("Injectable functions cannot be called at configuration time");var t=l.services.$injector.invoke(e.config.$$fn);if(null!==t&&void 0!==t&&!e.type.is(t))throw new Error("Default value ("+t+") for parameter '"+e.id+"' is not an instance of Type ("+e.type.name+")");return t},r=function(t){var n=s.map(s.filter(e.replace,u.propEq("from",t)),u.prop("to"));return n.length?n[0]:t};return t=r(t),c.isDefined(t)?this.type.$normalize(t):n()},t.prototype.isSearch=function(){return this.location===m.SEARCH},t.prototype.validates=function(t){if((!c.isDefined(t)||null===t)&&this.isOptional)return!0;var e=this.type.$normalize(t);if(!this.type.is(e))return!1;var n=this.type.encode(e);return!(c.isString(n)&&!this.type.pattern.exec(n))},t.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},t.fromConfig=function(e,n,r){return new t(e,n,r,m.CONFIG)},t.fromPath=function(e,n,r){return new t(e,n,r,m.PATH)},t.fromSearch=function(e,n,r){return new t(e,n,r,m.SEARCH)},t.values=function(t,e){return void 0===e&&(e={}),t.map(function(t){return[t.id,t.value(e[t.id])]}).reduce(s.applyPairs,{})},t.changed=function(t,e,n){return void 0===e&&(e={}),void 0===n&&(n={}),t.filter(function(t){return!t.type.equals(e[t.id],n[t.id])})},t.equals=function(e,n,r){return void 0===n&&(n={}),void 0===r&&(r={}),0===t.changed(e,n,r).length},t.validates=function(t,e){return void 0===e&&(e={}),t.map(function(t){return t.validates(e[t.id])}).reduce(s.allTrueR,!0)},t}();e.Param=g},function(t,e,n){"use strict";var r=n(4),i=function(){function t(){this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1}return t.prototype.caseInsensitive=function(t){return this._isCaseInsensitive=r.isDefined(t)?t:this._isCaseInsensitive},t.prototype.strictMode=function(t){return this._isStrictMode=r.isDefined(t)?t:this._isStrictMode},t.prototype.defaultSquashPolicy=function(t){if(r.isDefined(t)&&t!==!0&&t!==!1&&!r.isString(t))throw new Error("Invalid squash policy: "+t+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=r.isDefined(t)?t:this._defaultSquashPolicy},t}();e.MatcherConfig=i,e.matcherConfig=new i},function(t,e,n){"use strict";function r(t,e){function n(t){return o.isArray(t)?t:o.isDefined(t)?[t]:[]}function r(t){switch(t.length){case 0:return;case 1:return"auto"===e?t[0]:t;default:return t}}function a(t,e){return function(a){if(o.isArray(a)&&0===a.length)return a;var s=n(a),u=i.map(s,t);return e===!0?0===i.filter(u,function(t){return!t}).length:r(u)}}function s(t){return function(e,r){var i=n(e),o=n(r);if(i.length!==o.length)return!1;for(var a=0;a<i.length;a++)if(!t(i[a],o[a]))return!1;return!0}}var u=this;["encode","decode","equals","$normalize"].map(function(e){u[e]=("equals"===e?s:a)(t[e].bind(t))}),i.extend(this,{name:t.name,pattern:t.pattern,is:a(t.is.bind(t),!0),$arrayMode:e})}var i=n(3),o=n(4),a=function(){function t(t){this.pattern=/.*/,i.extend(this,t)}return t.prototype.is=function(t,e){return!0},t.prototype.encode=function(t,e){return t},t.prototype.decode=function(t,e){return t},t.prototype.equals=function(t,e){return t==e},t.prototype.$subPattern=function(){var t=this.pattern.toString();return t.substr(1,t.length-2)},t.prototype.toString=function(){return"{Type:"+this.name+"}"},t.prototype.$normalize=function(t){return this.is(t)?t:this.decode(t)},t.prototype.$asArray=function(t,e){if(!t)return this;if("auto"===t&&!e)throw new Error("'auto' array mode is for query parameters only");return new r(this,t)},t}();e.Type=a},function(t,e,n){"use strict";function r(t){return null!=t?t.toString().replace(/~/g,"~~").replace(/\//g,"~2F"):t}function i(t){return null!=t?t.toString().replace(/~2F/g,"/").replace(/~~/g,"~"):t}var o=n(3),a=n(4),s=n(5),u=n(6),c=n(23),l=function(){function t(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes={hash:{encode:r,decode:i,is:s.is(String),pattern:/.*/,equals:function(t,e){return t==e}},string:{encode:r,decode:i,is:s.is(String),pattern:/[^\/]*/},"int":{encode:r,decode:function(t){return parseInt(t,10)},is:function(t){return a.isDefined(t)&&this.decode(t.toString())===t},pattern:/-?\d+/},bool:{encode:function(t){return t&&1||0},decode:function(t){return 0!==parseInt(t,10)},is:s.is(Boolean),pattern:/0|1/},date:{encode:function(t){return this.is(t)?[t.getFullYear(),("0"+(t.getMonth()+1)).slice(-2),("0"+t.getDate()).slice(-2)].join("-"):void 0},decode:function(t){if(this.is(t))return t;var e=this.capture.exec(t);return e?new Date(e[1],e[2]-1,e[3]):void 0},is:function(t){return t instanceof Date&&!isNaN(t.valueOf())},equals:function(t,e){return["getFullYear","getMonth","getDate"].reduce(function(n,r){return n&&t[r]()===e[r]()},!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/},json:{encode:o.toJson,decode:o.fromJson,is:s.is(Object),equals:o.equals,pattern:/[^\/]*/},any:{encode:o.identity,decode:o.identity,equals:o.equals,pattern:/.*/}};var t=function(t,e){return new c.Type(o.extend({name:e},t))};this.types=o.inherit(o.map(this.defaultTypes,t),{})}return t.prototype.type=function(t,e,n){if(!a.isDefined(e))return this.types[t];if(this.types.hasOwnProperty(t))throw new Error("A type named '"+t+"' has already been defined.");return this.types[t]=new c.Type(o.extend({name:t},e)),n&&(this.typeQueue.push({name:t,def:n}),this.enqueue||this._flushTypeQueue()),this},t.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var t=this.typeQueue.shift();if(t.pattern)throw new Error("You cannot override a type's .pattern at runtime.");o.extend(this.types[t.name],u.services.$injector.invoke(t.def))}},t}();e.ParamTypes=l,e.paramTypes=new l},function(t,e,n){"use strict";var r=n(3),i=function(){function t(t){void 0===t&&(t={}),r.extend(this,t)}return t.prototype.$inherit=function(t,e,n){var i,o=r.ancestors(e,n),a={},s=[];for(var u in o)if(o[u]&&o[u].params&&(i=Object.keys(o[u].params),i.length))for(var c in i)s.indexOf(i[c])>=0||(s.push(i[c]),a[i[c]]=this[i[c]]);return r.extend({},a,t)},t}();e.StateParams=i},function(t,e,n){"use strict";var r=n(10),i=n(27),o=n(28),a=n(29),s=n(30),u=n(6),c=function(){function t(t,e,n,r,i,c){this.transition=t,this.$transitions=e,this.$urlRouter=n,this.$view=r,this.$state=i,this.globals=c,this.$q=u.services.$q,this.viewHooks=new o.ViewHooks(t,r),this.enterExitHooks=new a.EnterExitHooks(t),this.resolveHooks=new s.ResolveHooks(t),this.treeChanges=t.treeChanges(),this.registerUpdateGlobalState(),this.viewHooks.registerHooks(),this.enterExitHooks.registerHooks(),this.resolveHooks.registerHooks()}return t.prototype.runTransition=function(){var t=this;return this.globals.transitionHistory.enqueue(this.transition),this.transition.run().then(function(t){return t.to()})["catch"](function(e){return t.transRejected(e)})},t.prototype.registerUpdateGlobalState=function(){this.transition.onSuccess({},this.updateUrl.bind(this),{priority:9999})},t.prototype.transRejected=function(t){var e=this,n=e.transition,o=e.$state,a=e.$q;if(t instanceof r.Rejection){if(t.type===r.RejectType.IGNORED)return this.$urlRouter.update(),o.current;if(t.type===r.RejectType.SUPERSEDED&&t.redirected&&t.detail instanceof i.TargetState)return this._redirectMgr(n.redirect(t.detail)).runTransition();t.type===r.RejectType.ABORTED&&this.$urlRouter.update()}return this.$transitions.defaultErrorHandler()(t),a.reject(t)},t.prototype.updateUrl=function(){var t=this.transition,e=this,n=e.$urlRouter,r=e.$state,i=t.options();i.location&&r.$current.navigable&&n.push(r.$current.navigable.url,r.params,{replace:"replace"===i.location}),n.update(!0)},t.prototype._redirectMgr=function(e){var n=this,r=n.$transitions,i=n.$urlRouter,o=n.$view,a=n.$state,s=n.globals;return new t(e,r,i,o,a,s)},t}();e.TransitionManager=c},function(t,e){"use strict";var n=function(){function t(t,e,n,r){void 0===n&&(n={}),void 0===r&&(r={}),this._identifier=t,this._definition=e,this._options=r,this._params=n||{}}return t.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},t.prototype.identifier=function(){return this._identifier},t.prototype.params=function(){return this._params},t.prototype.$state=function(){return this._definition},t.prototype.state=function(){return this._definition&&this._definition.self},t.prototype.options=function(){return this._options},t.prototype.exists=function(){return!(!this._definition||!this._definition.self)},t.prototype.valid=function(){return!this.error()},t.prototype.error=function(){var t=this.options().relative;if(!this._definition&&t){var e=t.name?t.name:t;return"Could not resolve '"+this.name()+"' from state '"+e+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},t}();e.TargetState=n},function(t,e,n){"use strict";var r=n(3),i=n(6),o=function(){function t(t,e){this.transition=t,this.$view=e,this.treeChanges=t.treeChanges(),this.enteringViews=t.views("entering"),this.exitingViews=t.views("exiting")}return t.prototype.loadAllEnteringViews=function(){return i.services.$q.all(this.enteringViews.map(function(t){return t.load()})).then(r.noop)},t.prototype.updateViews=function(){var t=this.$view;this.exitingViews.forEach(function(e){return t.deactivateViewConfig(e)}),this.enteringViews.forEach(function(e){return t.activateViewConfig(e)}),t.sync()},t.prototype.registerHooks=function(){this.enteringViews.length&&this.transition.onStart({},this.loadAllEnteringViews.bind(this)),(this.exitingViews.length||this.enteringViews.length)&&this.transition.onSuccess({},this.updateViews.bind(this))},t}();e.ViewHooks=o},function(t,e){"use strict";var n=function(){function t(t){this.transition=t}return t.prototype.registerHooks=function(){this.registerOnEnterHooks(),this.registerOnRetainHooks(),this.registerOnExitHooks()},t.prototype.registerOnEnterHooks=function(){var t=this;this.transition.entering().filter(function(t){return!!t.onEnter}).forEach(function(e){return t.transition.onEnter({entering:e.name},e.onEnter)})},t.prototype.registerOnRetainHooks=function(){var t=this;this.transition.retained().filter(function(t){return!!t.onRetain}).forEach(function(e){return t.transition.onRetain({retained:e.name},e.onRetain)})},t.prototype.registerOnExitHooks=function(){var t=this;this.transition.exiting().filter(function(t){return!!t.onExit}).forEach(function(e){return t.transition.onExit({exiting:e.name},e.onExit)})},t}();e.EnterExitHooks=n},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(31),a=n(5),s=n(32),u=o.ResolvePolicy[o.ResolvePolicy.LAZY],c=o.ResolvePolicy[o.ResolvePolicy.EAGER],l=function(){function t(t){this.transition=t}return t.prototype.registerHooks=function(){function t(t){return r.tail(n.to).resolveContext.resolvePath(r.extend({transition:t},{resolvePolicy:c}))}function e(t,e){var o=r.find(n.entering,i.propEq("state",t)),a=o.resolveContext,c=new s.Resolvable("$resolve$",function(){return r.map(a.getResolvables(),function(t){return t.data})}),l=r.extend({transition:e},{resolvePolicy:u});return a.resolvePathElement(o.state,l).then(function(){return c.resolveResolvable(a)}).then(function(){return a.addResolvables({$resolve$:c},o.state)})}var n=this.transition.treeChanges();t.$inject=["$transition$"],e.$inject=["$state$","$transition$"],this.transition.onStart({},t,{priority:1e3}),this.transition.onEnter({entering:a.val(!0)},e,{priority:1e3})},t}();e.ResolveHooks=l},function(t,e){"use strict";!function(t){t[t.JIT=0]="JIT",t[t.LAZY=1]="LAZY",t[t.EAGER=2]="EAGER"}(e.ResolvePolicy||(e.ResolvePolicy={}));e.ResolvePolicy},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(4),a=n(6),s=n(12),u=function(){function t(t,e,n){this.promise=void 0,r.extend(this,{name:t,resolveFn:e,deps:a.services.$injector.annotate(e,a.services.$injector.strictDi),data:n})}return t.prototype.resolveResolvable=function(t,e){var n=this;void 0===e&&(e={});var i=this,o=i.name,u=i.deps,c=i.resolveFn;s.trace.traceResolveResolvable(this,e);var l=a.services.$q.defer();this.promise=l.promise;var f=t.getResolvables(null,{omitOwnLocals:[o]}),p=r.pick(f,u),h=r.map(p,function(n){return n.get(t,e)});return a.services.$q.all(h).then(function(t){try{var e=a.services.$injector.invoke(c,null,t);l.resolve(e)}catch(r){l.reject(r)}return n.promise}).then(function(t){return n.data=t,s.trace.traceResolvableResolved(n,e),n.promise})},t.prototype.get=function(t,e){return this.promise||this.resolveResolvable(t,e)},t.prototype.toString=function(){return"Resolvable(name: "+this.name+", requires: ["+this.deps+"])"},t.makeResolvables=function(e){var n=r.filter(e,i.not(o.isInjectable)),a=Object.keys(n);if(a.length)throw new Error("Invalid resolve key/value: "+a[0]+"/"+n[a[0]]);return r.map(e,function(e,n){return new t(n,e)})},t}();e.Resolvable=u},function(t,e,n){"use strict";var r=n(3),i=n(5),o=function(){function t(t){r.extend(this,t)}return t.prototype.is=function(t){return this===t||this.self===t||this.fqn()===t},t.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var t=this.parent.fqn();return t?t+"."+this.name:this.name},t.prototype.root=function(){return this.parent&&this.parent.root()||this},t.prototype.parameters=function(t){t=r.defaults(t,{inherit:!0});var e=t.inherit&&this.parent&&this.parent.parameters()||[];return e.concat(r.values(this.params))},t.prototype.parameter=function(t,e){return void 0===e&&(e={}),this.url&&this.url.parameter(t,e)||r.find(r.values(this.params),i.propEq("id",t))||e.inherit&&this.parent&&this.parent.parameter(t)},t.prototype.toString=function(){return this.fqn()},t}();e.State=o},function(t,e,n){"use strict";var r=n(4),i=function(){function t(t){this._states=t}return t.prototype.isRelative=function(t){return t=t||"",0===t.indexOf(".")||0===t.indexOf("^")},t.prototype.find=function(t,e){if(t||""===t){var n=r.isString(t),i=n?t:t.name;this.isRelative(i)&&(i=this.resolvePath(i,e));var o=this._states[i];return!o||!n&&(n||o!==t&&o.self!==t)?void 0:o}},t.prototype.resolvePath=function(t,e){if(!e)throw new Error("No reference point given for path '"+t+"'");for(var n=this.find(e),r=t.split("."),i=0,o=r.length,a=n;o>i;i++)if(""!==r[i]||0!==i){if("^"!==r[i])break;if(!a.parent)throw new Error("Path '"+t+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var s=r.slice(i).join(".");return a.name+(a.name&&s?".":"")+s},t}();e.StateMatcher=i},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(17),a=function(){function t(t,e,n){this.states=t,this.builder=e,this.$urlRouterProvider=n,this.queue=[]}return t.prototype.register=function(t){var e=this,n=e.states,a=e.queue,s=e.$state,u=r.inherit(new o.State,r.extend({},t,{self:t,resolve:t.resolve||{},toString:function(){return t.name}}));if(!i.isString(u.name))throw new Error("State must have a valid name");if(n.hasOwnProperty(u.name)||-1!==r.pluck(a,"name").indexOf(u.name))throw new Error("State '"+u.name+"' is already defined");return a.push(u),this.$state&&this.flush(s),u},t.prototype.flush=function(t){for(var e,n,r,i=this,o=i.queue,a=i.states,s=i.builder,u=[],c={};o.length>0;)if(n=o.shift(),e=s.build(n),r=u.indexOf(n),e){if(a.hasOwnProperty(n.name))throw new Error("State '"+name+"' is already defined");a[n.name]=n,this.attachRoute(t,n),r>=0&&u.splice(r,1)}else{var l=c[n.name];if(c[n.name]=o.length,r>=0&&l===o.length)return a;0>r&&u.push(n),o.push(n)}return a},t.prototype.autoFlush=function(t){this.$state=t,this.flush(t)},t.prototype.attachRoute=function(t,e){var n=this.$urlRouterProvider;!e[r.abstractKey]&&e.url&&n.when(e.url,["$match","$stateParams",function(n,i){t.$current.navigable===e&&r.equalForKeys(n,i)||t.transitionTo(e,n,{inherit:!0,location:!1})}])},t}();e.StateQueueManager=a},function(t,e,n){"use strict";var r=n(34),i=n(19),o=n(35),a=function(){function t(t,e){this.states={},this.matcher=new r.StateMatcher(this.states),this.builder=new i.StateBuilder(this.matcher,t),this.stateQueue=new o.StateQueueManager(this.states,this.builder,e);var n={name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},"abstract":!0},a=this._root=this.stateQueue.register(n);a.navigable=null}return t.prototype.root=function(){return this._root},t.prototype.register=function(t){return this.stateQueue.register(t)},t.prototype.get=function(t,e){var n=this;if(0===arguments.length)return Object.keys(this.states).map(function(t){return n.states[t].self});var r=this.matcher.find(t,e);return r&&r.self||null},t.prototype.decorator=function(t,e){return this.builder.builder(t,e)},t}();e.StateRegistry=a},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(8),a=n(6),s=n(38),u=n(39),c=n(43),l=n(10),f=n(27),p=n(26),h=n(21),v=n(7),d=n(3),m=n(3),g=function(){function t(e,n,r,i,o,a){this.$view=e,this.$urlRouter=n,this.$transitions=r,this.stateRegistry=i,this.stateProvider=o,this.globals=a;var s=["current","$current","params","transition"],u=Object.keys(t.prototype).filter(function(t){return-1===s.indexOf(t)});m.bindFunctions(t.prototype,this,this,u)}return Object.defineProperty(t.prototype,"transition",{get:function(){return this.globals.transition},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"params",{get:function(){return this.globals.params},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"current",{get:function(){return this.globals.current},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"$current",{get:function(){return this.globals.$current},enumerable:!0,configurable:!0}),t.prototype._handleInvalidTargetState=function(t,e){function n(){var t=p.dequeue();return void 0===t?l.Rejection.invalid(e.error()).toPromise():d(t).then(m).then(function(t){return t||n()})}var r=this,i=function(){return r.globals.transitionHistory.peekTail()},u=i(),c=s.PathFactory.makeTargetState(t),p=new o.Queue([].concat(this.stateProvider.invalidCallbacks)),h=a.services.$q,v=a.services.$injector,d=function(t){return h.when(v.invoke(t,null,{$to$:e,$from$:c}))},m=function(t){if(t instanceof f.TargetState){var e=t;return e=r.target(e.identifier(),e.params(),e.options()),e.valid()?i()!==u?l.Rejection.superseded().toPromise():r.transitionTo(e.identifier(),e.params(),e.options()):l.Rejection.invalid(e.error()).toPromise()}};return n()},t.prototype.reload=function(t){return this.transitionTo(this.current,this.params,{reload:i.isDefined(t)?t:!0,inherit:!1,notify:!1})},t.prototype.go=function(t,e,n){var i={relative:this.$current,inherit:!0},o=r.defaults(n,i,c.defaultTransOpts);return this.transitionTo(t,e,o)},t.prototype.target=function(t,e,n){if(void 0===n&&(n={}),i.isObject(n.reload)&&!n.reload.name)throw new Error("Invalid reload state object");if(n.reloadState=n.reload===!0?this.stateRegistry.root():this.stateRegistry.matcher.find(n.reload,n.relative),n.reload&&!n.reloadState)throw new Error("No such reload state '"+(i.isString(n.reload)?n.reload:n.reload.name)+"'");var r=this.stateRegistry.matcher.find(t,n.relative);return new f.TargetState(t,r,e,n)},t.prototype.transitionTo=function(t,e,n){var i=this;void 0===e&&(e={}),void 0===n&&(n={});var o=this.globals.transitionHistory;n=r.defaults(n,c.defaultTransOpts),n=r.extend(n,{current:o.peekTail.bind(o)});var l=this.target(t,e,n),f=this.globals.successfulTransitions.peekTail(),h=function(){return s.PathFactory.bindTransNodesToPath([new u.Node(i.stateRegistry.root())])},v=f?f.treeChanges().to:h();if(!l.exists())return this._handleInvalidTargetState(v,l);if(!l.valid())return a.services.$q.reject(l.error());var d=this.$transitions.create(v,l),m=new p.TransitionManager(d,this.$transitions,this.$urlRouter,this.$view,this,this.globals),g=m.runTransition();return r.extend(g,{transition:d})},t.prototype.is=function(t,e,n){n=r.defaults(n,{relative:this.$current});var o=this.stateRegistry.matcher.find(t,n.relative);if(i.isDefined(o))return this.$current!==o?!1:i.isDefined(e)&&null!==e?h.Param.equals(o.parameters(),this.params,e):!0},t.prototype.includes=function(t,e,n){n=r.defaults(n,{relative:this.$current});var o=i.isString(t)&&v.Glob.fromString(t);if(o){if(!o.matches(this.$current.name))return!1;t=this.$current.name}var a=this.stateRegistry.matcher.find(t,n.relative),s=this.$current.includes;if(i.isDefined(a))return i.isDefined(s[a.name])?e?d.equalForKeys(h.Param.values(a.parameters(),e),this.params,Object.keys(e)):!0:!1},t.prototype.href=function(t,e,n){var o={lossy:!0,inherit:!0,absolute:!1,relative:this.$current};n=r.defaults(n,o);var a=this.stateRegistry.matcher.find(t,n.relative);if(!i.isDefined(a))return null;n.inherit&&(e=this.params.$inherit(e||{},this.$current,a));var s=a&&n.lossy?a.navigable:a;return s&&void 0!==s.url&&null!==s.url?this.$urlRouter.href(s.url,h.Param.values(a.parameters(),e),{absolute:n.absolute}):null},t.prototype.get=function(t,e){return 0===arguments.length?this.stateRegistry.get():this.stateRegistry.get(t,e||this.$current)},t}();e.StateService=g},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(17),a=n(39),s=n(40),u=function(){function t(){}return t.makeTargetState=function(t){var e=r.tail(t).state;return new o.TargetState(e,e,t.map(i.prop("paramValues")).reduce(r.mergeR,{}))},t.buildPath=function(t){var e=t.params();return t.$state().path.map(function(t){return new a.Node(t).applyRawParams(e)})},t.buildToPath=function(e,n){var r=t.buildPath(n);return n.options().inherit?t.inheritParams(e,r,Object.keys(n.params())):r},t.applyViewConfigs=function(t,e){return e.map(function(e){var n=r.values(e.state.views||{}),i=n.map(function(n){return t.createViewConfig(e,n)}).reduce(r.unnestR,[]);return r.extend(e,{views:i})})},t.inheritParams=function(t,e,n){function o(t,e){var n=r.find(t,i.propEq("state",e));return r.extend({},n&&n.paramValues)}void 0===n&&(n=[]);var s=i.curry(function(t,e,n){var i=r.extend({},n&&n.paramValues),s=r.pick(i,e);i=r.omit(i,e);var u=o(t,n.state)||{},c=r.extend(i,u,s);return new a.Node(n.state).applyRawParams(c)});return e.map(s(t,n))},t.bindTransNodesToPath=function(t){var e=new s.ResolveContext(t);return t.forEach(function(t){t.resolveContext=e.isolateRootTo(t.state),t.resolveInjector=new s.ResolveInjector(t.resolveContext,t.state),t.resolves.$stateParams=new s.Resolvable("$stateParams",function(){return t.paramValues},t.paramValues)}),t},t.treeChanges=function(e,n,r){function o(t,e){var r=a.Node.clone(t);return r.paramValues=n[e].paramValues,r}for(var s=0,u=Math.min(e.length,n.length),c=function(t){return t.parameters({inherit:!1}).filter(i.not(i.prop("dynamic"))).map(i.prop("id"))},l=function(t,e){return t.equals(e,c(t.state))};u>s&&e[s].state!==r&&l(e[s],n[s]);)s++;var f,p,h,v,d,m,g,y;return f=e,p=f.slice(0,s),h=f.slice(s),m=p.map(o),g=n.slice(s),y=m.concat(g),d=t.bindTransNodesToPath(y),v=d.slice(s),{from:f,to:d,retained:p,exiting:h,entering:v}},t.bindTransitionResolve=function(t,e){var n=t.to[0];n.resolves.$transition$=new s.Resolvable("$transition$",function(){return e},e)},t.subPath=function(t,e){var n=r.find(t,function(t){return t.state===e}),i=t.indexOf(n);if(-1===i)throw new Error("The path does not contain the state: "+e);return t.slice(0,i+1)},t.paramValues=function(t){return t.reduce(function(t,e){return r.extend(t,e.paramValues)},{})},t}();e.PathFactory=u},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(40),a=function(){function t(e){if(e instanceof t){var n=e;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=r.extend({},n.paramValues),this.resolves=r.extend({},n.resolves),this.views=n.views&&n.views.slice(),this.resolveContext=n.resolveContext,this.resolveInjector=n.resolveInjector}else this.state=e,this.paramSchema=e.parameters({inherit:!1}),this.paramValues={},this.resolves=r.mapObj(e.resolve,function(t,e){return new o.Resolvable(e,t)})}return t.prototype.applyRawParams=function(t){var e=function(e){return[e.id,e.value(t[e.id])]};return this.paramValues=this.paramSchema.reduce(function(t,n){return r.applyPairs(t,e(n))},{}),this},t.prototype.parameter=function(t){return r.find(this.paramSchema,i.propEq("id",t))},t.prototype.equals=function(t,e){var n=this;void 0===e&&(e=this.paramSchema.map(i.prop("id")));var o=function(e){return n.parameter(e).type.equals(n.paramValues[e],t.paramValues[e])};return this.state===t.state&&e.map(o).reduce(r.allTrueR,!0)},t.clone=function(e){return new t(e)},t.matching=function(t,e){var n=t.reduce(function(t,n,r){return t===r&&r<e.length&&n.state===e[r].state?r+1:t},0);return t.slice(0,n)},t}();e.Node=a},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(31)),r(n(32)),r(n(41)),r(n(42))},function(t,e,n){"use strict";function r(t,e){var n=a.isString(t)?t:null,r=a.isObject(t)?t:{},i=r[e.name]||n||p;return c.ResolvePolicy[i]}var i=n(3),o=n(5),a=n(4),s=n(12),u=n(6),c=n(31),l=n(3),f=n(38),p=c.ResolvePolicy[c.ResolvePolicy.LAZY],h=function(){function t(t){this._path=t,i.extend(this,{_nodeFor:function(t){return i.find(this._path,o.propEq("state",t))},_pathTo:function(t){return f.PathFactory.subPath(this._path,t)}})}return t.prototype.getResolvables=function(t,e){e=i.defaults(e,{omitOwnLocals:[]});var n=t?this._pathTo(t):this._path,r=i.tail(n);return n.reduce(function(t,n){var o=n===r?e.omitOwnLocals:[],a=i.omit(n.resolves,o);return i.extend(t,a)},{})},t.prototype.getResolvablesForFn=function(t){var e=u.services.$injector.annotate(t,u.services.$injector.strictDi);return i.pick(this.getResolvables(),e)},t.prototype.isolateRootTo=function(e){return new t(this._pathTo(e))},t.prototype.addResolvables=function(t,e){i.extend(this._nodeFor(e).resolves,t)},t.prototype.getOwnResolvables=function(t){return i.extend({},this._nodeFor(t).resolves)},t.prototype.resolvePath=function(t){var e=this;void 0===t&&(t={}),s.trace.traceResolvePath(this._path,t);var n=function(n){return e.resolvePathElement(n.state,t)};return u.services.$q.all(i.map(this._path,n)).then(function(t){return t.reduce(l.mergeR,{})})},t.prototype.resolvePathElement=function(t,e){var n=this;void 0===e&&(e={});var o=e&&e.resolvePolicy,a=c.ResolvePolicy[o||p],l=this.getOwnResolvables(t),f=function(e){return r(t.resolvePolicy,e)>=a},h=i.filter(l,f),v=function(r){return r.get(n.isolateRootTo(t),e)},d=i.map(h,v);return s.trace.traceResolvePathElement(this,h,e),u.services.$q.all(d)},t.prototype.invokeLater=function(t,e,n){var r=this;void 0===e&&(e={}),void 0===n&&(n={});var o=this.getResolvablesForFn(t);s.trace.tracePathElementInvoke(i.tail(this._path),t,Object.keys(o),i.extend({when:"Later"},n));var a=function(t){return t.get(r,n)},c=i.map(o,a);return u.services.$q.all(c).then(function(){try{return r.invokeNow(t,e,n)}catch(i){return u.services.$q.reject(i)}})},t.prototype.invokeNow=function(t,e,n){void 0===n&&(n={});var r=this.getResolvablesForFn(t);s.trace.tracePathElementInvoke(i.tail(this._path),t,Object.keys(r),i.extend({when:"Now "},n));var a=i.map(r,o.prop("data"));return u.services.$injector.invoke(t,n.bind||null,i.extend({},e,a))},t}();e.ResolveContext=h},function(t,e,n){"use strict";var r=n(3),i=function(){function t(t,e){this._resolveContext=t,this._state=e}return t.prototype.invokeLater=function(t,e){return this._resolveContext.invokeLater(t,e)},t.prototype.invokeNow=function(t,e){return this._resolveContext.invokeNow(null,t,e)},t.prototype.getLocals=function(t){var e=this,n=function(t){return t.get(e._resolveContext)};return r.map(this._resolveContext.getResolvablesForFn(t),n)},t}();e.ResolveInjector=i},function(t,e,n){"use strict";var r=n(11),i=n(15);e.defaultTransOpts={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,custom:{},current:function(){return null}};var o=function(){function t(t){this.$view=t,this._defaultErrorHandler=function(t){t instanceof Error&&console.error(t)},i.HookRegistry.mixin(new i.HookRegistry,this)}return t.prototype.defaultErrorHandler=function(t){return this._defaultErrorHandler=t||this._defaultErrorHandler},t.prototype.create=function(t,e){return new r.Transition(t,e,this)},t}();e.TransitionService=o},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(39)),r(n(38))},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(46)),r(n(22)),r(n(47)),r(n(48))},function(t,e,n){"use strict";function r(t,e){var n=["",""],r=t.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!e)return r;switch(e.squash){case!1:n=["(",")"+(e.isOptional?"?":"")];break;case!0:r=r.replace(/\/$/,""),n=["(?:/(",")|/)?"];break;default:n=["("+e.squash+"|",")?"]}return r+n[0]+e.type.pattern.source+n[1]}var i=n(3),o=n(5),a=n(4),s=n(20),u=n(4),c=n(21),l=n(3),f=n(3),p=function(t,e,n){return t[e]=t[e]||n()},h=function(){function t(e,n){var a=this;this.pattern=e,this.config=n,this._cache={path:[],pattern:null},this._children=[],this._params=[],this._segments=[],this._compiled=[],this.config=i.defaults(this.config,{params:{},strict:!0,caseInsensitive:!1,paramMap:i.identity});for(var u,c,l,f=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,p=/([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,h=0,v=[],d=function(n){if(!t.nameValidator.test(n))throw new Error("Invalid parameter name '"+n+"' in pattern '"+e+"'");if(i.find(a._params,o.propEq("id",n)))throw new Error("Duplicate parameter name '"+n+"' in pattern '"+e+"'")},m=function(t,n){var r=t[2]||t[3],o=n?t[4]:t[4]||("*"===t[1]?".*":null);return{id:r,regexp:o,cfg:a.config.params[r],segment:e.substring(h,t.index),type:o?s.paramTypes.type(o||"string")||i.inherit(s.paramTypes.type("string"),{pattern:new RegExp(o,a.config.caseInsensitive?"i":void 0)}):null}};(u=f.exec(e))&&(c=m(u,!1),!(c.segment.indexOf("?")>=0));)d(c.id),this._params.push(s.Param.fromPath(c.id,c.type,this.config.paramMap(c.cfg,!1))),this._segments.push(c.segment),v.push([c.segment,i.tail(this._params)]),h=f.lastIndex;l=e.substring(h);var g=l.indexOf("?");if(g>=0){var y=l.substring(g);if(l=l.substring(0,g),y.length>0)for(h=0;u=p.exec(y);)c=m(u,!0),d(c.id),this._params.push(s.Param.fromSearch(c.id,c.type,this.config.paramMap(c.cfg,!0))),h=f.lastIndex}this._segments.push(l),i.extend(this,{_compiled:v.map(function(t){return r.apply(null,t)}).concat(r(l)),prefix:this._segments[0]
1777 1777 }),Object.freeze(this)}return t.prototype.append=function(t){return this._children.push(t),i.forEach(t._cache,function(e,n){return t._cache[n]=a.isArray(e)?[]:null}),t._cache.path=this._cache.path.concat(this),t},t.prototype.isRoot=function(){return 0===this._cache.path.length},t.prototype.toString=function(){return this.pattern},t.prototype.exec=function(t,e,n,r){function a(t){var e=function(t){return t.split("").reverse().join("")},n=function(t){return t.replace(/\\-/g,"-")},r=e(t).split(/-(?!\\)/),o=i.map(r,e);return i.map(o,n).reverse()}var s=this;void 0===e&&(e={}),void 0===r&&(r={});var c=p(this._cache,"pattern",function(){return new RegExp(["^",i.unnest(s._cache.path.concat(s).map(o.prop("_compiled"))).join(""),s.config.strict===!1?"/?":"","$"].join(""),s.config.caseInsensitive?"i":void 0)}).exec(t);if(!c)return null;var l=this.parameters(),f=l.filter(function(t){return!t.isSearch()}),h=l.filter(function(t){return t.isSearch()}),v=this._cache.path.concat(this).map(function(t){return t._segments.length-1}).reduce(function(t,e){return t+e}),d={};if(v!==c.length-1)throw new Error("Unbalanced capture group in route '"+this.pattern+"'");for(var m=0;v>m;m++){for(var g=f[m],y=c[m+1],w=0;w<g.replace.length;w++)g.replace[w].from===y&&(y=g.replace[w].to);y&&g.array===!0&&(y=a(y)),u.isDefined(y)&&(y=g.type.decode(y)),d[g.id]=g.value(y)}return i.forEach(h,function(t){for(var n=e[t.id],r=0;r<t.replace.length;r++)t.replace[r].from===n&&(n=t.replace[r].to);u.isDefined(n)&&(n=t.type.decode(n)),d[t.id]=t.value(n)}),n&&(d["#"]=n),d},t.prototype.parameters=function(t){return void 0===t&&(t={}),t.inherit===!1?this._params:i.unnest(this._cache.path.concat(this).map(o.prop("_params")))},t.prototype.parameter=function(t,e){void 0===e&&(e={});var n=i.tail(this._cache.path);return i.find(this._params,o.propEq("id",t))||e.inherit!==!1&&n&&n.parameter(t)||null},t.prototype.validates=function(t){var e=this,n=function(t,e){return!t||t.validates(e)};return i.pairs(t||{}).map(function(t){var r=t[0],i=t[1];return n(e.parameter(r),i)}).reduce(i.allTrueR,!0)},t.prototype.format=function(e){function n(t){var n=t.value(e[t.id]),r=t.isDefaultValue(n),i=r?t.squash:!1,o=t.type.encode(n);return{param:t,value:n,isDefaultValue:r,squash:i,encoded:o}}if(void 0===e&&(e={}),!this.validates(e))return null;var r=this._cache.path.slice().concat(this),o=r.map(t.pathSegmentsAndParams).reduce(l.unnestR,[]),s=r.map(t.queryParams).reduce(l.unnestR,[]),u=o.reduce(function(e,r){if(a.isString(r))return e+r;var o=n(r),s=o.squash,u=o.encoded,c=o.param;return s===!0?e.match(/\/$/)?e.slice(0,-1):e:a.isString(s)?e+s:s!==!1?e:null==u?e:a.isArray(u)?e+i.map(u,t.encodeDashes).join("-"):c.type.raw?e+u:e+encodeURIComponent(u)},""),c=s.map(function(t){var e=n(t),r=e.squash,o=e.encoded,s=e.isDefaultValue;if(!(null==o||s&&r!==!1)&&(a.isArray(o)||(o=[o]),0!==o.length))return t.type.raw||(o=i.map(o,encodeURIComponent)),o.map(function(e){return t.id+"="+e})}).filter(i.identity).reduce(l.unnestR,[]).join("&");return u+(c?"?"+c:"")+(e["#"]?"#"+e["#"]:"")},t.encodeDashes=function(t){return encodeURIComponent(t).replace(/-/g,function(t){return"%5C%"+t.charCodeAt(0).toString(16).toUpperCase()})},t.pathSegmentsAndParams=function(t){var e=t._segments,n=t._params.filter(function(t){return t.location===c.DefType.PATH});return f.arrayTuples(e,n.concat(void 0)).reduce(l.unnestR,[]).filter(function(t){return""!==t&&u.isDefined(t)})},t.queryParams=function(t){return t._params.filter(function(t){return t.location===c.DefType.SEARCH})},t.nameValidator=/^\w+([-.]+\w+)*(?:\[\])?$/,t}();e.UrlMatcher=h},function(t,e,n){"use strict";function r(){return{strict:a.matcherConfig.strictMode(),caseInsensitive:a.matcherConfig.caseInsensitive()}}var i=n(3),o=n(4),a=n(45),s=n(20),u=function(){function t(){i.extend(this,{UrlMatcher:a.UrlMatcher,Param:s.Param})}return t.prototype.caseInsensitive=function(t){return a.matcherConfig.caseInsensitive(t)},t.prototype.strictMode=function(t){return a.matcherConfig.strictMode(t)},t.prototype.defaultSquashPolicy=function(t){return a.matcherConfig.defaultSquashPolicy(t)},t.prototype.compile=function(t,e){return new a.UrlMatcher(t,i.extend(r(),e))},t.prototype.isMatcher=function(t){if(!o.isObject(t))return!1;var e=!0;return i.forEach(a.UrlMatcher.prototype,function(n,r){o.isFunction(n)&&(e=e&&o.isDefined(t[r])&&o.isFunction(t[r]))}),e},t.prototype.type=function(t,e,n){var r=s.paramTypes.type(t,e,n);return o.isDefined(e)?this:r},t.prototype.$get=function(){return s.paramTypes.enqueue=!1,s.paramTypes._flushTypeQueue(),this},t}();e.UrlMatcherFactory=u},function(t,e,n){"use strict";function r(t){var e=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(t.source);return null!=e?e[1].replace(/\\(.)/g,"$1"):""}function i(t,e){return t.replace(/\$(\$|\d{1,2})/,function(t,n){return e["$"===n?0:Number(n)]})}function o(t,e,n,r){if(!r)return!1;var i=t.invoke(n,n,{$match:r,$stateParams:e});return c.isDefined(i)?i:!0}function a(t,e,n){var r=l.services.locationConfig.baseHref();return"/"===r?t:e?r.slice(0,-1)+t:n?r.slice(1)+t:t}function s(t,e,n){function r(t){var e=t(l.services.$injector,f);return e?(c.isString(e)&&(f.replace(),f.url(e)),!0):!1}if(!n||!n.defaultPrevented){var i,o=t.length;for(i=0;o>i;i++)if(r(t[i]))return;e&&r(e)}}var u=n(3),c=n(4),l=n(6),f=l.services.location,p=function(){function t(t,e){this.$urlMatcherFactory=t,this.$stateParams=e,this.rules=[],this.otherwiseFn=null,this.interceptDeferred=!1}return t.prototype.rule=function(t){if(!c.isFunction(t))throw new Error("'rule' must be a function");return this.rules.push(t),this},t.prototype.otherwise=function(t){if(!c.isFunction(t)&&!c.isString(t))throw new Error("'rule' must be a string or function");return this.otherwiseFn=c.isString(t)?function(){return t}:t,this},t.prototype.when=function(t,e){var n,a=this,s=a.$urlMatcherFactory,p=a.$stateParams,h=c.isString(e);if(c.isString(t)&&(t=s.compile(t)),!h&&!c.isFunction(e)&&!c.isArray(e))throw new Error("invalid 'handler' in when()");var v={matcher:function(t,e){return h&&(n=s.compile(e),e=["$match",n.format.bind(n)]),u.extend(function(){return o(l.services.$injector,p,e,t.exec(f.path(),f.search(),f.hash()))},{prefix:c.isString(t.prefix)?t.prefix:""})},regex:function(t,e){if(t.global||t.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(n=e,e=["$match",function(t){return i(n,t)}]),u.extend(function(){return o(l.services.$injector,p,e,t.exec(f.path()))},{prefix:r(t)})}},d={matcher:s.isMatcher(t),regex:t instanceof RegExp};for(var m in d)if(d[m])return this.rule(v[m](t,e));throw new Error("invalid 'what' in when()")},t.prototype.deferIntercept=function(t){void 0===t&&(t=!0),this.interceptDeferred=t},t}();e.UrlRouterProvider=p;var h=function(){function t(e){this.urlRouterProvider=e,u.bindFunctions(t.prototype,this,this)}return t.prototype.sync=function(){s(this.urlRouterProvider.rules,this.urlRouterProvider.otherwiseFn)},t.prototype.listen=function(){var t=this;return this.listener=this.listener||f.onChange(function(e){return s(t.urlRouterProvider.rules,t.urlRouterProvider.otherwiseFn,e)})},t.prototype.update=function(t){return t?void(this.location=f.url()):void(f.url()!==this.location&&(f.url(this.location),f.replace()))},t.prototype.push=function(t,e,n){f.url(t.format(e||{})),n&&n.replace&&f.replace()},t.prototype.href=function(t,e,n){if(!t.validates(e))return null;var r=t.format(e);n=n||{};var i=l.services.locationConfig,o=i.html5Mode();if(o||null===r||(r="#"+i.hashPrefix()+r),r=a(r,o,n.absolute),!n.absolute||!r)return r;var s=!o&&r?"/":"",u=i.port();return u=80===u||443===u?"":":"+u,[i.protocol(),"://",i.host(),u,s,r].join("")},t}();e.UrlRouter=h},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(50))},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(4),a=n(2),s=function(){function t(){var t=this;this.uiViews=[],this.viewConfigs=[],this._viewConfigFactories={},this.sync=function(){function e(t){return t.fqn.split(".").length}function n(t){for(var e=t.viewDecl.$context,n=0;++n&&e.parent;)e=e.parent;return n}var o=t.uiViews.map(function(t){return[t.fqn,t]}).reduce(r.applyPairs,{}),a=function(t){return function(e){if(t.$type!==e.viewDecl.$type)return!1;var n=e.viewDecl,i=n.$uiViewName.split("."),a=t.fqn.split(".");if(!r.equals(i,a.slice(0-i.length)))return!1;var s=1-i.length||void 0,u=a.slice(0,s).join("."),c=o[u].creationContext;return n.$uiViewContextAnchor===(c&&c.name)}},s=i.curry(function(t,e,n,r){return e*(t(n)-t(r))}),u=function(e){var r=t.viewConfigs.filter(a(e));return r.length>1&&r.sort(s(n,-1)),[e,r[0]]},c=function(e){var n=e[0],r=e[1];-1!==t.uiViews.indexOf(n)&&n.configUpdated(r)};t.uiViews.sort(s(e,1)).map(u).forEach(c)}}return t.prototype.rootContext=function(t){return this._rootContext=t||this._rootContext},t.prototype.viewConfigFactory=function(t,e){this._viewConfigFactories[t]=e},t.prototype.createViewConfig=function(t,e){var n=this._viewConfigFactories[e.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+e.$type);var r=n(t,e);return o.isArray(r)?r:[r]},t.prototype.deactivateViewConfig=function(t){a.trace.traceViewServiceEvent("<- Removing",t),r.removeFrom(this.viewConfigs,t)},t.prototype.activateViewConfig=function(t){a.trace.traceViewServiceEvent("-> Registering",t),this.viewConfigs.push(t)},t.prototype.registerUiView=function(t){a.trace.traceViewServiceUiViewEvent("-> Registering",t);var e=this.uiViews,n=function(e){return e.fqn===t.fqn};return e.filter(n).length&&a.trace.traceViewServiceUiViewEvent("!!!! duplicate uiView named:",t),e.push(t),this.sync(),function(){var n=e.indexOf(t);return 0>=n?void a.trace.traceViewServiceUiViewEvent("Tried removing non-registered uiView",t):(a.trace.traceViewServiceUiViewEvent("<- Deregistering",t),void r.removeFrom(e)(t))}},t.prototype.available=function(){return this.uiViews.map(i.prop("fqn"))},t.prototype.active=function(){return this.uiViews.filter(i.prop("$config")).map(i.prop("name"))},t.normalizeUiViewTarget=function(t,e){void 0===e&&(e="");var n=e.split("@"),r=n[0]||"$default",i=o.isString(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(r);a&&(i=a[1],r=a[2]),"!"===r.charAt(0)&&(r=r.substr(1),i="");var s=/^(\^(?:\.\^)*)$/;if(s.exec(i)){var u=i.split(".").reduce(function(t,e){return t.parent},t);i=u.name}return{uiViewName:r,uiViewContextAnchor:i}},t}();e.ViewService=s},function(t,e,n){"use strict";var r=n(25),i=n(8),o=n(3),a=function(){function t(t){var e=this;this.params=new r.StateParams,this.transitionHistory=new i.Queue([],1),this.successfulTransitions=new i.Queue([],1);var n=function(t){e.transition=t,e.transitionHistory.enqueue(t);var n=function(){e.successfulTransitions.enqueue(t),e.$current=t.$to(),e.current=e.$current.self,o.copy(t.params(),e.params)};t.onSuccess({},n,{priority:1e4});var r=function(){e.transition===t&&(e.transition=null)};t.promise.then(r,r)};t.onBefore({},["$transition$",n])}return t}();e.UIRouterGlobals=a},function(t,e,n){"use strict";var r=n(47),i=n(48),o=n(18),a=n(48),s=n(43),u=n(50),c=n(36),l=n(37),f=n(51),p=function(){function t(){this.viewService=new u.ViewService,this.transitionService=new s.TransitionService(this.viewService),this.globals=new f.UIRouterGlobals(this.transitionService),this.urlMatcherFactory=new r.UrlMatcherFactory,this.urlRouterProvider=new i.UrlRouterProvider(this.urlMatcherFactory,this.globals.params),this.urlRouter=new a.UrlRouter(this.urlRouterProvider),this.stateRegistry=new c.StateRegistry(this.urlMatcherFactory,this.urlRouterProvider),this.stateProvider=new o.StateProvider(this.stateRegistry),this.stateService=new l.StateService(this.viewService,this.urlRouter,this.transitionService,this.stateRegistry,this.stateProvider,this.globals),this.viewService.rootContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self}return t}();e.UIRouter=p},function(t,e,n){"use strict";function r(t){var e=f.services.$injector,n=e.get("$controller"),r=e.instantiate;try{var i;return e.instantiate=function(t){e.instantiate=r,i=e.annotate(t)},n(t,{$scope:{}}),i}finally{e.instantiate=r}}function i(t,e){f.services.$injector=t,f.services.$q=e}function o(t){function e(e,r,i,o,a,s){return o.$on("$locationChangeSuccess",function(t){return n.forEach(function(e){return e(t)})}),f.services.locationConfig.html5Mode=function(){var e=t.html5Mode();return e=v.isObject(e)?e.enabled:e,e&&i.history},f.services.template.get=function(t){return a.get(t,{cache:s,headers:{Accept:"text/html"}}).then(h.prop("data"))},p.bindFunctions(e,f.services.location,e,["replace","url","path","search","hash"]),p.bindFunctions(e,f.services.locationConfig,e,["port","protocol","host"]),p.bindFunctions(r,f.services.locationConfig,r,["baseHref"]),S}S=new l.UIRouter,S.stateRegistry.decorator("views",w.ng1ViewsBuilder),S.stateRegistry.decorator("resolve",b.ng1ResolveBuilder),S.viewService.viewConfigFactory("ng1",w.ng1ViewConfigFactory),p.bindFunctions(t,f.services.locationConfig,t,["hashPrefix"]);var n=[];f.services.location.onChange=function(t){return n.push(t),function(){return p.removeFrom(n)(t)}},this.$get=e,e.$inject=["$location","$browser","$sniffer","$rootScope","$http","$templateCache"]}function a(){return S.urlRouterProvider.$get=function(){return S.urlRouter.update(!0),this.interceptDeferred||S.urlRouter.listen(),S.urlRouter},S.urlRouterProvider}function s(){return S.stateProvider.$get=function(){return S.stateRegistry.stateQueue.autoFlush(S.stateService),S.stateService},S.stateProvider}function u(){function t(t){var e=function(e){function n(){}var i=p.find(t.treeChanges().to,h.propEq("state",e.viewDecl.$context));if(!i)return f.services.$q.when();var o=i.resolveContext,a=r(e.controller),s=o.getResolvables();return n.$inject=a.filter(function(t){return s.hasOwnProperty(t)}),o.invokeLater(n).then(function(){return e.locals=p.map(s,function(t){return t.data})})},n=t.views("entering").filter(function(t){return!!t.controller}).map(e);return f.services.$q.all(n).then(p.noop)}return t.$inject=["$transition$"],S.transitionService.onFinish({},t),S.transitionService.$get=function(){return S.transitionService},S.transitionService}function c(t){t.$watch(function(){y.trace.approximateDigests++})}var l=n(52),f=n(6),p=n(3),h=n(5),v=n(4),d=n(44),m=n(40),g=n(17),y=n(12),w=n(54),$=n(55),b=n(56),R=angular.module("ui.router.angular1",[]);angular.module("ui.router.util",["ng","ui.router.init"]),angular.module("ui.router.router",["ui.router.util"]),angular.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),angular.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),angular.module("ui.router.compat",["ui.router"]),e.annotateController=r,i.$inject=["$injector","$q"],R.run(i);var S=null;o.$inject=["$locationProvider"];var x=function(){return{resolve:function(t,e,n){void 0===e&&(e={});var r=new d.Node(new g.State({params:{}})),i=new d.Node(new g.State({params:{}})),o=new m.ResolveContext([r,i]);o.addResolvables(m.Resolvable.makeResolvables(t),i.state);var a=function(t){var n=function(t){return m.Resolvable.makeResolvables(p.map(t,function(t){return function(){return t}}))};return o.addResolvables(n(t),r.state),o.addResolvables(n(e),i.state),o.resolvePath()};return n?n.then(a):a({})}}};angular.module("ui.router.init",[]).provider("ng1UIRouter",o),angular.module("ui.router.init").run(["ng1UIRouter",function(t){}]),angular.module("ui.router.util").provider("$urlMatcherFactory",["ng1UIRouterProvider",function(){return S.urlMatcherFactory}]),angular.module("ui.router.util").run(["$urlMatcherFactory",function(t){}]),angular.module("ui.router.router").provider("$urlRouter",["ng1UIRouterProvider",a]),angular.module("ui.router.router").run(["$urlRouter",function(t){}]),angular.module("ui.router.state").provider("$state",["ng1UIRouterProvider",s]),angular.module("ui.router.state").run(["$state",function(t){}]),angular.module("ui.router.state").factory("$stateParams",["ng1UIRouter",function(t){return t.globals.params}]),angular.module("ui.router.state").provider("$transitions",["ng1UIRouterProvider",u]),angular.module("ui.router.util").factory("$templateFactory",["ng1UIRouter",function(){return new $.TemplateFactory}]),angular.module("ui.router").factory("$view",function(){return S.viewService}),angular.module("ui.router").factory("$resolve",x),angular.module("ui.router").service("$trace",function(){return y.trace}),c.$inject=["$rootScope"],e.watchDigests=c,angular.module("ui.router").run(c)},function(t,e,n){"use strict";function r(t){var e=["templateProvider","templateUrl","template","notify","async"],n=["controller","controllerProvider","controllerAs","resolveAs"],r=["component","bindings"],c=e.concat(n),l=r.concat(c),f={},p=t.views||{$default:o.pick(t,l)};return o.forEach(p,function(e,n){if(n=n||"$default",u.isString(e)&&(e={component:e}),Object.keys(e).length){if(e.component){if(c.map(function(t){return u.isDefined(e[t])}).reduce(o.anyTrueR,!1))throw new Error("Cannot combine: "+r.join("|")+" with: "+c.join("|")+" in stateview: 'name@"+t.name+"'");e.templateProvider=["$injector",function(t){var n=function(t){return e.bindings&&e.bindings[t]||t},r=angular.version.minor>=3?"::":"",o=function(t){var e=a.kebobString(t.name),i=n(t.name);return"@"===t.type?e+"='{{"+r+"$resolve."+i+"}}'":e+"='"+r+"$resolve."+i+"'"},s=i(t,e.component).map(o).join(" "),u=a.kebobString(e.component);return"<"+u+" "+s+"></"+u+">"}]}e.resolveAs=e.resolveAs||"$resolve",e.$type="ng1",e.$context=t,e.$name=n;var l=s.ViewService.normalizeUiViewTarget(e.$context,e.$name);e.$uiViewName=l.uiViewName,e.$uiViewContextAnchor=l.uiViewContextAnchor,f[n]=e}}),f}function i(t,e){var n=t.get(e+"Directive");if(!n||!n.length)throw new Error("Unable to find component named '"+e+"'");return n.map(h).reduce(o.unnestR,[])}var o=n(3),a=n(9),s=n(50),u=n(4),c=n(6),l=n(12),f=n(55);e.ng1ViewConfigFactory=function(t,e){return new v(t,e)},e.ng1ViewsBuilder=r;var p=function(t){return Object.keys(t||{}).map(function(e){return[e,/^([=<@])[?]?(.*)/.exec(t[e])]}).filter(function(t){return u.isDefined(t)&&u.isDefined(t[1])}).map(function(t){return{name:t[1][2]||t[0],type:t[1][1]}})},h=function(t){return p(u.isObject(t.bindToController)?t.bindToController:t.scope)},v=function(){function t(t,e){this.node=t,this.viewDecl=e,this.loaded=!1}return t.prototype.load=function(){var t=this,e=c.services.$q;if(!this.hasTemplate())throw new Error("No template configuration specified for '"+this.viewDecl.$uiViewName+"@"+this.viewDecl.$uiViewContextAnchor+"'");var n=this.node.resolveContext,r=this.node.paramValues,i={template:e.when(this.getTemplate(r,new f.TemplateFactory,n)),controller:e.when(this.getController(n))};return e.all(i).then(function(e){l.trace.traceViewServiceEvent("Loaded",t),t.controller=e.controller,t.template=e.template})},t.prototype.hasTemplate=function(){return!!(this.viewDecl.template||this.viewDecl.templateUrl||this.viewDecl.templateProvider)},t.prototype.getTemplate=function(t,e,n){return e.fromConfig(this.viewDecl,t,n.invokeLater.bind(n))},t.prototype.getController=function(t){var e=this.viewDecl.controllerProvider;return u.isInjectable(e)?t.invokeLater(e,{}):this.viewDecl.controller},t}();e.Ng1ViewConfig=v},function(t,e,n){"use strict";var r=n(4),i=n(6),o=function(){function t(){}return t.prototype.fromConfig=function(t,e,n){return r.isDefined(t.template)?this.fromString(t.template,e):r.isDefined(t.templateUrl)?this.fromUrl(t.templateUrl,e):r.isDefined(t.templateProvider)?this.fromProvider(t.templateProvider,e,n):null},t.prototype.fromString=function(t,e){return r.isFunction(t)?t(e):t},t.prototype.fromUrl=function(t,e){return r.isFunction(t)&&(t=t(e)),null==t?null:i.services.template.get(t)},t.prototype.fromProvider=function(t,e,n){return n(t)},t}();e.TemplateFactory=o},function(t,e,n){"use strict";function r(t){var e={};return i.forEach(t.resolve||{},function(t,n){e[n]=o.isString(t)?[t,function(t){return t}]:t}),e}var i=n(3),o=n(4);e.ng1ResolveBuilder=r},function(t,e,n){"use strict";function r(t,e){var n,r=t.match(/^\s*({[^}]*})\s*$/);if(r&&(t=e+"("+r[1]+")"),n=t.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!n||4!==n.length)throw new Error("Invalid state ref '"+t+"'");return{state:n[1],paramExpr:n[3]||null}}function i(t){var e=t.parent().inheritedData("$uiView"),n=l.parse("$cfg.node.state")(e);return n&&n.name?n:void 0}function o(t){var e="[object SVGAnimatedString]"===Object.prototype.toString.call(t.prop("href")),n="FORM"===t[0].nodeName;return{attr:n?"action":e?"xlink:href":"href",isAnchor:"A"===t.prop("tagName").toUpperCase(),clickable:!n}}function a(t,e,n,r,i){return function(o){var a=o.which||o.button,s=i();if(!(a>1||o.ctrlKey||o.metaKey||o.shiftKey||t.attr("target"))){var u=n(function(){e.go(s.state,s.params,s.options)});o.preventDefault();var c=r.isAnchor&&!s.href?1:0;o.preventDefault=function(){c--<=0&&n.cancel(u)}}}}function s(t,e){return{relative:i(t)||e.$current,inherit:!0}}var u=n(3),c=n(4),l=n(5),f=["$state","$timeout",function(t,e){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(n,i,c,l){var f=r(c.uiSref,t.current.name),p={state:f.state,href:null,params:null,options:null},h=o(i),v=l[1]||l[0],d=null;p.options=u.extend(s(i,t),c.uiSrefOpts?n.$eval(c.uiSrefOpts):{});var m=function(e){e&&(p.params=angular.copy(e)),p.href=t.href(f.state,p.params,p.options),d&&d(),v&&(d=v.$$addStateInfo(f.state,p.params)),null!==p.href&&c.$set(h.attr,p.href)};f.paramExpr&&(n.$watch(f.paramExpr,function(t){t!==p.params&&m(t)},!0),p.params=angular.copy(n.$eval(f.paramExpr))),m(),h.clickable&&i.bind("click",a(i,t,e,h,function(){return p}))}}}],p=["$state","$timeout",function(t,e){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(n,r,i,s){function u(e){h.state=e[0],h.params=e[1],h.options=e[2],h.href=t.href(h.state,h.params,h.options),v&&v(),l&&(v=l.$$addStateInfo(h.state,h.params)),h.href&&i.$set(c.attr,h.href)}var c=o(r),l=s[1]||s[0],f=[i.uiState,i.uiStateParams||null,i.uiStateOpts||null],p="["+f.map(function(t){return t||"null"}).join(", ")+"]",h={state:null,params:null,options:null,href:null},v=null;n.$watch(p,u,!0),u(n.$eval(p)),c.clickable&&r.bind("click",a(r,t,e,c,function(){return h}))}}}],h=["$state","$stateParams","$interpolate","$transitions",function(t,e,n,o){return{restrict:"A",controller:["$scope","$element","$attrs","$timeout",function(e,a,s,l){function f(e,n,r){var o=t.get(e,i(a)),s=p(e,n),u={state:o||{name:e},params:n,hash:s};return $.push(u),b[s]=r,function(){var t=$.indexOf(u);-1!==t&&$.splice(t,1)}}function p(t,n){if(!c.isString(t))throw new Error("state should be a string");return c.isObject(n)?t+u.toJson(n):(n=e.$eval(n),c.isObject(n)?t+u.toJson(n):t)}function h(){for(var t=0;t<$.length;t++)m($[t].state,$[t].params)?v(a,b[$[t].hash]):d(a,b[$[t].hash]),g($[t].state,$[t].params)?v(a,y):d(a,y)}function v(t,e){l(function(){t.addClass(e)})}function d(t,e){t.removeClass(e)}function m(e,n){return t.includes(e.name,n)}function g(e,n){return t.is(e.name,n)}var y,w,$=[],b={};y=n(s.uiSrefActiveEq||"",!1)(e);try{w=e.$eval(s.uiSrefActive)}catch(R){}w=w||n(s.uiSrefActive||"",!1)(e),c.isObject(w)&&u.forEach(w,function(n,i){if(c.isString(n)){var o=r(n,t.current.name);f(o.state,e.$eval(o.paramExpr),i)}}),this.$$addStateInfo=function(t,e){if(!(c.isObject(w)&&$.length>0)){var n=f(t,e,w);return h(),n}},e.$on("$stateChangeSuccess",h);var S=["$transition$",function(t){t.promise.then(h)}],x=o.onStart({},S);e.$on("$destroy",x),h()}]}}];angular.module("ui.router.state").directive("uiSref",f).directive("uiSrefActive",h).directive("uiSrefActiveEq",h).directive("uiState",p)},function(t,e){"use strict";function n(t){var e=function(e,n,r){return t.is(e,n,r)};return e.$stateful=!0,e}function r(t){var e=function(e,n,r){return t.includes(e,n,r)};return e.$stateful=!0,e}n.$inject=["$state"],e.$IsStateFilter=n,r.$inject=["$state"],e.$IncludedByStateFilter=r,angular.module("ui.router.state").filter("isState",n).filter("includedByState",r)},function(t,e,n){"use strict";function r(t,e,n,r,u){var c=l.parse("viewDecl.controllerAs"),p=l.parse("viewDecl.resolveAs"),h=l.parse("node.resolveContext");return{restrict:"ECA",priority:-400,compile:function(r){var u=r.html();return function(r,l){var v=l.data("$uiView");if(v){var d=v.$cfg||{viewDecl:{}};l.html(d.template||u),s.trace.traceUiViewFill(v.$uiView,l.html());var m=t(l.contents()),g=d.controller,y=c(d),w=p(d),$=h(d),b=$&&o.map($.getResolvables(),function(t){return t.data});if(r[w]=b,g){var R=e(g,o.extend({},b,{$scope:r,$element:l}));y&&(r[y]=R,r[y][w]=b),l.data("$ngControllerController",R),l.children().data("$ngControllerController",R),i(n,R,r,d)}if(a.isString(d.viewDecl.component))var S=d.viewDecl.component,x=f.kebobString(S),E=function(){var t=[].slice.call(l[0].children).filter(function(t){return t&&t.tagName&&t.tagName.toLowerCase()===x});return t&&angular.element(t).data("$"+S+"Controller")},P=r.$watch(E,function(t){t&&(i(n,t,r,d),P())});m(r)}}}}}function i(t,e,n,r){!a.isFunction(e.$onInit)||r.viewDecl.component&&h||e.$onInit();var i={bind:e};if(a.isFunction(e.uiOnParamsChanged)){var s=function(t){var n=r.node.resolveContext,i=n.getResolvables().$transition$.data;if(t!==i&&-1===t.exiting().indexOf(r.node.state.self)){var a=t.params("to"),s=t.params("from"),u=t.treeChanges().to.map(function(t){return t.paramSchema}).reduce(o.unnestR,[]),c=t.treeChanges().from.map(function(t){return t.paramSchema}).reduce(o.unnestR,[]),l=u.filter(function(t){var e=c.indexOf(t);return-1===e||!c[e].type.equals(a[t.id],s[t.id])});if(l.length){var f=l.map(function(t){return t.id});e.uiOnParamsChanged(o.filter(a,function(t,e){return-1!==f.indexOf(e)}),t)}}};n.$on("$destroy",t.onSuccess({},["$transition$",s]),i);var u=function(t,e){t.type===c.RejectType.IGNORED&&s(e)};n.$on("$destroy",t.onError({},["$error$","$transition$",u]),i)}if(a.isFunction(e.uiCanExit)){var l={exiting:r.node.state.name};n.$on("$destroy",t.onBefore(l,e.uiCanExit,i))}}var o=n(3),a=n(4),s=n(12),u=n(54),c=n(10),l=n(5),f=n(9),p=["$view","$animate","$uiViewScroll","$interpolate","$q",function(t,e,n,r,i){function o(t,n){return{enter:function(t,n,r){angular.version.minor>2?e.enter(t,null,n).then(r):e.enter(t,null,n,r)},leave:function(t,n){angular.version.minor>2?e.leave(t).then(n):e.leave(t,n)}}}function c(t,e){return t===e}var f={$cfg:{viewDecl:{$context:t.rootContext()}},$uiView:{}},p={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(e,h,v){return function(e,h,d){function m(t){(!t||t instanceof u.Ng1ViewConfig)&&(c(P,t)||(s.trace.traceUiViewConfigUpdated(C,t&&t.viewDecl&&t.viewDecl.$context),P=t,y(t)))}function g(){if(w&&(s.trace.traceUiViewEvent("Removing (previous) el",w.data("$uiView")),w.remove(),w=null),b&&(s.trace.traceUiViewEvent("Destroying scope",C),b.$destroy(),b=null),$){var t=$.data("$uiView");s.trace.traceUiViewEvent("Animate out",t),E.leave($,function(){t.$$animLeave.resolve(),w=null}),w=$,$=null}}function y(t){var r=e.$new();s.trace.traceUiViewScopeCreated(C,r);var o=i.defer(),u=i.defer(),c={$cfg:t,$uiView:C,$animEnter:o.promise,$animLeave:u.promise,$$animLeave:u},l=v(r,function(t){E.enter(t.data("$uiView",c),h,function(){o.resolve(),b&&b.$emit("$viewContentAnimationEnded"),(a.isDefined(x)&&!x||e.$eval(x))&&n(t)}),g()});$=l,b=r,b.$emit("$viewContentLoaded",t||P),b.$eval(S)}var w,$,b,R,S=d.onload||"",x=d.autoscroll,E=o(d,e),P=void 0,k=h.inheritedData("$uiView")||f,O=r(d.uiView||d.name||"")(e)||"$default",C={$type:"ng1",id:p.count++,name:O,fqn:k.$uiView.fqn?k.$uiView.fqn+"."+O:O,config:null,configUpdated:m,get creationContext(){return l.parse("$cfg.viewDecl.$context")(k)}};s.trace.traceUiViewEvent("Linking",C),h.data("$uiView",{$uiView:C}),y(),R=t.registerUiView(C),e.$on("$destroy",function(){s.trace.traceUiViewEvent("Destroying/Unregistering",C),R()})}}};return p}];r.$inject=["$compile","$controller","$transitions","$view","$timeout"];var h="function"==typeof angular.module("ui.router").component;angular.module("ui.router.state").directive("uiView",p),angular.module("ui.router.state").directive("uiView",r)},function(t,e){"use strict";function n(){var t=!1;this.useAnchorScroll=function(){t=!0},this.$get=["$anchorScroll","$timeout",function(e,n){return t?e:function(t){return n(function(){t[0].scrollIntoView()},0,!1)}}]}angular.module("ui.router.state").provider("$uiViewScroll",n)}])});
1778 1778 //# sourceMappingURL=angular-ui-router.min.js.map
1779 1779 ;angular.module('angular-toArrayFilter', [])
1780 1780
1781 1781 .filter('toArray', function () {
1782 1782 return function (obj, addKey) {
1783 1783 if (!angular.isObject(obj)) return obj;
1784 1784 if ( addKey === false ) {
1785 1785 return Object.keys(obj).map(function(key) {
1786 1786 return obj[key];
1787 1787 });
1788 1788 } else {
1789 1789 return Object.keys(obj).map(function (key) {
1790 1790 var value = obj[key];
1791 1791 return angular.isObject(value) ?
1792 1792 Object.defineProperty(value, '$key', { enumerable: false, value: key}) :
1793 1793 { $key: key, $value: value };
1794 1794 });
1795 1795 }
1796 1796 };
1797 1797 });
1798 1798 ;//Copyright (C) 2012 Kory Nunn
1799 1799
1800 1800 //Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1801 1801
1802 1802 //The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1803 1803
1804 1804 //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1805 1805
1806 1806 /*
1807 1807
1808 1808 This code is not formatted for readability, but rather run-speed and to assist compilers.
1809 1809
1810 1810 However, the code's intention should be transparent.
1811 1811
1812 1812 *** IE SUPPORT ***
1813 1813
1814 1814 If you require this library to work in IE7, add the following after declaring crel.
1815 1815
1816 1816 var testDiv = document.createElement('div'),
1817 1817 testLabel = document.createElement('label');
1818 1818
1819 1819 testDiv.setAttribute('class', 'a');
1820 1820 testDiv['className'] !== 'a' ? crel.attrMap['class'] = 'className':undefined;
1821 1821 testDiv.setAttribute('name','a');
1822 1822 testDiv['name'] !== 'a' ? crel.attrMap['name'] = function(element, value){
1823 1823 element.id = value;
1824 1824 }:undefined;
1825 1825
1826 1826
1827 1827 testLabel.setAttribute('for', 'a');
1828 1828 testLabel['htmlFor'] !== 'a' ? crel.attrMap['for'] = 'htmlFor':undefined;
1829 1829
1830 1830
1831 1831
1832 1832 */
1833 1833
1834 1834 (function (root, factory) {
1835 1835 if (typeof exports === 'object') {
1836 1836 if (!root.window) {
1837 1837 var jsdom = require('jsdom').jsdom;
1838 1838 root.window = jsdom().parentWindow;
1839 1839 }
1840 1840 module.exports = factory(root.window);
1841 1841 } else if (typeof define === 'function' && define.amd) {
1842 1842 define(factory.bind(null, window));
1843 1843 } else {
1844 1844 root.crel = factory(root.window);
1845 1845 }
1846 1846 }(this, function (window) {
1847 1847 // based on http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
1848 1848 var isNode = typeof Node === 'object'
1849 1849 ? function (object) { return object instanceof Node }
1850 1850 : function (object) {
1851 1851 return object
1852 1852 && typeof object === 'object'
1853 1853 && typeof object.nodeType === 'number'
1854 1854 && typeof object.nodeName === 'string';
1855 1855 };
1856 1856
1857 1857 function crel(){
1858 1858 var document = window.document,
1859 1859 args = arguments, //Note: assigned to a variable to assist compilers. Saves about 40 bytes in closure compiler. Has negligable effect on performance.
1860 1860 element = document.createElement(args[0]),
1861 1861 child,
1862 1862 settings = args[1],
1863 1863 childIndex = 2,
1864 1864 argumentsLength = args.length,
1865 1865 attributeMap = crel.attrMap;
1866 1866
1867 1867 // shortcut
1868 1868 if(argumentsLength === 1){
1869 1869 return element;
1870 1870 }
1871 1871
1872 1872 if(typeof settings !== 'object' || isNode(settings)) {
1873 1873 --childIndex;
1874 1874 settings = null;
1875 1875 }
1876 1876
1877 1877 // shortcut if there is only one child that is a string
1878 1878 if((argumentsLength - childIndex) === 1 && typeof args[childIndex] === 'string' && element.textContent !== undefined){
1879 1879 element.textContent = args[childIndex];
1880 1880 }else{
1881 1881 for(; childIndex < argumentsLength; ++childIndex){
1882 1882 child = args[childIndex];
1883 1883
1884 1884 if(child == null){
1885 1885 continue;
1886 1886 }
1887 1887
1888 1888 if(!isNode(child)){
1889 1889 child = document.createTextNode(child);
1890 1890 }
1891 1891
1892 1892 element.appendChild(child);
1893 1893 }
1894 1894 }
1895 1895
1896 1896 for(var key in settings){
1897 1897 if(!attributeMap[key]){
1898 1898 element.setAttribute(key, settings[key]);
1899 1899 }else{
1900 1900 var attr = crel.attrMap[key];
1901 1901 if(typeof attr === 'function'){
1902 1902 attr(element, settings[key]);
1903 1903 }else{
1904 1904 element.setAttribute(attr, settings[key]);
1905 1905 }
1906 1906 }
1907 1907 }
1908 1908
1909 1909 return element;
1910 1910 }
1911 1911
1912 1912 // Used for mapping one kind of attribute to the supported version of that in bad browsers.
1913 1913 // String referenced so that compilers maintain the property name.
1914 1914 crel['attrMap'] = {};
1915 1915
1916 1916 // String referenced so that compilers maintain the property name.
1917 1917 crel["isNode"] = isNode;
1918 1918
1919 1919 return crel;
1920 1920 }));
1921 1921
1922 1922 ;/*globals define, module, require, document*/
1923 1923 (function (root, factory) {
1924 1924 "use strict";
1925 1925 if (typeof define === 'function' && define.amd) {
1926 1926 define([], factory);
1927 1927 } else if (typeof module !== 'undefined' && module.exports) {
1928 1928 module.exports = factory();
1929 1929 } else {
1930 1930 root.JsonHuman = factory();
1931 1931 }
1932 1932 }(this, function () {
1933 1933 "use strict";
1934 1934
1935 1935 var indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
1936 1936
1937 1937 function makePrefixer(prefix) {
1938 1938 return function (name) {
1939 1939 return prefix + "-" + name;
1940 1940 };
1941 1941 }
1942 1942
1943 1943 function isArray(obj) {
1944 1944 return toString.call(obj) === '[object Array]';
1945 1945 }
1946 1946
1947 1947 function sn(tagName, className, data) {
1948 1948 var result = document.createElement(tagName);
1949 1949
1950 1950 result.className = className;
1951 1951 result.appendChild(document.createTextNode("" + data));
1952 1952
1953 1953 return result;
1954 1954 }
1955 1955
1956 1956 function scn(tagName, className, child) {
1957 1957 var result = document.createElement(tagName),
1958 1958 i, len;
1959 1959
1960 1960 result.className = className;
1961 1961
1962 1962 if (isArray(child)) {
1963 1963 for (i = 0, len = child.length; i < len; i += 1) {
1964 1964 result.appendChild(child[i]);
1965 1965 }
1966 1966 } else {
1967 1967 result.appendChild(child);
1968 1968 }
1969 1969
1970 1970 return result;
1971 1971 }
1972 1972
1973 1973 function linkNode(child, href, target){
1974 1974 var a = scn("a", HYPERLINK_CLASS_NAME, child);
1975 1975 a.setAttribute('href', href);
1976 1976 a.setAttribute('target', target);
1977 1977 return a;
1978 1978 }
1979 1979
1980 1980 var toString = Object.prototype.toString,
1981 1981 prefixer = makePrefixer("jh"),
1982 1982 p = prefixer,
1983 1983 ARRAY = 2,
1984 1984 BOOL = 4,
1985 1985 INT = 8,
1986 1986 FLOAT = 16,
1987 1987 STRING = 32,
1988 1988 OBJECT = 64,
1989 1989 SPECIAL_OBJECT = 128,
1990 1990 FUNCTION = 256,
1991 1991 UNK = 1,
1992 1992
1993 1993 STRING_CLASS_NAME = p("type-string"),
1994 1994 STRING_EMPTY_CLASS_NAME = p("type-string") + " " + p("empty"),
1995 1995
1996 1996 BOOL_TRUE_CLASS_NAME = p("type-bool-true"),
1997 1997 BOOL_FALSE_CLASS_NAME = p("type-bool-false"),
1998 1998 BOOL_IMAGE = p("type-bool-image"),
1999 1999 INT_CLASS_NAME = p("type-int") + " " + p("type-number"),
2000 2000 FLOAT_CLASS_NAME = p("type-float") + " " + p("type-number"),
2001 2001
2002 2002 OBJECT_CLASS_NAME = p("type-object"),
2003 2003 OBJ_KEY_CLASS_NAME = p("key") + " " + p("object-key"),
2004 2004 OBJ_VAL_CLASS_NAME = p("value") + " " + p("object-value"),
2005 2005 OBJ_EMPTY_CLASS_NAME = p("type-object") + " " + p("empty"),
2006 2006
2007 2007 FUNCTION_CLASS_NAME = p("type-function"),
2008 2008
2009 2009 ARRAY_KEY_CLASS_NAME = p("key") + " " + p("array-key"),
2010 2010 ARRAY_VAL_CLASS_NAME = p("value") + " " + p("array-value"),
2011 2011 ARRAY_CLASS_NAME = p("type-array"),
2012 2012 ARRAY_EMPTY_CLASS_NAME = p("type-array") + " " + p("empty"),
2013 2013
2014 2014 HYPERLINK_CLASS_NAME = p('a'),
2015 2015
2016 2016 UNKNOWN_CLASS_NAME = p("type-unk");
2017 2017
2018 2018 function getType(obj) {
2019 2019 var type = typeof obj;
2020 2020
2021 2021 switch (type) {
2022 2022 case "boolean":
2023 2023 return BOOL;
2024 2024 case "string":
2025 2025 return STRING;
2026 2026 case "number":
2027 2027 return (obj % 1 === 0) ? INT : FLOAT;
2028 2028 case "function":
2029 2029 return FUNCTION;
2030 2030 default:
2031 2031 if (isArray(obj)) {
2032 2032 return ARRAY;
2033 2033 } else if (obj === Object(obj)) {
2034 2034 if (obj.constructor === Object) {
2035 2035 return OBJECT;
2036 2036 }
2037 2037 return OBJECT | SPECIAL_OBJECT
2038 2038 } else {
2039 2039 return UNK;
2040 2040 }
2041 2041 }
2042 2042 }
2043 2043
2044 2044 function _format(data, options, parentKey) {
2045 2045
2046 2046 var result, container, key, keyNode, valNode, len, childs, tr, value,
2047 2047 isEmpty = true,
2048 2048 isSpecial = false,
2049 2049 accum = [],
2050 2050 type = getType(data);
2051 2051
2052 2052 // Initialized & used only in case of objects & arrays
2053 2053 var hyperlinksEnabled, aTarget, hyperlinkKeys ;
2054 2054
2055 2055 if (type === BOOL) {
2056 2056 var boolOpt = options.bool;
2057 2057 container = document.createElement('div');
2058 2058
2059 2059 if (boolOpt.showImage) {
2060 2060 var img = document.createElement('img');
2061 2061 img.setAttribute('class', BOOL_IMAGE);
2062 2062
2063 2063 img.setAttribute('src',
2064 2064 '' + (data ? boolOpt.img.true : boolOpt.img.false));
2065 2065
2066 2066 container.appendChild(img);
2067 2067 }
2068 2068
2069 2069 if (boolOpt.showText) {
2070 2070 container.appendChild(data ?
2071 2071 sn("span", BOOL_TRUE_CLASS_NAME, boolOpt.text.true) :
2072 2072 sn("span", BOOL_FALSE_CLASS_NAME, boolOpt.text.false));
2073 2073 }
2074 2074
2075 2075 result = container;
2076 2076
2077 2077 } else if (type === STRING) {
2078 2078 if (data === "") {
2079 2079 result = sn("span", STRING_EMPTY_CLASS_NAME, "(Empty Text)");
2080 2080 } else {
2081 2081 result = sn("span", STRING_CLASS_NAME, data);
2082 2082 }
2083 2083 } else if (type === INT) {
2084 2084 result = sn("span", INT_CLASS_NAME, data);
2085 2085 } else if (type === FLOAT) {
2086 2086 result = sn("span", FLOAT_CLASS_NAME, data);
2087 2087 } else if (type & OBJECT) {
2088 2088 if (type & SPECIAL_OBJECT) {
2089 2089 isSpecial = true;
2090 2090 }
2091 2091 childs = [];
2092 2092
2093 2093 aTarget = options.hyperlinks.target;
2094 2094 hyperlinkKeys = options.hyperlinks.keys;
2095 2095
2096 2096 // Is Hyperlink Key
2097 2097 hyperlinksEnabled =
2098 2098 options.hyperlinks.enable &&
2099 2099 hyperlinkKeys &&
2100 2100 hyperlinkKeys.length > 0;
2101 2101
2102 2102 for (key in data) {
2103 2103 isEmpty = false;
2104 2104
2105 2105 value = data[key];
2106 2106
2107 2107 valNode = _format(value, options, key);
2108 2108 keyNode = sn("th", OBJ_KEY_CLASS_NAME, key);
2109 2109
2110 2110 if( hyperlinksEnabled &&
2111 2111 typeof(value) === 'string' &&
2112 2112 indexOf.call(hyperlinkKeys, key) >= 0){
2113 2113
2114 2114 valNode = scn("td", OBJ_VAL_CLASS_NAME, linkNode(valNode, value, aTarget));
2115 2115 } else {
2116 2116 valNode = scn("td", OBJ_VAL_CLASS_NAME, valNode);
2117 2117 }
2118 2118
2119 2119 tr = document.createElement("tr");
2120 2120 tr.appendChild(keyNode);
2121 2121 tr.appendChild(valNode);
2122 2122
2123 2123 childs.push(tr);
2124 2124 }
2125 2125
2126 2126 if (isSpecial) {
2127 2127 result = sn('span', STRING_CLASS_NAME, data.toString())
2128 2128 } else if (isEmpty) {
2129 2129 result = sn("span", OBJ_EMPTY_CLASS_NAME, "(Empty Object)");
2130 2130 } else {
2131 2131 result = scn("table", OBJECT_CLASS_NAME, scn("tbody", '', childs));
2132 2132 }
2133 2133 } else if (type === FUNCTION) {
2134 2134 result = sn("span", FUNCTION_CLASS_NAME, data);
2135 2135 } else if (type === ARRAY) {
2136 2136 if (data.length > 0) {
2137 2137 childs = [];
2138 2138 var showArrayIndices = options.showArrayIndex;
2139 2139
2140 2140 aTarget = options.hyperlinks.target;
2141 2141 hyperlinkKeys = options.hyperlinks.keys;
2142 2142
2143 2143 // Hyperlink of arrays?
2144 2144 hyperlinksEnabled = parentKey && options.hyperlinks.enable &&
2145 2145 hyperlinkKeys &&
2146 2146 hyperlinkKeys.length > 0 &&
2147 2147 indexOf.call(hyperlinkKeys, parentKey) >= 0;
2148 2148
2149 2149 for (key = 0, len = data.length; key < len; key += 1) {
2150 2150
2151 2151 keyNode = sn("th", ARRAY_KEY_CLASS_NAME, key);
2152 2152 value = data[key];
2153 2153
2154 2154 if (hyperlinksEnabled && typeof(value) === "string") {
2155 2155 valNode = _format(value, options, key);
2156 2156 valNode = scn("td", ARRAY_VAL_CLASS_NAME,
2157 2157 linkNode(valNode, value, aTarget));
2158 2158 } else {
2159 2159 valNode = scn("td", ARRAY_VAL_CLASS_NAME,
2160 2160 _format(value, options, key));
2161 2161 }
2162 2162
2163 2163 tr = document.createElement("tr");
2164 2164
2165 2165 if (showArrayIndices) {
2166 2166 tr.appendChild(keyNode);
2167 2167 }
2168 2168 tr.appendChild(valNode);
2169 2169
2170 2170 childs.push(tr);
2171 2171 }
2172 2172
2173 2173 result = scn("table", ARRAY_CLASS_NAME, scn("tbody", '', childs));
2174 2174 } else {
2175 2175 result = sn("span", ARRAY_EMPTY_CLASS_NAME, "(Empty List)");
2176 2176 }
2177 2177 } else {
2178 2178 result = sn("span", UNKNOWN_CLASS_NAME, data);
2179 2179 }
2180 2180
2181 2181 return result;
2182 2182 }
2183 2183
2184 2184 function format(data, options) {
2185 2185 options = validateOptions(options || {});
2186 2186
2187 2187 var result;
2188 2188
2189 2189 result = _format(data, options);
2190 2190 result.className = result.className + " " + prefixer("root");
2191 2191
2192 2192 return result;
2193 2193 }
2194 2194
2195 2195 function validateOptions(options){
2196 2196 options = validateArrayIndexOption(options);
2197 2197 options = validateHyperlinkOptions(options);
2198 2198 options = validateBoolOptions(options);
2199 2199
2200 2200 // Add any more option validators here
2201 2201
2202 2202 return options;
2203 2203 }
2204 2204
2205 2205
2206 2206 function validateArrayIndexOption(options) {
2207 2207 if(options.showArrayIndex === undefined){
2208 2208 options.showArrayIndex = true;
2209 2209 } else {
2210 2210 // Force to boolean just in case
2211 2211 options.showArrayIndex = options.showArrayIndex ? true: false;
2212 2212 }
2213 2213
2214 2214 return options;
2215 2215 }
2216 2216
2217 2217 function validateHyperlinkOptions(options){
2218 2218 var hyperlinks = {
2219 2219 enable : false,
2220 2220 keys : null,
2221 2221 target : ''
2222 2222 };
2223 2223
2224 2224 if(options.hyperlinks && options.hyperlinks.enable) {
2225 2225 hyperlinks.enable = true;
2226 2226
2227 2227 hyperlinks.keys = isArray(options.hyperlinks.keys) ? options.hyperlinks.keys : [];
2228 2228
2229 2229 if(options.hyperlinks.target) {
2230 2230 hyperlinks.target = '' + options.hyperlinks.target;
2231 2231 } else {
2232 2232 hyperlinks.target = '_blank';
2233 2233 }
2234 2234 }
2235 2235
2236 2236 options.hyperlinks = hyperlinks;
2237 2237
2238 2238 return options;
2239 2239 }
2240 2240
2241 2241 function validateBoolOptions(options){
2242 2242 if(!options.bool){
2243 2243 options.bool = {
2244 2244 text: {
2245 2245 true : "true",
2246 2246 false : "false"
2247 2247 },
2248 2248 img : {
2249 2249 true: "",
2250 2250 false: ""
2251 2251 },
2252 2252 showImage : false,
2253 2253 showText : true
2254 2254 };
2255 2255 } else {
2256 2256 var boolOptions = options.bool;
2257 2257
2258 2258 // Show text if no option
2259 2259 if(!boolOptions.showText && !boolOptions.showImage){
2260 2260 boolOptions.showImage = false;
2261 2261 boolOptions.showText = true;
2262 2262 }
2263 2263
2264 2264 if(boolOptions.showText){
2265 2265 if(!boolOptions.text){
2266 2266 boolOptions.text = {
2267 2267 true : "true",
2268 2268 false : "false"
2269 2269 };
2270 2270 } else {
2271 2271 var t = boolOptions.text.true, f = boolOptions.text.false;
2272 2272
2273 2273 if(getType(t) != STRING || t === ''){
2274 2274 boolOptions.text.true = 'true';
2275 2275 }
2276 2276
2277 2277 if(getType(f) != STRING || f === ''){
2278 2278 boolOptions.text.false = 'false';
2279 2279 }
2280 2280 }
2281 2281 }
2282 2282
2283 2283 if(boolOptions.showImage){
2284 2284 if(!boolOptions.img.true && !boolOptions.img.false){
2285 2285 boolOptions.showImage = false;
2286 2286 }
2287 2287 }
2288 2288 }
2289 2289
2290 2290 return options;
2291 2291 }
2292 2292
2293 2293 return {
2294 2294 format: format
2295 2295 };
2296 2296 }));
2297 2297
2298 2298 ;//! moment.js
2299 2299 //! version : 2.8.4
2300 2300 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
2301 2301 //! license : MIT
2302 2302 //! momentjs.com
2303 2303 (function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(a,b){return zb.call(a,b)}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function e(a){tb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function f(a,b){var c=!0;return m(function(){return c&&(e(a),c=!1),b.apply(this,arguments)},b)}function g(a,b){qc[a]||(e(b),qc[a]=!0)}function h(a,b){return function(c){return p(a.call(this,c),b)}}function i(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function j(){}function k(a,b){b!==!1&&F(a),n(this,a),this._d=new Date(+a._d)}function l(a){var b=y(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=tb.localeData(),this._bubble()}function m(a,b){for(var d in b)c(b,d)&&(a[d]=b[d]);return c(b,"toString")&&(a.toString=b.toString),c(b,"valueOf")&&(a.valueOf=b.valueOf),a}function n(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Ib.length>0)for(c in Ib)d=Ib[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function o(a){return 0>a?Math.ceil(a):Math.floor(a)}function p(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function q(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function r(a,b){var c;return b=K(b,a),a.isBefore(b)?c=q(a,b):(c=q(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function s(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(g(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=tb.duration(c,d),t(this,e,a),this}}function t(a,b,c,d){var e=b._milliseconds,f=b._days,g=b._months;d=null==d?!0:d,e&&a._d.setTime(+a._d+e*c),f&&nb(a,"Date",mb(a,"Date")+f*c),g&&lb(a,mb(a,"Month")+g*c),d&&tb.updateOffset(a,f||g)}function u(a){return"[object Array]"===Object.prototype.toString.call(a)}function v(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function w(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&A(a[d])!==A(b[d]))&&g++;return g+f}function x(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=jc[a]||kc[b]||b}return a}function y(a){var b,d,e={};for(d in a)c(a,d)&&(b=x(d),b&&(e[b]=a[d]));return e}function z(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}tb[b]=function(e,f){var g,h,i=tb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=tb().utc().set(d,a);return i.call(tb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function A(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function B(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function C(a,b,c){return hb(tb([a,11,31+b-c]),b,c).week}function D(a){return E(a)?366:365}function E(a){return a%4===0&&a%100!==0||a%400===0}function F(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[Bb]<0||a._a[Bb]>11?Bb:a._a[Cb]<1||a._a[Cb]>B(a._a[Ab],a._a[Bb])?Cb:a._a[Db]<0||a._a[Db]>24||24===a._a[Db]&&(0!==a._a[Eb]||0!==a._a[Fb]||0!==a._a[Gb])?Db:a._a[Eb]<0||a._a[Eb]>59?Eb:a._a[Fb]<0||a._a[Fb]>59?Fb:a._a[Gb]<0||a._a[Gb]>999?Gb:-1,a._pf._overflowDayOfYear&&(Ab>b||b>Cb)&&(b=Cb),a._pf.overflow=b)}function G(b){return null==b._isValid&&(b._isValid=!isNaN(b._d.getTime())&&b._pf.overflow<0&&!b._pf.empty&&!b._pf.invalidMonth&&!b._pf.nullInput&&!b._pf.invalidFormat&&!b._pf.userInvalidated,b._strict&&(b._isValid=b._isValid&&0===b._pf.charsLeftOver&&0===b._pf.unusedTokens.length&&b._pf.bigHour===a)),b._isValid}function H(a){return a?a.toLowerCase().replace("_","-"):a}function I(a){for(var b,c,d,e,f=0;f<a.length;){for(e=H(a[f]).split("-"),b=e.length,c=H(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=J(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&w(e,c,!0)>=b-1)break;b--}f++}return null}function J(a){var b=null;if(!Hb[a]&&Jb)try{b=tb.locale(),require("./locale/"+a),tb.locale(b)}catch(c){}return Hb[a]}function K(a,b){var c,d;return b._isUTC?(c=b.clone(),d=(tb.isMoment(a)||v(a)?+a:+tb(a))-+c,c._d.setTime(+c._d+d),tb.updateOffset(c,!1),c):tb(a).local()}function L(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function M(a){var b,c,d=a.match(Nb);for(b=0,c=d.length;c>b;b++)d[b]=pc[d[b]]?pc[d[b]]:L(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function N(a,b){return a.isValid()?(b=O(b,a.localeData()),lc[b]||(lc[b]=M(b)),lc[b](a)):a.localeData().invalidDate()}function O(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Ob.lastIndex=0;d>=0&&Ob.test(a);)a=a.replace(Ob,c),Ob.lastIndex=0,d-=1;return a}function P(a,b){var c,d=b._strict;switch(a){case"Q":return Zb;case"DDDD":return _b;case"YYYY":case"GGGG":case"gggg":return d?ac:Rb;case"Y":case"G":case"g":return cc;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?bc:Sb;case"S":if(d)return Zb;case"SS":if(d)return $b;case"SSS":if(d)return _b;case"DDD":return Qb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ub;case"a":case"A":return b._locale._meridiemParse;case"x":return Xb;case"X":return Yb;case"Z":case"ZZ":return Vb;case"T":return Wb;case"SSSS":return Tb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?$b:Pb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Pb;case"Do":return d?b._locale._ordinalParse:b._locale._ordinalParseLenient;default:return c=new RegExp(Y(X(a.replace("\\","")),"i"))}}function Q(a){a=a||"";var b=a.match(Vb)||[],c=b[b.length-1]||[],d=(c+"").match(hc)||["-",0,0],e=+(60*d[1])+A(d[2]);return"+"===d[0]?-e:e}function R(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[Bb]=3*(A(b)-1));break;case"M":case"MM":null!=b&&(e[Bb]=A(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b,a,c._strict),null!=d?e[Bb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[Cb]=A(b));break;case"Do":null!=b&&(e[Cb]=A(parseInt(b.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=A(b));break;case"YY":e[Ab]=tb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[Ab]=A(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"h":case"hh":c._pf.bigHour=!0;case"H":case"HH":e[Db]=A(b);break;case"m":case"mm":e[Eb]=A(b);break;case"s":case"ss":e[Fb]=A(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Gb]=A(1e3*("0."+b));break;case"x":c._d=new Date(A(b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=Q(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=A(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=tb.parseTwoDigitYear(b)}}function S(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[Ab],hb(tb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[Ab],hb(tb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=ib(d,e,f,h,g),a._a[Ab]=i.year,a._dayOfYear=i.dayOfYear}function T(a){var c,d,e,f,g=[];if(!a._d){for(e=V(a),a._w&&null==a._a[Cb]&&null==a._a[Bb]&&S(a),a._dayOfYear&&(f=b(a._a[Ab],e[Ab]),a._dayOfYear>D(f)&&(a._pf._overflowDayOfYear=!0),d=db(f,0,a._dayOfYear),a._a[Bb]=d.getUTCMonth(),a._a[Cb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];24===a._a[Db]&&0===a._a[Eb]&&0===a._a[Fb]&&0===a._a[Gb]&&(a._nextDay=!0,a._a[Db]=0),a._d=(a._useUTC?db:cb).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm),a._nextDay&&(a._a[Db]=24)}}function U(a){var b;a._d||(b=y(a._i),a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],T(a))}function V(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function W(b){if(b._f===tb.ISO_8601)return void $(b);b._a=[],b._pf.empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=O(b._f,b._locale).match(Nb)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(P(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&b._pf.unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),pc[f]?(d?b._pf.empty=!1:b._pf.unusedTokens.push(f),R(f,d,b)):b._strict&&!d&&b._pf.unusedTokens.push(f);b._pf.charsLeftOver=i-j,h.length>0&&b._pf.unusedInput.push(h),b._pf.bigHour===!0&&b._a[Db]<=12&&(b._pf.bigHour=a),b._isPm&&b._a[Db]<12&&(b._a[Db]+=12),b._isPm===!1&&12===b._a[Db]&&(b._a[Db]=0),T(b),F(b)}function X(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function Y(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Z(a){var b,c,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;f<a._f.length;f++)g=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._pf=d(),b._f=a._f[f],W(b),G(b)&&(g+=b._pf.charsLeftOver,g+=10*b._pf.unusedTokens.length,b._pf.score=g,(null==e||e>g)&&(e=g,c=b));m(a,c||b)}function $(a){var b,c,d=a._i,e=dc.exec(d);if(e){for(a._pf.iso=!0,b=0,c=fc.length;c>b;b++)if(fc[b][1].exec(d)){a._f=fc[b][0]+(e[6]||" ");break}for(b=0,c=gc.length;c>b;b++)if(gc[b][1].exec(d)){a._f+=gc[b][0];break}d.match(Vb)&&(a._f+="Z"),W(a)}else a._isValid=!1}function _(a){$(a),a._isValid===!1&&(delete a._isValid,tb.createFromInputFallback(a))}function ab(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function bb(b){var c,d=b._i;d===a?b._d=new Date:v(d)?b._d=new Date(+d):null!==(c=Kb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?_(b):u(d)?(b._a=ab(d.slice(0),function(a){return parseInt(a,10)}),T(b)):"object"==typeof d?U(b):"number"==typeof d?b._d=new Date(d):tb.createFromInputFallback(b)}function cb(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function db(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function eb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function fb(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function gb(a,b,c){var d=tb.duration(a).abs(),e=yb(d.as("s")),f=yb(d.as("m")),g=yb(d.as("h")),h=yb(d.as("d")),i=yb(d.as("M")),j=yb(d.as("y")),k=e<mc.s&&["s",e]||1===f&&["m"]||f<mc.m&&["mm",f]||1===g&&["h"]||g<mc.h&&["hh",g]||1===h&&["d"]||h<mc.d&&["dd",h]||1===i&&["M"]||i<mc.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,fb.apply({},k)}function hb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=tb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ib(a,b,c,d,e){var f,g,h=db(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:D(a-1)+g}}function jb(b){var c,d=b._i,e=b._f;return b._locale=b._locale||tb.localeData(b._l),null===d||e===a&&""===d?tb.invalid({nullInput:!0}):("string"==typeof d&&(b._i=d=b._locale.preparse(d)),tb.isMoment(d)?new k(d,!0):(e?u(e)?Z(b):W(b):bb(b),c=new k(b),c._nextDay&&(c.add(1,"d"),c._nextDay=a),c))}function kb(a,b){var c,d;if(1===b.length&&u(b[0])&&(b=b[0]),!b.length)return tb();for(c=b[0],d=1;d<b.length;++d)b[d][a](c)&&(c=b[d]);return c}function lb(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),B(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function mb(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function nb(a,b,c){return"Month"===b?lb(a,c):a._d["set"+(a._isUTC?"UTC":"")+b](c)}function ob(a,b){return function(c){return null!=c?(nb(this,a,c),tb.updateOffset(this,b),this):mb(this,a)}}function pb(a){return 400*a/146097}function qb(a){return 146097*a/400}function rb(a){tb.duration.fn[a]=function(){return this._data[a]}}function sb(a){"undefined"==typeof ender&&(ub=xb.moment,xb.moment=a?f("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.",tb):tb)}for(var tb,ub,vb,wb="2.8.4",xb="undefined"!=typeof global?global:this,yb=Math.round,zb=Object.prototype.hasOwnProperty,Ab=0,Bb=1,Cb=2,Db=3,Eb=4,Fb=5,Gb=6,Hb={},Ib=[],Jb="undefined"!=typeof module&&module&&module.exports,Kb=/^\/?Date\((\-?\d+)/i,Lb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Mb=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Nb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Ob=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pb=/\d\d?/,Qb=/\d{1,3}/,Rb=/\d{1,4}/,Sb=/[+\-]?\d{1,6}/,Tb=/\d+/,Ub=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Vb=/Z|[\+\-]\d\d:?\d\d/gi,Wb=/T/i,Xb=/[\+\-]?\d+/,Yb=/[\+\-]?\d+(\.\d{1,3})?/,Zb=/\d/,$b=/\d\d/,_b=/\d{3}/,ac=/\d{4}/,bc=/[+-]?\d{6}/,cc=/[+-]?\d+/,dc=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ec="YYYY-MM-DDTHH:mm:ssZ",fc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],gc=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],hc=/([\+\-]|\d\d)/gi,ic=("Date|Hours|Minutes|Seconds|Milliseconds".split("|"),{Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6}),jc={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},kc={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},lc={},mc={s:45,m:45,h:22,d:26,M:11},nc="DDD w W M D d".split(" "),oc="M D H h m s w W".split(" "),pc={M:function(){return this.month()+1},MMM:function(a){return this.localeData().monthsShort(this,a)},MMMM:function(a){return this.localeData().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.localeData().weekdaysMin(this,a)},ddd:function(a){return this.localeData().weekdaysShort(this,a)},dddd:function(a){return this.localeData().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return p(this.year()%100,2)},YYYY:function(){return p(this.year(),4)},YYYYY:function(){return p(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+p(Math.abs(a),6)},gg:function(){return p(this.weekYear()%100,2)},gggg:function(){return p(this.weekYear(),4)},ggggg:function(){return p(this.weekYear(),5)},GG:function(){return p(this.isoWeekYear()%100,2)},GGGG:function(){return p(this.isoWeekYear(),4)},GGGGG:function(){return p(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return A(this.milliseconds()/100)},SS:function(){return p(A(this.milliseconds()/10),2)},SSS:function(){return p(this.milliseconds(),3)},SSSS:function(){return p(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+":"+p(A(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+p(A(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},qc={},rc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];nc.length;)vb=nc.pop(),pc[vb+"o"]=i(pc[vb],vb);for(;oc.length;)vb=oc.pop(),pc[vb+vb]=h(pc[vb],2);pc.DDDD=h(pc.DDD,3),m(j.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=tb.utc([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=tb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.apply(b,[c]):d},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(a){return a},postformat:function(a){return a},week:function(a){return hb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),tb=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=c,g._l=e,g._strict=f,g._isUTC=!1,g._pf=d(),jb(g)},tb.suppressDeprecationWarnings=!1,tb.createFromInputFallback=f("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),tb.min=function(){var a=[].slice.call(arguments,0);return kb("isBefore",a)},tb.max=function(){var a=[].slice.call(arguments,0);return kb("isAfter",a)},tb.utc=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=c,g._strict=f,g._pf=d(),jb(g).utc()},tb.unix=function(a){return tb(1e3*a)},tb.duration=function(a,b){var d,e,f,g,h=a,i=null;return tb.isDuration(a)?h={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(h={},b?h[b]=a:h.milliseconds=a):(i=Lb.exec(a))?(d="-"===i[1]?-1:1,h={y:0,d:A(i[Cb])*d,h:A(i[Db])*d,m:A(i[Eb])*d,s:A(i[Fb])*d,ms:A(i[Gb])*d}):(i=Mb.exec(a))?(d="-"===i[1]?-1:1,f=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*d},h={y:f(i[2]),M:f(i[3]),d:f(i[4]),h:f(i[5]),m:f(i[6]),s:f(i[7]),w:f(i[8])}):"object"==typeof h&&("from"in h||"to"in h)&&(g=r(tb(h.from),tb(h.to)),h={},h.ms=g.milliseconds,h.M=g.months),e=new l(h),tb.isDuration(a)&&c(a,"_locale")&&(e._locale=a._locale),e},tb.version=wb,tb.defaultFormat=ec,tb.ISO_8601=function(){},tb.momentProperties=Ib,tb.updateOffset=function(){},tb.relativeTimeThreshold=function(b,c){return mc[b]===a?!1:c===a?mc[b]:(mc[b]=c,!0)},tb.lang=f("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return tb.locale(a,b)}),tb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?tb.defineLocale(a,b):tb.localeData(a),c&&(tb.duration._locale=tb._locale=c)),tb._locale._abbr},tb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Hb[a]||(Hb[a]=new j),Hb[a].set(b),tb.locale(a),Hb[a]):(delete Hb[a],null)},tb.langData=f("moment.langData is deprecated. Use moment.localeData instead.",function(a){return tb.localeData(a)}),tb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return tb._locale;if(!u(a)){if(b=J(a))return b;a=[a]}return I(a)},tb.isMoment=function(a){return a instanceof k||null!=a&&c(a,"_isAMomentObject")},tb.isDuration=function(a){return a instanceof l};for(vb=rc.length-1;vb>=0;--vb)z(rc[vb]);tb.normalizeUnits=function(a){return x(a)},tb.invalid=function(a){var b=tb.utc(0/0);return null!=a?m(b._pf,a):b._pf.userInvalidated=!0,b},tb.parseZone=function(){return tb.apply(null,arguments).parseZone()},tb.parseTwoDigitYear=function(a){return A(a)+(A(a)>68?1900:2e3)},m(tb.fn=k.prototype,{clone:function(){return tb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=tb(this).utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():N(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):N(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return G(this)},isDSTShifted:function(){return this._a?this.isValid()&&w(this._a,(this._isUTC?tb.utc(this._a):tb(this._a)).toArray())>0:!1},parsingFlags:function(){return m({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._dateTzOffset(),"m")),this},format:function(a){var b=N(this,a||tb.defaultFormat);return this.localeData().postformat(b)},add:s(1,"add"),subtract:s(-1,"subtract"),diff:function(a,b,c){var d,e,f,g=K(a,this),h=6e4*(this.zone()-g.zone());return b=x(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+g.daysInMonth()),e=12*(this.year()-g.year())+(this.month()-g.month()),f=this-tb(this).startOf("month")-(g-tb(g).startOf("month")),f-=6e4*(this.zone()-tb(this).startOf("month").zone()-(g.zone()-tb(g).startOf("month").zone())),e+=f/d,"year"===b&&(e/=12)):(d=this-g,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-h)/864e5:"week"===b?(d-h)/6048e5:d),c?e:o(e)},from:function(a,b){return tb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(tb(),a)},calendar:function(a){var b=a||tb(),c=K(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this,tb(b)))},isLeapYear:function(){return E(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=eb(a,this.localeData()),this.add(a-b,"d")):b},month:ob("Month",!0),startOf:function(a){switch(a=x(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(b){return b=x(b),b===a||"millisecond"===b?this:this.startOf(b).add(1,"isoWeek"===b?"week":b).subtract(1,"ms")},isAfter:function(a,b){var c;return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this>+a):(c=tb.isMoment(a)?+a:+tb(a),c<+this.clone().startOf(b))},isBefore:function(a,b){var c;return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+a>+this):(c=tb.isMoment(a)?+a:+tb(a),+this.clone().endOf(b)<c)},isSame:function(a,b){var c;return b=x(b||"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this===+a):(c=+tb(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))},min:f("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),this>a?this:a}),max:f("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._dateTzOffset():("string"==typeof a&&(a=Q(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._dateTzOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?t(this,tb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,tb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?tb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return B(this.year(),this.month())},dayOfYear:function(a){var b=yb((tb(this).startOf("day")-tb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=hb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=hb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=hb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return C(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return C(this.year(),a.dow,a.doy)},get:function(a){return a=x(a),this[a]()},set:function(a,b){return a=x(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){var c;return b===a?this._locale._abbr:(c=tb.localeData(b),null!=c&&(this._locale=c),this)},lang:f("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(b){return b===a?this.localeData():this.locale(b)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),tb.fn.millisecond=tb.fn.milliseconds=ob("Milliseconds",!1),tb.fn.second=tb.fn.seconds=ob("Seconds",!1),tb.fn.minute=tb.fn.minutes=ob("Minutes",!1),tb.fn.hour=tb.fn.hours=ob("Hours",!0),tb.fn.date=ob("Date",!0),tb.fn.dates=f("dates accessor is deprecated. Use date instead.",ob("Date",!0)),tb.fn.year=ob("FullYear",!0),tb.fn.years=f("years accessor is deprecated. Use year instead.",ob("FullYear",!0)),tb.fn.days=tb.fn.day,tb.fn.months=tb.fn.month,tb.fn.weeks=tb.fn.week,tb.fn.isoWeeks=tb.fn.isoWeek,tb.fn.quarters=tb.fn.quarter,tb.fn.toJSON=tb.fn.toISOString,m(tb.duration.fn=l.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=o(d/1e3),g.seconds=a%60,b=o(a/60),g.minutes=b%60,c=o(b/60),g.hours=c%24,e+=o(c/24),h=o(pb(e)),e-=o(qb(h)),f+=o(e/30),e%=30,h+=o(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return o(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*A(this._months/12)},humanize:function(a){var b=gb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=tb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=tb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=x(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=x(a),"month"===a||"year"===a)return b=this._days+this._milliseconds/864e5,c=this._months+12*pb(b),"month"===a?c:c/12;switch(b=this._days+Math.round(qb(this._months/12)),a){case"week":return b/7+this._milliseconds/6048e5;case"day":return b+this._milliseconds/864e5;case"hour":return 24*b+this._milliseconds/36e5;case"minute":return 24*b*60+this._milliseconds/6e4;case"second":return 24*b*60*60+this._milliseconds/1e3;
2304 2304 case"millisecond":return Math.floor(24*b*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+a)}},lang:tb.fn.lang,locale:tb.fn.locale,toIsoString:f("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}}),tb.duration.fn.toString=tb.duration.fn.toISOString;for(vb in ic)c(ic,vb)&&rb(vb.toLowerCase());tb.duration.fn.asMilliseconds=function(){return this.as("ms")},tb.duration.fn.asSeconds=function(){return this.as("s")},tb.duration.fn.asMinutes=function(){return this.as("m")},tb.duration.fn.asHours=function(){return this.as("h")},tb.duration.fn.asDays=function(){return this.as("d")},tb.duration.fn.asWeeks=function(){return this.as("weeks")},tb.duration.fn.asMonths=function(){return this.as("M")},tb.duration.fn.asYears=function(){return this.as("y")},tb.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===A(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),Jb?module.exports=tb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(xb.moment=ub),tb}),sb(!0)):sb()}).call(this);
2305 2305 ;!function(){function n(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function t(n){return null===n?0/0:+n}function e(n){return!isNaN(n)}function r(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function u(n){return n.length}function i(n){for(var t=1;n*t%1;)t*=10;return t}function o(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function a(){this._=Object.create(null)}function c(n){return(n+="")===da||n[0]===ma?ma+n:n}function l(n){return(n+="")[0]===ma?n.slice(1):n}function s(n){return c(n)in this._}function f(n){return(n=c(n))in this._&&delete this._[n]}function h(){var n=[];for(var t in this._)n.push(l(t));return n}function g(){var n=0;for(var t in this._)++n;return n}function p(){for(var n in this._)return!1;return!0}function v(){this._=Object.create(null)}function d(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function m(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=ya.length;r>e;++e){var u=ya[e]+t;if(u in n)return u}}function y(){}function M(){}function x(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new a;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function b(){ta.event.preventDefault()}function _(){for(var n,t=ta.event;n=t.sourceEvent;)t=n;return t}function w(n){for(var t=new M,e=0,r=arguments.length;++e<r;)t[arguments[e]]=x(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=ta.event;u.target=n,ta.event=u,t[u.type].apply(e,r)}finally{ta.event=i}}},t}function S(n){return xa(n,ka),n}function k(n){return"function"==typeof n?n:function(){return ba(n,this)}}function E(n){return"function"==typeof n?n:function(){return _a(n,this)}}function A(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ta.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?i:u}function N(n){return n.trim().replace(/\s+/g," ")}function C(n){return new RegExp("(?:^|\\s+)"+ta.requote(n)+"(?:\\s+|$)","g")}function z(n){return(n+"").trim().split(/^|\s+/)}function q(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=z(n).map(L);var u=n.length;return"function"==typeof t?r:e}function L(n){var t=C(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(u)||e.setAttribute("class",N(u+" "+n))):e.setAttribute("class",N(u.replace(t," ")))}}function T(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?i:u}function R(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?u:r}function D(n){return"function"==typeof n?n:(n=ta.ns.qualify(n)).local?function(){return this.ownerDocument.createElementNS(n.space,n.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,n)}}function P(){var n=this.parentNode;n&&n.removeChild(this)}function U(n){return{__data__:n}}function j(n){return function(){return Sa(this,n)}}function F(t){return arguments.length||(t=n),function(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}}function H(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function O(n){return xa(n,Aa),n}function Y(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function I(n){var t=n.__transition__;t&&++t.active}function Z(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,ra(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp("^__on([^.]+)"+ta.requote(n)+"$");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),c=V;a>0&&(n=n.slice(0,a));var l=Ca.get(n);return l&&(n=l,c=X),a?t?u:r:t?y:i}function V(n,t){return function(e){var r=ta.event;ta.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ta.event=r}}}function X(n,t){var e=V(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function $(){var n=".dragsuppress-"+ ++qa,t="click"+n,e=ta.select(oa).on("touchmove"+n,b).on("dragstart"+n,b).on("selectstart"+n,b);if(za){var r=ia.style,u=r[za];r[za]="none"}return function(i){if(e.on(n,null),za&&(r[za]=u),i){var o=function(){e.on(t,null)};e.on(t,function(){b(),o()},!0),setTimeout(o,0)}}}function B(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>La&&(oa.scrollX||oa.scrollY)){e=ta.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();La=!(u.f||u.e),e.remove()}return La?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function W(){return ta.event.changedTouches[0].identifier}function J(){return ta.event.target}function G(){return oa}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?Da:Math.acos(n)}function tt(n){return n>1?ja:-1>n?-ja:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):bt(""+n,_t,at):new at(n,t,e)}function ct(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function lt(n,t,e){return this instanceof lt?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof lt?new lt(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=ta.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new lt(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=Fa)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof lt?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Ja,r=pt(r)*Ga,i=pt(i)*Ka,new mt(dt(3.2404542*u-1.5371385*r-.4985314*i),dt(-.969266*u+1.8760108*r+.041556*i),dt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new lt(Math.atan2(e,t)*Ha,Math.sqrt(t*t+e*e),n):new lt(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function dt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):bt(""+n,mt,ct):new mt(n,t,e)}function yt(n){return new mt(n>>16,255&n>>8,255&n)}function Mt(n){return yt(n)+""}function xt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=tc.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function _t(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new at(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=vt((.4124564*n+.3575761*t+.1804375*e)/Ja),u=vt((.2126729*n+.7151522*t+.072175*e)/Ga),i=vt((.0193339*n+.119192*t+.9503041*e)/Ka);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function At(n){return n}function Nt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Ct(t,e,n,r)}}function Ct(n,t,e,r){function u(){var n,t=c.status;if(!t&&qt(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=ta.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!oa.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=ta.event;ta.event=n;try{o.progress.call(i,c)}finally{ta.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ra(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},ta.rebind(i,o,"on"),null==r?i:i.get(zt(r))}function zt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function qt(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function Lt(){var n=Tt(),t=Rt()-n;t>24?(isFinite(t)&&(clearTimeout(ic),ic=setTimeout(Lt,t)),uc=0):(uc=1,ac(Lt))}function Tt(){var n=Date.now();for(oc=ec;oc;)n>=oc.t&&(oc.f=oc.c(n-oc.t)),oc=oc.n;return n}function Rt(){for(var n,t=ec,e=1/0;t;)t.f?t=n?n.n=t.n:ec=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return rc=n,e}function Dt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Pt(n,t){var e=Math.pow(10,3*va(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Ut(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],c=0;u>0&&a>0&&(c+a+1>t&&(a=Math.max(1,t-c)),i.push(n.substring(u-=a,u+a)),!((c+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:At;return function(n){var e=lc.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",c=e[4]||"",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=sc.get(g)||jt;var M=l&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>p){var c=ta.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!l&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===o?u+n+k:">"===o?k+u+n:"^"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function jt(n){return n+""}function Ft(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ht(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new hc(e-1)),1),e}function i(n,e){return t(n=new hc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{hc=Ft;var r=new Ft;return r._=n,o(r,t,e)}finally{hc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ot(n);return c.floor=c,c.round=Ot(r),c.ceil=Ot(u),c.offset=Ot(i),c.range=a,n}function Ot(n){return function(t,e){try{hc=Ft;var r=new Ft;return r._=t,n(r,e)._}finally{hc=Date}}}function Yt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(c,a)),null!=(u=pc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=N[e])&&(e=i(t,null==u?"e"===e?" ":"0":u)),o.push(e),c=a+1);return o.push(n.slice(c,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&hc!==Ft,o=new(i?Ft:hc);return"j"in r?o.setFullYear(r.y,0,r.j):"w"in r&&("W"in r||"U"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(0|r.Z/100),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in pc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function c(n,t,r){return e(n,N.x.toString(),t,r)}function l(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{hc=Ft;var t=new hc;return t._=n,r(t)}finally{hc=Date}}var r=t(n);return e.parse=function(n){try{hc=Ft;var t=r.parse(n);return t&&t._}finally{hc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ce;var M=ta.map(),x=Zt(v),b=Vt(v),_=Zt(d),w=Vt(d),S=Zt(m),k=Vt(m),E=Zt(y),A=Vt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return It(n.getDate(),t,2)},e:function(n,t){return It(n.getDate(),t,2)},H:function(n,t){return It(n.getHours(),t,2)},I:function(n,t){return It(n.getHours()%12||12,t,2)},j:function(n,t){return It(1+fc.dayOfYear(n),t,3)},L:function(n,t){return It(n.getMilliseconds(),t,3)},m:function(n,t){return It(n.getMonth()+1,t,2)},M:function(n,t){return It(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return It(n.getSeconds(),t,2)},U:function(n,t){return It(fc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return It(fc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return It(n.getFullYear()%100,t,2)},Y:function(n,t){return It(n.getFullYear()%1e4,t,4)},Z:oe,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:ne,e:ne,H:ee,I:ee,j:te,L:ie,m:Qt,M:re,p:s,S:ue,U:$t,w:Xt,W:Bt,x:c,X:l,y:Jt,Y:Wt,Z:Gt,"%":ae};return t}function It(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Zt(n){return new RegExp("^(?:"+n.map(ta.requote).join("|")+")","i")}function Vt(n){for(var t=new a,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Xt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function $t(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Bt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Wt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Jt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.y=Kt(+r[0]),e+r[0].length):-1}function Gt(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Kt(n){return n+(n>68?1900:2e3)}function Qt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function ne(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function te(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function ee(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function re(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ue(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ie(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oe(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=0|va(t)/60,u=va(t)%60;return e+It(r,"0",2)+It(u,"0",2)}function ae(n,t,e){dc.lastIndex=0;var r=dc.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ce(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function le(){}function se(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function fe(n,t){n&&xc.hasOwnProperty(n.type)&&xc[n.type](n,t)}function he(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function ge(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)he(n[e],t,1);t.polygonEnd()}function pe(){function n(n,t){n*=Fa,t=t*Fa/2+Da/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);_c.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;wc.point=function(o,a){wc.point=n,r=(t=o)*Fa,u=Math.cos(a=(e=a)*Fa/2+Da/4),i=Math.sin(a)},wc.lineEnd=function(){n(t,e)}}function ve(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function de(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function me(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function ye(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function Me(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function xe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function be(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function _e(n,t){return va(n[0]-t[0])<Ta&&va(n[1]-t[1])<Ta}function we(n,t){n*=Fa;var e=Math.cos(t*=Fa);Se(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function Se(n,t,e){++Sc,Ec+=(n-Ec)/Sc,Ac+=(t-Ac)/Sc,Nc+=(e-Nc)/Sc}function ke(){function n(n,u){n*=Fa;var i=Math.cos(u*=Fa),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),l=Math.atan2(Math.sqrt((l=e*c-r*a)*l+(l=r*o-t*c)*l+(l=t*a-e*o)*l),t*o+e*a+r*c);kc+=l,Cc+=l*(t+(t=o)),zc+=l*(e+(e=a)),qc+=l*(r+(r=c)),Se(t,e,r)}var t,e,r;Dc.point=function(u,i){u*=Fa;var o=Math.cos(i*=Fa);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),Dc.point=n,Se(t,e,r)}}function Ee(){Dc.point=we}function Ae(){function n(n,t){n*=Fa;var e=Math.cos(t*=Fa),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),l=u*c-i*a,s=i*o-r*c,f=r*a-u*o,h=Math.sqrt(l*l+s*s+f*f),g=r*o+u*a+i*c,p=h&&-nt(g)/h,v=Math.atan2(h,g);Lc+=p*l,Tc+=p*s,Rc+=p*f,kc+=v,Cc+=v*(r+(r=o)),zc+=v*(u+(u=a)),qc+=v*(i+(i=c)),Se(r,u,i)}var t,e,r,u,i;Dc.point=function(o,a){t=o,e=a,Dc.point=n,o*=Fa;var c=Math.cos(a*=Fa);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),Se(r,u,i)},Dc.lineEnd=function(){n(t,e),Dc.lineEnd=Ee,Dc.point=we}}function Ne(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Ce(){return!0}function ze(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(_e(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new Le(e,n,null,!0),l=new Le(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new Le(r,n,null,!1),l=new Le(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),qe(i),qe(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qe(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function Le(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Te(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function l(){y.point=o,d.lineEnd()}function s(n,t){v.push([n,t]);var e=u(n,t);x.point(e[0],e[1])}function f(){x.lineStart(),v=[]}function h(){s(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r)if(1&t){n=e[0];var u,r=n.length-1,o=-1;if(r>0){for(b||(i.polygonStart(),b=!0),i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);i.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Re))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=ta.merge(g);var n=He(m,p);g.length?(b||(i.polygonStart(),b=!0),ze(g,Pe,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=De(),x=t(M),b=!1;return y}}function Re(n){return n.length>1}function De(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:y,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Pe(n,t){return((n=n.x)[0]<0?n[1]-ja-Ta:ja-n[1])-((t=t.x)[0]<0?t[1]-ja-Ta:ja-t[1])}function Ue(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Da:-Da,c=va(i-e);va(c-Da)<Ta?(n.point(e,r=(r+o)/2>0?ja:-ja),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Da&&(va(e-u)<Ta&&(e-=u*Ta),va(i-a)<Ta&&(i-=a*Ta),r=je(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function je(n,t,e,r){var u,i,o=Math.sin(n-e);return va(o)>Ta?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function Fe(n,t,e,r){var u;if(null==n)u=e*ja,r.point(-Da,u),r.point(0,u),r.point(Da,u),r.point(Da,0),r.point(Da,-u),r.point(0,-u),r.point(-Da,-u),r.point(-Da,0),r.point(-Da,u);else if(va(n[0]-t[0])>Ta){var i=n[0]<t[0]?Da:-Da;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function He(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;_c.reset();for(var a=0,c=t.length;c>a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+Da/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+Da/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>Da,k=p*M;if(_c.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Pa:b,S^h>=e^m>=e){var E=me(ve(f),ve(n));xe(E);var A=me(u,E);xe(A);var N=(S^b>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Ta>i||Ta>i&&0>_c)^1&o}function Oe(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Da:-Da),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(_e(e,g)||_e(p,g))&&(p[0]+=Ta,p[1]+=Ta,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&_e(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=ve(n),u=ve(t),o=[1,0,0],a=me(r,u),c=de(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=me(o,a),p=Me(o,f),v=Me(a,h);ye(p,v);var d=g,m=de(p,d),y=de(d,d),M=m*m-y*(de(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=Me(d,(-m-x)/y);if(ye(b,p),b=be(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=va(A-Da)<Ta,C=N||Ta>A;if(!N&&k>E&&(_=k,k=E,E=_),C?N?k+E>0^b[1]<(va(b[0]-w)<Ta?k:E):k<=b[1]&&b[1]<=E:A>Da^(w<=b[0]&&b[0]<=S)){var z=Me(d,(-m+x)/y);return ye(z,p),[b,be(z)]}}}function u(t,e){var r=o?n:Da-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=va(i)>Ta,c=pr(n,6*Fa);return Te(t,e,c,o?[0,-n]:[-Da,n-Da])}function Ye(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function Ie(n,t,e,r){function u(r,u){return va(r[0]-n)<Ta?u>0?0:3:va(r[0]-e)<Ta?u>0?2:1:va(r[1]-t)<Ta?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&Q(l,i,n)>0&&++t:i[1]<=r&&Q(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=0/0}function g(){v&&(p(y,M),x&&w&&A.rejoin(),v.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Uc,Math.min(Uc,n)),t=Math.max(-Uc,Math.min(Uc,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,E=a,A=De(),N=Ye(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=ta.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&ze(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return C}}function Ze(n){var t=0,e=Da/3,r=or(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Da/180,e=n[1]*Da/180):[180*(t/Da),180*(e/Da)]},u}function Ve(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Xe(){function n(n,t){Fc+=u*n-r*t,r=n,u=t}var t,e,r,u;Zc.point=function(i,o){Zc.point=n,t=r=i,e=u=o},Zc.lineEnd=function(){n(t,e)}}function $e(n,t){Hc>n&&(Hc=n),n>Yc&&(Yc=n),Oc>t&&(Oc=t),t>Ic&&(Ic=t)}function Be(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=We(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=We(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function We(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Je(n,t){Ec+=n,Ac+=t,++Nc}function Ge(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Cc+=o*(t+n)/2,zc+=o*(e+r)/2,qc+=o,Je(t=n,e=r)}var t,e;Xc.point=function(r,u){Xc.point=n,Je(t=r,e=u)}}function Ke(){Xc.point=Je}function Qe(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Cc+=o*(r+n)/2,zc+=o*(u+t)/2,qc+=o,o=u*n-r*t,Lc+=o*(r+n),Tc+=o*(u+t),Rc+=3*o,Je(r=n,u=t)}var t,e,r,u;Xc.point=function(i,o){Xc.point=n,Je(t=r=i,e=u=o)},Xc.lineEnd=function(){n(t,e)}}function nr(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Pa)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:y};return a}function tr(n){function t(n){return(a?r:e)(n)}function e(t){return ur(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=ve([e,r]),o=n(e,r);u(M,x,y,b,_,w,M=o[0],x=o[1],y=e,b=i[0],_=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=a+g,_=c+p,w=l+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),E=va(va(w)-1)<Ta||va(r-h)<Ta?(r+h)/2:Math.atan2(_,b),A=n(E,k),N=A[0],C=A[1],z=N-t,q=C-e,L=M*z-y*q;
2306 2306 (L*L/x>i||va((y*z+M*q)/x-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,N,C,E,b/=S,_/=S,w,d,m),m.point(N,C),u(N,C,E,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Fa),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function er(n){var t=tr(function(t,e){return n([t*Ha,e*Ha])});return function(n){return ar(t(n))}}function rr(n){this.stream=n}function ur(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ir(n){return or(function(){return n})()}function or(n){function t(n){return n=a(n[0]*Fa,n[1]*Fa),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Ha,n[1]*Ha]}function r(){a=Ne(o=sr(m,y,M),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=tr(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,M=0,x=Pc,b=At,_=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=ar(x(o,f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(x=null==n?(_=n,Pc):Oe((_=+n)*Fa),u()):_},t.clipExtent=function(n){return arguments.length?(w=n,b=n?Ie(n[0][0],n[0][1],n[1][0],n[1][1]):At,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Fa,d=n[1]%360*Fa,r()):[v*Ha,d*Ha]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Fa,y=n[1]%360*Fa,M=n.length>2?n[2]%360*Fa:0,r()):[m*Ha,y*Ha,M*Ha]},ta.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function ar(n){return ur(n,function(t,e){n.point(t*Fa,e*Fa)})}function cr(n,t){return[n,t]}function lr(n,t){return[n>Da?n-Pa:-Da>n?n+Pa:n,t]}function sr(n,t,e){return n?t||e?Ne(hr(n),gr(t,e)):hr(n):t||e?gr(t,e):lr}function fr(n){return function(t,e){return t+=n,[t>Da?t-Pa:-Da>t?t+Pa:t,e]}}function hr(n){var t=fr(n);return t.invert=fr(-n),t}function gr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),tt(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),tt(s*r-a*u)]},e}function pr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=vr(e,u),i=vr(e,i),(o>0?i>u:u>i)&&(u+=o*Pa)):(u=n+o*Pa,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=be([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function vr(n,t){var e=ve(t);e[0]-=n,xe(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ta)%(2*Math.PI)}function dr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function mr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function yr(n){return n.source}function Mr(n){return n.target}function xr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ha,Math.atan2(o,Math.sqrt(r*r+u*u))*Ha]}:function(){return[n*Ha,t*Ha]};return p.distance=h,p}function br(){function n(n,u){var i=Math.sin(u*=Fa),o=Math.cos(u),a=va((n*=Fa)-t),c=Math.cos(a);$c+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Bc.point=function(u,i){t=u*Fa,e=Math.sin(i*=Fa),r=Math.cos(i),Bc.point=n},Bc.lineEnd=function(){Bc.point=Bc.lineEnd=y}}function _r(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function wr(n,t){function e(n,t){o>0?-ja+Ta>t&&(t=-ja+Ta):t>ja-Ta&&(t=ja-Ta);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Da/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-ja]},e):kr}function Sr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return va(u)<Ta?cr:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-K(u)*Math.sqrt(n*n+e*e)]},e)}function kr(n,t){return[n,Math.log(Math.tan(Da/4+t/2))]}function Er(n){var t,e=ir(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Da*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ar(n,t){return[Math.log(Math.tan(Da/4+t/2)),-n]}function Nr(n){return n[0]}function Cr(n){return n[1]}function zr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qr(n,t){return n[0]-t[0]||n[1]-t[1]}function Lr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Tr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function Rr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Dr(){eu(this),this.edge=this.site=this.circle=null}function Pr(n){var t=ol.pop()||new Dr;return t.site=n,t}function Ur(n){$r(n),rl.remove(n),ol.push(n),eu(n)}function jr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Ur(n);for(var c=i;c.circle&&va(e-c.circle.x)<Ta&&va(r-c.circle.cy)<Ta;)i=c.P,a.unshift(c),Ur(c),c=i;a.unshift(c),$r(c);for(var l=o;l.circle&&va(e-l.circle.x)<Ta&&va(r-l.circle.cy)<Ta;)o=l.N,a.push(l),Ur(l),l=o;a.push(l),$r(l);var s,f=a.length;for(s=1;f>s;++s)l=a[s],c=a[s-1],Qr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=Gr(c.site,l.site,null,u),Xr(c),Xr(l)}function Fr(n){for(var t,e,r,u,i=n.x,o=n.y,a=rl._;a;)if(r=Hr(a,o)-i,r>Ta)a=a.L;else{if(u=i-Or(a,o),!(u>Ta)){r>-Ta?(t=a.P,e=a):u>-Ta?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Pr(n);if(rl.insert(t,c),t||e){if(t===e)return $r(t),e=Pr(t.site),rl.insert(c,e),c.edge=e.edge=Gr(t.site,c.site),Xr(t),Xr(e),void 0;if(!e)return c.edge=Gr(t.site,c.site),void 0;$r(t),$r(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};Qr(e.edge,l,p,x),c.edge=Gr(l,n,null,x),e.edge=Gr(n,p,null,x),Xr(t),Xr(e)}}function Hr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Or(n,t){var e=n.N;if(e)return Hr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Yr(n){this.site=n,this.edges=[]}function Ir(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=el,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(va(r-t)>Ta||va(u-e)>Ta)&&(a.splice(o,0,new nu(Kr(i.site,s,va(r-f)<Ta&&p-u>Ta?{x:f,y:va(t-f)<Ta?e:p}:va(u-p)<Ta&&h-r>Ta?{x:va(e-p)<Ta?t:h,y:p}:va(r-h)<Ta&&u-g>Ta?{x:h,y:va(t-h)<Ta?e:g}:va(u-g)<Ta&&r-f>Ta?{x:va(e-g)<Ta?t:f,y:g}:null),i.site,null)),++c)}function Zr(n,t){return t.angle-n.angle}function Vr(){eu(this),this.x=this.y=this.arc=this.site=this.cy=null}function Xr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,l=r.y-a,s=i.x-o,f=i.y-a,h=2*(c*f-l*s);if(!(h>=-Ra)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=al.pop()||new Vr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=il._;M;)if(m.y<M.y||m.y===M.y&&m.x<=M.x){if(!M.L){y=M.P;break}M=M.L}else{if(!M.R){y=M;break}M=M.R}il.insert(y,m),y||(ul=m)}}}}function $r(n){var t=n.circle;t&&(t.P||(ul=t.N),il.remove(t),al.push(t),eu(t),n.circle=null)}function Br(n){for(var t,e=tl,r=Ye(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Wr(t,n)||!r(t)||va(t.a.x-t.b.x)<Ta&&va(t.a.y-t.b.y)<Ta)&&(t.a=t.b=null,e.splice(u,1))}function Wr(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],l=t[1][1],s=n.l,f=n.r,h=s.x,g=s.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.y<c)return}else i={x:d,y:l};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.y<c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Jr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Gr(n,t,e,r){var u=new Jr(n,t);return tl.push(u),e&&Qr(u,n,t,e),r&&Qr(u,t,n,r),el[n.i].edges.push(new nu(u,n,t)),el[t.i].edges.push(new nu(u,t,n)),u}function Kr(n,t,e){var r=new Jr(n,null);return r.a=t,r.b=e,tl.push(r),r}function Qr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function nu(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function tu(){this._=null}function eu(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ru(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function uu(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function iu(n){for(;n.L;)n=n.L;return n}function ou(n,t){var e,r,u,i=n.sort(au).pop();for(tl=[],el=new Array(n.length),rl=new tu,il=new tu;;)if(u=ul,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(el[i.i]=new Yr(i),Fr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;jr(u.arc)}t&&(Br(t),Ir(t));var o={cells:el,edges:tl};return rl=il=tl=el=null,o}function au(n,t){return t.y-n.y||t.x-n.x}function cu(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function lu(n){return n.x}function su(n){return n.y}function fu(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function hu(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&hu(n,c[0],e,r,o,a),c[1]&&hu(n,c[1],o,r,u,a),c[2]&&hu(n,c[2],e,a,o,i),c[3]&&hu(n,c[3],o,a,u,i)}}function gu(n,t,e,r,u,i,o){var a,c=1/0;return function l(n,s,f,h,g){if(!(s>i||f>o||r>h||u>g)){if(p=n.point){var p,v=t-p[0],d=e-p[1],m=v*v+d*d;if(c>m){var y=Math.sqrt(c=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:l(n,s,f,x,b);break;case 1:l(n,x,f,h,b);break;case 2:l(n,s,b,x,g);break;case 3:l(n,x,b,h,g)}}}(n,r,u,i,o),a}function pu(n,t){n=ta.rgb(n),t=ta.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function vu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=yu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function du(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mu(n,t){var e,r,u,i=ll.lastIndex=sl.lastIndex=0,o=-1,a=[],c=[];for(n+="",t+="";(e=ll.exec(n))&&(r=sl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:du(e,r)})),i=sl.lastIndex;return i<t.length&&(u=t.slice(i),a[o]?a[o]+=u:a[++o]=u),a.length<2?c[0]?(t=c[0].x,function(n){return t(n)+""}):function(){return t}:(t=c.length,function(n){for(var e,r=0;t>r;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function yu(n,t){for(var e,r=ta.interpolators.length;--r>=0&&!(e=ta.interpolators[r](n,t)););return e}function Mu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(yu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function xu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function bu(n){return function(t){return 1-n(1-t)}}function _u(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function wu(n){return n*n}function Su(n){return n*n*n}function ku(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Eu(n){return function(t){return Math.pow(t,n)}}function Au(n){return 1-Math.cos(n*ja)}function Nu(n){return Math.pow(2,10*(n-1))}function Cu(n){return 1-Math.sqrt(1-n*n)}function zu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Pa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Pa/t)}}function qu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Lu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Tu(n,t){n=ta.hcl(n),t=ta.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){n=ta.hsl(n),t=ta.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function Du(n,t){n=ta.lab(n),t=ta.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+""}}function Pu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Uu(n){var t=[n.a,n.b],e=[n.c,n.d],r=Fu(t),u=ju(t,e),i=Fu(Hu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Ha,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*Ha:0}function ju(n,t){return n[0]*t[0]+n[1]*t[1]}function Fu(n){var t=Math.sqrt(ju(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Hu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ou(n,t){var e,r=[],u=[],i=ta.transform(n),o=ta.transform(t),a=i.translate,c=o.translate,l=i.rotate,s=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push("translate(",null,",",null,")"),u.push({i:1,x:du(a[0],c[0])},{i:3,x:du(a[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),l!=s?(l-s>180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:du(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:du(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:du(g[0],p[0])},{i:e-2,x:du(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join("")}}function Yu(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Iu(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Zu(n){for(var t=n.source,e=n.target,r=Xu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Vu(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Xu(n,t){if(n===t)return n;for(var e=Vu(n),r=Vu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function $u(n){n.fixed|=2}function Bu(n){n.fixed&=-7}function Wu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Ju(n){n.fixed&=-5}function Gu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Gu(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,u+=l*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Ku(n,t){return ta.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=ui,n}function Qu(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(u=n.children)&&(r=u.length))for(var r,u;--r>=0;)e.push(u[r])}function ni(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++o<u;)e.push(i[o]);for(;null!=(n=r.pop());)t(n)}function ti(n){return n.children}function ei(n){return n.value}function ri(n,t){return t.value-n.value}function ui(n){return ta.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function ii(n){return n.x}function oi(n){return n.y}function ai(n,t,e){n.y0=t,n.y=e}function ci(n){return ta.range(n.length)}function li(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function si(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function fi(n){return n.reduce(hi,0)}function hi(n,t){return n+t[1]}function gi(n,t){return pi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function pi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function vi(n){return[ta.min(n),ta.max(n)]}function di(n,t){return n.value-t.value}function mi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function yi(n,t){n._pack_next=t,t._pack_prev=n}function Mi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function xi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(bi),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],Si(r,u,i),t(i),mi(r,i),r._pack_prev=i,mi(i,u),u=r._pack_next,o=3;l>o;o++){Si(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(Mi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Mi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?yi(r,u=a):yi(r=c,u),o--):(mi(r,i),u=i,t(i))}var m=(s+f)/2,y=(h+g)/2,M=0;for(o=0;l>o;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(_i)}}function bi(n){n._pack_next=n._pack_prev=n}function _i(n){delete n._pack_next,delete n._pack_prev}function wi(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)wi(u[i],t,e,r)}function Si(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),l=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+l*i,e.y=n.y+c*i-l*u}else e.x=n.x+r,e.y=n.y}function ki(n,t){return n.parent==t.parent?1:2}function Ei(n){var t=n.children;return t.length?t[0]:n.t}function Ai(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ni(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Ci(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function zi(n,t,e){return n.a.parent===t.parent?n.a:e}function qi(n){return 1+ta.max(n,function(n){return n.y})}function Li(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ti(n){var t=n.children;return t&&t.length?Ti(t[0]):n}function Ri(n){var t,e=n.children;return e&&(t=e.length)?Ri(e[t-1]):n}function Di(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Pi(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Ui(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function ji(n){return n.rangeExtent?n.rangeExtent():Ui(n.range())}function Fi(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Hi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Oi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:bl}function Yi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=ta.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Ii(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Yi:Fi,c=r?Iu:Yu;return o=u(n,t,c,e),a=u(t,n,c,yu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Pu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return $i(n,t)},i.tickFormat=function(t,e){return Bi(n,t,e)},i.nice=function(t){return Vi(n,t),u()},i.copy=function(){return Ii(n,t,e,r)},u()}function Zi(n,t){return ta.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Vi(n,t){return Hi(n,Oi(Xi(n,t)[2]))}function Xi(n,t){null==t&&(t=10);var e=Ui(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function $i(n,t){return ta.range.apply(ta,Xi(n,t))}function Bi(n,t,e){var r=Xi(n,t);if(e){var u=lc.exec(e);if(u.shift(),"s"===u[8]){var i=ta.formatPrefix(Math.max(va(r[0]),va(r[1])));return u[7]||(u[7]="."+Wi(i.scale(r[2]))),u[8]="f",e=ta.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Ji(u[8],r)),e=u.join("")}else e=",."+Wi(r[2])+"f";return ta.format(e)}function Wi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Ji(n,t){var e=Wi(t[2]);return n in _l?Math.abs(e-Wi(Math.max(va(t[0]),va(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Gi(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Hi(r.map(u),e?Math:Sl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Ui(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++<s;)for(var h=f-1;h>0;h--)o.push(i(l)*h);for(l=0;o[l]<a;l++);for(s=o.length;o[s-1]>c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return wl;arguments.length<2?t=wl:"function"!=typeof t&&(t=ta.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Gi(n.copy(),t,e,r)},Zi(o,n)}function Ki(n,t,e){function r(t){return n(u(t))}var u=Qi(t),i=Qi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return $i(e,n)},r.tickFormat=function(n,t){return Bi(e,n,t)},r.nice=function(n){return r.domain(Vi(e,n))},r.exponent=function(o){return arguments.length?(u=Qi(t=o),i=Qi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Ki(n.copy(),t,e)},Zi(r,n)}function Qi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function no(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return ta.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new a;for(var i,o=-1,c=r.length;++o<c;)u.has(i=r[o])||u.set(i,n.push(i));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(i=n,o=0,t={t:"range",a:arguments},e):i},e.rangePoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=(c+l)/2,0):(l-c)/(n.length-1+a);return i=r(c+s*a/2,s),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=l=Math.round((c+l)/2),0):0|(l-c)/(n.length-1+a);return i=r(c+Math.round(s*a/2+(l-c-(n.length-1+a)*s)/2),s),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=(f-s)/(n.length-a+2*c);return i=r(s+h*c,h),l&&i.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=Math.floor((f-s)/(n.length-a+2*c));return i=r(s+Math.round((f-s-(n.length-a)*h)/2),h),l&&i.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Ui(t.a[0])},e.copy=function(){return no(n,t)},e.domain(n)}function to(r,u){function i(){var n=0,t=u.length;for(a=[];++n<t;)a[n-1]=ta.quantile(r,n/t);return o}function o(n){return isNaN(n=+n)?void 0:u[ta.bisect(a,n)]}var a;return o.domain=function(u){return arguments.length?(r=u.map(t).filter(e).sort(n),i()):r},o.range=function(n){return arguments.length?(u=n,i()):u},o.quantiles=function(){return a},o.invertExtent=function(n){return n=u.indexOf(n),0>n?[0/0,0/0]:[n>0?a[n-1]:r[0],n<a.length?a[n]:r[r.length-1]]},o.copy=function(){return to(r,u)},i()}function eo(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return eo(n,t,e)},u()}function ro(n,t){function e(e){return e>=e?t[ta.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ro(n,t)},e}function uo(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return $i(n,t)},t.tickFormat=function(t,e){return Bi(n,t,e)},t.copy=function(){return uo(n)},t}function io(){return 0}function oo(n){return n.innerRadius}function ao(n){return n.outerRadius}function co(n){return n.startAngle}function lo(n){return n.endAngle}function so(n){return n&&n.padAngle}function fo(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function ho(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),c=a*o,l=-a*i,s=n[0]+c,f=n[1]+l,h=t[0]+c,g=t[1]+l,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,E=_-p,A=w-v,N=S-p,C=k-v;return E*E+A*A>N*N+C*C&&(_=S,w=k),[[_-c,w-l],[_*e/M,w*e/M]]}function go(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f<h;)u.call(this,c=t[f],f)?s.push([+g.call(this,c,f),+p.call(this,c,f)]):s.length&&(o(),s=[]);return s.length&&o(),l.length?l.join(""):null}var e=Nr,r=Cr,u=Ce,i=po,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?i=n:(i=zl.get(n)||po).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function po(n){return n.join("L")}function vo(n){return po(n)+"Z"}function mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&u.push("H",r[0]),u.join("")}function yo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("V",(r=n[t])[1],"H",r[0]);return u.join("")}function Mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r=n[t])[0],"V",r[1]);return u.join("")}function xo(n,t){return n.length<4?po(n):n[1]+wo(n.slice(1,-1),So(n,t))}function bo(n,t){return n.length<3?po(n):n[0]+wo((n.push(n[0]),n),So([n[n.length-2]].concat(n,[n[1]]),t))}function _o(n,t){return n.length<3?po(n):n[0]+wo(n,So(n,t))}function wo(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return po(n);var e=n.length!=t.length,r="",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+="Q"+(i[0]-2*o[0]/3)+","+(i[1]-2*o[1]/3)+","+i[0]+","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l<t.length;l++,c++)i=n[c],a=t[l],r+="S"+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1]}if(e){var s=n[c];r+="Q"+(i[0]+2*a[0]/3)+","+(i[1]+2*a[1]/3)+","+s[0]+","+s[1]}return r}function So(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function ko(n){if(n.length<3)return po(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,",",i,"L",Co(Tl,o),",",Co(Tl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),zo(c,o,a);return n.pop(),c.push("L",r),c.join("")}function Eo(n){if(n.length<4)return po(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(Co(Tl,i)+","+Co(Tl,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),zo(e,i,o);return e.join("")}function Ao(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[Co(Tl,o),",",Co(Tl,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),zo(t,o,a);return t.join("")}function No(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,l=-1;++l<=e;)r=n[l],u=l/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return ko(n)}function Co(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function zo(n,t,e){n.push("C",Co(ql,t),",",Co(ql,e),",",Co(Ll,t),",",Co(Ll,e),",",Co(Tl,t),",",Co(Tl,e))}function qo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Lo(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=qo(u,i);++t<e;)r[t]=(o+(o=qo(u=i,i=n[t+1])))/2;return r[t]=o,r}function To(n){for(var t,e,r,u,i=[],o=Lo(n),a=-1,c=n.length-1;++a<c;)t=qo(n[a],n[a+1]),va(t)<Ta?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function Ro(n){return n.length<3?po(n):n[0]+wo(n,To(n))}function Do(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]-ja,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Po(n){function t(t){function c(){v.push("M",a(n(m),f),s,l(n(d.reverse()),f),"Z")}for(var h,g,p,v=[],d=[],m=[],y=-1,M=t.length,x=Et(e),b=Et(u),_=e===r?function(){return g}:Et(r),w=u===i?function(){return p}:Et(i);++y<M;)o.call(this,h=t[y],y)?(d.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),m.push([+_.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(""):null}var e=Nr,r=Nr,u=0,i=Cr,o=Ce,a=po,c=a.key,l=a,s="L",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c="function"==typeof n?a=n:(a=zl.get(n)||po).key,l=a.reverse||a,s=a.closed?"M":"L",t):c
2307 2307 },t.tension=function(n){return arguments.length?(f=n,t):f},t}function Uo(n){return n.radius}function jo(n){return[n.x,n.y]}function Fo(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-ja;return[e*Math.cos(r),e*Math.sin(r)]}}function Ho(){return 64}function Oo(){return"circle"}function Yo(n){var t=Math.sqrt(n/Da);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Io(n,t,e){return xa(n,Fl),n.namespace=t,n.id=e,n}function Zo(n,t,e,r){var u=n.id,i=n.namespace;return H(n,"function"==typeof e?function(n,o,a){n[i][u].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[i][u].tween.set(t,e)}))}function Vo(n){return null==n&&(n=""),function(){this.textContent=n}}function Xo(n){return null==n?"__transition__":"__transition_"+n+"__"}function $o(n,t,e,r,u){var i=n[e]||(n[e]={active:0,count:0}),o=i[r];if(!o){var c=u.time;o=i[r]={tween:new a,time:c,delay:u.delay,duration:u.duration,ease:u.ease},u=null,++i.count,ta.timer(function(u){function a(e){return i.active>r?s(!1):(i.active=r,o.event&&o.event.start.call(n,g,t),o.tween.forEach(function(e,r){(r=r.call(n,g,t))&&d.push(r)}),h=o.ease,f=o.duration,ta.timer(function(){return v.c=l(e||1)?Ce:l,1},0,c),void 0)}function l(t){if(i.active!==r)return s(!1);for(var e=t/f,u=h(e),o=d.length;o>0;)d[--o].call(n,u);return e>=1?s(!0):void 0}function s(u){return o.event&&o.event[u?"end":"interrupt"].call(n,g,t),--i.count?delete i[r]:delete n[e],1}var f,h,g=n.__data__,p=o.delay,v=oc,d=[];return v.t=p+c,u>=p?a(u-p):(v.c=a,void 0)},0,c)}}function Bo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Jo(n){return n.toISOString()}function Go(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=ta.bisect(Bl,u);return i==Bl.length?[t.year,Xi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Bl[i-1]<Bl[i]/u?i-1:i]:[Gl,Xi(n,e)[2]]}return r.invert=function(t){return Ko(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Ko)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Ko(+e+1),t).length}var i=r.domain(),o=Ui(i),a=null==n?u(o,10):"number"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Hi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Ko(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ko(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Ui(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Ko(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Go(n.copy(),t,e)},Zi(r,n)}function Ko(n){return new Date(n)}function Qo(n){return JSON.parse(n.responseText)}function na(n){var t=ua.createRange();return t.selectNode(ua.body),t.createContextualFragment(n.responseText)}var ta={version:"3.5.0"};Date.now||(Date.now=function(){return+new Date});var ea=[].slice,ra=function(n){return ea.call(n)},ua=document,ia=ua.documentElement,oa=window;try{ra(ia.childNodes)[0].nodeType}catch(aa){ra=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{ua.createElement("div").style.setProperty("opacity",0,"")}catch(ca){var la=oa.Element.prototype,sa=la.setAttribute,fa=la.setAttributeNS,ha=oa.CSSStyleDeclaration.prototype,ga=ha.setProperty;la.setAttribute=function(n,t){sa.call(this,n,t+"")},la.setAttributeNS=function(n,t,e){fa.call(this,n,t,e+"")},ha.setProperty=function(n,t,e){ga.call(this,n,t+"",e)}}ta.ascending=n,ta.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},ta.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},ta.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},ta.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o;)if(null!=(r=n[i])&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},ta.sum=function(n,t){var r,u=0,i=n.length,o=-1;if(1===arguments.length)for(;++o<i;)e(r=+n[o])&&(u+=r);else for(;++o<i;)e(r=+t.call(n,n[o],o))&&(u+=r);return u},ta.mean=function(n,r){var u,i=0,o=n.length,a=-1,c=o;if(1===arguments.length)for(;++a<o;)e(u=t(n[a]))?i+=u:--c;else for(;++a<o;)e(u=t(r.call(n,n[a],a)))?i+=u:--c;return c?i/c:void 0},ta.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},ta.median=function(r,u){var i,o=[],a=r.length,c=-1;if(1===arguments.length)for(;++c<a;)e(i=t(r[c]))&&o.push(i);else for(;++c<a;)e(i=t(u.call(r,r[c],c)))&&o.push(i);return o.length?ta.quantile(o.sort(n),.5):void 0};var pa=r(n);ta.bisectLeft=pa.left,ta.bisect=ta.bisectRight=pa.right,ta.bisector=function(t){return r(1===t.length?function(e,r){return n(t(e),r)}:t)},ta.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=0|Math.random()*i--,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},ta.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ta.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},ta.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ta.min(arguments,u),e=new Array(t);++n<t;)for(var r,i=-1,o=e[n]=new Array(r);++i<r;)o[i]=arguments[i][n];return e},ta.transpose=function(n){return ta.zip.apply(ta,n)},ta.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ta.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ta.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ta.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var va=Math.abs;ta.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)throw new Error("infinite range");var r,u=[],o=i(va(e)),a=-1;if(n*=o,t*=o,e*=o,0>e)for(;(r=n+e*++a)>t;)u.push(r/o);else for(;(r=n+e*++a)<t;)u.push(r/o);return u},ta.map=function(n,t){var e=new a;if(n instanceof a)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,u=-1,i=n.length;if(1===arguments.length)for(;++u<i;)e.set(u,n[u]);else for(;++u<i;)e.set(t.call(n,r=n[u],u),r)}else for(var o in n)e.set(o,n[o]);return e};var da="__proto__",ma="\x00";o(a,{has:s,get:function(n){return this._[c(n)]},set:function(n,t){return this._[c(n)]=t},remove:f,keys:h,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:l(t),value:this._[t]});return n},size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t),this._[t])}}),ta.nest=function(){function n(t,o,c){if(c>=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var l,s,f,h,g=-1,p=o.length,v=i[c++],d=new a;++g<p;)(h=d.get(l=v(s=o[g])))?h.push(s):d.set(l,[s]);return t?(s=t(),f=function(e,r){s.set(e,n(t,r,c))}):(s={},f=function(e,r){s[e]=n(t,r,c)}),d.forEach(f),s}function t(n,e){if(e>=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(ta.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},ta.set=function(n){var t=new v;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},o(v,{has:s,add:function(n){return this._[c(n+="")]=!0,n},remove:f,values:h,size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t))}}),ta.behavior={},ta.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=d(n,t,t[e]);return n};var ya=["webkit","ms","moz","Moz","o","O"];ta.dispatch=function(){for(var n=new M,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=x(n);return n},M.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ta.event=null,ta.requote=function(n){return n.replace(Ma,"\\$&")};var Ma=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,xa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ba=function(n,t){return t.querySelector(n)},_a=function(n,t){return t.querySelectorAll(n)},wa=ia.matches||ia[m(ia,"matchesSelector")],Sa=function(n,t){return wa.call(n,t)};"function"==typeof Sizzle&&(ba=function(n,t){return Sizzle(n,t)[0]||null},_a=Sizzle,Sa=Sizzle.matchesSelector),ta.selection=function(){return Na};var ka=ta.selection.prototype=[];ka.select=function(n){var t,e,r,u,i=[];n=k(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,l=r.length;++c<l;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}return S(i)},ka.selectAll=function(n){var t,e,r=[];n=E(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=ra(n.call(e,e.__data__,a,u))),t.parentNode=e);return S(r)};var Ea={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ta.ns={prefix:Ea,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&(e=n.slice(0,t),n=n.slice(t+1)),Ea.hasOwnProperty(e)?{space:Ea[e],local:n}:n}},ka.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ta.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(A(t,n[t]));return this}return this.each(A(n,t))},ka.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=z(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute("class");++u<r;)if(!C(n[u]).test(t))return!1;return!0}for(t in n)this.each(q(t,n[t]));return this}return this.each(q(n,t))},ka.style=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(T(e,n[e],t));return this}if(2>r)return oa.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(T(n,t,e))},ka.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},ka.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},ka.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},ka.append=function(n){return n=D(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},ka.insert=function(n,t){return n=D(n),t=k(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},ka.remove=function(){return this.each(P)},ka.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),v=new Array(o);if(t){var d,m=new a,y=new Array(o);for(r=-1;++r<o;)m.has(d=t.call(u=n[r],u.__data__,r))?v[r]=u:m.set(d,u),y[r]=d;for(r=-1;++r<f;)(u=m.get(d=t.call(e,i=e[r],r)))?u!==!0&&(g[r]=u,u.__data__=i):p[r]=U(i),m.set(d,!0);for(r=-1;++r<o;)m.get(y[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],i=e[r],u?(u.__data__=i,g[r]=u):p[r]=U(i);for(;f>r;++r)p[r]=U(e[r]);for(;o>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),l.push(g),s.push(v)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++i<o;)(u=r[i])&&(n[i]=u.__data__);return n}var c=O([]),l=S([]),s=S([]);if("function"==typeof n)for(;++i<o;)e(r=this[i],n.call(r,r.parentNode.__data__,i));else for(;++i<o;)e(r=this[i],n);return l.enter=function(){return c},l.exit=function(){return s},l},ka.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},ka.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return S(u)},ka.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},ka.sort=function(n){n=F.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},ka.each=function(n){return H(this,function(t,e,r){n.call(t,t.__data__,e,r)})},ka.call=function(n){var t=ra(arguments);return n.apply(t[0]=this,t),this},ka.empty=function(){return!this.node()},ka.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},ka.size=function(){var n=0;return H(this,function(){++n}),n};var Aa=[];ta.selection.enter=O,ta.selection.enter.prototype=Aa,Aa.append=ka.append,Aa.empty=ka.empty,Aa.node=ka.node,Aa.call=ka.call,Aa.size=ka.size,Aa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var l=-1,s=u.length;++l<s;)(i=u[l])?(t.push(r[l]=e=n.call(u.parentNode,i.__data__,l,a)),e.__data__=i.__data__):t.push(null)}return S(o)},Aa.insert=function(n,t){return arguments.length<2&&(t=Y(this)),ka.insert.call(this,n,t)},ka.transition=function(n){for(var t,e,r=Dl||++Hl,u=Xo(n),i=[],o=Pl||{time:Date.now(),ease:ku,delay:0,duration:250},a=-1,c=this.length;++a<c;){i.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(e=l[s])&&$o(e,s,u,r,o),t.push(e)}return Io(i,u,r)},ka.interrupt=function(n){var t=Xo(n);return this.each(function(){var n=this[t];n&&++n.active})},ta.select=function(n){var t=["string"==typeof n?ba(n,ua):n];return t.parentNode=ia,S([t])},ta.selectAll=function(n){var t=ra("string"==typeof n?_a(n,ua):n);return t.parentNode=ia,S([t])};var Na=ta.select(ia);ka.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(Z(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(Z(n,t,e))};var Ca=ta.map({mouseenter:"mouseover",mouseleave:"mouseout"});Ca.forEach(function(n){"on"+n in ua&&Ca.remove(n)});var za="onselectstart"in ua?null:m(ia.style,"userSelect"),qa=0;ta.mouse=function(n){return B(n,_())};var La=/WebKit/.test(oa.navigator.userAgent)?-1:0;ta.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=_().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return B(n,r)},ta.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",i)}function t(n,t,u,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&ta.event.target===f),g({type:"dragend"}))}var l,s=this,f=ta.event.target,h=s.parentNode,g=e.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=ta.select(u()).on(i+d,a).on(o+d,c),y=$(),M=t(h,v);r?(l=r.apply(s,arguments),l=[l.x-M[0],l.y-M[1]]):l=[0,0],g({type:"dragstart"})}}var e=w(n,"drag","dragstart","dragend"),r=null,u=t(y,ta.mouse,G,"mousemove","mouseup"),i=t(W,ta.touch,J,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},ta.rebind(n,e,"on")},ta.touches=function(n,t){return arguments.length<2&&(t=_().touches),t?ra(t).map(function(t){var e=B(n,t);return e.identifier=t.identifier,e}):[]};var Ta=1e-6,Ra=Ta*Ta,Da=Math.PI,Pa=2*Da,Ua=Pa-Ta,ja=Da/2,Fa=Da/180,Ha=180/Da,Oa=Math.SQRT2,Ya=2,Ia=4;ta.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(v),o=i/(Ya*h)*(e*ut(Oa*t+v)-et(v));return[r+o*l,u+o*s,i*e/rt(Oa*t+v)]}return[r+n*l,u+n*s,i*Math.exp(Oa*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Ia*f)/(2*i*Ya*h),p=(c*c-i*i-Ia*f)/(2*c*Ya*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Oa;return e.duration=1e3*y,e},ta.behavior.zoom=function(){function n(n){n.on(z,s).on(Xa+".zoom",h).on("dblclick.zoom",g).on(T,f)}function t(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function e(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function r(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=e(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function i(t,e,i,o){t.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),u(v=e,i),t=ta.select(t),N>0&&(t=t.transition().duration(N)),t.call(n.event)}function o(){x&&x.domain(M.range().map(function(n){return(n-k.x)/k.k}).map(M.invert)),S&&S.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function a(n){C++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function l(n){--C||n({type:"zoomend"}),v=null}function s(){function n(){s=1,u(ta.mouse(r),h),c(o)}function e(){f.on(q,null).on(L,null),g(s&&ta.event.target===i),l(o)}var r=this,i=ta.event.target,o=R.of(r,arguments),s=0,f=ta.select(oa).on(q,n).on(L,e),h=t(ta.mouse(r)),g=$();I(r),a(o)}function f(){function n(){var n=ta.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=t(n))}),n}function e(){var t=ta.event.target;ta.select(t).on(x,o).on(_,h),w.push(t);for(var e=ta.event.changedTouches,r=0,u=e.length;u>r;++r)d[e[r].identifier]=null;var a=n(),c=Date.now();if(1===a.length){if(500>c-y){var l=a[0];i(p,l,d[l.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),b()}y=c}else if(a.length>1){var l=a[0],s=a[1],f=l[0]-s[0],g=l[1]-s[1];m=f*f+g*g}}function o(){var n,t,e,i,o=ta.touches(p);I(p);for(var a=0,l=o.length;l>a;++a,i=null)if(e=o[a],i=d[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*g)}y=null,u(n,t),c(v)}function h(){if(ta.event.touches.length){for(var t=ta.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}ta.selectAll(w).on(M,null),S.on(z,s).on(T,f),E(),l(v)}var g,p=this,v=R.of(p,arguments),d={},m=0,M=".zoom-"+ta.event.changedTouches[0].identifier,x="touchmove"+M,_="touchend"+M,w=[],S=ta.select(p),E=$();e(),a(v),S.on(z,null).on(T,e)}function h(){var n=R.of(this,arguments);m?clearTimeout(m):(p=t(v=d||ta.mouse(this)),I(this),a(n)),m=setTimeout(function(){m=null,l(n)},50),b(),r(Math.pow(2,.002*Za())*k.k),u(v,p),c(n)}function g(){var n=ta.mouse(this),e=Math.log(k.k)/Math.LN2;i(this,n,t(n),ta.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var p,v,d,m,y,M,x,_,S,k={x:0,y:0,k:1},E=[960,500],A=Va,N=250,C=0,z="mousedown.zoom",q="mousemove.zoom",L="mouseup.zoom",T="touchstart.zoom",R=w(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=R.of(this,arguments),t=k;Dl?ta.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},a(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=v?v[0]:e/2,i=v?v[1]:r/2,o=ta.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){l(n)}).each("end.zoom",function(){l(n)}):(this.__chart__=k,a(n),c(n),l(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Va:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(d=t&&[+t[0],+t[1]],n):d},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(N=+t,n):N},n.x=function(t){return arguments.length?(x=t,M=t.copy(),k={x:0,y:0,k:1},n):x},n.y=function(t){return arguments.length?(S=t,_=t.copy(),k={x:0,y:0,k:1},n):S},ta.rebind(n,R,"on")};var Za,Va=[0,1/0],Xa="onwheel"in ua?(Za=function(){return-ta.event.deltaY*(ta.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ua?(Za=function(){return ta.event.wheelDelta},"mousewheel"):(Za=function(){return-ta.event.detail},"MozMousePixelScroll");ta.color=ot,ot.prototype.toString=function(){return this.rgb()+""},ta.hsl=at;var $a=at.prototype=new ot;$a.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},$a.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},$a.rgb=function(){return ct(this.h,this.s,this.l)},ta.hcl=lt;var Ba=lt.prototype=new ot;Ba.brighter=function(n){return new lt(this.h,this.c,Math.min(100,this.l+Wa*(arguments.length?n:1)))},Ba.darker=function(n){return new lt(this.h,this.c,Math.max(0,this.l-Wa*(arguments.length?n:1)))},Ba.rgb=function(){return st(this.h,this.c,this.l).rgb()},ta.lab=ft;var Wa=18,Ja=.95047,Ga=1,Ka=1.08883,Qa=ft.prototype=new ot;Qa.brighter=function(n){return new ft(Math.min(100,this.l+Wa*(arguments.length?n:1)),this.a,this.b)},Qa.darker=function(n){return new ft(Math.max(0,this.l-Wa*(arguments.length?n:1)),this.a,this.b)},Qa.rgb=function(){return ht(this.l,this.a,this.b)},ta.rgb=mt;var nc=mt.prototype=new ot;nc.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},nc.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},nc.hsl=function(){return _t(this.r,this.g,this.b)},nc.toString=function(){return"#"+xt(this.r)+xt(this.g)+xt(this.b)};var tc=ta.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});tc.forEach(function(n,t){tc.set(n,yt(t))}),ta.functor=Et,ta.xhr=Nt(At),ta.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Ct(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++<l;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}s=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++s):10===r&&(u=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;l>s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new v,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},ta.csv=ta.dsv(",","text/csv"),ta.tsv=ta.dsv(" ","text/tab-separated-values");var ec,rc,uc,ic,oc,ac=oa[m(oa,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ta.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};rc?rc.n=i:ec=i,rc=i,uc||(ic=clearTimeout(ic),uc=1,ac(Lt))},ta.timer.flush=function(){Tt(),Rt()},ta.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var cc=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Pt);ta.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=ta.round(n,Dt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),cc[8+e/3]};var lc=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,sc=ta.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ta.round(n,Dt(n,t))).toFixed(Math.max(0,Math.min(20,Dt(n*(1+1e-15),t))))}}),fc=ta.time={},hc=Date;Ft.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){gc.setUTCDate.apply(this._,arguments)},setDay:function(){gc.setUTCDay.apply(this._,arguments)},setFullYear:function(){gc.setUTCFullYear.apply(this._,arguments)},setHours:function(){gc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){gc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){gc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){gc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){gc.setUTCSeconds.apply(this._,arguments)},setTime:function(){gc.setTime.apply(this._,arguments)}};var gc=Date.prototype;fc.year=Ht(function(n){return n=fc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),fc.years=fc.year.range,fc.years.utc=fc.year.utc.range,fc.day=Ht(function(n){var t=new hc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),fc.days=fc.day.range,fc.days.utc=fc.day.utc.range,fc.dayOfYear=function(n){var t=fc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=fc[n]=Ht(function(n){return(n=fc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});fc[n+"s"]=e.range,fc[n+"s"].utc=e.utc.range,fc[n+"OfYear"]=function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)}}),fc.week=fc.sunday,fc.weeks=fc.sunday.range,fc.weeks.utc=fc.sunday.utc.range,fc.weekOfYear=fc.sundayOfYear;var pc={"-":"",_:" ",0:"0"},vc=/^\s*\d+/,dc=/^%/;ta.locale=function(n){return{numberFormat:Ut(n),timeFormat:Yt(n)}};var mc=ta.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ta.format=mc.numberFormat,ta.geo={},le.prototype={s:0,t:0,add:function(n){se(n,this.t,yc),se(yc.s,this.s,this),this.s?this.t+=yc.t:this.s=yc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var yc=new le;ta.geo.stream=function(n,t){n&&Mc.hasOwnProperty(n.type)?Mc[n.type](n,t):fe(n,t)};var Mc={Feature:function(n,t){fe(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)fe(e[r].geometry,t)}},xc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){he(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)he(e[r],t,0)},Polygon:function(n,t){ge(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ge(e[r],t)
2308 2308 },GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)fe(e[r],t)}};ta.geo.area=function(n){return bc=0,ta.geo.stream(n,wc),bc};var bc,_c=new le,wc={sphere:function(){bc+=4*Da},point:y,lineStart:y,lineEnd:y,polygonStart:function(){_c.reset(),wc.lineStart=pe},polygonEnd:function(){var n=2*_c;bc+=0>n?4*Da+n:n,wc.lineStart=wc.lineEnd=wc.point=y}};ta.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=ve([t*Fa,e*Fa]);if(m){var u=me(m,r),i=[u[1],-u[0],0],o=me(i,u);xe(o),o=be(o);var c=t-p,l=c>0?1:-1,v=o[0]*Ha*l,d=va(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Ha;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Ha;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=va(r)>180?r+(r>0?360:-360):r}else v=n,d=e;wc.point(n,e),t(n,e)}function i(){wc.lineStart()}function o(){u(v,d),wc.lineEnd(),va(y)>Ta&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var s,f,h,g,p,v,d,m,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=u,b.lineStart=i,b.lineEnd=o,y=0,wc.polygonStart()},polygonEnd:function(){wc.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>_c?(s=-(h=180),f=-(g=90)):y>Ta?g=90:-Ta>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],ta.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),ta.geo.centroid=function(n){Sc=kc=Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,Dc);var t=Lc,e=Tc,r=Rc,u=t*t+e*e+r*r;return Ra>u&&(t=Cc,e=zc,r=qc,Ta>kc&&(t=Ec,e=Ac,r=Nc),u=t*t+e*e+r*r,Ra>u)?[0/0,0/0]:[Math.atan2(e,t)*Ha,tt(r/Math.sqrt(u))*Ha]};var Sc,kc,Ec,Ac,Nc,Cc,zc,qc,Lc,Tc,Rc,Dc={sphere:y,point:we,lineStart:ke,lineEnd:Ee,polygonStart:function(){Dc.lineStart=Ae},polygonEnd:function(){Dc.lineStart=ke}},Pc=Te(Ce,Ue,Fe,[-Da,-Da/2]),Uc=1e9;ta.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ie(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ta.geo.conicEqualArea=function(){return Ze(Ve)}).raw=Ve,ta.geo.albers=function(){return ta.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ta.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=ta.geo.albers(),o=ta.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ta.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ta,f+.12*l+Ta],[s-.214*l-Ta,f+.234*l-Ta]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ta,f+.166*l+Ta],[s-.115*l-Ta,f+.234*l-Ta]]).stream(c).point,n},n.scale(1070)};var jc,Fc,Hc,Oc,Yc,Ic,Zc={point:y,lineStart:y,lineEnd:y,polygonStart:function(){Fc=0,Zc.lineStart=Xe},polygonEnd:function(){Zc.lineStart=Zc.lineEnd=Zc.point=y,jc+=va(Fc/2)}},Vc={point:$e,lineStart:y,lineEnd:y,polygonStart:y,polygonEnd:y},Xc={point:Je,lineStart:Ge,lineEnd:Ke,polygonStart:function(){Xc.lineStart=Qe},polygonEnd:function(){Xc.point=Je,Xc.lineStart=Ge,Xc.lineEnd=Ke}};ta.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),ta.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return jc=0,ta.geo.stream(n,u(Zc)),jc},n.centroid=function(n){return Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,u(Xc)),Rc?[Lc/Rc,Tc/Rc]:qc?[Cc/qc,zc/qc]:Nc?[Ec/Nc,Ac/Nc]:[0/0,0/0]},n.bounds=function(n){return Yc=Ic=-(Hc=Oc=1/0),ta.geo.stream(n,u(Vc)),[[Hc,Oc],[Yc,Ic]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||er(n):At,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Be:new nr(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(ta.geo.albersUsa()).context(null)},ta.geo.transform=function(n){return{stream:function(t){var e=new rr(t);for(var r in n)e[r]=n[r];return e}}},rr.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ta.geo.projection=ir,ta.geo.projectionMutator=or,(ta.geo.equirectangular=function(){return ir(cr)}).raw=cr.invert=cr,ta.geo.rotation=function(n){function t(t){return t=n(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t}return n=sr(n[0]%360*Fa,n[1]*Fa,n.length>2?n[2]*Fa:0),t.invert=function(t){return t=n.invert(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t},t},lr.invert=cr,ta.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=sr(-n[0]*Fa,-n[1]*Fa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ha,n[1]*=Ha}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=pr((t=+r)*Fa,u*Fa),n):t},n.precision=function(r){return arguments.length?(e=pr(t*Fa,(u=+r)*Fa),n):u},n.angle(90)},ta.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Fa,u=n[1]*Fa,i=t[1]*Fa,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},ta.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ta.range(Math.ceil(i/d)*d,u,d).map(h).concat(ta.range(Math.ceil(l/m)*m,c,m).map(g)).concat(ta.range(Math.ceil(r/p)*p,e,p).filter(function(n){return va(n%d)>Ta}).map(s)).concat(ta.range(Math.ceil(a/v)*v,o,v).filter(function(n){return va(n%m)>Ta}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=dr(a,o,90),f=mr(r,e,y),h=dr(l,c,90),g=mr(i,u,y),n):y},n.majorExtent([[-180,-90+Ta],[180,90-Ta]]).minorExtent([[-180,-80-Ta],[180,80+Ta]])},ta.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=yr,u=Mr;return n.distance=function(){return ta.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},ta.geo.interpolate=function(n,t){return xr(n[0]*Fa,n[1]*Fa,t[0]*Fa,t[1]*Fa)},ta.geo.length=function(n){return $c=0,ta.geo.stream(n,Bc),$c};var $c,Bc={sphere:y,point:y,lineStart:br,lineEnd:y,polygonStart:y,polygonEnd:y},Wc=_r(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ta.geo.azimuthalEqualArea=function(){return ir(Wc)}).raw=Wc;var Jc=_r(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},At);(ta.geo.azimuthalEquidistant=function(){return ir(Jc)}).raw=Jc,(ta.geo.conicConformal=function(){return Ze(wr)}).raw=wr,(ta.geo.conicEquidistant=function(){return Ze(Sr)}).raw=Sr;var Gc=_r(function(n){return 1/n},Math.atan);(ta.geo.gnomonic=function(){return ir(Gc)}).raw=Gc,kr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-ja]},(ta.geo.mercator=function(){return Er(kr)}).raw=kr;var Kc=_r(function(){return 1},Math.asin);(ta.geo.orthographic=function(){return ir(Kc)}).raw=Kc;var Qc=_r(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ta.geo.stereographic=function(){return ir(Qc)}).raw=Qc,Ar.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-ja]},(ta.geo.transverseMercator=function(){var n=Er(Ar),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ar,ta.geom={},ta.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(qr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=zr(a),s=zr(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t<s.length-h;++t)g.push(n[a[s[t]][2]]);return g}var e=Nr,r=Cr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ta.geom.polygon=function(n){return xa(n,nl),n};var nl=ta.geom.polygon.prototype=[];nl.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},nl.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},nl.clip=function(n){for(var t,e,r,u,i,o,a=Rr(n),c=-1,l=this.length-Rr(this),s=this[l-1];++c<l;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Lr(o,s,u)?(Lr(i,s,u)||n.push(Tr(i,o,s,u)),n.push(o)):Lr(i,s,u)&&n.push(Tr(i,o,s,u)),i=o;a&&n.push(n[0]),s=u}return n};var tl,el,rl,ul,il,ol=[],al=[];Yr.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Zr),t.length},nu.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},tu.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=iu(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(ru(this,e),n=e,e=n.U),e.C=!1,r.C=!0,uu(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(uu(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ru(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?iu(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return n.C=!1,void 0;do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,ru(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,uu(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,ru(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,uu(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,ru(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,uu(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},ta.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return ou(e(n),a).cells.forEach(function(e,a){var c=e.edges,l=e.site,s=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):l.x>=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ta)*Ta,y:Math.round(o(n,t)/Ta)*Ta,i:t}})}var r=Nr,u=Cr,i=r,o=u,a=cl;return n?t(n):(t.links=function(n){return ou(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ou(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Zr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c<l;)u=s,i=f,s=a[c].edge,f=s.l===o?s.r:s.l,r<i.i&&r<f.i&&cu(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=Et(r=n),t):r},t.y=function(n){return arguments.length?(o=Et(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?cl:n,t):a===cl?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===cl?null:a&&a[1]},t)};var cl=[[-1e6,-1e6],[1e6,1e6]];ta.geom.delaunay=function(n){return ta.geom.voronoi().triangles(n)},ta.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,s=n.y;if(null!=c)if(va(c-e)+va(s-r)<.01)l(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,l(n,f,c,s,u,i,o,a),l(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else l(n,t,e,r,u,i,o,a)}function l(n,t,e,r,u,o,a,c){var l=.5*(u+a),s=.5*(o+c),f=e>=l,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=fu()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,M=Et(a),x=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.x<v&&(v=s.x),s.y<d&&(d=s.y),s.x>m&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=fu();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){hu(n,k,v,d,m,y)},k.find=function(n){return gu(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=s=null,k}var o,a=Nr,c=Cr;return(o=arguments.length)?(a=lu,c=su,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},ta.interpolateRgb=pu,ta.interpolateObject=vu,ta.interpolateNumber=du,ta.interpolateString=mu;var ll=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sl=new RegExp(ll.source,"g");ta.interpolate=yu,ta.interpolators=[function(n,t){var e=typeof t;return("string"===e?tc.has(t)||/^(#|rgb\(|hsl\()/.test(t)?pu:mu:t instanceof ot?pu:Array.isArray(t)?Mu:"object"===e&&isNaN(t)?vu:du)(n,t)}],ta.interpolateArray=Mu;var fl=function(){return At},hl=ta.map({linear:fl,poly:Eu,quad:function(){return wu},cubic:function(){return Su},sin:function(){return Au},exp:function(){return Nu},circle:function(){return Cu},elastic:zu,back:qu,bounce:function(){return Lu}}),gl=ta.map({"in":At,out:bu,"in-out":_u,"out-in":function(n){return _u(bu(n))}});ta.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=hl.get(e)||fl,r=gl.get(r)||At,xu(r(e.apply(null,ea.call(arguments,1))))},ta.interpolateHcl=Tu,ta.interpolateHsl=Ru,ta.interpolateLab=Du,ta.interpolateRound=Pu,ta.transform=function(n){var t=ua.createElementNS(ta.ns.prefix.svg,"g");return(ta.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Uu(e?e.matrix:pl)})(n)},Uu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var pl={a:1,b:0,c:0,d:1,e:0,f:0};ta.interpolateTransform=Ou,ta.layout={},ta.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Zu(n[e]));return t}},ta.layout.chord=function(){function n(){var n,l,f,h,g,p={},v=[],d=ta.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(l=0,g=-1;++g<i;)l+=u[h][g];v.push(l),m.push(ta.range(i)),n+=l}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(Pa-s*i)/n,l=0,h=-1;++h<i;){for(f=l,g=-1;++g<i;){var y=d[h],M=m[y][g],x=u[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:f,endAngle:l,value:(l-f)/n},l+=s}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,l={},s=0;return l.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,l):u},l.padding=function(n){return arguments.length?(s=n,e=r=null,l):s},l.sortGroups=function(n){return arguments.length?(o=n,e=r=null,l):o},l.sortSubgroups=function(n){return arguments.length?(a=n,e=null,l):a},l.sortChords=function(n){return arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return e||n(),e},l.groups=function(){return r||n(),r},l},ta.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=ta.event.x,n.py=ta.event.y,a.resume()}var e,r,u,i,o,a={},c=ta.dispatch("start","tick","end"),l=[1,1],s=.9,f=vl,h=dl,g=-30,p=ml,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,M,x,b=m.length,_=y.length;for(e=0;_>e;++e)a=y[e],f=a.source,h=a.target,M=h.x-f.x,x=h.y-f.y,(p=M*M+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,M*=p,x*=p,h.x-=M*(d=f.weight/(h.weight+f.weight)),h.y-=x*d,f.x+=M*(d=1-d),f.y+=x*d);if((d=r*v)&&(M=l[0]/2,x=l[1]/2,e=-1,d))for(;++e<b;)a=m[e],a.x+=(M-a.x)*d,a.y+=(x-a.y)*d;if(g)for(Gu(t=ta.geom.quadtree(m),r,o),e=-1;++e<b;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<b;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),ta.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;l>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++a<l;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,s=y.length,p=l[0],v=l[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=ta.behavior.drag().origin(At).on("dragstart.force",$u).on("drag.force",t).on("dragend.force",Bu)),arguments.length?(this.on("mouseover.force",Wu).on("mouseout.force",Ju).call(e),void 0):e},ta.rebind(a,c,"on")};var vl=20,dl=1,ml=1/0;ta.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return ni(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ri,e=ti,r=ei;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Qu(t,function(n){n.children&&(n.value=0)}),ni(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ta.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++l<o;)n(a=i[l],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=ta.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Ku(e,r)},ta.layout.pie=function(){function n(o){var a,c=o.length,l=o.map(function(e,r){return+t.call(n,e,r)}),s=+("function"==typeof r?r.apply(this,arguments):r),f=("function"==typeof u?u.apply(this,arguments):u)-s,h=Math.min(Math.abs(f)/c,+("function"==typeof i?i.apply(this,arguments):i)),g=h*(0>f?-1:1),p=(f-c*g)/ta.sum(l),v=ta.range(c),d=[];return null!=e&&v.sort(e===yl?function(n,t){return l[t]-l[n]}:function(n,t){return e(o[n],o[t])}),v.forEach(function(n){d[n]={data:o[n],value:a=l[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),d}var t=Number,e=yl,r=0,u=Pa,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var yl={};ta.layout.stack=function(){function n(a,c){if(!(h=a.length))return a;var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=ta.permute(l,f),s=ta.permute(s,f);var h,g,p,v,d=r.call(n,s,c),m=l[0].length;for(p=0;m>p;++p)for(u.call(n,l[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,l[g][p],v+=s[g-1][p][1],s[g][p][1]);return a}var t=At,e=ci,r=li,u=ai,i=ii,o=oi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:Ml.get(t)||ci,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:xl.get(t)||li,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var Ml=ta.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(si),i=n.map(fi),o=ta.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return ta.range(n.length).reverse()},"default":ci}),xl=ta.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:li});ta.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=l[i],a>=s[0]&&a<=s[1]&&(o=c[ta.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=vi,u=gi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return pi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ta.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,ni(a,function(n){n.r=+s(n.value)}),ni(a,xi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;ni(a,function(n){n.r+=f}),ni(a,xi),ni(a,function(n){n.r-=f})}return wi(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=ta.layout.hierarchy().sort(di),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Ku(n,e)},ta.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(ni(h,e),h.parent.m=-h.z,Qu(h,r),l)Qu(f,i);else{var g=f,p=f,v=f;Qu(f,function(n){n.x<g.x&&(g=n),n.x>p.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Qu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Ci(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=Ai(o),u=Ei(u),o&&u;)c=Ei(c),i=Ai(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(Ni(zi(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!Ai(i)&&(i.t=o,i.m+=f-s),u&&!Ei(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=ta.layout.hierarchy().sort(null).value(null),a=ki,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},Ku(n,o)},ta.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;ni(c,function(n){var t=n.children;t&&t.length?(n.x=Li(t),n.y=qi(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Ti(c),f=Ri(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return ni(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=ta.layout.hierarchy().sort(null).value(null),e=ki,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Ku(n,t)},ta.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++i<o;)u=n[i],u.x=a,u.y=l,u.dy=s,a+=u.dx=Math.min(e.x+e.dx-a,s?c(u.area/s):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=s,e.dy-=s}else{for((r||s>e.dx)&&(s=e.dx);++i<o;)u=n[i],u.x=a,u.y=l,u.dx=s,l+=u.dy=Math.min(e.y+e.dy-l,s?c(u.area/s):0);u.z=!1,u.dy+=e.y+e.dy-l,e.x+=s,e.dx-=s}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=ta.layout.hierarchy(),c=Math.round,l=[1,1],s=null,f=Di,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(l=n,i):l},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Di(t):Pi(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Pi(t,n)}if(!arguments.length)return s;var r;return f=null==(s=n)?Di:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+"",i):g},Ku(i,a)},ta.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;
2309 2309 do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=ta.random.normal.apply(ta,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ta.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ta.scale={};var bl={floor:At,ceil:At};ta.scale.linear=function(){return Ii([0,1],[0,1],yu,!1)};var _l={s:1,g:1,p:1,r:1,e:1};ta.scale.log=function(){return Gi(ta.scale.linear().domain([0,1]),10,!0,[1,10])};var wl=ta.format(".0e"),Sl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ta.scale.pow=function(){return Ki(ta.scale.linear(),1,[0,1])},ta.scale.sqrt=function(){return ta.scale.pow().exponent(.5)},ta.scale.ordinal=function(){return no([],{t:"range",a:[[]]})},ta.scale.category10=function(){return ta.scale.ordinal().range(kl)},ta.scale.category20=function(){return ta.scale.ordinal().range(El)},ta.scale.category20b=function(){return ta.scale.ordinal().range(Al)},ta.scale.category20c=function(){return ta.scale.ordinal().range(Nl)};var kl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),El=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),Al=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Nl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);ta.scale.quantile=function(){return to([],[])},ta.scale.quantize=function(){return eo(0,1,[0,1])},ta.scale.threshold=function(){return ro([.5],[0,1])},ta.scale.identity=function(){return uo([0,1])},ta.svg={},ta.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-ja,f=a.apply(this,arguments)-ja,h=Math.abs(f-s),g=s>f?0:1;if(n>l&&(p=l,l=n,n=p),h>=Ua)return t(l,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,E=0,A=0,N=[];if((m=(+c.apply(this,arguments)||0)/2)&&(d=i===Cl?Math.sqrt(n*n+l*l):+i.apply(this,arguments),g||(A*=-1),l&&(A=tt(d/l*Math.sin(m))),n&&(E=tt(d/n*Math.sin(m)))),l){y=l*Math.cos(s+A),M=l*Math.sin(s+A),x=l*Math.cos(f-A),b=l*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=Da?0:1;if(A&&fo(y,M,x,b)===g^C){var z=(s+f)/2;y=l*Math.cos(z),M=l*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=Da?0:1;if(E&&fo(_,w,S,k)===1-g^q){var L=(s+f)/2;_=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else _=w=0;if((p=Math.min(Math.abs(l-n)/2,+u.apply(this,arguments)))>.001){v=l>n^g?0:1;var T=null==S?[_,w]:null==x?[y,M]:Tr([y,M],[S,k],[x,b],[_,w]),R=y-T[0],D=M-T[1],P=x-T[0],U=b-T[1],j=1/Math.sin(Math.acos((R*P+D*U)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+U*U)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(l-F)/(j+1)),O=ho(null==S?[_,w]:[S,k],[y,M],l,H,g),Y=ho([x,b],[_,w],l,H,g);p===H?N.push("M",O[0],"A",H,",",H," 0 0,",v," ",O[1],"A",l,",",l," 0 ",1-g^fo(O[1][0],O[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",H,",",H," 0 0,",v," ",Y[0]):N.push("M",O[0],"A",H,",",H," 0 1,",v," ",Y[0])}else N.push("M",y,",",M);if(null!=S){var I=Math.min(p,(n-F)/(j-1)),Z=ho([y,M],[S,k],n,-I,g),V=ho([_,w],null==x?[y,M]:[x,b],n,-I,g);p===I?N.push("L",V[0],"A",I,",",I," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^fo(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",I,",",I," 0 0,",v," ",Z[0]):N.push("L",V[0],"A",I,",",I," 0 0,",v," ",Z[0])}else N.push("L",_,",",w)}else N.push("M",y,",",M),null!=x&&N.push("A",l,",",l," 0 ",C,",",g," ",x,",",b),N.push("L",_,",",w),null!=S&&N.push("A",n,",",n," 0 ",q,",",1-g," ",S,",",k);return N.push("Z"),N.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=oo,r=ao,u=io,i=Cl,o=co,a=lo,c=so;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Cl?Cl:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(c=Et(t),n):c},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-ja;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Cl="auto";ta.svg.line=function(){return go(At)};var zl=ta.map({linear:po,"linear-closed":vo,step:mo,"step-before":yo,"step-after":Mo,basis:ko,"basis-open":Eo,"basis-closed":Ao,bundle:No,cardinal:_o,"cardinal-open":xo,"cardinal-closed":bo,monotone:Ro});zl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var ql=[0,2/3,1/3,0],Ll=[0,1/3,2/3,0],Tl=[0,1/6,2/3,1/6];ta.svg.line.radial=function(){var n=go(Do);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},yo.reverse=Mo,Mo.reverse=yo,ta.svg.area=function(){return Po(At)},ta.svg.area.radial=function(){var n=Po(Do);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ta.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)-ja,s=l.call(n,u,r)-ja;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Da)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=yr,o=Mr,a=Uo,c=co,l=lo;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(l=Et(t),n):l},n},ta.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=yr,e=Mr,r=jo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ta.svg.diagonal.radial=function(){var n=ta.svg.diagonal(),t=jo,e=n.projection;return n.projection=function(n){return arguments.length?e(Fo(t=n)):t},n},ta.svg.symbol=function(){function n(n,r){return(Rl.get(t.call(this,n,r))||Yo)(e.call(this,n,r))}var t=Oo,e=Ho;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var Rl=ta.map({circle:Yo,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*jl)),e=t*jl;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ta.svg.symbolTypes=Rl.keys();var Dl,Pl,Ul=Math.sqrt(3),jl=Math.tan(30*Fa),Fl=[],Hl=0;Fl.call=ka.call,Fl.empty=ka.empty,Fl.node=ka.node,Fl.size=ka.size,ta.transition=function(n){return arguments.length?Dl?n.transition():n:Na.transition()},ta.transition.prototype=Fl,Fl.select=function(n){var t,e,r,u=this.id,i=this.namespace,o=[];n=k(n);for(var a=-1,c=this.length;++a<c;){o.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(r=l[s])&&(e=n.call(r,r.__data__,s,a))?("__data__"in r&&(e.__data__=r.__data__),$o(e,s,i,u,r[i][u]),t.push(e)):t.push(null)}return Io(o,i,u)},Fl.selectAll=function(n){var t,e,r,u,i,o=this.id,a=this.namespace,c=[];n=E(n);for(var l=-1,s=this.length;++l<s;)for(var f=this[l],h=-1,g=f.length;++h<g;)if(r=f[h]){i=r[a][o],e=n.call(r,r.__data__,h,l),c.push(t=[]);for(var p=-1,v=e.length;++p<v;)(u=e[p])&&$o(u,p,a,o,i),t.push(u)}return Io(c,a,o)},Fl.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Io(u,this.namespace,this.id)},Fl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):H(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Fl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Ou:yu,a=ta.ns.qualify(n);return Zo(this,"attr."+n,t,a.local?i:u)},Fl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=ta.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Fl.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=oa.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=yu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Zo(this,"style."+n,t,u)},Fl.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,oa.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Fl.text=function(n){return Zo(this,"text",n,Vo)},Fl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Fl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ta.ease.apply(ta,arguments)),H(this,function(r){r[e][t].ease=n}))},Fl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:H(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Fl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:H(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Fl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Pl,i=Dl;Dl=e,H(this,function(t,u,i){Pl=t[r][e],n.call(t,t.__data__,u,i)}),Pl=u,Dl=i}else H(this,function(u){var i=u[r][e];(i.event||(i.event=ta.dispatch("start","end","interrupt"))).on(n,t)});return this},Fl.transition=function(){for(var n,t,e,r,u=this.id,i=++Hl,o=this.namespace,a=[],c=0,l=this.length;l>c;c++){a.push(n=[]);for(var t=this[c],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],$o(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Io(a,o,i)},ta.svg.axis=function(){function n(n){n.each(function(){var n,l=ta.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):At:t,p=l.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ta),d=ta.transition(p.exit()).style("opacity",Ta).remove(),m=ta.transition(p.order()).style("opacity",1),y=Math.max(u,0)+o,M=ji(f),x=l.selectAll(".domain").data([0]),b=(x.enter().append("path").attr("class","domain"),ta.transition(x));v.append("line"),v.append("text");var _,w,S,k,E=v.select("line"),A=m.select("line"),N=p.select("text").text(g),C=v.select("text"),z=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Bo,_="x",S="y",w="x2",k="y2",N.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+M[0]+","+q*i+"V0H"+M[1]+"V"+q*i)):(n=Wo,_="y",S="x",w="y2",k="x2",N.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),b.attr("d","M"+q*i+","+M[0]+"H0V"+M[1]+"H"+q*i)),E.attr(k,q*u),C.attr(S,q*y),A.attr(w,0).attr(k,q*u),z.attr(_,0).attr(S,q*y),f.rangeBand){var L=f,T=L.rangeBand()/2;s=f=function(n){return L(n)+T}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=ta.scale.linear(),r=Ol,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Yl?t+"":Ol,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ol="bottom",Yl={top:1,right:1,bottom:1,left:1};ta.svg.brush=function(){function n(i){i.each(function(){var i=ta.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,At);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Il[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=ta.transition(i),h=ta.transition(o);c&&(s=ji(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=ji(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==ta.event.keyCode&&(N||(y=null,z[0]-=s[1],z[1]-=f[1],N=2),b())}function p(){32==ta.event.keyCode&&2==N&&(z[0]+=s[1],z[1]+=f[1],N=0,b())}function v(){var n=ta.mouse(x),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),N||(ta.event.altKey?(y||(y=[(s[0]+s[1])/2,(f[0]+f[1])/2]),z[0]=s[+(n[0]<y[0])],z[1]=f[+(n[1]<y[1])]):y=null),E&&d(n,c,0)&&(e(S),u=!0),A&&d(n,l,1)&&(r(S),u=!0),u&&(t(S),w({type:"brush",mode:N?"move":"resize"}))}function d(n,t,e){var r,u,a=ji(t),c=a[0],l=a[1],p=z[e],v=e?f:s,d=v[1]-v[0];return N&&(c-=p,l-=d+p),r=(e?g:h)?Math.max(c,Math.min(l,n[e])):n[e],N?u=(r+=p)+d:(y&&(p=Math.max(c,Math.min(l,2*y[e]-r))),r>p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function m(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ta.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),C(),w({type:"brushend"})}var y,M,x=this,_=ta.select(ta.event.target),w=a.of(x,arguments),S=ta.select(x),k=_.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&l,N=_.classed("extent"),C=$(),z=ta.mouse(x),q=ta.select(oa).on("keydown.brush",u).on("keyup.brush",p);if(ta.event.changedTouches?q.on("touchmove.brush",v).on("touchend.brush",m):q.on("mousemove.brush",v).on("mouseup.brush",m),S.interrupt().selectAll("*").interrupt(),N)z[0]=s[0]-z[0],z[1]=f[0]-z[1];else if(k){var L=+/w$/.test(k),T=+/^n/.test(k);M=[s[1-L]-z[0],f[1-T]-z[1]],z[0]=s[L],z[1]=f[T]}else ta.event.altKey&&(y=z.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),ta.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=w(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],f=[0,0],h=!0,g=!0,p=Zl[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Dl?ta.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=Mu(s,t.x),r=Mu(f,t.y);return i=o=null,function(u){s=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=Zl[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,p=Zl[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(h=!!t[0],g=!!t[1]):c?h=!!t:l&&(g=!!t),n):c&&l?[h,g]:c?h:l?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),l&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(h=u,u=a,a=h))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&f[0]==f[1]},ta.rebind(n,a,"on")};var Il={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Zl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Vl=fc.format=mc.timeFormat,Xl=Vl.utc,$l=Xl("%Y-%m-%dT%H:%M:%S.%LZ");Vl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Jo:$l,Jo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Jo.toString=$l.toString,fc.second=Ht(function(n){return new hc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),fc.seconds=fc.second.range,fc.seconds.utc=fc.second.utc.range,fc.minute=Ht(function(n){return new hc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),fc.minutes=fc.minute.range,fc.minutes.utc=fc.minute.utc.range,fc.hour=Ht(function(n){var t=n.getTimezoneOffset()/60;return new hc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),fc.hours=fc.hour.range,fc.hours.utc=fc.hour.utc.range,fc.month=Ht(function(n){return n=fc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),fc.months=fc.month.range,fc.months.utc=fc.month.utc.range;var Bl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Wl=[[fc.second,1],[fc.second,5],[fc.second,15],[fc.second,30],[fc.minute,1],[fc.minute,5],[fc.minute,15],[fc.minute,30],[fc.hour,1],[fc.hour,3],[fc.hour,6],[fc.hour,12],[fc.day,1],[fc.day,2],[fc.week,1],[fc.month,1],[fc.month,3],[fc.year,1]],Jl=Vl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ce]]),Gl={range:function(n,t,e){return ta.range(Math.ceil(n/e)*e,+t,e).map(Ko)},floor:At,ceil:At};Wl.year=fc.year,fc.scale=function(){return Go(ta.scale.linear(),Wl,Jl)};var Kl=Wl.map(function(n){return[n[0].utc,n[1]]}),Ql=Xl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ce]]);Kl.year=fc.year.utc,fc.scale.utc=function(){return Go(ta.scale.linear(),Kl,Ql)},ta.text=Nt(function(n){return n.responseText}),ta.json=function(n,t){return Ct(n,"application/json",Qo,t)},ta.html=function(n,t){return Ct(n,"text/html",na,t)},ta.xml=Nt(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(ta):"object"==typeof module&&module.exports&&(module.exports=ta),this.d3=ta}();
2310 2310 ;!function(a){"use strict";function b(a){this.owner=a}function c(a,b){if(Object.create)b.prototype=Object.create(a.prototype);else{var c=function(){};c.prototype=a.prototype,b.prototype=new c}return b.prototype.constructor=b,b}function d(a){var b=this.internal=new e(this);b.loadConfig(a),b.beforeInit(a),b.init(),b.afterInit(a),function c(a,b,d){Object.keys(a).forEach(function(e){b[e]=a[e].bind(d),Object.keys(a[e]).length>0&&c(a[e],b[e],d)})}(h,this,this)}function e(b){var c=this;c.d3=a.d3?a.d3:"undefined"!=typeof require?require("d3"):void 0,c.api=b,c.config=c.getDefaultConfig(),c.data={},c.cache={},c.axes={}}function f(a){b.call(this,a)}function g(a,b){function c(a,b){a.attr("transform",function(a){return"translate("+Math.ceil(b(a)+u)+", 0)"})}function d(a,b){a.attr("transform",function(a){return"translate(0,"+Math.ceil(b(a))+")"})}function e(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function f(a){var b,c,d=[];if(a.ticks)return a.ticks.apply(a,n);for(c=a.domain(),b=Math.ceil(c[0]);b<c[1];b++)d.push(b);return d.length>0&&d[0]>0&&d.unshift(d[0]-(d[1]-d[0])),d}function g(){var a,c=p.copy();return b.isCategory&&(a=p.domain(),c.domain([a[0],a[1]-1])),c}function h(a){var b=m?m(a):a;return"undefined"!=typeof b?b:""}function i(a){if(A)return A;var b={h:11.5,w:5.5};return a.select("text").text(h).each(function(a){var c=this.getBoundingClientRect(),d=h(a),e=c.height,f=d?c.width/d.length:void 0;e&&f&&(b.h=e,b.w=f)}).text(""),A=b,b}function j(c){return b.withoutTransition?c:a.transition(c)}function k(m){m.each(function(){function m(a,c){function d(a,b){f=void 0;for(var h=1;h<b.length;h++)if(" "===b.charAt(h)&&(f=h),e=b.substr(0,h+1),g=U.w*e.length,g>c)return d(a.concat(b.substr(0,f?f:h)),b.slice(f?f+1:h));return a.concat(b)}var e,f,g,i=h(a),j=[];return"[object Array]"===Object.prototype.toString.call(i)?i:((!c||0>=c)&&(c=X?95:b.isCategory?Math.ceil(F(G[1])-F(G[0]))-12:110),d(j,i+""))}function n(a,b){var c=U.h;return 0===b&&(c="left"===q||"right"===q?-((V[a.index]-1)*(U.h/2)-3):".71em"),c}function v(a){var b=p(a)+(o?0:u);return L[0]<b&&b<L[1]?r:0}function w(a){return a?a>0?"start":"end":"middle"}function x(a){return a?"rotate("+a+")":""}function y(a){return a?8*Math.sin(Math.PI*(a/180)):0}function z(a){return a?11.5-2.5*(a/15)*(a>0?1:-1):W}var A,B,C,D=k.g=a.select(this),E=this.__chart__||p,F=this.__chart__=g(),G=t?t:f(F),H=D.selectAll(".tick").data(G,F),I=H.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),J=H.exit().remove(),K=j(H).style("opacity",1),L=p.rangeExtent?p.rangeExtent():e(p.range()),M=D.selectAll(".domain").data([0]),N=(M.enter().append("path").attr("class","domain"),j(M));I.append("line"),I.append("text");var O=I.select("line"),P=K.select("line"),Q=I.select("text"),R=K.select("text");b.isCategory?(u=Math.ceil((F(1)-F(0))/2),B=o?0:u,C=o?u:0):u=B=0;var S,T,U=i(D.select(".tick")),V=[],W=Math.max(r,0)+s,X="left"===q||"right"===q;S=H.select("text"),T=S.selectAll("tspan").data(function(a,c){var d=b.tickMultiline?m(a,b.tickWidth):[].concat(h(a));return V[c]=d.length,d.map(function(a){return{index:c,splitted:a}})}),T.enter().append("tspan"),T.exit().remove(),T.text(function(a){return a.splitted});var Y=b.tickTextRotate;switch(q){case"bottom":A=c,O.attr("y2",r),Q.attr("y",W),P.attr("x1",B).attr("x2",B).attr("y2",v),R.attr("x",0).attr("y",z(Y)).style("text-anchor",w(Y)).attr("transform",x(Y)),T.attr("x",0).attr("dy",n).attr("dx",y(Y)),N.attr("d","M"+L[0]+","+l+"V0H"+L[1]+"V"+l);break;case"top":A=c,O.attr("y2",-r),Q.attr("y",-W),P.attr("x2",0).attr("y2",-r),R.attr("x",0).attr("y",-W),S.style("text-anchor","middle"),T.attr("x",0).attr("dy","0em"),N.attr("d","M"+L[0]+","+-l+"V0H"+L[1]+"V"+-l);break;case"left":A=d,O.attr("x2",-r),Q.attr("x",-W),P.attr("x2",-r).attr("y1",C).attr("y2",C),R.attr("x",-W).attr("y",u),S.style("text-anchor","end"),T.attr("x",-W).attr("dy",n),N.attr("d","M"+-l+","+L[0]+"H0V"+L[1]+"H"+-l);break;case"right":A=d,O.attr("x2",r),Q.attr("x",W),P.attr("x2",r).attr("y2",0),R.attr("x",W).attr("y",0),S.style("text-anchor","start"),T.attr("x",W).attr("dy",n),N.attr("d","M"+l+","+L[0]+"H0V"+L[1]+"H"+l)}if(F.rangeBand){var Z=F,$=Z.rangeBand()/2;E=F=function(a){return Z(a)+$}}else E.rangeBand?E=F:J.call(A,F);I.call(A,E),K.call(A,F)})}var l,m,n,o,p=a.scale.linear(),q="bottom",r=6,s=3,t=null,u=0,v=!0;return b=b||{},l=b.withOuterTick?6:0,k.scale=function(a){return arguments.length?(p=a,k):p},k.orient=function(a){return arguments.length?(q=a in{top:1,right:1,bottom:1,left:1}?a+"":"bottom",k):q},k.tickFormat=function(a){return arguments.length?(m=a,k):m},k.tickCentered=function(a){return arguments.length?(o=a,k):o},k.tickOffset=function(){return u},k.tickInterval=function(){var a,c;return b.isCategory?a=2*u:(c=k.g.select("path.domain").node().getTotalLength()-2*l,a=c/k.g.selectAll("line").size()),a===1/0?0:a},k.ticks=function(){return arguments.length?(n=arguments,k):n},k.tickCulling=function(a){return arguments.length?(v=a,k):v},k.tickValues=function(a){if("function"==typeof a)t=function(){return a(p.domain())};else{if(!arguments.length)return t;t=a}return k},k}var h,i,j,k={version:"0.4.11"};k.generate=function(a){return new d(a)},k.chart={fn:d.prototype,internal:{fn:e.prototype,axis:{fn:f.prototype}}},h=k.chart.fn,i=k.chart.internal.fn,j=k.chart.internal.axis.fn,i.beforeInit=function(){},i.afterInit=function(){},i.init=function(){var a=this,b=a.config;if(a.initParams(),b.data_url)a.convertUrlToData(b.data_url,b.data_mimeType,b.data_headers,b.data_keys,a.initWithData);else if(b.data_json)a.initWithData(a.convertJsonToData(b.data_json,b.data_keys));else if(b.data_rows)a.initWithData(a.convertRowsToData(b.data_rows));else{if(!b.data_columns)throw Error("url or json or rows or columns is required.");a.initWithData(a.convertColumnsToData(b.data_columns))}},i.initParams=function(){var a=this,b=a.d3,c=a.config;a.clipId="c3-"+ +new Date+"-clip",a.clipIdForXAxis=a.clipId+"-xaxis",a.clipIdForYAxis=a.clipId+"-yaxis",a.clipIdForGrid=a.clipId+"-grid",a.clipIdForSubchart=a.clipId+"-subchart",a.clipPath=a.getClipPath(a.clipId),a.clipPathForXAxis=a.getClipPath(a.clipIdForXAxis),a.clipPathForYAxis=a.getClipPath(a.clipIdForYAxis),a.clipPathForGrid=a.getClipPath(a.clipIdForGrid),a.clipPathForSubchart=a.getClipPath(a.clipIdForSubchart),a.dragStart=null,a.dragging=!1,a.flowing=!1,a.cancelClick=!1,a.mouseover=!1,a.transiting=!1,a.color=a.generateColor(),a.levelColor=a.generateLevelColor(),a.dataTimeFormat=c.data_xLocaltime?b.time.format:b.time.format.utc,a.axisTimeFormat=c.axis_x_localtime?b.time.format:b.time.format.utc,a.defaultAxisTimeFormat=a.axisTimeFormat.multi([[".%L",function(a){return a.getMilliseconds()}],[":%S",function(a){return a.getSeconds()}],["%I:%M",function(a){return a.getMinutes()}],["%I %p",function(a){return a.getHours()}],["%-m/%-d",function(a){return a.getDay()&&1!==a.getDate()}],["%-m/%-d",function(a){return 1!==a.getDate()}],["%-m/%-d",function(a){return a.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),a.hiddenTargetIds=[],a.hiddenLegendIds=[],a.focusedTargetIds=[],a.defocusedTargetIds=[],a.xOrient=c.axis_rotated?"left":"bottom",a.yOrient=c.axis_rotated?c.axis_y_inner?"top":"bottom":c.axis_y_inner?"right":"left",a.y2Orient=c.axis_rotated?c.axis_y2_inner?"bottom":"top":c.axis_y2_inner?"left":"right",a.subXOrient=c.axis_rotated?"left":"bottom",a.isLegendRight="right"===c.legend_position,a.isLegendInset="inset"===c.legend_position,a.isLegendTop="top-left"===c.legend_inset_anchor||"top-right"===c.legend_inset_anchor,a.isLegendLeft="top-left"===c.legend_inset_anchor||"bottom-left"===c.legend_inset_anchor,a.legendStep=0,a.legendItemWidth=0,a.legendItemHeight=0,a.currentMaxTickWidths={x:0,y:0,y2:0},a.rotated_padding_left=30,a.rotated_padding_right=c.axis_rotated&&!c.axis_x_show?0:30,a.rotated_padding_top=5,a.withoutFadeIn={},a.intervalForObserveInserted=void 0,a.axes.subx=b.selectAll([])},i.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},i.initWithData=function(a){var b,c,d=this,e=d.d3,g=d.config,h=!0;d.axis=new f(d),d.initPie&&d.initPie(),d.initBrush&&d.initBrush(),d.initZoom&&d.initZoom(),g.bindto?"function"==typeof g.bindto.node?d.selectChart=g.bindto:d.selectChart=e.select(g.bindto):d.selectChart=e.selectAll([]),d.selectChart.empty()&&(d.selectChart=e.select(document.createElement("div")).style("opacity",0),d.observeInserted(d.selectChart),h=!1),d.selectChart.html("").classed("c3",!0),d.data.xs={},d.data.targets=d.convertDataToTargets(a),g.data_filter&&(d.data.targets=d.data.targets.filter(g.data_filter)),g.data_hide&&d.addHiddenTargetIds(g.data_hide===!0?d.mapToIds(d.data.targets):g.data_hide),g.legend_hide&&d.addHiddenLegendIds(g.legend_hide===!0?d.mapToIds(d.data.targets):g.legend_hide),d.hasType("gauge")&&(g.legend_show=!1),d.updateSizes(),d.updateScales(),d.x.domain(e.extent(d.getXDomain(d.data.targets))),d.y.domain(d.getYDomain(d.data.targets,"y")),d.y2.domain(d.getYDomain(d.data.targets,"y2")),d.subX.domain(d.x.domain()),d.subY.domain(d.y.domain()),d.subY2.domain(d.y2.domain()),d.orgXDomain=d.x.domain(),d.brush&&d.brush.scale(d.subX),g.zoom_enabled&&d.zoom.scale(d.x),d.svg=d.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return g.onmouseover.call(d)}).on("mouseleave",function(){return g.onmouseout.call(d)}),d.config.svg_classname&&d.svg.attr("class",d.config.svg_classname),b=d.svg.append("defs"),d.clipChart=d.appendClip(b,d.clipId),d.clipXAxis=d.appendClip(b,d.clipIdForXAxis),d.clipYAxis=d.appendClip(b,d.clipIdForYAxis),d.clipGrid=d.appendClip(b,d.clipIdForGrid),d.clipSubchart=d.appendClip(b,d.clipIdForSubchart),d.updateSvgSize(),c=d.main=d.svg.append("g").attr("transform",d.getTranslate("main")),d.initSubchart&&d.initSubchart(),d.initTooltip&&d.initTooltip(),d.initLegend&&d.initLegend(),d.initTitle&&d.initTitle(),c.append("text").attr("class",l.text+" "+l.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),d.initRegion(),d.initGrid(),c.append("g").attr("clip-path",d.clipPath).attr("class",l.chart),g.grid_lines_front&&d.initGridLines(),d.initEventRect(),d.initChartElements(),c.insert("rect",g.zoom_privileged?null:"g."+l.regions).attr("class",l.zoomRect).attr("width",d.width).attr("height",d.height).style("opacity",0).on("dblclick.zoom",null),g.axis_x_extent&&d.brush.extent(d.getDefaultExtent()),d.axis.init(),d.updateTargets(d.data.targets),h&&(d.updateDimension(),d.config.oninit.call(d),d.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),d.bindResize(),d.api.element=d.selectChart.node()},i.smoothLines=function(a,b){var c=this;"grid"===b&&a.each(function(){var a=c.d3.select(this),b=a.attr("x1"),d=a.attr("x2"),e=a.attr("y1"),f=a.attr("y2");a.attr({x1:Math.ceil(b),x2:Math.ceil(d),y1:Math.ceil(e),y2:Math.ceil(f)})})},i.updateSizes=function(){var a=this,b=a.config,c=a.legend?a.getLegendHeight():0,d=a.legend?a.getLegendWidth():0,e=a.isLegendRight||a.isLegendInset?0:c,f=a.hasArcType(),g=b.axis_rotated||f?0:a.getHorizontalAxisHeight("x"),h=b.subchart_show&&!f?b.subchart_size_height+g:0;a.currentWidth=a.getCurrentWidth(),a.currentHeight=a.getCurrentHeight(),a.margin=b.axis_rotated?{top:a.getHorizontalAxisHeight("y2")+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:a.getHorizontalAxisHeight("y")+e+a.getCurrentPaddingBottom(),left:h+(f?0:a.getCurrentPaddingLeft())}:{top:4+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:g+h+e+a.getCurrentPaddingBottom(),left:f?0:a.getCurrentPaddingLeft()},a.margin2=b.axis_rotated?{top:a.margin.top,right:NaN,bottom:20+e,left:a.rotated_padding_left}:{top:a.currentHeight-h-e,right:NaN,bottom:g+e,left:a.margin.left},a.margin3={top:0,right:NaN,bottom:0,left:0},a.updateSizeForLegend&&a.updateSizeForLegend(c,d),a.width=a.currentWidth-a.margin.left-a.margin.right,a.height=a.currentHeight-a.margin.top-a.margin.bottom,a.width<0&&(a.width=0),a.height<0&&(a.height=0),a.width2=b.axis_rotated?a.margin.left-a.rotated_padding_left-a.rotated_padding_right:a.width,a.height2=b.axis_rotated?a.height:a.currentHeight-a.margin2.top-a.margin2.bottom,a.width2<0&&(a.width2=0),a.height2<0&&(a.height2=0),a.arcWidth=a.width-(a.isLegendRight?d+10:0),a.arcHeight=a.height-(a.isLegendRight?0:10),a.hasType("gauge")&&!b.gauge_fullCircle&&(a.arcHeight+=a.height-a.getGaugeLabelHeight()),a.updateRadius&&a.updateRadius(),a.isLegendRight&&f&&(a.margin3.left=a.arcWidth/2+1.1*a.radiusExpanded)},i.updateTargets=function(a){var b=this;b.updateTargetsForText(a),b.updateTargetsForBar(a),b.updateTargetsForLine(a),b.hasArcType()&&b.updateTargetsForArc&&b.updateTargetsForArc(a),b.updateTargetsForSubchart&&b.updateTargetsForSubchart(a),b.showTargets()},i.showTargets=function(){var a=this;a.svg.selectAll("."+l.target).filter(function(b){return a.isTargetToShow(b.id)}).transition().duration(a.config.transition_duration).style("opacity",1)},i.redraw=function(a,b){var c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,x,y,z,A,B,C,D,E,F,G,H=this,I=H.main,J=H.d3,K=H.config,L=H.getShapeIndices(H.isAreaType),M=H.getShapeIndices(H.isBarType),N=H.getShapeIndices(H.isLineType),O=H.hasArcType(),P=H.filterTargetsToShow(H.data.targets),Q=H.xv.bind(H);if(a=a||{},c=w(a,"withY",!0),d=w(a,"withSubchart",!0),e=w(a,"withTransition",!0),h=w(a,"withTransform",!1),i=w(a,"withUpdateXDomain",!1),j=w(a,"withUpdateOrgXDomain",!1),k=w(a,"withTrimXDomain",!0),p=w(a,"withUpdateXAxis",i),m=w(a,"withLegend",!1),n=w(a,"withEventRect",!0),o=w(a,"withDimension",!0),f=w(a,"withTransitionForExit",e),g=w(a,"withTransitionForAxis",e),v=e?K.transition_duration:0,x=f?v:0,y=g?v:0,b=b||H.axis.generateTransitions(y),m&&K.legend_show?H.updateLegend(H.mapToIds(H.data.targets),a,b):o&&H.updateDimension(!0),H.isCategorized()&&0===P.length&&H.x.domain([0,H.axes.x.selectAll(".tick").size()]),P.length?(H.updateXDomain(P,i,j,k),K.axis_x_tick_values||(B=H.axis.updateXAxisTickValues(P))):(H.xAxis.tickValues([]),H.subXAxis.tickValues([])),K.zoom_rescale&&!a.flow&&(E=H.x.orgDomain()),H.y.domain(H.getYDomain(P,"y",E)),H.y2.domain(H.getYDomain(P,"y2",E)),!K.axis_y_tick_values&&K.axis_y_tick_count&&H.yAxis.tickValues(H.axis.generateTickValues(H.y.domain(),K.axis_y_tick_count)),!K.axis_y2_tick_values&&K.axis_y2_tick_count&&H.y2Axis.tickValues(H.axis.generateTickValues(H.y2.domain(),K.axis_y2_tick_count)),H.axis.redraw(b,O),H.axis.updateLabels(e),(i||p)&&P.length)if(K.axis_x_tick_culling&&B){for(C=1;C<B.length;C++)if(B.length/C<K.axis_x_tick_culling_max){D=C;break}H.svg.selectAll("."+l.axisX+" .tick text").each(function(a){var b=B.indexOf(a);b>=0&&J.select(this).style("display",b%D?"none":"block")})}else H.svg.selectAll("."+l.axisX+" .tick text").style("display","block");q=H.generateDrawArea?H.generateDrawArea(L,!1):void 0,r=H.generateDrawBar?H.generateDrawBar(M):void 0,s=H.generateDrawLine?H.generateDrawLine(N,!1):void 0,t=H.generateXYForText(L,M,N,!0),u=H.generateXYForText(L,M,N,!1),c&&(H.subY.domain(H.getYDomain(P,"y")),H.subY2.domain(H.getYDomain(P,"y2"))),H.updateXgridFocus(),I.select("text."+l.text+"."+l.empty).attr("x",H.width/2).attr("y",H.height/2).text(K.data_empty_label_text).transition().style("opacity",P.length?0:1),H.updateGrid(v),H.updateRegion(v),H.updateBar(x),H.updateLine(x),H.updateArea(x),H.updateCircle(),H.hasDataLabel()&&H.updateText(x),H.redrawTitle&&H.redrawTitle(),H.redrawArc&&H.redrawArc(v,x,h),H.redrawSubchart&&H.redrawSubchart(d,b,v,x,L,M,N),I.selectAll("."+l.selectedCircles).filter(H.isBarType.bind(H)).selectAll("circle").remove(),K.interaction_enabled&&!a.flow&&n&&(H.redrawEventRect(),H.updateZoom&&H.updateZoom()),H.updateCircleY(),F=(H.config.axis_rotated?H.circleY:H.circleX).bind(H),G=(H.config.axis_rotated?H.circleX:H.circleY).bind(H),a.flow&&(A=H.generateFlow({targets:P,flow:a.flow,duration:a.flow.duration,drawBar:r,drawLine:s,drawArea:q,cx:F,cy:G,xv:Q,xForText:t,yForText:u})),(v||A)&&H.isTabVisible()?J.transition().duration(v).each(function(){var b=[];[H.redrawBar(r,!0),H.redrawLine(s,!0),H.redrawArea(q,!0),H.redrawCircle(F,G,!0),H.redrawText(t,u,a.flow,!0),H.redrawRegion(!0),H.redrawGrid(!0)].forEach(function(a){a.forEach(function(a){b.push(a)})}),z=H.generateWait(),b.forEach(function(a){z.add(a)})}).call(z,function(){A&&A(),K.onrendered&&K.onrendered.call(H)}):(H.redrawBar(r),H.redrawLine(s),H.redrawArea(q),H.redrawCircle(F,G),H.redrawText(t,u,a.flow),H.redrawRegion(),H.redrawGrid(),K.onrendered&&K.onrendered.call(H)),H.mapToIds(H.data.targets).forEach(function(a){H.withoutFadeIn[a]=!0})},i.updateAndRedraw=function(a){var b,c=this,d=c.config;a=a||{},a.withTransition=w(a,"withTransition",!0),a.withTransform=w(a,"withTransform",!1),a.withLegend=w(a,"withLegend",!1),a.withUpdateXDomain=!0,a.withUpdateOrgXDomain=!0,a.withTransitionForExit=!1,a.withTransitionForTransform=w(a,"withTransitionForTransform",a.withTransition),c.updateSizes(),a.withLegend&&d.legend_show||(b=c.axis.generateTransitions(a.withTransitionForAxis?d.transition_duration:0),c.updateScales(),c.updateSvgSize(),c.transformAll(a.withTransitionForTransform,b)),c.redraw(a,b)},i.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},i.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},i.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},i.isCustomX=function(){var a=this,b=a.config;return!a.isTimeSeries()&&(b.data_x||v(b.data_xs))},i.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},i.getTranslate=function(a){var b,c,d=this,e=d.config;return"main"===a?(b=s(d.margin.left),c=s(d.margin.top)):"context"===a?(b=s(d.margin2.left),c=s(d.margin2.top)):"legend"===a?(b=d.margin3.left,c=d.margin3.top):"x"===a?(b=0,c=e.axis_rotated?0:d.height):"y"===a?(b=0,c=e.axis_rotated?d.height:0):"y2"===a?(b=e.axis_rotated?0:d.width,c=e.axis_rotated?1:0):"subx"===a?(b=0,c=e.axis_rotated?0:d.height2):"arc"===a&&(b=d.arcWidth/2,c=d.arcHeight/2),"translate("+b+","+c+")"},i.initialOpacity=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?1:0},i.initialOpacityForCircle=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?this.opacityForCircle(a):0},i.opacityForCircle=function(a){var b=this.config.point_show?1:0;return m(a.value)?this.isScatterType(a)?.5:b:0},i.opacityForText=function(){return this.hasDataLabel()?1:0},i.xx=function(a){return a?this.x(a.x):null},i.xv=function(a){var b=this,c=a.value;return b.isTimeSeries()?c=b.parseDate(a.value):b.isCategorized()&&"string"==typeof a.value&&(c=b.config.axis_x_categories.indexOf(a.value)),Math.ceil(b.x(c))},i.yv=function(a){var b=this,c=a.axis&&"y2"===a.axis?b.y2:b.y;return Math.ceil(c(a.value))},i.subxx=function(a){return a?this.subX(a.x):null},i.transformMain=function(a,b){var c,d,e,f=this;b&&b.axisX?c=b.axisX:(c=f.main.select("."+l.axisX),a&&(c=c.transition())),b&&b.axisY?d=b.axisY:(d=f.main.select("."+l.axisY),a&&(d=d.transition())),b&&b.axisY2?e=b.axisY2:(e=f.main.select("."+l.axisY2),a&&(e=e.transition())),(a?f.main.transition():f.main).attr("transform",f.getTranslate("main")),c.attr("transform",f.getTranslate("x")),d.attr("transform",f.getTranslate("y")),e.attr("transform",f.getTranslate("y2")),f.main.select("."+l.chartArcs).attr("transform",f.getTranslate("arc"))},i.transformAll=function(a,b){var c=this;c.transformMain(a,b),c.config.subchart_show&&c.transformContext(a,b),c.legend&&c.transformLegend(a)},i.updateSvgSize=function(){var a=this,b=a.svg.select(".c3-brush .background");a.svg.attr("width",a.currentWidth).attr("height",a.currentHeight),a.svg.selectAll(["#"+a.clipId,"#"+a.clipIdForGrid]).select("rect").attr("width",a.width).attr("height",a.height),a.svg.select("#"+a.clipIdForXAxis).select("rect").attr("x",a.getXAxisClipX.bind(a)).attr("y",a.getXAxisClipY.bind(a)).attr("width",a.getXAxisClipWidth.bind(a)).attr("height",a.getXAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForYAxis).select("rect").attr("x",a.getYAxisClipX.bind(a)).attr("y",a.getYAxisClipY.bind(a)).attr("width",a.getYAxisClipWidth.bind(a)).attr("height",a.getYAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForSubchart).select("rect").attr("width",a.width).attr("height",b.size()?b.attr("height"):0),a.svg.select("."+l.zoomRect).attr("width",a.width).attr("height",a.height),a.selectChart.style("max-height",a.currentHeight+"px")},i.updateDimension=function(a){var b=this;a||(b.config.axis_rotated?(b.axes.x.call(b.xAxis),b.axes.subx.call(b.subXAxis)):(b.axes.y.call(b.yAxis),b.axes.y2.call(b.y2Axis))),b.updateSizes(),b.updateScales(),b.updateSvgSize(),b.transformAll(!1)},i.observeInserted=function(b){var c,d=this;return"undefined"==typeof MutationObserver?void a.console.error("MutationObserver not defined."):(c=new MutationObserver(function(e){e.forEach(function(e){"childList"===e.type&&e.previousSibling&&(c.disconnect(),d.intervalForObserveInserted=a.setInterval(function(){b.node().parentNode&&(a.clearInterval(d.intervalForObserveInserted),d.updateDimension(),d.brush&&d.brush.update(),d.config.oninit.call(d),d.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),b.transition().style("opacity",1))},10))})}),void c.observe(b.node(),{attributes:!0,childList:!0,characterData:!0}))},i.bindResize=function(){var b=this,c=b.config;if(b.resizeFunction=b.generateResize(),b.resizeFunction.add(function(){c.onresize.call(b)}),c.resize_auto&&b.resizeFunction.add(function(){void 0!==b.resizeTimeout&&a.clearTimeout(b.resizeTimeout),b.resizeTimeout=a.setTimeout(function(){delete b.resizeTimeout,b.api.flush()},100)}),b.resizeFunction.add(function(){c.onresized.call(b)}),a.attachEvent)a.attachEvent("onresize",b.resizeFunction);else if(a.addEventListener)a.addEventListener("resize",b.resizeFunction,!1);else{var d=a.onresize;d?d.add&&d.remove||(d=b.generateResize(),d.add(a.onresize)):d=b.generateResize(),d.add(b.resizeFunction),a.onresize=d}},i.generateResize=function(){function a(){b.forEach(function(a){a()})}var b=[];return a.add=function(a){b.push(a)},a.remove=function(a){for(var c=0;c<b.length;c++)if(b[c]===a){b.splice(c,1);break}},a},i.endall=function(a,b){var c=0;a.each(function(){++c}).each("end",function(){--c||b.apply(this,arguments)})},i.generateWait=function(){var a=[],b=function(b,c){var d=setInterval(function(){var b=0;a.forEach(function(a){if(a.empty())return void(b+=1);try{a.transition()}catch(c){b+=1}}),b===a.length&&(clearInterval(d),c&&c())},10)};return b.add=function(b){a.push(b)},b},i.parseDate=function(b){var c,d=this;return b instanceof Date?c=b:"string"==typeof b?c=d.dataTimeFormat(d.config.data_xFormat).parse(b):"number"!=typeof b||isNaN(b)||(c=new Date(+b)),c&&!isNaN(+c)||a.console.error("Failed to parse x '"+b+"' to Date object"),c},i.isTabVisible=function(){var a;return"undefined"!=typeof document.hidden?a="hidden":"undefined"!=typeof document.mozHidden?a="mozHidden":"undefined"!=typeof document.msHidden?a="msHidden":"undefined"!=typeof document.webkitHidden&&(a="webkitHidden"),!document[a]},i.getDefaultConfig=function(){var a={bindto:"#chart",svg_classname:void 0,size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,resize_auto:!0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},zoom_x_min:void 0,zoom_x_max:void 0,interaction_brighten:!0,interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(a){return a},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_headers:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_axis_x_show:!0,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,legend_padding:0,legend_item_tile_width:10,legend_item_tile_height:10,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_rotate:0,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_sensitivity:10,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,area_above:!1,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_label_ratio:void 0,pie_expand:{},pie_expand_duration:50,gauge_fullCircle:!1,gauge_label_show:!0,gauge_label_format:void 0,gauge_min:0,gauge_max:100,gauge_startingAngle:-1*Math.PI/2,gauge_units:void 0,gauge_width:void 0,gauge_expand:{},gauge_expand_duration:50,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_label_ratio:void 0,donut_width:void 0,donut_title:"",donut_expand:{},donut_expand_duration:50,spline_interpolation_type:"cardinal",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(a,b,c,d){return this.getTooltipContent?this.getTooltipContent(a,b,c,d):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"},tooltip_onshow:function(){},tooltip_onhide:function(){},title_text:void 0,title_padding:{top:0,right:0,bottom:0,left:0},title_position:"top-center"};return Object.keys(this.additionalConfig).forEach(function(b){a[b]=this.additionalConfig[b]},this),a},i.additionalConfig={},i.loadConfig=function(a){function b(){var a=d.shift();return a&&c&&"object"==typeof c&&a in c?(c=c[a],b()):a?void 0:c}var c,d,e,f=this.config;Object.keys(f).forEach(function(g){c=a,d=g.split("_"),e=b(),q(e)&&(f[g]=e)})},i.getScale=function(a,b,c){return(c?this.d3.time.scale():this.d3.scale.linear()).range([a,b])},i.getX=function(a,b,c,d){var e,f=this,g=f.getScale(a,b,f.isTimeSeries()),h=c?g.domain(c):g;f.isCategorized()?(d=d||function(){return 0},g=function(a,b){var c=h(a)+d(a);return b?c:Math.ceil(c)}):g=function(a,b){var c=h(a);return b?c:Math.ceil(c)};for(e in h)g[e]=h[e];return g.orgDomain=function(){return h.domain()},f.isCategorized()&&(g.domain=function(a){return arguments.length?(h.domain(a),g):(a=this.orgDomain(),[a[0],a[1]+1])}),g},i.getY=function(a,b,c){var d=this.getScale(a,b,this.isTimeSeriesY());return c&&d.domain(c),d},i.getYScale=function(a){return"y2"===this.axis.getId(a)?this.y2:this.y},i.getSubYScale=function(a){return"y2"===this.axis.getId(a)?this.subY2:this.subY},i.updateScales=function(){var a=this,b=a.config,c=!a.x;a.xMin=b.axis_rotated?1:0,a.xMax=b.axis_rotated?a.height:a.width,a.yMin=b.axis_rotated?0:a.height,a.yMax=b.axis_rotated?a.width:1,a.subXMin=a.xMin,a.subXMax=a.xMax,a.subYMin=b.axis_rotated?0:a.height2,a.subYMax=b.axis_rotated?a.width2:1,a.x=a.getX(a.xMin,a.xMax,c?void 0:a.x.orgDomain(),function(){return a.xAxis.tickOffset()}),a.y=a.getY(a.yMin,a.yMax,c?b.axis_y_default:a.y.domain()),a.y2=a.getY(a.yMin,a.yMax,c?b.axis_y2_default:a.y2.domain()),a.subX=a.getX(a.xMin,a.xMax,a.orgXDomain,function(b){return b%1?0:a.subXAxis.tickOffset()}),a.subY=a.getY(a.subYMin,a.subYMax,c?b.axis_y_default:a.subY.domain()),a.subY2=a.getY(a.subYMin,a.subYMax,c?b.axis_y2_default:a.subY2.domain()),a.xAxisTickFormat=a.axis.getXAxisTickFormat(),a.xAxisTickValues=a.axis.getXAxisTickValues(),a.yAxisTickValues=a.axis.getYAxisTickValues(),a.y2AxisTickValues=a.axis.getY2AxisTickValues(),a.xAxis=a.axis.getXAxis(a.x,a.xOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.subXAxis=a.axis.getXAxis(a.subX,a.subXOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.yAxis=a.axis.getYAxis(a.y,a.yOrient,b.axis_y_tick_format,a.yAxisTickValues,b.axis_y_tick_outer),a.y2Axis=a.axis.getYAxis(a.y2,a.y2Orient,b.axis_y2_tick_format,a.y2AxisTickValues,b.axis_y2_tick_outer),c||(a.brush&&a.brush.scale(a.subX),b.zoom_enabled&&a.zoom.scale(a.x)),a.updateArc&&a.updateArc()},i.getYDomainMin=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasNegativeValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=0>a?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&+a>0||(k[d][b]+=+a)});return h.d3.min(Object.keys(k).map(function(a){return h.d3.min(k[a])}))},i.getYDomainMax=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasPositiveValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=a>0?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&0>+a||(k[d][b]+=+a)});return h.d3.max(Object.keys(k).map(function(a){return h.d3.max(k[a])}))},i.getYDomain=function(a,b,c){var d,e,f,g,h,i,j,k,l,n,o,p=this,q=p.config,r=a.filter(function(a){return p.axis.getId(a.id)===b}),s=c?p.filterByXDomain(r,c):r,u="y2"===b?q.axis_y2_min:q.axis_y_min,w="y2"===b?q.axis_y2_max:q.axis_y_max,x=p.getYDomainMin(s),y=p.getYDomainMax(s),z="y2"===b?q.axis_y2_center:q.axis_y_center,A=p.hasType("bar",s)&&q.bar_zerobased||p.hasType("area",s)&&q.area_zerobased,B="y2"===b?q.axis_y2_inverted:q.axis_y_inverted,C=p.hasDataLabel()&&q.axis_rotated,D=p.hasDataLabel()&&!q.axis_rotated;return x=m(u)?u:m(w)?w>x?x:w-10:x,y=m(w)?w:m(u)?y>u?y:u+10:y,0===s.length?"y2"===b?p.y2.domain():p.y.domain():(isNaN(x)&&(x=0),isNaN(y)&&(y=x),x===y&&(0>x?y=0:x=0),n=x>=0&&y>=0,o=0>=x&&0>=y,(m(u)&&n||m(w)&&o)&&(A=!1),A&&(n&&(x=0),o&&(y=0)),e=Math.abs(y-x),f=g=h=.1*e,"undefined"!=typeof z&&(i=Math.max(Math.abs(x),Math.abs(y)),y=z+i,x=z-i),C?(j=p.getDataLabelLength(x,y,"width"),k=t(p.y.range()),l=[j[0]/k,j[1]/k],
2311 2311 g+=e*(l[1]/(1-l[0]-l[1])),h+=e*(l[0]/(1-l[0]-l[1]))):D&&(j=p.getDataLabelLength(x,y,"height"),g+=p.axis.convertPixelsToAxisPadding(j[1],e),h+=p.axis.convertPixelsToAxisPadding(j[0],e)),"y"===b&&v(q.axis_y_padding)&&(g=p.axis.getPadding(q.axis_y_padding,"top",g,e),h=p.axis.getPadding(q.axis_y_padding,"bottom",h,e)),"y2"===b&&v(q.axis_y2_padding)&&(g=p.axis.getPadding(q.axis_y2_padding,"top",g,e),h=p.axis.getPadding(q.axis_y2_padding,"bottom",h,e)),A&&(n&&(h=x),o&&(g=-y)),d=[x-h,y+g],B?d.reverse():d)},i.getXDomainMin=function(a){var b=this,c=b.config;return q(c.axis_x_min)?b.isTimeSeries()?this.parseDate(c.axis_x_min):c.axis_x_min:b.d3.min(a,function(a){return b.d3.min(a.values,function(a){return a.x})})},i.getXDomainMax=function(a){var b=this,c=b.config;return q(c.axis_x_max)?b.isTimeSeries()?this.parseDate(c.axis_x_max):c.axis_x_max:b.d3.max(a,function(a){return b.d3.max(a.values,function(a){return a.x})})},i.getXDomainPadding=function(a){var b,c,d,e,f=this,g=f.config,h=a[1]-a[0];return f.isCategorized()?c=0:f.hasType("bar")?(b=f.getMaxDataCount(),c=b>1?h/(b-1)/2:.5):c=.01*h,"object"==typeof g.axis_x_padding&&v(g.axis_x_padding)?(d=m(g.axis_x_padding.left)?g.axis_x_padding.left:c,e=m(g.axis_x_padding.right)?g.axis_x_padding.right:c):d=e="number"==typeof g.axis_x_padding?g.axis_x_padding:c,{left:d,right:e}},i.getXDomain=function(a){var b=this,c=[b.getXDomainMin(a),b.getXDomainMax(a)],d=c[0],e=c[1],f=b.getXDomainPadding(c),g=0,h=0;return d-e!==0||b.isCategorized()||(b.isTimeSeries()?(d=new Date(.5*d.getTime()),e=new Date(1.5*e.getTime())):(d=0===d?1:.5*d,e=0===e?-1:1.5*e)),(d||0===d)&&(g=b.isTimeSeries()?new Date(d.getTime()-f.left):d-f.left),(e||0===e)&&(h=b.isTimeSeries()?new Date(e.getTime()+f.right):e+f.right),[g,h]},i.updateXDomain=function(a,b,c,d,e){var f=this,g=f.config;return c&&(f.x.domain(e?e:f.d3.extent(f.getXDomain(a))),f.orgXDomain=f.x.domain(),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent(),f.subX.domain(f.x.domain()),f.brush&&f.brush.scale(f.subX)),b&&(f.x.domain(e?e:!f.brush||f.brush.empty()?f.orgXDomain:f.brush.extent()),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent()),d&&f.x.domain(f.trimXDomain(f.x.orgDomain())),f.x.domain()},i.trimXDomain=function(a){var b=this.getZoomDomain(),c=b[0],d=b[1];return a[0]<=c&&(a[1]=+a[1]+(c-a[0]),a[0]=c),d<=a[1]&&(a[0]=+a[0]-(a[1]-d),a[1]=d),a},i.isX=function(a){var b=this,c=b.config;return c.data_x&&a===c.data_x||v(c.data_xs)&&x(c.data_xs,a)},i.isNotX=function(a){return!this.isX(a)},i.getXKey=function(a){var b=this,c=b.config;return c.data_x?c.data_x:v(c.data_xs)?c.data_xs[a]:null},i.getXValuesOfXKey=function(a,b){var c,d=this,e=b&&v(b)?d.mapToIds(b):[];return e.forEach(function(b){d.getXKey(b)===a&&(c=d.data.xs[b])}),c},i.getIndexByX=function(a){var b=this,c=b.filterByX(b.data.targets,a);return c.length?c[0].index:null},i.getXValue=function(a,b){var c=this;return a in c.data.xs&&c.data.xs[a]&&m(c.data.xs[a][b])?c.data.xs[a][b]:b},i.getOtherTargetXs=function(){var a=this,b=Object.keys(a.data.xs);return b.length?a.data.xs[b[0]]:null},i.getOtherTargetX=function(a){var b=this.getOtherTargetXs();return b&&a<b.length?b[a]:null},i.addXs=function(a){var b=this;Object.keys(a).forEach(function(c){b.config.data_xs[c]=a[c]})},i.hasMultipleX=function(a){return this.d3.set(Object.keys(a).map(function(b){return a[b]})).size()>1},i.isMultipleX=function(){return v(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},i.addName=function(a){var b,c=this;return a&&(b=c.config.data_names[a.id],a.name=void 0!==b?b:a.id),a},i.getValueOnIndex=function(a,b){var c=a.filter(function(a){return a.index===b});return c.length?c[0]:null},i.updateTargetX=function(a,b){var c=this;a.forEach(function(a){a.values.forEach(function(d,e){d.x=c.generateTargetX(b[e],a.id,e)}),c.data.xs[a.id]=b})},i.updateTargetXs=function(a,b){var c=this;a.forEach(function(a){b[a.id]&&c.updateTargetX([a],b[a.id])})},i.generateTargetX=function(a,b,c){var d,e=this;return d=e.isTimeSeries()?a?e.parseDate(a):e.parseDate(e.getXValue(b,c)):e.isCustomX()&&!e.isCategorized()?m(a)?+a:e.getXValue(b,c):c},i.cloneTarget=function(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}},i.updateXs=function(){var a=this;a.data.targets.length&&(a.xs=[],a.data.targets[0].values.forEach(function(b){a.xs[b.index]=b.x}))},i.getPrevX=function(a){var b=this.xs[a-1];return"undefined"!=typeof b?b:null},i.getNextX=function(a){var b=this.xs[a+1];return"undefined"!=typeof b?b:null},i.getMaxDataCount=function(){var a=this;return a.d3.max(a.data.targets,function(a){return a.values.length})},i.getMaxDataCountTarget=function(a){var b,c=a.length,d=0;return c>1?a.forEach(function(a){a.values.length>d&&(b=a,d=a.values.length)}):b=c?a[0]:null,b},i.getEdgeX=function(a){var b=this;return a.length?[b.d3.min(a,function(a){return a.values[0].x}),b.d3.max(a,function(a){return a.values[a.values.length-1].x})]:[0,0]},i.mapToIds=function(a){return a.map(function(a){return a.id})},i.mapToTargetIds=function(a){var b=this;return a?[].concat(a):b.mapToIds(b.data.targets)},i.hasTarget=function(a,b){var c,d=this.mapToIds(a);for(c=0;c<d.length;c++)if(d[c]===b)return!0;return!1},i.isTargetToShow=function(a){return this.hiddenTargetIds.indexOf(a)<0},i.isLegendToShow=function(a){return this.hiddenLegendIds.indexOf(a)<0},i.filterTargetsToShow=function(a){var b=this;return a.filter(function(a){return b.isTargetToShow(a.id)})},i.mapTargetsToUniqueXs=function(a){var b=this,c=b.d3.set(b.d3.merge(a.map(function(a){return a.values.map(function(a){return+a.x})}))).values();return c=b.isTimeSeries()?c.map(function(a){return new Date(+a)}):c.map(function(a){return+a}),c.sort(function(a,b){return b>a?-1:a>b?1:a>=b?0:NaN})},i.addHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.concat(a)},i.removeHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(b){return a.indexOf(b)<0})},i.addHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.concat(a)},i.removeHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(b){return a.indexOf(b)<0})},i.getValuesAsIdKeyed=function(a){var b={};return a.forEach(function(a){b[a.id]=[],a.values.forEach(function(c){b[a.id].push(c.value)})}),b},i.checkValueInTargets=function(a,b){var c,d,e,f=Object.keys(a);for(c=0;c<f.length;c++)for(e=a[f[c]].values,d=0;d<e.length;d++)if(b(e[d].value))return!0;return!1},i.hasNegativeValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return 0>a})},i.hasPositiveValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return a>0})},i.isOrderDesc=function(){var a=this.config;return"string"==typeof a.data_order&&"desc"===a.data_order.toLowerCase()},i.isOrderAsc=function(){var a=this.config;return"string"==typeof a.data_order&&"asc"===a.data_order.toLowerCase()},i.orderTargets=function(a){var b=this,c=b.config,d=b.isOrderAsc(),e=b.isOrderDesc();return d||e?a.sort(function(a,b){var c=function(a,b){return a+Math.abs(b.value)},e=a.values.reduce(c,0),f=b.values.reduce(c,0);return d?f-e:e-f}):n(c.data_order)&&a.sort(c.data_order),a},i.filterByX=function(a,b){return this.d3.merge(a.map(function(a){return a.values})).filter(function(a){return a.x-b===0})},i.filterRemoveNull=function(a){return a.filter(function(a){return m(a.value)})},i.filterByXDomain=function(a,b){return a.map(function(a){return{id:a.id,id_org:a.id_org,values:a.values.filter(function(a){return b[0]<=a.x&&a.x<=b[1]})}})},i.hasDataLabel=function(){var a=this.config;return"boolean"==typeof a.data_labels&&a.data_labels?!0:!("object"!=typeof a.data_labels||!v(a.data_labels))},i.getDataLabelLength=function(a,b,c){var d=this,e=[0,0],f=1.3;return d.selectChart.select("svg").selectAll(".dummy").data([a,b]).enter().append("text").text(function(a){return d.dataLabelFormat(a.id)(a)}).each(function(a,b){e[b]=this.getBoundingClientRect()[c]*f}).remove(),e},i.isNoneArc=function(a){return this.hasTarget(this.data.targets,a.id)},i.isArc=function(a){return"data"in a&&this.hasTarget(this.data.targets,a.data.id)},i.findSameXOfValues=function(a,b){var c,d=a[b].x,e=[];for(c=b-1;c>=0&&d===a[c].x;c--)e.push(a[c]);for(c=b;c<a.length&&d===a[c].x;c++)e.push(a[c]);return e},i.findClosestFromTargets=function(a,b){var c,d=this;return c=a.map(function(a){return d.findClosest(a.values,b)}),d.findClosest(c,b)},i.findClosest=function(a,b){var c,d=this,e=d.config.point_sensitivity;return a.filter(function(a){return a&&d.isBarType(a.id)}).forEach(function(a){var b=d.main.select("."+l.bars+d.getTargetSelectorSuffix(a.id)+" ."+l.bar+"-"+a.index).node();!c&&d.isWithinBar(b)&&(c=a)}),a.filter(function(a){return a&&!d.isBarType(a.id)}).forEach(function(a){var f=d.dist(a,b);e>f&&(e=f,c=a)}),c},i.dist=function(a,b){var c=this,d=c.config,e=d.axis_rotated?1:0,f=d.axis_rotated?0:1,g=c.circleY(a,a.index),h=c.x(a.x);return Math.sqrt(Math.pow(h-b[e],2)+Math.pow(g-b[f],2))},i.convertValuesToStep=function(a){var b,c=[].concat(a);if(!this.isCategorized())return a;for(b=a.length+1;b>0;b--)c[b]=c[b-1];return c[0]={x:c[0].x-1,value:c[0].value,id:c[0].id},c[a.length+1]={x:c[a.length].x+1,value:c[a.length].value,id:c[a.length].id},c},i.updateDataAttributes=function(a,b){var c=this,d=c.config,e=d["data_"+a];return"undefined"==typeof b?e:(Object.keys(b).forEach(function(a){e[a]=b[a]}),c.redraw({withLegend:!0}),e)},i.convertUrlToData=function(a,b,c,d,e){var f=this,g=b?b:"csv",h=f.d3.xhr(a);c&&Object.keys(c).forEach(function(a){h.header(a,c[a])}),h.get(function(a,b){var c;if(!b)throw new Error(a.responseURL+" "+a.status+" ("+a.statusText+")");c="json"===g?f.convertJsonToData(JSON.parse(b.response),d):"tsv"===g?f.convertTsvToData(b.response):f.convertCsvToData(b.response),e.call(f,c)})},i.convertXsvToData=function(a,b){var c,d=b.parseRows(a);return 1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=b.parse(a),c},i.convertCsvToData=function(a){return this.convertXsvToData(a,this.d3.csv)},i.convertTsvToData=function(a){return this.convertXsvToData(a,this.d3.tsv)},i.convertJsonToData=function(a,b){var c,d,e=this,f=[];return b?(b.x?(c=b.value.concat(b.x),e.config.data_x=b.x):c=b.value,f.push(c),a.forEach(function(a){var b=[];c.forEach(function(c){var d=e.findValueInJson(a,c);p(d)&&(d=null),b.push(d)}),f.push(b)}),d=e.convertRowsToData(f)):(Object.keys(a).forEach(function(b){f.push([b].concat(a[b]))}),d=e.convertColumnsToData(f)),d},i.findValueInJson=function(a,b){b=b.replace(/\[(\w+)\]/g,".$1"),b=b.replace(/^\./,"");for(var c=b.split("."),d=0;d<c.length;++d){var e=c[d];if(!(e in a))return;a=a[e]}return a},i.convertRowsToData=function(a){var b,c,d=a[0],e={},f=[];for(b=1;b<a.length;b++){for(e={},c=0;c<a[b].length;c++){if(p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[d[c]]=a[b][c]}f.push(e)}return f},i.convertColumnsToData=function(a){var b,c,d,e=[];for(b=0;b<a.length;b++)for(d=a[b][0],c=1;c<a[b].length;c++){if(p(e[c-1])&&(e[c-1]={}),p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[c-1][d]=a[b][c]}return e},i.convertDataToTargets=function(a,b){var c,d=this,e=d.config,f=d.d3.keys(a[0]).filter(d.isNotX,d),g=d.d3.keys(a[0]).filter(d.isX,d);return f.forEach(function(c){var f=d.getXKey(c);d.isCustomX()||d.isTimeSeries()?g.indexOf(f)>=0?d.data.xs[c]=(b&&d.data.xs[c]?d.data.xs[c]:[]).concat(a.map(function(a){return a[f]}).filter(m).map(function(a,b){return d.generateTargetX(a,c,b)})):e.data_x?d.data.xs[c]=d.getOtherTargetXs():v(e.data_xs)&&(d.data.xs[c]=d.getXValuesOfXKey(f,d.data.targets)):d.data.xs[c]=a.map(function(a,b){return b})}),f.forEach(function(a){if(!d.data.xs[a])throw new Error('x is not defined for id = "'+a+'".')}),c=f.map(function(b,c){var f=e.data_idConverter(b);return{id:f,id_org:b,values:a.map(function(a,g){var h,i=d.getXKey(b),j=a[i],k=null===a[b]||isNaN(a[b])?null:+a[b];return d.isCustomX()&&d.isCategorized()&&0===c&&!p(j)?(0===c&&0===g&&(e.axis_x_categories=[]),h=e.axis_x_categories.indexOf(j),-1===h&&(h=e.axis_x_categories.length,e.axis_x_categories.push(j))):h=d.generateTargetX(j,b,g),(p(a[b])||d.data.xs[b].length<=g)&&(h=void 0),{x:h,value:k,id:f}}).filter(function(a){return q(a.x)})}}),c.forEach(function(a){var b;e.data_xSort&&(a.values=a.values.sort(function(a,b){var c=a.x||0===a.x?a.x:1/0,d=b.x||0===b.x?b.x:1/0;return c-d})),b=0,a.values.forEach(function(a){a.index=b++}),d.data.xs[a.id].sort(function(a,b){return a-b})}),d.hasNegativeValue=d.hasNegativeValueInTargets(c),d.hasPositiveValue=d.hasPositiveValueInTargets(c),e.data_type&&d.setTargetType(d.mapToIds(c).filter(function(a){return!(a in e.data_types)}),e.data_type),c.forEach(function(a){d.addCache(a.id_org,a)}),c},i.load=function(a,b){var c=this;a&&(b.filter&&(a=a.filter(b.filter)),(b.type||b.types)&&a.forEach(function(a){var d=b.types&&b.types[a.id]?b.types[a.id]:b.type;c.setTargetType(a.id,d)}),c.data.targets.forEach(function(b){for(var c=0;c<a.length;c++)if(b.id===a[c].id){b.values=a[c].values,a.splice(c,1);break}}),c.data.targets=c.data.targets.concat(a)),c.updateTargets(c.data.targets),c.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),b.done&&b.done()},i.loadFromArgs=function(a){var b=this;a.data?b.load(b.convertDataToTargets(a.data),a):a.url?b.convertUrlToData(a.url,a.mimeType,a.headers,a.keys,function(c){b.load(b.convertDataToTargets(c),a)}):a.json?b.load(b.convertDataToTargets(b.convertJsonToData(a.json,a.keys)),a):a.rows?b.load(b.convertDataToTargets(b.convertRowsToData(a.rows)),a):a.columns?b.load(b.convertDataToTargets(b.convertColumnsToData(a.columns)),a):b.load(null,a)},i.unload=function(a,b){var c=this;return b||(b=function(){}),a=a.filter(function(a){return c.hasTarget(c.data.targets,a)}),a&&0!==a.length?(c.svg.selectAll(a.map(function(a){return c.selectorTarget(a)})).transition().style("opacity",0).remove().call(c.endall,b),void a.forEach(function(a){c.withoutFadeIn[a]=!1,c.legend&&c.legend.selectAll("."+l.legendItem+c.getTargetSelectorSuffix(a)).remove(),c.data.targets=c.data.targets.filter(function(b){return b.id!==a})})):void b()},i.categoryName=function(a){var b=this.config;return a<b.axis_x_categories.length?b.axis_x_categories[a]:a},i.initEventRect=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.eventRects).style("fill-opacity",0)},i.redrawEventRect=function(){var a,b,c=this,d=c.config,e=c.isMultipleX(),f=c.main.select("."+l.eventRects).style("cursor",d.zoom_enabled?d.axis_rotated?"ns-resize":"ew-resize":null).classed(l.eventRectsMultiple,e).classed(l.eventRectsSingle,!e);f.selectAll("."+l.eventRect).remove(),c.eventRect=f.selectAll("."+l.eventRect),e?(a=c.eventRect.data([0]),c.generateEventRectsForMultipleXs(a.enter()),c.updateEventRect(a)):(b=c.getMaxDataCountTarget(c.data.targets),f.datum(b?b.values:[]),c.eventRect=f.selectAll("."+l.eventRect),a=c.eventRect.data(function(a){return a}),c.generateEventRectsForSingleX(a.enter()),c.updateEventRect(a),a.exit().remove())},i.updateEventRect=function(a){var b,c,d,e,f,g,h=this,i=h.config;a=a||h.eventRect.data(function(a){return a}),h.isMultipleX()?(b=0,c=0,d=h.width,e=h.height):(!h.isCustomX()&&!h.isTimeSeries()||h.isCategorized()?(f=h.getEventRectWidth(),g=function(a){return h.x(a.x)-f/2}):(h.updateXs(),f=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index);return null===b&&null===c?i.axis_rotated?h.height:h.width:(null===b&&(b=h.x.domain()[0]),null===c&&(c=h.x.domain()[1]),Math.max(0,(h.x(c)-h.x(b))/2))},g=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index),d=h.data.xs[a.id][a.index];return null===b&&null===c?0:(null===b&&(b=h.x.domain()[0]),(h.x(d)+h.x(b))/2)}),b=i.axis_rotated?0:g,c=i.axis_rotated?g:0,d=i.axis_rotated?h.width:f,e=i.axis_rotated?f:h.height),a.attr("class",h.classEvent.bind(h)).attr("x",b).attr("y",c).attr("width",d).attr("height",e)},i.generateEventRectsForSingleX=function(a){var b=this,c=b.d3,d=b.config;a.append("rect").attr("class",b.classEvent.bind(b)).style("cursor",d.data_selection_enabled&&d.data_selection_grouped?"pointer":null).on("mouseover",function(a){var c=a.index;b.dragging||b.flowing||b.hasArcType()||(d.point_focus_expand_enabled&&b.expandCircles(c,null,!0),b.expandBars(c,null,!0),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseover.call(b.api,a)}))}).on("mouseout",function(a){var c=a.index;b.config&&(b.hasArcType()||(b.hideXGridFocus(),b.hideTooltip(),b.unexpandCircles(),b.unexpandBars(),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseout.call(b.api,a)})))}).on("mousemove",function(a){var e,f=a.index,g=b.svg.select("."+l.eventRect+"-"+f);b.dragging||b.flowing||b.hasArcType()||(b.isStepType(a)&&"step-after"===b.config.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,f))&&(f-=1),e=b.filterTargetsToShow(b.data.targets).map(function(a){return b.addName(b.getValueOnIndex(a.values,f))}),d.tooltip_grouped&&(b.showTooltip(e,this),b.showXGridFocus(e)),(!d.tooltip_grouped||d.data_selection_enabled&&!d.data_selection_grouped)&&b.main.selectAll("."+l.shape+"-"+f).each(function(){c.select(this).classed(l.EXPANDED,!0),d.data_selection_enabled&&g.style("cursor",d.data_selection_grouped?"pointer":null),d.tooltip_grouped||(b.hideXGridFocus(),b.hideTooltip(),d.data_selection_grouped||(b.unexpandCircles(f),b.unexpandBars(f)))}).filter(function(a){return b.isWithinShape(this,a)}).each(function(a){d.data_selection_enabled&&(d.data_selection_grouped||d.data_selection_isselectable(a))&&g.style("cursor","pointer"),d.tooltip_grouped||(b.showTooltip([a],this),b.showXGridFocus([a]),d.point_focus_expand_enabled&&b.expandCircles(f,a.id,!0),b.expandBars(f,a.id,!0))}))}).on("click",function(a){var e=a.index;if(!b.hasArcType()&&b.toggleShape){if(b.cancelClick)return void(b.cancelClick=!1);b.isStepType(a)&&"step-after"===d.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,e))&&(e-=1),b.main.selectAll("."+l.shape+"-"+e).each(function(a){(d.data_selection_grouped||b.isWithinShape(this,a))&&(b.toggleShape(this,a,e),b.config.data_onclick.call(b.api,a,this))})}}).call(d.data_selection_draggable&&b.drag?c.behavior.drag().origin(Object).on("drag",function(){b.drag(c.mouse(this))}).on("dragstart",function(){b.dragstart(c.mouse(this))}).on("dragend",function(){b.dragend()}):function(){})},i.generateEventRectsForMultipleXs=function(a){function b(){c.svg.select("."+l.eventRect).style("cursor",null),c.hideXGridFocus(),c.hideTooltip(),c.unexpandCircles(),c.unexpandBars()}var c=this,d=c.d3,e=c.config;a.append("rect").attr("x",0).attr("y",0).attr("width",c.width).attr("height",c.height).attr("class",l.eventRect).on("mouseout",function(){c.config&&(c.hasArcType()||b())}).on("mousemove",function(){var a,f,g,h,i=c.filterTargetsToShow(c.data.targets);if(!c.dragging&&!c.hasArcType(i)){if(a=d.mouse(this),f=c.findClosestFromTargets(i,a),!c.mouseover||f&&f.id===c.mouseover.id||(e.data_onmouseout.call(c.api,c.mouseover),c.mouseover=void 0),!f)return void b();g=c.isScatterType(f)||!e.tooltip_grouped?[f]:c.filterByX(i,f.x),h=g.map(function(a){return c.addName(a)}),c.showTooltip(h,this),e.point_focus_expand_enabled&&c.expandCircles(f.index,f.id,!0),c.expandBars(f.index,f.id,!0),c.showXGridFocus(h),(c.isBarType(f.id)||c.dist(f,a)<e.point_sensitivity)&&(c.svg.select("."+l.eventRect).style("cursor","pointer"),c.mouseover||(e.data_onmouseover.call(c.api,f),c.mouseover=f))}}).on("click",function(){var a,b,f=c.filterTargetsToShow(c.data.targets);c.hasArcType(f)||(a=d.mouse(this),b=c.findClosestFromTargets(f,a),b&&(c.isBarType(b.id)||c.dist(b,a)<e.point_sensitivity)&&c.main.selectAll("."+l.shapes+c.getTargetSelectorSuffix(b.id)).selectAll("."+l.shape+"-"+b.index).each(function(){(e.data_selection_grouped||c.isWithinShape(this,b))&&(c.toggleShape(this,b,b.index),c.config.data_onclick.call(c.api,b,this))}))}).call(e.data_selection_draggable&&c.drag?d.behavior.drag().origin(Object).on("drag",function(){c.drag(d.mouse(this))}).on("dragstart",function(){c.dragstart(d.mouse(this))}).on("dragend",function(){c.dragend()}):function(){})},i.dispatchEvent=function(b,c,d){var e=this,f="."+l.eventRect+(e.isMultipleX()?"":"-"+c),g=e.main.select(f).node(),h=g.getBoundingClientRect(),i=h.left+(d?d[0]:0),j=h.top+(d?d[1]:0),k=document.createEvent("MouseEvents");k.initMouseEvent(b,!0,!0,a,0,i,j,i,j,!1,!1,!1,!1,0,null),g.dispatchEvent(k)},i.getCurrentWidth=function(){var a=this,b=a.config;return b.size_width?b.size_width:a.getParentWidth()},i.getCurrentHeight=function(){var a=this,b=a.config,c=b.size_height?b.size_height:a.getParentHeight();return c>0?c:320/(a.hasType("gauge")&&!b.gauge_fullCircle?2:1)},i.getCurrentPaddingTop=function(){var a=this,b=a.config,c=m(b.padding_top)?b.padding_top:0;return a.title&&a.title.node()&&(c+=a.getTitlePadding()),c},i.getCurrentPaddingBottom=function(){var a=this.config;return m(a.padding_bottom)?a.padding_bottom:0},i.getCurrentPaddingLeft=function(a){var b=this,c=b.config;return m(c.padding_left)?c.padding_left:c.axis_rotated?c.axis_x_show?Math.max(r(b.getAxisWidthByAxisId("x",a)),40):1:!c.axis_y_show||c.axis_y_inner?b.axis.getYAxisLabelPosition().isOuter?30:1:r(b.getAxisWidthByAxisId("y",a))},i.getCurrentPaddingRight=function(){var a=this,b=a.config,c=10,d=a.isLegendRight?a.getLegendWidth()+20:0;return m(b.padding_right)?b.padding_right+1:b.axis_rotated?c+d:!b.axis_y2_show||b.axis_y2_inner?2+d+(a.axis.getY2AxisLabelPosition().isOuter?20:0):r(a.getAxisWidthByAxisId("y2"))+d},i.getParentRectValue=function(a){for(var b,c=this.selectChart.node();c&&"BODY"!==c.tagName;){try{b=c.getBoundingClientRect()[a]}catch(d){"width"===a&&(b=c.offsetWidth)}if(b)break;c=c.parentNode}return b},i.getParentWidth=function(){return this.getParentRectValue("width")},i.getParentHeight=function(){var a=this.selectChart.style("height");return a.indexOf("px")>0?+a.replace("px",""):0},i.getSvgLeft=function(a){var b=this,c=b.config,d=c.axis_rotated||!c.axis_rotated&&!c.axis_y_inner,e=c.axis_rotated?l.axisX:l.axisY,f=b.main.select("."+e).node(),g=f&&d?f.getBoundingClientRect():{right:0},h=b.selectChart.node().getBoundingClientRect(),i=b.hasArcType(),j=g.right-h.left-(i?0:b.getCurrentPaddingLeft(a));return j>0?j:0},i.getAxisWidthByAxisId=function(a,b){var c=this,d=c.axis.getLabelPositionById(a);return c.axis.getMaxTickWidth(a,b)+(d.isInner?20:40)},i.getHorizontalAxisHeight=function(a){var b=this,c=b.config,d=30;return"x"!==a||c.axis_x_show?"x"===a&&c.axis_x_height?c.axis_x_height:"y"!==a||c.axis_y_show?"y2"!==a||c.axis_y2_show?("x"===a&&!c.axis_rotated&&c.axis_x_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_x_tick_rotate)/180)),"y"===a&&c.axis_rotated&&c.axis_y_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_y_tick_rotate)/180)),d+(b.axis.getLabelPositionById(a).isInner?0:10)+("y2"===a?-10:0)):b.rotated_padding_top:!c.legend_show||b.isLegendRight||b.isLegendInset?1:10:8},i.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},i.getShapeIndices=function(a){var b,c,d=this,e=d.config,f={},g=0;return d.filterTargetsToShow(d.data.targets.filter(a,d)).forEach(function(a){for(b=0;b<e.data_groups.length;b++)if(!(e.data_groups[b].indexOf(a.id)<0))for(c=0;c<e.data_groups[b].length;c++)if(e.data_groups[b][c]in f){f[a.id]=f[e.data_groups[b][c]];break}p(f[a.id])&&(f[a.id]=g++)}),f.__max__=g-1,f},i.getShapeX=function(a,b,c,d){var e=this,f=d?e.subX:e.x;return function(d){var e=d.id in c?c[d.id]:0;return d.x||0===d.x?f(d.x)-a*(b/2-e):0}},i.getShapeY=function(a){var b=this;return function(c){var d=a?b.getSubYScale(c.id):b.getYScale(c.id);return d(c.value)}},i.getShapeOffset=function(a,b,c){var d=this,e=d.orderTargets(d.filterTargetsToShow(d.data.targets.filter(a,d))),f=e.map(function(a){return a.id});return function(a,g){var h=c?d.getSubYScale(a.id):d.getYScale(a.id),i=h(0),j=i;return e.forEach(function(c){var e=d.isStepType(a)?d.convertValuesToStep(c.values):c.values;c.id!==a.id&&b[c.id]===b[a.id]&&f.indexOf(c.id)<f.indexOf(a.id)&&("undefined"!=typeof e[g]&&+e[g].x===+a.x||(g=-1,e.forEach(function(b,c){b.x===a.x&&(g=c)})),g in e&&e[g].value*a.value>=0&&(j+=h(e[g].value)-i))}),j}},i.isWithinShape=function(a,b){var c,d=this,e=d.d3.select(a);return d.isTargetToShow(b.id)?"circle"===a.nodeName?c=d.isStepType(b)?d.isWithinStep(a,d.getYScale(b.id)(b.value)):d.isWithinCircle(a,1.5*d.pointSelectR(b)):"path"===a.nodeName&&(c=e.classed(l.bar)?d.isWithinBar(a):!0):c=!1,c},i.getInterpolate=function(a){var b=this,c=b.isInterpolationType(b.config.spline_interpolation_type)?b.config.spline_interpolation_type:"cardinal";return b.isSplineType(a)?c:b.isStepType(a)?b.config.line_step_type:"linear"},i.initLine=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartLines)},i.updateTargetsForLine=function(a){var b,c,d=this,e=d.config,f=d.classChartLine.bind(d),g=d.classLines.bind(d),h=d.classAreas.bind(d),i=d.classCircles.bind(d),j=d.classFocus.bind(d);b=d.main.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",function(a){return f(a)+j(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g),c.append("g").attr("class",h),c.append("g").attr("class",function(a){return d.generateClass(l.selectedCircles,a.id)}),c.append("g").attr("class",i).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null}),a.forEach(function(a){d.main.selectAll("."+l.selectedCircles+d.getTargetSelectorSuffix(a.id)).selectAll("."+l.selectedCircle).each(function(b){b.value=a.values[b.index].value})})},i.updateLine=function(a){var b=this;b.mainLine=b.main.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.mainLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.mainLine.style("opacity",b.initialOpacity.bind(b)).style("shape-rendering",function(a){return b.isStepType(a)?"crispEdges":""}).attr("transform",null),b.mainLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLine=function(a,b){return[(b?this.mainLine.transition(Math.random().toString()):this.mainLine).attr("d",a).style("stroke",this.color).style("opacity",1)]},i.generateDrawLine=function(a,b){var c=this,d=c.config,e=c.d3.svg.line(),f=c.generateGetLinePoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x(i).y(h):e.x(h).y(i),d.line_connectNull||(e=e.defined(function(a){return null!=a.value})),function(a){var f,h=d.line_connectNull?c.filterRemoveNull(a.values):a.values,i=b?c.x:c.subX,j=g.call(c,a.id),k=0,l=0;return c.isLineType(a)?d.data_regions[a.id]?f=c.lineWithRegions(h,i,j,d.data_regions[a.id]):(c.isStepType(a)&&(h=c.convertValuesToStep(h)),f=e.interpolate(c.getInterpolate(a))(h)):(h[0]&&(k=i(h[0].x),l=j(h[0].value)),f=d.axis_rotated?"M "+l+" "+k:"M "+k+" "+l),f?f:"M 0 0"}},i.generateGetLinePoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isLineType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)]]}},i.lineWithRegions=function(a,b,c,d){function e(a,b){var c;for(c=0;c<b.length;c++)if(b[c].start<a&&a<=b[c].end)return!0;return!1}function f(a){return"M"+a[0][0]+" "+a[0][1]+" "+a[1][0]+" "+a[1][1]}var g,h,i,j,k,l,m,n,o,r,s,t,u=this,v=u.config,w=-1,x="M",y=u.isCategorized()?.5:0,z=[];if(q(d))for(g=0;g<d.length;g++)z[g]={},p(d[g].start)?z[g].start=a[0].x:z[g].start=u.isTimeSeries()?u.parseDate(d[g].start):d[g].start,p(d[g].end)?z[g].end=a[a.length-1].x:z[g].end=u.isTimeSeries()?u.parseDate(d[g].end):d[g].end;for(s=v.axis_rotated?function(a){return c(a.value)}:function(a){return b(a.x)},t=v.axis_rotated?function(a){return b(a.x)}:function(a){return c(a.value)},i=u.isTimeSeries()?function(a,d,e,g){var h,i=a.x.getTime(),j=d.x-a.x,l=new Date(i+j*e),m=new Date(i+j*(e+g));return h=v.axis_rotated?[[c(k(e)),b(l)],[c(k(e+g)),b(m)]]:[[b(l),c(k(e))],[b(m),c(k(e+g))]],f(h)}:function(a,d,e,g){var h;return h=v.axis_rotated?[[c(k(e),!0),b(j(e))],[c(k(e+g),!0),b(j(e+g))]]:[[b(j(e),!0),c(k(e))],[b(j(e+g),!0),c(k(e+g))]],f(h)},g=0;g<a.length;g++){if(p(z)||!e(a[g].x,z))x+=" "+s(a[g])+" "+t(a[g]);else for(j=u.getScale(a[g-1].x+y,a[g].x+y,u.isTimeSeries()),k=u.getScale(a[g-1].value,a[g].value),l=b(a[g].x)-b(a[g-1].x),m=c(a[g].value)-c(a[g-1].value),n=Math.sqrt(Math.pow(l,2)+Math.pow(m,2)),o=2/n,r=2*o,h=o;1>=h;h+=r)x+=i(a[g-1],a[g],h,o);w=a[g].x}return x},i.updateArea=function(a){var b=this,c=b.d3;b.mainArea=b.main.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.mainArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.mainArea.style("opacity",b.orgAreaOpacity),b.mainArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawArea=function(a,b){return[(b?this.mainArea.transition(Math.random().toString()):this.mainArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},i.generateDrawArea=function(a,b){var c=this,d=c.config,e=c.d3.svg.area(),f=c.generateGetAreaPoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(c.getAreaBaseValue(a.id))},j=function(a,b){return d.data_groups.length>0?f(a,b)[1][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x0(i).x1(j).y(h):e.x(h).y0(d.area_above?0:i).y1(j),d.line_connectNull||(e=e.defined(function(a){return null!==a.value})),function(a){var b,f=d.line_connectNull?c.filterRemoveNull(a.values):a.values,g=0,h=0;return c.isAreaType(a)?(c.isStepType(a)&&(f=c.convertValuesToStep(f)),b=e.interpolate(c.getInterpolate(a))(f)):(f[0]&&(g=c.x(f[0].x),h=c.getYScale(a.id)(f[0].value)),b=d.axis_rotated?"M "+h+" "+g:"M "+g+" "+h),b?b:"M 0 0"}},i.getAreaBaseValue=function(){return 0},i.generateGetAreaPoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isAreaType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,j],[k,l-(e-j)],[k,l-(e-j)],[k,j]]}},i.updateCircle=function(){var a=this;a.mainCircle=a.main.selectAll("."+l.circles).selectAll("."+l.circle).data(a.lineOrScatterData.bind(a)),a.mainCircle.enter().append("circle").attr("class",a.classCircle.bind(a)).attr("r",a.pointR.bind(a)).style("fill",a.color),a.mainCircle.style("opacity",a.initialOpacityForCircle.bind(a)),a.mainCircle.exit().remove()},i.redrawCircle=function(a,b,c){var d=this.main.selectAll("."+l.selectedCircle);return[(c?this.mainCircle.transition(Math.random().toString()):this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",a).attr("cy",b),(c?d.transition(Math.random().toString()):d).attr("cx",a).attr("cy",b)]},i.circleX=function(a){return a.x||0===a.x?this.x(a.x):null},i.updateCircleY=function(){var a,b,c=this;c.config.data_groups.length>0?(a=c.getShapeIndices(c.isLineType),b=c.generateGetLinePoints(a),c.circleY=function(a,c){return b(a,c)[0][1]}):c.circleY=function(a){return c.getYScale(a.id)(a.value)}},i.getCircles=function(a,b){var c=this;return(b?c.main.selectAll("."+l.circles+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.circle+(m(a)?"-"+a:""))},i.expandCircles=function(a,b,c){var d=this,e=d.pointExpandedR.bind(d);c&&d.unexpandCircles(),d.getCircles(a,b).classed(l.EXPANDED,!0).attr("r",e)},i.unexpandCircles=function(a){var b=this,c=b.pointR.bind(b);b.getCircles(a).filter(function(){return b.d3.select(this).classed(l.EXPANDED)}).classed(l.EXPANDED,!1).attr("r",c)},i.pointR=function(a){var b=this,c=b.config;return b.isStepType(a)?0:n(c.point_r)?c.point_r(a):c.point_r;
2312 2312 },i.pointExpandedR=function(a){var b=this,c=b.config;return c.point_focus_expand_enabled?c.point_focus_expand_r?c.point_focus_expand_r:1.75*b.pointR(a):b.pointR(a)},i.pointSelectR=function(a){var b=this,c=b.config;return n(c.point_select_r)?c.point_select_r(a):c.point_select_r?c.point_select_r:4*b.pointR(a)},i.isWithinCircle=function(a,b){var c=this.d3,d=c.mouse(a),e=c.select(a),f=+e.attr("cx"),g=+e.attr("cy");return Math.sqrt(Math.pow(f-d[0],2)+Math.pow(g-d[1],2))<b},i.isWithinStep=function(a,b){return Math.abs(b-this.d3.mouse(a)[1])<30},i.initBar=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartBars)},i.updateTargetsForBar=function(a){var b,c,d=this,e=d.config,f=d.classChartBar.bind(d),g=d.classBars.bind(d),h=d.classFocus.bind(d);b=d.main.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",function(a){return f(a)+h(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null})},i.updateBar=function(a){var b=this,c=b.barData.bind(b),d=b.classBar.bind(b),e=b.initialOpacity.bind(b),f=function(a){return b.color(a.id)};b.mainBar=b.main.selectAll("."+l.bars).selectAll("."+l.bar).data(c),b.mainBar.enter().append("path").attr("class",d).style("stroke",f).style("fill",f),b.mainBar.style("opacity",e),b.mainBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBar=function(a,b){return[(b?this.mainBar.transition(Math.random().toString()):this.mainBar).attr("d",a).style("fill",this.color).style("opacity",1)]},i.getBarW=function(a,b){var c=this,d=c.config,e="number"==typeof d.bar_width?d.bar_width:b?a.tickInterval()*d.bar_width_ratio/b:0;return d.bar_width_max&&e>d.bar_width_max?d.bar_width_max:e},i.getBars=function(a,b){var c=this;return(b?c.main.selectAll("."+l.bars+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.bar+(m(a)?"-"+a:""))},i.expandBars=function(a,b,c){var d=this;c&&d.unexpandBars(),d.getBars(a,b).classed(l.EXPANDED,!0)},i.unexpandBars=function(a){var b=this;b.getBars(a).classed(l.EXPANDED,!1)},i.generateDrawBar=function(a,b){var c=this,d=c.config,e=c.generateGetBarPoints(a,b);return function(a,b){var c=e(a,b),f=d.axis_rotated?1:0,g=d.axis_rotated?0:1,h="M "+c[0][f]+","+c[0][g]+" L"+c[1][f]+","+c[1][g]+" L"+c[2][f]+","+c[2][g]+" L"+c[3][f]+","+c[3][g]+" z";return h}},i.generateGetBarPoints=function(a,b){var c=this,d=b?c.subXAxis:c.xAxis,e=a.__max__+1,f=c.getBarW(d,e),g=c.getShapeX(f,e,a,!!b),h=c.getShapeY(!!b),i=c.getShapeOffset(c.isBarType,a,!!b),j=b?c.getSubYScale:c.getYScale;return function(a,b){var d=j.call(c,a.id)(0),e=i(a,b)||d,k=g(a),l=h(a);return c.config.axis_rotated&&(0<a.value&&d>l||a.value<0&&l>d)&&(l=d),[[k,e],[k,l-(d-e)],[k+f,l-(d-e)],[k+f,e]]}},i.isWithinBar=function(a){var b=this.d3.mouse(a),c=a.getBoundingClientRect(),d=a.pathSegList.getItem(0),e=a.pathSegList.getItem(1),f=Math.min(d.x,e.x),g=Math.min(d.y,e.y),h=c.width,i=c.height,j=2,k=f-j,l=f+h+j,m=g+i+j,n=g-j;return k<b[0]&&b[0]<l&&n<b[1]&&b[1]<m},i.initText=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartTexts),a.mainText=a.d3.selectAll([])},i.updateTargetsForText=function(a){var b,c,d=this,e=d.classChartText.bind(d),f=d.classTexts.bind(d),g=d.classFocus.bind(d);b=d.main.select("."+l.chartTexts).selectAll("."+l.chartText).data(a).attr("class",function(a){return e(a)+g(a)}),c=b.enter().append("g").attr("class",e).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",f)},i.updateText=function(a){var b=this,c=b.config,d=b.barOrLineData.bind(b),e=b.classText.bind(b);b.mainText=b.main.selectAll("."+l.texts).selectAll("."+l.text).data(d),b.mainText.enter().append("text").attr("class",e).attr("text-anchor",function(a){return c.axis_rotated?a.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(a){return b.color(a)}).style("fill-opacity",0),b.mainText.text(function(a,c,d){return b.dataLabelFormat(a.id)(a.value,a.id,c,d)}),b.mainText.exit().transition().duration(a).style("fill-opacity",0).remove()},i.redrawText=function(a,b,c,d){return[(d?this.mainText.transition():this.mainText).attr("x",a).attr("y",b).style("fill",this.color).style("fill-opacity",c?0:this.opacityForText.bind(this))]},i.getTextRect=function(a,b,c){var d,e=this.d3.select("body").append("div").classed("c3",!0),f=e.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g=this.d3.select(c).style("font");return f.selectAll(".dummy").data([a]).enter().append("text").classed(b?b:"",!0).style("font",g).text(a).each(function(){d=this.getBoundingClientRect()}),e.remove(),d},i.generateXYForText=function(a,b,c,d){var e=this,f=e.generateGetAreaPoints(a,!1),g=e.generateGetBarPoints(b,!1),h=e.generateGetLinePoints(c,!1),i=d?e.getXForText:e.getYForText;return function(a,b){var c=e.isAreaType(a)?f:e.isBarType(a)?g:h;return i.call(e,c(a,b),a,this)}},i.getXForText=function(a,b,c){var d,e,f=this,g=c.getBoundingClientRect();return f.config.axis_rotated?(e=f.isBarType(b)?4:6,d=a[2][1]+e*(b.value<0?-1:1)):d=f.hasType("bar")?(a[2][0]+a[0][0])/2:a[0][0],null===b.value&&(d>f.width?d=f.width-g.width:0>d&&(d=4)),d},i.getYForText=function(a,b,c){var d,e=this,f=c.getBoundingClientRect();return e.config.axis_rotated?d=(a[0][0]+a[2][0]+.6*f.height)/2:(d=a[2][1],b.value<0||0===b.value&&!e.hasPositiveValue?(d+=f.height,e.isBarType(b)&&e.isSafari()?d-=3:!e.isBarType(b)&&e.isChrome()&&(d+=3)):d+=e.isBarType(b)?-3:-6),null!==b.value||e.config.axis_rotated||(d<f.height?d=f.height:d>this.height&&(d=this.height-4)),d},i.setTargetType=function(a,b){var c=this,d=c.config;c.mapToTargetIds(a).forEach(function(a){c.withoutFadeIn[a]=b===d.data_types[a],d.data_types[a]=b}),a||(d.data_type=b)},i.hasType=function(a,b){var c=this,d=c.config.data_types,e=!1;return b=b||c.data.targets,b&&b.length?b.forEach(function(b){var c=d[b.id];(c&&c.indexOf(a)>=0||!c&&"line"===a)&&(e=!0)}):Object.keys(d).length?Object.keys(d).forEach(function(b){d[b]===a&&(e=!0)}):e=c.config.data_type===a,e},i.hasArcType=function(a){return this.hasType("pie",a)||this.hasType("donut",a)||this.hasType("gauge",a)},i.isLineType=function(a){var b=this.config,c=o(a)?a:a.id;return!b.data_types[c]||["line","spline","area","area-spline","step","area-step"].indexOf(b.data_types[c])>=0},i.isStepType=function(a){var b=o(a)?a:a.id;return["step","area-step"].indexOf(this.config.data_types[b])>=0},i.isSplineType=function(a){var b=o(a)?a:a.id;return["spline","area-spline"].indexOf(this.config.data_types[b])>=0},i.isAreaType=function(a){var b=o(a)?a:a.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[b])>=0},i.isBarType=function(a){var b=o(a)?a:a.id;return"bar"===this.config.data_types[b]},i.isScatterType=function(a){var b=o(a)?a:a.id;return"scatter"===this.config.data_types[b]},i.isPieType=function(a){var b=o(a)?a:a.id;return"pie"===this.config.data_types[b]},i.isGaugeType=function(a){var b=o(a)?a:a.id;return"gauge"===this.config.data_types[b]},i.isDonutType=function(a){var b=o(a)?a:a.id;return"donut"===this.config.data_types[b]},i.isArcType=function(a){return this.isPieType(a)||this.isDonutType(a)||this.isGaugeType(a)},i.lineData=function(a){return this.isLineType(a)?[a]:[]},i.arcData=function(a){return this.isArcType(a.data)?[a]:[]},i.barData=function(a){return this.isBarType(a)?a.values:[]},i.lineOrScatterData=function(a){return this.isLineType(a)||this.isScatterType(a)?a.values:[]},i.barOrLineData=function(a){return this.isBarType(a)||this.isLineType(a)?a.values:[]},i.isInterpolationType=function(a){return["linear","linear-closed","basis","basis-open","basis-closed","bundle","cardinal","cardinal-open","cardinal-closed","monotone"].indexOf(a)>=0},i.initGrid=function(){var a=this,b=a.config,c=a.d3;a.grid=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid),b.grid_x_show&&a.grid.append("g").attr("class",l.xgrids),b.grid_y_show&&a.grid.append("g").attr("class",l.ygrids),b.grid_focus_show&&a.grid.append("g").attr("class",l.xgridFocus).append("line").attr("class",l.xgridFocus),a.xgrid=c.selectAll([]),b.grid_lines_front||a.initGridLines()},i.initGridLines=function(){var a=this,b=a.d3;a.gridLines=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid+" "+l.gridLines),a.gridLines.append("g").attr("class",l.xgridLines),a.gridLines.append("g").attr("class",l.ygridLines),a.xgridLines=b.selectAll([])},i.updateXGrid=function(a){var b=this,c=b.config,d=b.d3,e=b.generateGridData(c.grid_x_type,b.x),f=b.isCategorized()?b.xAxis.tickOffset():0;b.xgridAttr=c.axis_rotated?{x1:0,x2:b.width,y1:function(a){return b.x(a)-f},y2:function(a){return b.x(a)-f}}:{x1:function(a){return b.x(a)+f},x2:function(a){return b.x(a)+f},y1:0,y2:b.height},b.xgrid=b.main.select("."+l.xgrids).selectAll("."+l.xgrid).data(e),b.xgrid.enter().append("line").attr("class",l.xgrid),a||b.xgrid.attr(b.xgridAttr).style("opacity",function(){return+d.select(this).attr(c.axis_rotated?"y1":"x1")===(c.axis_rotated?b.height:0)?0:1}),b.xgrid.exit().remove()},i.updateYGrid=function(){var a=this,b=a.config,c=a.yAxis.tickValues()||a.y.ticks(b.grid_y_ticks);a.ygrid=a.main.select("."+l.ygrids).selectAll("."+l.ygrid).data(c),a.ygrid.enter().append("line").attr("class",l.ygrid),a.ygrid.attr("x1",b.axis_rotated?a.y:0).attr("x2",b.axis_rotated?a.y:a.width).attr("y1",b.axis_rotated?0:a.y).attr("y2",b.axis_rotated?a.height:a.y),a.ygrid.exit().remove(),a.smoothLines(a.ygrid,"grid")},i.gridTextAnchor=function(a){return a.position?a.position:"end"},i.gridTextDx=function(a){return"start"===a.position?4:"middle"===a.position?0:-4},i.xGridTextX=function(a){return"start"===a.position?-this.height:"middle"===a.position?-this.height/2:0},i.yGridTextX=function(a){return"start"===a.position?0:"middle"===a.position?this.width/2:this.width},i.updateGrid=function(a){var b,c,d,e=this,f=e.main,g=e.config;e.grid.style("visibility",e.hasArcType()?"hidden":"visible"),f.select("line."+l.xgridFocus).style("visibility","hidden"),g.grid_x_show&&e.updateXGrid(),e.xgridLines=f.select("."+l.xgridLines).selectAll("."+l.xgridLine).data(g.grid_x_lines),b=e.xgridLines.enter().append("g").attr("class",function(a){return l.xgridLine+(a["class"]?" "+a["class"]:"")}),b.append("line").style("opacity",0),b.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"":"rotate(-90)").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),e.xgridLines.exit().transition().duration(a).style("opacity",0).remove(),g.grid_y_show&&e.updateYGrid(),e.ygridLines=f.select("."+l.ygridLines).selectAll("."+l.ygridLine).data(g.grid_y_lines),c=e.ygridLines.enter().append("g").attr("class",function(a){return l.ygridLine+(a["class"]?" "+a["class"]:"")}),c.append("line").style("opacity",0),c.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"rotate(-90)":"").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),d=e.yv.bind(e),e.ygridLines.select("line").transition().duration(a).attr("x1",g.axis_rotated?d:0).attr("x2",g.axis_rotated?d:e.width).attr("y1",g.axis_rotated?0:d).attr("y2",g.axis_rotated?e.height:d).style("opacity",1),e.ygridLines.select("text").transition().duration(a).attr("x",g.axis_rotated?e.xGridTextX.bind(e):e.yGridTextX.bind(e)).attr("y",d).text(function(a){return a.text}).style("opacity",1),e.ygridLines.exit().transition().duration(a).style("opacity",0).remove()},i.redrawGrid=function(a){var b=this,c=b.config,d=b.xv.bind(b),e=b.xgridLines.select("line"),f=b.xgridLines.select("text");return[(a?e.transition():e).attr("x1",c.axis_rotated?0:d).attr("x2",c.axis_rotated?b.width:d).attr("y1",c.axis_rotated?d:0).attr("y2",c.axis_rotated?d:b.height).style("opacity",1),(a?f.transition():f).attr("x",c.axis_rotated?b.yGridTextX.bind(b):b.xGridTextX.bind(b)).attr("y",d).text(function(a){return a.text}).style("opacity",1)]},i.showXGridFocus=function(a){var b=this,c=b.config,d=a.filter(function(a){return a&&m(a.value)}),e=b.main.selectAll("line."+l.xgridFocus),f=b.xx.bind(b);c.tooltip_show&&(b.hasType("scatter")||b.hasArcType()||(e.style("visibility","visible").data([d[0]]).attr(c.axis_rotated?"y1":"x1",f).attr(c.axis_rotated?"y2":"x2",f),b.smoothLines(e,"grid")))},i.hideXGridFocus=function(){this.main.select("line."+l.xgridFocus).style("visibility","hidden")},i.updateXgridFocus=function(){var a=this,b=a.config;a.main.select("line."+l.xgridFocus).attr("x1",b.axis_rotated?0:-10).attr("x2",b.axis_rotated?a.width:-10).attr("y1",b.axis_rotated?-10:0).attr("y2",b.axis_rotated?-10:a.height)},i.generateGridData=function(a,b){var c,d,e,f,g=this,h=[],i=g.main.select("."+l.axisX).selectAll(".tick").size();if("year"===a)for(c=g.getXDomain(),d=c[0].getFullYear(),e=c[1].getFullYear(),f=d;e>=f;f++)h.push(new Date(f+"-01-01 00:00:00"));else h=b.ticks(10),h.length>i&&(h=h.filter(function(a){return(""+a).indexOf(".")<0}));return h},i.getGridFilterToRemove=function(a){return a?function(b){var c=!1;return[].concat(a).forEach(function(a){("value"in a&&b.value===a.value||"class"in a&&b["class"]===a["class"])&&(c=!0)}),c}:function(){return!0}},i.removeGridLines=function(a,b){var c=this,d=c.config,e=c.getGridFilterToRemove(a),f=function(a){return!e(a)},g=b?l.xgridLines:l.ygridLines,h=b?l.xgridLine:l.ygridLine;c.main.select("."+g).selectAll("."+h).filter(e).transition().duration(d.transition_duration).style("opacity",0).remove(),b?d.grid_x_lines=d.grid_x_lines.filter(f):d.grid_y_lines=d.grid_y_lines.filter(f)},i.initTooltip=function(){var a,b=this,c=b.config;if(b.tooltip=b.selectChart.style("position","relative").append("div").attr("class",l.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),c.tooltip_init_show){if(b.isTimeSeries()&&o(c.tooltip_init_x)){for(c.tooltip_init_x=b.parseDate(c.tooltip_init_x),a=0;a<b.data.targets[0].values.length&&b.data.targets[0].values[a].x-c.tooltip_init_x!==0;a++);c.tooltip_init_x=a}b.tooltip.html(c.tooltip_contents.call(b,b.data.targets.map(function(a){return b.addName(a.values[c.tooltip_init_x])}),b.axis.getXAxisTickFormat(),b.getYFormat(b.hasArcType()),b.color)),b.tooltip.style("top",c.tooltip_init_position.top).style("left",c.tooltip_init_position.left).style("display","block")}},i.getTooltipContent=function(a,b,c,d){var e,f,g,h,i,j,k=this,l=k.config,m=l.tooltip_format_title||b,n=l.tooltip_format_name||function(a){return a},o=l.tooltip_format_value||c,p=k.isOrderAsc();if(0===l.data_groups.length)a.sort(function(a,b){var c=a?a.value:null,d=b?b.value:null;return p?c-d:d-c});else{var q=k.orderTargets(k.data.targets).map(function(a){return a.id});a.sort(function(a,b){var c=a?a.value:null,d=b?b.value:null;return c>0&&d>0&&(c=a?q.indexOf(a.id):null,d=b?q.indexOf(b.id):null),p?c-d:d-c})}for(f=0;f<a.length;f++)if(a[f]&&(a[f].value||0===a[f].value)&&(e||(g=y(m?m(a[f].x):a[f].x),e="<table class='"+k.CLASS.tooltip+"'>"+(g||0===g?"<tr><th colspan='2'>"+g+"</th></tr>":"")),h=y(o(a[f].value,a[f].ratio,a[f].id,a[f].index,a)),void 0!==h)){if(null===a[f].name)continue;i=y(n(a[f].name,a[f].ratio,a[f].id,a[f].index)),j=k.levelColor?k.levelColor(a[f].value):d(a[f].id),e+="<tr class='"+k.CLASS.tooltipName+"-"+k.getTargetSelectorSuffix(a[f].id)+"'>",e+="<td class='name'><span style='background-color:"+j+"'></span>"+i+"</td>",e+="<td class='value'>"+h+"</td>",e+="</tr>"}return e+"</table>"},i.tooltipPosition=function(a,b,c,d){var e,f,g,h,i,j=this,k=j.config,l=j.d3,m=j.hasArcType(),n=l.mouse(d);return m?(f=(j.width-(j.isLegendRight?j.getLegendWidth():0))/2+n[0],h=j.height/2+n[1]+20):(e=j.getSvgLeft(!0),k.axis_rotated?(f=e+n[0]+100,g=f+b,i=j.currentWidth-j.getCurrentPaddingRight(),h=j.x(a[0].x)+20):(f=e+j.getCurrentPaddingLeft(!0)+j.x(a[0].x)+20,g=f+b,i=e+j.currentWidth-j.getCurrentPaddingRight(),h=n[1]+15),g>i&&(f-=g-i+20),h+c>j.currentHeight&&(h-=c+30)),0>h&&(h=0),{top:h,left:f}},i.showTooltip=function(a,b){var c,d,e,f=this,g=f.config,h=f.hasArcType(),j=a.filter(function(a){return a&&m(a.value)}),k=g.tooltip_position||i.tooltipPosition;0!==j.length&&g.tooltip_show&&(f.tooltip.html(g.tooltip_contents.call(f,a,f.axis.getXAxisTickFormat(),f.getYFormat(h),f.color)).style("display","block"),c=f.tooltip.property("offsetWidth"),d=f.tooltip.property("offsetHeight"),e=k.call(this,j,c,d,b),f.tooltip.style("top",e.top+"px").style("left",e.left+"px"))},i.hideTooltip=function(){this.tooltip.style("display","none")},i.initLegend=function(){var a=this;return a.legendItemTextBox={},a.legendHasRendered=!1,a.legend=a.svg.append("g").attr("transform",a.getTranslate("legend")),a.config.legend_show?void a.updateLegendWithDefaults():(a.legend.style("visibility","hidden"),void(a.hiddenLegendIds=a.mapToIds(a.data.targets)))},i.updateLegendWithDefaults=function(){var a=this;a.updateLegend(a.mapToIds(a.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},i.updateSizeForLegend=function(a,b){var c=this,d=c.config,e={top:c.isLegendTop?c.getCurrentPaddingTop()+d.legend_inset_y+5.5:c.currentHeight-a-c.getCurrentPaddingBottom()-d.legend_inset_y,left:c.isLegendLeft?c.getCurrentPaddingLeft()+d.legend_inset_x+.5:c.currentWidth-b-c.getCurrentPaddingRight()-d.legend_inset_x+.5};c.margin3={top:c.isLegendRight?0:c.isLegendInset?e.top:c.currentHeight-a,right:NaN,bottom:0,left:c.isLegendRight?c.currentWidth-b:c.isLegendInset?e.left:0}},i.transformLegend=function(a){var b=this;(a?b.legend.transition():b.legend).attr("transform",b.getTranslate("legend"))},i.updateLegendStep=function(a){this.legendStep=a},i.updateLegendItemWidth=function(a){this.legendItemWidth=a},i.updateLegendItemHeight=function(a){this.legendItemHeight=a},i.getLegendWidth=function(){var a=this;return a.config.legend_show?a.isLegendRight||a.isLegendInset?a.legendItemWidth*(a.legendStep+1):a.currentWidth:0},i.getLegendHeight=function(){var a=this,b=0;return a.config.legend_show&&(b=a.isLegendRight?a.currentHeight:Math.max(20,a.legendItemHeight)*(a.legendStep+1)),b},i.opacityForLegend=function(a){return a.classed(l.legendItemHidden)?null:1},i.opacityForUnfocusedLegend=function(a){return a.classed(l.legendItemHidden)?null:.3},i.toggleFocusLegend=function(a,b){var c=this;a=c.mapToTargetIds(a),c.legend.selectAll("."+l.legendItem).filter(function(b){return a.indexOf(b)>=0}).classed(l.legendItemFocused,b).transition().duration(100).style("opacity",function(){var a=b?c.opacityForLegend:c.opacityForUnfocusedLegend;return a.call(c,c.d3.select(this))})},i.revertLegend=function(){var a=this,b=a.d3;a.legend.selectAll("."+l.legendItem).classed(l.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return a.opacityForLegend(b.select(this))})},i.showLegend=function(a){var b=this,c=b.config;c.legend_show||(c.legend_show=!0,b.legend.style("visibility","visible"),b.legendHasRendered||b.updateLegendWithDefaults()),b.removeHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("visibility","visible").transition().style("opacity",function(){return b.opacityForLegend(b.d3.select(this))})},i.hideLegend=function(a){var b=this,c=b.config;c.legend_show&&u(a)&&(c.legend_show=!1,b.legend.style("visibility","hidden")),b.addHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("opacity",0).style("visibility","hidden")},i.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},i.updateLegend=function(a,b,c){function d(a,b){return y.legendItemTextBox[b]||(y.legendItemTextBox[b]=y.getTextRect(a.textContent,l.legendItem,a)),y.legendItemTextBox[b]}function e(b,c,e){function f(a,b){b||(g=(o-G-n)/2,E>g&&(g=(o-n)/2,G=0,M++)),L[a]=M,K[M]=y.isLegendInset?10:g,H[a]=G,G+=n}var g,h,i=0===e,j=e===a.length-1,k=d(b,c),l=k.width+F+(!j||y.isLegendRight||y.isLegendInset?B:0)+z.legend_padding,m=k.height+A,n=y.isLegendRight||y.isLegendInset?m:l,o=y.isLegendRight||y.isLegendInset?y.getLegendHeight():y.getLegendWidth();return i&&(G=0,M=0,C=0,D=0),z.legend_show&&!y.isLegendToShow(c)?void(I[c]=J[c]=L[c]=H[c]=0):(I[c]=l,J[c]=m,(!C||l>=C)&&(C=l),(!D||m>=D)&&(D=m),h=y.isLegendRight||y.isLegendInset?D:C,void(z.legend_equally?(Object.keys(I).forEach(function(a){I[a]=C}),Object.keys(J).forEach(function(a){J[a]=D}),g=(o-h*a.length)/2,E>g?(G=0,M=0,a.forEach(function(a){f(a)})):f(c,!0)):f(c)))}var f,g,h,i,j,k,m,n,o,p,r,s,t,u,v,x,y=this,z=y.config,A=4,B=10,C=0,D=0,E=10,F=z.legend_item_tile_width+5,G=0,H={},I={},J={},K=[0],L={},M=0;a=a.filter(function(a){return!q(z.data_names[a])||null!==z.data_names[a]}),b=b||{},r=w(b,"withTransition",!0),s=w(b,"withTransitionForTransform",!0),y.isLegendInset&&(M=z.legend_inset_step?z.legend_inset_step:a.length,y.updateLegendStep(M)),y.isLegendRight?(f=function(a){return C*L[a]},i=function(a){return K[L[a]]+H[a]}):y.isLegendInset?(f=function(a){return C*L[a]+10},i=function(a){return K[L[a]]+H[a]}):(f=function(a){return K[L[a]]+H[a]},i=function(a){return D*L[a]}),g=function(a,b){return f(a,b)+4+z.legend_item_tile_width},j=function(a,b){return i(a,b)+9},h=function(a,b){return f(a,b)},k=function(a,b){return i(a,b)-5},m=function(a,b){return f(a,b)-2},n=function(a,b){return f(a,b)-2+z.legend_item_tile_width},o=function(a,b){return i(a,b)+4},p=y.legend.selectAll("."+l.legendItem).data(a).enter().append("g").attr("class",function(a){return y.generateClass(l.legendItem,a)}).style("visibility",function(a){return y.isLegendToShow(a)?"visible":"hidden"}).style("cursor","pointer").on("click",function(a){z.legend_item_onclick?z.legend_item_onclick.call(y,a):y.d3.event.altKey?(y.api.hide(),y.api.show(a)):(y.api.toggle(a),y.isTargetToShow(a)?y.api.focus(a):y.api.revert())}).on("mouseover",function(a){z.legend_item_onmouseover?z.legend_item_onmouseover.call(y,a):(y.d3.select(this).classed(l.legendItemFocused,!0),!y.transiting&&y.isTargetToShow(a)&&y.api.focus(a))}).on("mouseout",function(a){z.legend_item_onmouseout?z.legend_item_onmouseout.call(y,a):(y.d3.select(this).classed(l.legendItemFocused,!1),y.api.revert())}),p.append("text").text(function(a){return q(z.data_names[a])?z.data_names[a]:a}).each(function(a,b){e(this,a,b)}).style("pointer-events","none").attr("x",y.isLegendRight||y.isLegendInset?g:-200).attr("y",y.isLegendRight||y.isLegendInset?-200:j),p.append("rect").attr("class",l.legendItemEvent).style("fill-opacity",0).attr("x",y.isLegendRight||y.isLegendInset?h:-200).attr("y",y.isLegendRight||y.isLegendInset?-200:k),p.append("line").attr("class",l.legendItemTile).style("stroke",y.color).style("pointer-events","none").attr("x1",y.isLegendRight||y.isLegendInset?m:-200).attr("y1",y.isLegendRight||y.isLegendInset?-200:o).attr("x2",y.isLegendRight||y.isLegendInset?n:-200).attr("y2",y.isLegendRight||y.isLegendInset?-200:o).attr("stroke-width",z.legend_item_tile_height),x=y.legend.select("."+l.legendBackground+" rect"),y.isLegendInset&&C>0&&0===x.size()&&(x=y.legend.insert("g","."+l.legendItem).attr("class",l.legendBackground).append("rect")),t=y.legend.selectAll("text").data(a).text(function(a){return q(z.data_names[a])?z.data_names[a]:a}).each(function(a,b){e(this,a,b)}),(r?t.transition():t).attr("x",g).attr("y",j),u=y.legend.selectAll("rect."+l.legendItemEvent).data(a),(r?u.transition():u).attr("width",function(a){return I[a]}).attr("height",function(a){return J[a]}).attr("x",h).attr("y",k),v=y.legend.selectAll("line."+l.legendItemTile).data(a),(r?v.transition():v).style("stroke",y.color).attr("x1",m).attr("y1",o).attr("x2",n).attr("y2",o),x&&(r?x.transition():x).attr("height",y.getLegendHeight()-12).attr("width",C*(M+1)+10),y.legend.selectAll("."+l.legendItem).classed(l.legendItemHidden,function(a){return!y.isTargetToShow(a)}),y.updateLegendItemWidth(C),y.updateLegendItemHeight(D),y.updateLegendStep(M),y.updateSizes(),y.updateScales(),y.updateSvgSize(),y.transformAll(s,c),y.legendHasRendered=!0},i.initTitle=function(){var a=this;a.title=a.svg.append("text").text(a.config.title_text).attr("class",a.CLASS.title)},i.redrawTitle=function(){var a=this;a.title.attr("x",a.xForTitle.bind(a)).attr("y",a.yForTitle.bind(a))},i.xForTitle=function(){var a,b=this,c=b.config,d=c.title_position||"left";return a=d.indexOf("right")>=0?b.currentWidth-b.getTextRect(b.title.node().textContent,b.CLASS.title,b.title.node()).width-c.title_padding.right:d.indexOf("center")>=0?(b.currentWidth-b.getTextRect(b.title.node().textContent,b.CLASS.title,b.title.node()).width)/2:c.title_padding.left},i.yForTitle=function(){var a=this;return a.config.title_padding.top+a.getTextRect(a.title.node().textContent,a.CLASS.title,a.title.node()).height},i.getTitlePadding=function(){var a=this;return a.yForTitle()+a.config.title_padding.bottom},c(b,f),f.prototype.init=function(){var a=this.owner,b=a.config,c=a.main;a.axes.x=c.append("g").attr("class",l.axis+" "+l.axisX).attr("clip-path",a.clipPathForXAxis).attr("transform",a.getTranslate("x")).style("visibility",b.axis_x_show?"visible":"hidden"),a.axes.x.append("text").attr("class",l.axisXLabel).attr("transform",b.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),a.axes.y=c.append("g").attr("class",l.axis+" "+l.axisY).attr("clip-path",b.axis_y_inner?"":a.clipPathForYAxis).attr("transform",a.getTranslate("y")).style("visibility",b.axis_y_show?"visible":"hidden"),a.axes.y.append("text").attr("class",l.axisYLabel).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),a.axes.y2=c.append("g").attr("class",l.axis+" "+l.axisY2).attr("transform",a.getTranslate("y2")).style("visibility",b.axis_y2_show?"visible":"hidden"),a.axes.y2.append("text").attr("class",l.axisY2Label).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},f.prototype.getXAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={isCategory:i.isCategorized(),withOuterTick:e,tickMultiline:j.axis_x_tick_multiline,tickWidth:j.axis_x_tick_width,tickTextRotate:h?0:j.axis_x_tick_rotate,withoutTransition:f},l=g(i.d3,k).scale(a).orient(b);return i.isTimeSeries()&&d&&"function"!=typeof d&&(d=d.map(function(a){return i.parseDate(a)})),l.tickFormat(c).tickValues(d),i.isCategorized()&&(l.tickCentered(j.axis_x_tick_centered),u(j.axis_x_tick_culling)&&(j.axis_x_tick_culling=!1)),l},f.prototype.updateXAxisTickValues=function(a,b){var c,d=this.owner,e=d.config;return(e.axis_x_tick_fit||e.axis_x_tick_count)&&(c=this.generateTickValues(d.mapTargetsToUniqueXs(a),e.axis_x_tick_count,d.isTimeSeries())),b?b.tickValues(c):(d.xAxis.tickValues(c),d.subXAxis.tickValues(c)),c},f.prototype.getYAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={withOuterTick:e,withoutTransition:f,tickTextRotate:h?0:j.axis_y_tick_rotate},l=g(i.d3,k).scale(a).orient(b).tickFormat(c);return i.isTimeSeriesY()?l.ticks(i.d3.time[j.axis_y_tick_time_value],j.axis_y_tick_time_interval):l.tickValues(d),l},f.prototype.getId=function(a){var b=this.owner.config;return a in b.data_axes?b.data_axes[a]:"y"},f.prototype.getXAxisTickFormat=function(){var a=this.owner,b=a.config,c=a.isTimeSeries()?a.defaultAxisTimeFormat:a.isCategorized()?a.categoryName:function(a){return 0>a?a.toFixed(0):a};return b.axis_x_tick_format&&(n(b.axis_x_tick_format)?c=b.axis_x_tick_format:a.isTimeSeries()&&(c=function(c){return c?a.axisTimeFormat(b.axis_x_tick_format)(c):""})),n(c)?function(b){return c.call(a,b)}:c},f.prototype.getTickValues=function(a,b){return a?a:b?b.tickValues():void 0},f.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},f.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},f.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},f.prototype.getLabelOptionByAxisId=function(a){var b,c=this.owner,d=c.config;return"y"===a?b=d.axis_y_label:"y2"===a?b=d.axis_y2_label:"x"===a&&(b=d.axis_x_label),b},f.prototype.getLabelText=function(a){var b=this.getLabelOptionByAxisId(a);return o(b)?b:b?b.text:null},f.prototype.setLabelText=function(a,b){var c=this.owner,d=c.config,e=this.getLabelOptionByAxisId(a);o(e)?"y"===a?d.axis_y_label=b:"y2"===a?d.axis_y2_label=b:"x"===a&&(d.axis_x_label=b):e&&(e.text=b)},f.prototype.getLabelPosition=function(a,b){var c=this.getLabelOptionByAxisId(a),d=c&&"object"==typeof c&&c.position?c.position:b;return{isInner:d.indexOf("inner")>=0,isOuter:d.indexOf("outer")>=0,isLeft:d.indexOf("left")>=0,isCenter:d.indexOf("center")>=0,isRight:d.indexOf("right")>=0,isTop:d.indexOf("top")>=0,isMiddle:d.indexOf("middle")>=0,isBottom:d.indexOf("bottom")>=0}},f.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},f.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getLabelPositionById=function(a){return"y2"===a?this.getY2AxisLabelPosition():"y"===a?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},f.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},f.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},f.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},f.prototype.xForAxisLabel=function(a,b){var c=this.owner;return a?b.isLeft?0:b.isCenter?c.width/2:c.width:b.isBottom?-c.height:b.isMiddle?-c.height/2:0},f.prototype.dxForAxisLabel=function(a,b){return a?b.isLeft?"0.5em":b.isRight?"-0.5em":"0":b.isTop?"-0.5em":b.isBottom?"0.5em":"0"},f.prototype.textAnchorForAxisLabel=function(a,b){return a?b.isLeft?"start":b.isCenter?"middle":"end":b.isBottom?"start":b.isMiddle?"middle":"end"},f.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dyForXAxisLabel=function(){var a=this.owner,b=a.config,c=this.getXAxisLabelPosition();return b.axis_rotated?c.isInner?"1.2em":-25-this.getMaxTickWidth("x"):c.isInner?"-0.5em":b.axis_x_height?b.axis_x_height-10:"3em"},f.prototype.dyForYAxisLabel=function(){var a=this.owner,b=this.getYAxisLabelPosition();return a.config.axis_rotated?b.isInner?"-0.5em":"3em":b.isInner?"1.2em":-10-(a.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},f.prototype.dyForY2AxisLabel=function(){var a=this.owner,b=this.getY2AxisLabelPosition();return a.config.axis_rotated?b.isInner?"1.2em":"-2.2em":b.isInner?"-0.5em":15+(a.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},f.prototype.textAnchorForXAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(!a.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.textAnchorForYAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.textAnchorForY2AxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.getMaxTickWidth=function(a,b){var c,d,e,f,g,h=this.owner,i=h.config,j=0;return b&&h.currentMaxTickWidths[a]?h.currentMaxTickWidths[a]:(h.svg&&(c=h.filterTargetsToShow(h.data.targets),"y"===a?(d=h.y.copy().domain(h.getYDomain(c,"y")),e=this.getYAxis(d,h.yOrient,i.axis_y_tick_format,h.yAxisTickValues,!1,!0,!0)):"y2"===a?(d=h.y2.copy().domain(h.getYDomain(c,"y2")),
2313 2313 e=this.getYAxis(d,h.y2Orient,i.axis_y2_tick_format,h.y2AxisTickValues,!1,!0,!0)):(d=h.x.copy().domain(h.getXDomain(c)),e=this.getXAxis(d,h.xOrient,h.xAxisTickFormat,h.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(c,e)),f=h.d3.select("body").append("div").classed("c3",!0),g=f.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g.append("g").call(e).each(function(){h.d3.select(this).selectAll("text").each(function(){var a=this.getBoundingClientRect();j<a.width&&(j=a.width)}),f.remove()})),h.currentMaxTickWidths[a]=0>=j?h.currentMaxTickWidths[a]:j,h.currentMaxTickWidths[a])},f.prototype.updateLabels=function(a){var b=this.owner,c=b.main.select("."+l.axisX+" ."+l.axisXLabel),d=b.main.select("."+l.axisY+" ."+l.axisYLabel),e=b.main.select("."+l.axisY2+" ."+l.axisY2Label);(a?c.transition():c).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(a?d.transition():d).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(a?e.transition():e).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},f.prototype.getPadding=function(a,b,c,d){var e="number"==typeof a?a:a[b];return m(e)?"ratio"===a.unit?a[b]*d:this.convertPixelsToAxisPadding(e,d):c},f.prototype.convertPixelsToAxisPadding=function(a,b){var c=this.owner,d=c.config.axis_rotated?c.width:c.height;return b*(a/d)},f.prototype.generateTickValues=function(a,b,c){var d,e,f,g,h,i,j,k=a;if(b)if(d=n(b)?b():b,1===d)k=[a[0]];else if(2===d)k=[a[0],a[a.length-1]];else if(d>2){for(g=d-2,e=a[0],f=a[a.length-1],h=(f-e)/(g+1),k=[e],i=0;g>i;i++)j=+e+h*(i+1),k.push(c?new Date(j):j);k.push(f)}return c||(k=k.sort(function(a,b){return a-b})),k},f.prototype.generateTransitions=function(a){var b=this.owner,c=b.axes;return{axisX:a?c.x.transition().duration(a):c.x,axisY:a?c.y.transition().duration(a):c.y,axisY2:a?c.y2.transition().duration(a):c.y2,axisSubX:a?c.subx.transition().duration(a):c.subx}},f.prototype.redraw=function(a,b){var c=this.owner;c.axes.x.style("opacity",b?0:1),c.axes.y.style("opacity",b?0:1),c.axes.y2.style("opacity",b?0:1),c.axes.subx.style("opacity",b?0:1),a.axisX.call(c.xAxis),a.axisY.call(c.yAxis),a.axisY2.call(c.y2Axis),a.axisSubX.call(c.subXAxis)},i.getClipPath=function(b){var c=a.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(c?"":document.URL.split("#")[0])+"#"+b+")"},i.appendClip=function(a,b){return a.append("clipPath").attr("id",b).append("rect")},i.getAxisClipX=function(a){var b=Math.max(30,this.margin.left);return a?-(1+b):-(b-1)},i.getAxisClipY=function(a){return a?-20:-this.margin.top},i.getXAxisClipX=function(){var a=this;return a.getAxisClipX(!a.config.axis_rotated)},i.getXAxisClipY=function(){var a=this;return a.getAxisClipY(!a.config.axis_rotated)},i.getYAxisClipX=function(){var a=this;return a.config.axis_y_inner?-1:a.getAxisClipX(a.config.axis_rotated)},i.getYAxisClipY=function(){var a=this;return a.getAxisClipY(a.config.axis_rotated)},i.getAxisClipWidth=function(a){var b=this,c=Math.max(30,b.margin.left),d=Math.max(30,b.margin.right);return a?b.width+2+c+d:b.margin.left+20},i.getAxisClipHeight=function(a){return(a?this.margin.bottom:this.margin.top+this.height)+20},i.getXAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(!a.config.axis_rotated)},i.getXAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(!a.config.axis_rotated)},i.getYAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(a.config.axis_rotated)+(a.config.axis_y_inner?20:0)},i.getYAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(a.config.axis_rotated)},i.initPie=function(){var a=this,b=a.d3,c=a.config;a.pie=b.layout.pie().value(function(a){return a.values.reduce(function(a,b){return a+b.value},0)}),c.data_order||a.pie.sort(null)},i.updateRadius=function(){var a=this,b=a.config,c=b.gauge_width||b.donut_width;a.radiusExpanded=Math.min(a.arcWidth,a.arcHeight)/2,a.radius=.95*a.radiusExpanded,a.innerRadiusRatio=c?(a.radius-c)/a.radius:.6,a.innerRadius=a.hasType("donut")||a.hasType("gauge")?a.radius*a.innerRadiusRatio:0},i.updateArc=function(){var a=this;a.svgArc=a.getSvgArc(),a.svgArcExpanded=a.getSvgArcExpanded(),a.svgArcExpandedSub=a.getSvgArcExpanded(.98)},i.updateAngle=function(a){var b,c,d,e,f=this,g=f.config,h=!1,i=0;return g?(f.pie(f.filterTargetsToShow(f.data.targets)).forEach(function(b){h||b.data.id!==a.data.id||(h=!0,a=b,a.index=i),i++}),isNaN(a.startAngle)&&(a.startAngle=0),isNaN(a.endAngle)&&(a.endAngle=a.startAngle),f.isGaugeType(a.data)&&(b=g.gauge_min,c=g.gauge_max,d=Math.PI*(g.gauge_fullCircle?2:1)/(c-b),e=a.value<b?0:a.value<c?a.value-b:c-b,a.startAngle=g.gauge_startingAngle,a.endAngle=a.startAngle+d*e),h?a:null):null},i.getSvgArc=function(){var a=this,b=a.d3.svg.arc().outerRadius(a.radius).innerRadius(a.innerRadius),c=function(c,d){var e;return d?b(c):(e=a.updateAngle(c),e?b(e):"M 0 0")};return c.centroid=b.centroid,c},i.getSvgArcExpanded=function(a){var b=this,c=b.d3.svg.arc().outerRadius(b.radiusExpanded*(a?a:1)).innerRadius(b.innerRadius);return function(a){var d=b.updateAngle(a);return d?c(d):"M 0 0"}},i.getArc=function(a,b,c){return c||this.isArcType(a.data)?this.svgArc(a,b):"M 0 0"},i.transformForArcLabel=function(a){var b,c,d,e,f,g=this,h=g.config,i=g.updateAngle(a),j="";return i&&!g.hasType("gauge")&&(b=this.svgArc.centroid(i),c=isNaN(b[0])?0:b[0],d=isNaN(b[1])?0:b[1],e=Math.sqrt(c*c+d*d),f=g.hasType("donut")&&h.donut_label_ratio?n(h.donut_label_ratio)?h.donut_label_ratio(a,g.radius,e):h.donut_label_ratio:g.hasType("pie")&&h.pie_label_ratio?n(h.pie_label_ratio)?h.pie_label_ratio(a,g.radius,e):h.pie_label_ratio:g.radius&&e?(36/g.radius>.375?1.175-36/g.radius:.8)*g.radius/e:0,j="translate("+c*f+","+d*f+")"),j},i.getArcRatio=function(a){var b=this,c=b.config,d=Math.PI*(b.hasType("gauge")&&!c.gauge_fullCircle?1:2);return a?(a.endAngle-a.startAngle)/d:null},i.convertToArcData=function(a){return this.addName({id:a.data.id,value:a.value,ratio:this.getArcRatio(a),index:a.index})},i.textForArcLabel=function(a){var b,c,d,e,f,g=this;return g.shouldShowArcLabel()?(b=g.updateAngle(a),c=b?b.value:null,d=g.getArcRatio(b),e=a.data.id,g.hasType("gauge")||g.meetsArcLabelThreshold(d)?(f=g.getArcLabelFormat(),f?f(c,d,e):g.defaultArcValueFormat(c,d)):""):""},i.expandArc=function(b){var c,d=this;return d.transiting?void(c=a.setInterval(function(){d.transiting||(a.clearInterval(c),d.legend.selectAll(".c3-legend-item-focused").size()>0&&d.expandArc(b))},10)):(b=d.mapToTargetIds(b),void d.svg.selectAll(d.selectorTargets(b,"."+l.chartArc)).each(function(a){d.shouldExpand(a.data.id)&&d.d3.select(this).selectAll("path").transition().duration(d.expandDuration(a.data.id)).attr("d",d.svgArcExpanded).transition().duration(2*d.expandDuration(a.data.id)).attr("d",d.svgArcExpandedSub).each(function(a){d.isDonutType(a.data)})}))},i.unexpandArc=function(a){var b=this;b.transiting||(a=b.mapToTargetIds(a),b.svg.selectAll(b.selectorTargets(a,"."+l.chartArc)).selectAll("path").transition().duration(function(a){return b.expandDuration(a.data.id)}).attr("d",b.svgArc),b.svg.selectAll("."+l.arc).style("opacity",1))},i.expandDuration=function(a){var b=this,c=b.config;return b.isDonutType(a)?c.donut_expand_duration:b.isGaugeType(a)?c.gauge_expand_duration:b.isPieType(a)?c.pie_expand_duration:50},i.shouldExpand=function(a){var b=this,c=b.config;return b.isDonutType(a)&&c.donut_expand||b.isGaugeType(a)&&c.gauge_expand||b.isPieType(a)&&c.pie_expand},i.shouldShowArcLabel=function(){var a=this,b=a.config,c=!0;return a.hasType("donut")?c=b.donut_label_show:a.hasType("pie")&&(c=b.pie_label_show),c},i.meetsArcLabelThreshold=function(a){var b=this,c=b.config,d=b.hasType("donut")?c.donut_label_threshold:c.pie_label_threshold;return a>=d},i.getArcLabelFormat=function(){var a=this,b=a.config,c=b.pie_label_format;return a.hasType("gauge")?c=b.gauge_label_format:a.hasType("donut")&&(c=b.donut_label_format),c},i.getArcTitle=function(){var a=this;return a.hasType("donut")?a.config.donut_title:""},i.updateTargetsForArc=function(a){var b,c,d=this,e=d.main,f=d.classChartArc.bind(d),g=d.classArcs.bind(d),h=d.classFocus.bind(d);b=e.select("."+l.chartArcs).selectAll("."+l.chartArc).data(d.pie(a)).attr("class",function(a){return f(a)+h(a.data)}),c=b.enter().append("g").attr("class",f),c.append("g").attr("class",g),c.append("text").attr("dy",d.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},i.initArc=function(){var a=this;a.arcs=a.main.select("."+l.chart).append("g").attr("class",l.chartArcs).attr("transform",a.getTranslate("arc")),a.arcs.append("text").attr("class",l.chartArcsTitle).style("text-anchor","middle").text(a.getArcTitle())},i.redrawArc=function(a,b,c){var d,e=this,f=e.d3,g=e.config,h=e.main;d=h.selectAll("."+l.arcs).selectAll("."+l.arc).data(e.arcData.bind(e)),d.enter().append("path").attr("class",e.classArc.bind(e)).style("fill",function(a){return e.color(a.data)}).style("cursor",function(a){return g.interaction_enabled&&g.data_selection_isselectable(a)?"pointer":null}).style("opacity",0).each(function(a){e.isGaugeType(a.data)&&(a.startAngle=a.endAngle=g.gauge_startingAngle),this._current=a}),d.attr("transform",function(a){return!e.isGaugeType(a.data)&&c?"scale(0)":""}).style("opacity",function(a){return a===this._current?0:1}).on("mouseover",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),b&&(c=e.convertToArcData(b),e.expandArc(b.data.id),e.api.focus(b.data.id),e.toggleFocusLegend(b.data.id,!0),e.config.data_onmouseover(c,this)))}:null).on("mousemove",g.interaction_enabled?function(a){var b,c,d=e.updateAngle(a);d&&(b=e.convertToArcData(d),c=[b],e.showTooltip(c,this))}:null).on("mouseout",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),b&&(c=e.convertToArcData(b),e.unexpandArc(b.data.id),e.api.revert(),e.revertLegend(),e.hideTooltip(),e.config.data_onmouseout(c,this)))}:null).on("click",g.interaction_enabled?function(a,b){var c,d=e.updateAngle(a);d&&(c=e.convertToArcData(d),e.toggleShape&&e.toggleShape(this,c,b),e.config.data_onclick.call(e.api,c,this))}:null).each(function(){e.transiting=!0}).transition().duration(a).attrTween("d",function(a){var b,c=e.updateAngle(a);return c?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),b=f.interpolate(this._current,c),this._current=b(0),function(c){var d=b(c);return d.data=a.data,e.getArc(d,!0)}):function(){return"M 0 0"}}).attr("transform",c?"scale(1)":"").style("fill",function(a){return e.levelColor?e.levelColor(a.data.values[0].value):e.color(a.data.id)}).style("opacity",1).call(e.endall,function(){e.transiting=!1}),d.exit().transition().duration(b).style("opacity",0).remove(),h.selectAll("."+l.chartArc).select("text").style("opacity",0).attr("class",function(a){return e.isGaugeType(a.data)?l.gaugeValue:""}).text(e.textForArcLabel.bind(e)).attr("transform",e.transformForArcLabel.bind(e)).style("font-size",function(a){return e.isGaugeType(a.data)?Math.round(e.radius/5)+"px":""}).transition().duration(a).style("opacity",function(a){return e.isTargetToShow(a.data.id)&&e.isArcType(a.data)?1:0}),h.select("."+l.chartArcsTitle).style("opacity",e.hasType("donut")||e.hasType("gauge")?1:0),e.hasType("gauge")&&(e.arcs.select("."+l.chartArcsBackground).attr("d",function(){var a={data:[{value:g.gauge_max}],startAngle:g.gauge_startingAngle,endAngle:-1*g.gauge_startingAngle};return e.getArc(a,!0,!0)}),e.arcs.select("."+l.chartArcsGaugeUnit).attr("dy",".75em").text(g.gauge_label_show?g.gauge_units:""),e.arcs.select("."+l.chartArcsGaugeMin).attr("dx",-1*(e.innerRadius+(e.radius-e.innerRadius)/(g.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_min:""),e.arcs.select("."+l.chartArcsGaugeMax).attr("dx",e.innerRadius+(e.radius-e.innerRadius)/(g.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_max:""))},i.initGauge=function(){var a=this.arcs;this.hasType("gauge")&&(a.append("path").attr("class",l.chartArcsBackground),a.append("text").attr("class",l.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},i.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},i.initRegion=function(){var a=this;a.region=a.main.append("g").attr("clip-path",a.clipPath).attr("class",l.regions)},i.updateRegion=function(a){var b=this,c=b.config;b.region.style("visibility",b.hasArcType()?"hidden":"visible"),b.mainRegion=b.main.select("."+l.regions).selectAll("."+l.region).data(c.regions),b.mainRegion.enter().append("g").append("rect").style("fill-opacity",0),b.mainRegion.attr("class",b.classRegion.bind(b)),b.mainRegion.exit().transition().duration(a).style("opacity",0).remove()},i.redrawRegion=function(a){var b=this,c=b.mainRegion.selectAll("rect").each(function(){var a=b.d3.select(this.parentNode).datum();b.d3.select(this).datum(a)}),d=b.regionX.bind(b),e=b.regionY.bind(b),f=b.regionWidth.bind(b),g=b.regionHeight.bind(b);return[(a?c.transition():c).attr("x",d).attr("y",e).attr("width",f).attr("height",g).style("fill-opacity",function(a){return m(a.opacity)?a.opacity:.1})]},i.regionX=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"start"in a?e(a.start):0:d.axis_rotated?0:"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionY=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?0:"end"in a?e(a.end):0:d.axis_rotated&&"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionWidth=function(a){var b,c=this,d=c.config,e=c.regionX(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"end"in a?f(a.end):c.width:d.axis_rotated?c.width:"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.width,e>b?0:b-e},i.regionHeight=function(a){var b,c=this,d=c.config,e=this.regionY(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?c.height:"start"in a?f(a.start):c.height:d.axis_rotated&&"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.height,e>b?0:b-e},i.isRegionOnX=function(a){return!a.axis||"x"===a.axis},i.drag=function(a){var b,c,d,e,f,g,h,i,j=this,k=j.config,m=j.main,n=j.d3;j.hasArcType()||k.data_selection_enabled&&(k.zoom_enabled&&!j.zoom.altDomain||k.data_selection_multiple&&(b=j.dragStart[0],c=j.dragStart[1],d=a[0],e=a[1],f=Math.min(b,d),g=Math.max(b,d),h=k.data_selection_grouped?j.margin.top:Math.min(c,e),i=k.data_selection_grouped?j.height:Math.max(c,e),m.select("."+l.dragarea).attr("x",f).attr("y",h).attr("width",g-f).attr("height",i-h),m.selectAll("."+l.shapes).selectAll("."+l.shape).filter(function(a){return k.data_selection_isselectable(a)}).each(function(a,b){var c,d,e,k,m,o,p=n.select(this),q=p.classed(l.SELECTED),r=p.classed(l.INCLUDED),s=!1;if(p.classed(l.circle))c=1*p.attr("cx"),d=1*p.attr("cy"),m=j.togglePoint,s=c>f&&g>c&&d>h&&i>d;else{if(!p.classed(l.bar))return;o=z(this),c=o.x,d=o.y,e=o.width,k=o.height,m=j.togglePath,s=!(c>g||f>c+e||d>i||h>d+k)}s^r&&(p.classed(l.INCLUDED,!r),p.classed(l.SELECTED,!q),m.call(j,!q,p,a,b))})))},i.dragstart=function(a){var b=this,c=b.config;b.hasArcType()||c.data_selection_enabled&&(b.dragStart=a,b.main.select("."+l.chart).append("rect").attr("class",l.dragarea).style("opacity",.1),b.dragging=!0)},i.dragend=function(){var a=this,b=a.config;a.hasArcType()||b.data_selection_enabled&&(a.main.select("."+l.dragarea).transition().duration(100).style("opacity",0).remove(),a.main.selectAll("."+l.shape).classed(l.INCLUDED,!1),a.dragging=!1)},i.selectPoint=function(a,b,c){var d=this,e=d.config,f=(e.axis_rotated?d.circleY:d.circleX).bind(d),g=(e.axis_rotated?d.circleX:d.circleY).bind(d),h=d.pointSelectR.bind(d);e.data_onselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).data([b]).enter().append("circle").attr("class",function(){return d.generateClass(l.selectedCircle,c)}).attr("cx",f).attr("cy",g).attr("stroke",function(){return d.color(b)}).attr("r",function(a){return 1.4*d.pointSelectR(a)}).transition().duration(100).attr("r",h)},i.unselectPoint=function(a,b,c){var d=this;d.config.data_onunselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).transition().duration(100).attr("r",0).remove()},i.togglePoint=function(a,b,c,d){a?this.selectPoint(b,c,d):this.unselectPoint(b,c,d)},i.selectPath=function(a,b){var c=this;c.config.data_onselected.call(c,b,a.node()),c.config.interaction_brighten&&a.transition().duration(100).style("fill",function(){return c.d3.rgb(c.color(b)).brighter(.75)})},i.unselectPath=function(a,b){var c=this;c.config.data_onunselected.call(c,b,a.node()),c.config.interaction_brighten&&a.transition().duration(100).style("fill",function(){return c.color(b)})},i.togglePath=function(a,b,c,d){a?this.selectPath(b,c,d):this.unselectPath(b,c,d)},i.getToggle=function(a,b){var c,d=this;return"circle"===a.nodeName?c=d.isStepType(b)?function(){}:d.togglePoint:"path"===a.nodeName&&(c=d.togglePath),c},i.toggleShape=function(a,b,c){var d=this,e=d.d3,f=d.config,g=e.select(a),h=g.classed(l.SELECTED),i=d.getToggle(a,b).bind(d);f.data_selection_enabled&&f.data_selection_isselectable(b)&&(f.data_selection_multiple||d.main.selectAll("."+l.shapes+(f.data_selection_grouped?d.getTargetSelectorSuffix(b.id):"")).selectAll("."+l.shape).each(function(a,b){var c=e.select(this);c.classed(l.SELECTED)&&i(!1,c.classed(l.SELECTED,!1),a,b)}),g.classed(l.SELECTED,!h),i(!h,g,b,c))},i.initBrush=function(){var a=this,b=a.d3;a.brush=b.svg.brush().on("brush",function(){a.redrawForBrush()}),a.brush.update=function(){return a.context&&a.context.select("."+l.brush).call(this),this},a.brush.scale=function(b){return a.config.axis_rotated?this.y(b):this.x(b)}},i.initSubchart=function(){var a=this,b=a.config,c=a.context=a.svg.append("g").attr("transform",a.getTranslate("context")),d=b.subchart_show?"visible":"hidden";c.style("visibility",d),c.append("g").attr("clip-path",a.clipPathForSubchart).attr("class",l.chart),c.select("."+l.chart).append("g").attr("class",l.chartBars),c.select("."+l.chart).append("g").attr("class",l.chartLines),c.append("g").attr("clip-path",a.clipPath).attr("class",l.brush).call(a.brush),a.axes.subx=c.append("g").attr("class",l.axisX).attr("transform",a.getTranslate("subx")).attr("clip-path",b.axis_rotated?"":a.clipPathForXAxis).style("visibility",b.subchart_axis_x_show?d:"hidden")},i.updateTargetsForSubchart=function(a){var b,c,d,e,f=this,g=f.context,h=f.config,i=f.classChartBar.bind(f),j=f.classBars.bind(f),k=f.classChartLine.bind(f),m=f.classLines.bind(f),n=f.classAreas.bind(f);h.subchart_show&&(e=g.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",i),d=e.enter().append("g").style("opacity",0).attr("class",i),d.append("g").attr("class",j),c=g.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",k),b=c.enter().append("g").style("opacity",0).attr("class",k),b.append("g").attr("class",m),b.append("g").attr("class",n),g.selectAll("."+l.brush+" rect").attr(h.axis_rotated?"width":"height",h.axis_rotated?f.width2:f.height2))},i.updateBarForSubchart=function(a){var b=this;b.contextBar=b.context.selectAll("."+l.bars).selectAll("."+l.bar).data(b.barData.bind(b)),b.contextBar.enter().append("path").attr("class",b.classBar.bind(b)).style("stroke","none").style("fill",b.color),b.contextBar.style("opacity",b.initialOpacity.bind(b)),b.contextBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBarForSubchart=function(a,b,c){(b?this.contextBar.transition(Math.random().toString()).duration(c):this.contextBar).attr("d",a).style("opacity",1)},i.updateLineForSubchart=function(a){var b=this;b.contextLine=b.context.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.contextLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.contextLine.style("opacity",b.initialOpacity.bind(b)),b.contextLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLineForSubchart=function(a,b,c){(b?this.contextLine.transition(Math.random().toString()).duration(c):this.contextLine).attr("d",a).style("opacity",1)},i.updateAreaForSubchart=function(a){var b=this,c=b.d3;b.contextArea=b.context.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.contextArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.contextArea.style("opacity",0),b.contextArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawAreaForSubchart=function(a,b,c){(b?this.contextArea.transition(Math.random().toString()).duration(c):this.contextArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)},i.redrawSubchart=function(a,b,c,d,e,f,g){var h,i,j,k=this,l=k.d3,m=k.config;k.context.style("visibility",m.subchart_show?"visible":"hidden"),m.subchart_show&&(l.event&&"zoom"===l.event.type&&k.brush.extent(k.x.orgDomain()).update(),a&&(k.brush.empty()||k.brush.extent(k.x.orgDomain()).update(),h=k.generateDrawArea(e,!0),i=k.generateDrawBar(f,!0),j=k.generateDrawLine(g,!0),k.updateBarForSubchart(c),k.updateLineForSubchart(c),k.updateAreaForSubchart(c),k.redrawBarForSubchart(i,c,c),k.redrawLineForSubchart(j,c,c),k.redrawAreaForSubchart(h,c,c)))},i.redrawForBrush=function(){var a=this,b=a.x;a.redraw({withTransition:!1,withY:a.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),a.config.subchart_onbrush.call(a.api,b.orgDomain())},i.transformContext=function(a,b){var c,d=this;b&&b.axisSubX?c=b.axisSubX:(c=d.context.select("."+l.axisX),a&&(c=c.transition())),d.context.attr("transform",d.getTranslate("context")),c.attr("transform",d.getTranslate("subx"))},i.getDefaultExtent=function(){var a=this,b=a.config,c=n(b.axis_x_extent)?b.axis_x_extent(a.getXDomain(a.data.targets)):b.axis_x_extent;return a.isTimeSeries()&&(c=[a.parseDate(c[0]),a.parseDate(c[1])]),c},i.initZoom=function(){var a,b=this,c=b.d3,d=b.config;b.zoom=c.behavior.zoom().on("zoomstart",function(){a=c.event.sourceEvent,b.zoom.altDomain=c.event.sourceEvent.altKey?b.x.orgDomain():null,d.zoom_onzoomstart.call(b.api,c.event.sourceEvent)}).on("zoom",function(){b.redrawForZoom.call(b)}).on("zoomend",function(){var e=c.event.sourceEvent;e&&a.clientX===e.clientX&&a.clientY===e.clientY||(b.redrawEventRect(),b.updateZoom(),d.zoom_onzoomend.call(b.api,b.x.orgDomain()))}),b.zoom.scale=function(a){return d.axis_rotated?this.y(a):this.x(a)},b.zoom.orgScaleExtent=function(){var a=d.zoom_extent?d.zoom_extent:[1,10];return[a[0],Math.max(b.getMaxDataCount()/a[1],a[1])]},b.zoom.updateScaleExtent=function(){var a=t(b.x.orgDomain())/t(b.getZoomDomain()),c=this.orgScaleExtent();return this.scaleExtent([c[0]*a,c[1]*a]),this}},i.getZoomDomain=function(){var a=this,b=a.config,c=a.d3,d=c.min([a.orgXDomain[0],b.zoom_x_min]),e=c.max([a.orgXDomain[1],b.zoom_x_max]);return[d,e]},i.updateZoom=function(){var a=this,b=a.config.zoom_enabled?a.zoom:function(){};a.main.select("."+l.zoomRect).call(b).on("dblclick.zoom",null),a.main.selectAll("."+l.eventRect).call(b).on("dblclick.zoom",null)},i.redrawForZoom=function(){var a=this,b=a.d3,c=a.config,d=a.zoom,e=a.x;if(c.zoom_enabled&&0!==a.filterTargetsToShow(a.data.targets).length){if("mousemove"===b.event.sourceEvent.type&&d.altDomain)return e.domain(d.altDomain),void d.scale(e).updateScaleExtent();a.isCategorized()&&e.orgDomain()[0]===a.orgXDomain[0]&&e.domain([a.orgXDomain[0]-1e-10,e.orgDomain()[1]]),a.redraw({withTransition:!1,withY:c.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===b.event.sourceEvent.type&&(a.cancelClick=!0),c.zoom_onzoom.call(a.api,e.orgDomain())}},i.generateColor=function(){var a=this,b=a.config,c=a.d3,d=b.data_colors,e=v(b.color_pattern)?b.color_pattern:c.scale.category10().range(),f=b.data_color,g=[];return function(a){var b,c=a.id||a.data&&a.data.id||a;return d[c]instanceof Function?b=d[c](a):d[c]?b=d[c]:(g.indexOf(c)<0&&g.push(c),b=e[g.indexOf(c)%e.length],d[c]=b),f instanceof Function?f(b,a):b}},i.generateLevelColor=function(){var a=this,b=a.config,c=b.color_pattern,d=b.color_threshold,e="value"===d.unit,f=d.values&&d.values.length?d.values:[],g=d.max||100;return v(b.color_threshold)?function(a){var b,d,h=c[c.length-1];for(b=0;b<f.length;b++)if(d=e?a:100*a/g,d<f[b]){h=c[b];break}return h}:null},i.getYFormat=function(a){var b=this,c=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.yFormat,d=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.y2Format;return function(a,e,f){var g="y2"===b.axis.getId(f)?d:c;return g.call(b,a,e)}},i.yFormat=function(a){var b=this,c=b.config,d=c.axis_y_tick_format?c.axis_y_tick_format:b.defaultValueFormat;return d(a)},i.y2Format=function(a){var b=this,c=b.config,d=c.axis_y2_tick_format?c.axis_y2_tick_format:b.defaultValueFormat;return d(a)},i.defaultValueFormat=function(a){return m(a)?+a:""},i.defaultArcValueFormat=function(a,b){return(100*b).toFixed(1)+"%"},i.dataLabelFormat=function(a){var b,c=this,d=c.config.data_labels,e=function(a){return m(a)?+a:""};return b="function"==typeof d.format?d.format:"object"==typeof d.format?d.format[a]?d.format[a]===!0?e:d.format[a]:function(){return""}:e},i.hasCaches=function(a){for(var b=0;b<a.length;b++)if(!(a[b]in this.cache))return!1;return!0},i.addCache=function(a,b){this.cache[a]=this.cloneTarget(b)},i.getCaches=function(a){var b,c=[];for(b=0;b<a.length;b++)a[b]in this.cache&&c.push(this.cloneTarget(this.cache[a[b]]));return c};var l=i.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};i.generateClass=function(a,b){return" "+a+" "+a+this.getTargetSelectorSuffix(b)},i.classText=function(a){return this.generateClass(l.text,a.index)},i.classTexts=function(a){return this.generateClass(l.texts,a.id)},i.classShape=function(a){return this.generateClass(l.shape,a.index)},i.classShapes=function(a){return this.generateClass(l.shapes,a.id)},i.classLine=function(a){return this.classShape(a)+this.generateClass(l.line,a.id)},i.classLines=function(a){return this.classShapes(a)+this.generateClass(l.lines,a.id)},i.classCircle=function(a){return this.classShape(a)+this.generateClass(l.circle,a.index)},i.classCircles=function(a){return this.classShapes(a)+this.generateClass(l.circles,a.id)},i.classBar=function(a){return this.classShape(a)+this.generateClass(l.bar,a.index)},i.classBars=function(a){return this.classShapes(a)+this.generateClass(l.bars,a.id)},i.classArc=function(a){return this.classShape(a.data)+this.generateClass(l.arc,a.data.id)},i.classArcs=function(a){return this.classShapes(a.data)+this.generateClass(l.arcs,a.data.id)},i.classArea=function(a){return this.classShape(a)+this.generateClass(l.area,a.id)},i.classAreas=function(a){return this.classShapes(a)+this.generateClass(l.areas,a.id)},i.classRegion=function(a,b){return this.generateClass(l.region,b)+" "+("class"in a?a["class"]:"")},i.classEvent=function(a){return this.generateClass(l.eventRect,a.index)},i.classTarget=function(a){var b=this,c=b.config.data_classes[a],d="";return c&&(d=" "+l.target+"-"+c),b.generateClass(l.target,a)+d},i.classFocus=function(a){return this.classFocused(a)+this.classDefocused(a)},i.classFocused=function(a){return" "+(this.focusedTargetIds.indexOf(a.id)>=0?l.focused:"")},i.classDefocused=function(a){return" "+(this.defocusedTargetIds.indexOf(a.id)>=0?l.defocused:"")},i.classChartText=function(a){return l.chartText+this.classTarget(a.id)},i.classChartLine=function(a){return l.chartLine+this.classTarget(a.id)},i.classChartBar=function(a){return l.chartBar+this.classTarget(a.id)},i.classChartArc=function(a){return l.chartArc+this.classTarget(a.data.id)},i.getTargetSelectorSuffix=function(a){return a||0===a?("-"+a).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},i.selectorTarget=function(a,b){return(b||"")+"."+l.target+this.getTargetSelectorSuffix(a)},i.selectorTargets=function(a,b){var c=this;return a=a||[],a.length?a.map(function(a){return c.selectorTarget(a,b)}):null},i.selectorLegend=function(a){return"."+l.legendItem+this.getTargetSelectorSuffix(a)},i.selectorLegends=function(a){var b=this;return a&&a.length?a.map(function(a){return b.selectorLegend(a)}):null};var m=i.isValue=function(a){return a||0===a},n=i.isFunction=function(a){return"function"==typeof a},o=i.isString=function(a){return"string"==typeof a},p=i.isUndefined=function(a){return"undefined"==typeof a},q=i.isDefined=function(a){return"undefined"!=typeof a},r=i.ceil10=function(a){return 10*Math.ceil(a/10)},s=i.asHalfPixel=function(a){return Math.ceil(a)+.5},t=i.diffDomain=function(a){return a[1]-a[0]},u=i.isEmpty=function(a){return"undefined"==typeof a||null===a||o(a)&&0===a.length||"object"==typeof a&&0===Object.keys(a).length},v=i.notEmpty=function(a){return!i.isEmpty(a)},w=i.getOption=function(a,b,c){return q(a[b])?a[b]:c},x=i.hasValue=function(a,b){var c=!1;return Object.keys(a).forEach(function(d){a[d]===b&&(c=!0)}),c},y=i.sanitise=function(a){return"string"==typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;"):a},z=i.getPathBox=function(a){var b=a.getBoundingClientRect(),c=[a.pathSegList.getItem(0),a.pathSegList.getItem(1)],d=c[0].x,e=Math.min(c[0].y,c[1].y);return{x:d,y:e,width:b.width,height:b.height}};h.focus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),this.revert(),this.defocus(),b.classed(l.focused,!0).classed(l.defocused,!1),
2314 2314 c.hasArcType()&&c.expandArc(a),c.toggleFocusLegend(a,!0),c.focusedTargetIds=a,c.defocusedTargetIds=c.defocusedTargetIds.filter(function(b){return a.indexOf(b)<0})},h.defocus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),b.classed(l.focused,!1).classed(l.defocused,!0),c.hasArcType()&&c.unexpandArc(a),c.toggleFocusLegend(a,!1),c.focusedTargetIds=c.focusedTargetIds.filter(function(b){return a.indexOf(b)<0}),c.defocusedTargetIds=a},h.revert=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a)),b.classed(l.focused,!1).classed(l.defocused,!1),c.hasArcType()&&c.unexpandArc(a),c.config.legend_show&&(c.showLegend(a.filter(c.isLegendToShow.bind(c))),c.legend.selectAll(c.selectorLegends(a)).filter(function(){return c.d3.select(this).classed(l.legendItemFocused)}).classed(l.legendItemFocused,!1)),c.focusedTargetIds=[],c.defocusedTargetIds=[]},h.show=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.removeHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",1,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",1)}),b.withLegend&&d.showLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.hide=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.addHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",0,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",0)}),b.withLegend&&d.hideLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.toggle=function(a,b){var c=this,d=this.internal;d.mapToTargetIds(a).forEach(function(a){d.isTargetToShow(a)?c.hide(a,b):c.show(a,b)})},h.zoom=function(a){var b=this.internal;return a&&(b.isTimeSeries()&&(a=a.map(function(a){return b.parseDate(a)})),b.brush.extent(a),b.redraw({withUpdateXDomain:!0,withY:b.config.zoom_rescale}),b.config.zoom_onzoom.call(this,b.x.orgDomain())),b.brush.extent()},h.zoom.enable=function(a){var b=this.internal;b.config.zoom_enabled=a,b.updateAndRedraw()},h.unzoom=function(){var a=this.internal;a.brush.clear().update(),a.redraw({withUpdateXDomain:!0})},h.zoom.max=function(a){var b=this.internal,c=b.config,d=b.d3;return 0===a||a?void(c.zoom_x_max=d.max([b.orgXDomain[1],a])):c.zoom_x_max},h.zoom.min=function(a){var b=this.internal,c=b.config,d=b.d3;return 0===a||a?void(c.zoom_x_min=d.min([b.orgXDomain[0],a])):c.zoom_x_min},h.zoom.range=function(a){return arguments.length?(q(a.max)&&this.domain.max(a.max),void(q(a.min)&&this.domain.min(a.min))):{max:this.domain.max(),min:this.domain.min()}},h.load=function(a){var b=this.internal,c=b.config;return a.xs&&b.addXs(a.xs),"names"in a&&h.data.names.bind(this)(a.names),"classes"in a&&Object.keys(a.classes).forEach(function(b){c.data_classes[b]=a.classes[b]}),"categories"in a&&b.isCategorized()&&(c.axis_x_categories=a.categories),"axes"in a&&Object.keys(a.axes).forEach(function(b){c.data_axes[b]=a.axes[b]}),"colors"in a&&Object.keys(a.colors).forEach(function(b){c.data_colors[b]=a.colors[b]}),"cacheIds"in a&&b.hasCaches(a.cacheIds)?void b.load(b.getCaches(a.cacheIds),a.done):void("unload"in a?b.unload(b.mapToTargetIds("boolean"==typeof a.unload&&a.unload?null:a.unload),function(){b.loadFromArgs(a)}):b.loadFromArgs(a))},h.unload=function(a){var b=this.internal;a=a||{},a instanceof Array?a={ids:a}:"string"==typeof a&&(a={ids:[a]}),b.unload(b.mapToTargetIds(a.ids),function(){b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),a.done&&a.done()})},h.flow=function(a){var b,c,d,e,f,g,h,i,j=this.internal,k=[],l=j.getMaxDataCount(),n=0,o=0;if(a.json)c=j.convertJsonToData(a.json,a.keys);else if(a.rows)c=j.convertRowsToData(a.rows);else{if(!a.columns)return;c=j.convertColumnsToData(a.columns)}b=j.convertDataToTargets(c,!0),j.data.targets.forEach(function(a){var c,d,e=!1;for(c=0;c<b.length;c++)if(a.id===b[c].id){for(e=!0,a.values[a.values.length-1]&&(o=a.values[a.values.length-1].index+1),n=b[c].values.length,d=0;n>d;d++)b[c].values[d].index=o+d,j.isTimeSeries()||(b[c].values[d].x=o+d);a.values=a.values.concat(b[c].values),b.splice(c,1);break}e||k.push(a.id)}),j.data.targets.forEach(function(a){var b,c;for(b=0;b<k.length;b++)if(a.id===k[b])for(o=a.values[a.values.length-1].index+1,c=0;n>c;c++)a.values.push({id:a.id,index:o+c,x:j.isTimeSeries()?j.getOtherTargetX(o+c):o+c,value:null})}),j.data.targets.length&&b.forEach(function(a){var b,c=[];for(b=j.data.targets[0].values[0].index;o>b;b++)c.push({id:a.id,index:b,x:j.isTimeSeries()?j.getOtherTargetX(b):b,value:null});a.values.forEach(function(a){a.index+=o,j.isTimeSeries()||(a.x+=o)}),a.values=c.concat(a.values)}),j.data.targets=j.data.targets.concat(b),d=j.getMaxDataCount(),f=j.data.targets[0],g=f.values[0],q(a.to)?(n=0,i=j.isTimeSeries()?j.parseDate(a.to):a.to,f.values.forEach(function(a){a.x<i&&n++})):q(a.length)&&(n=a.length),l?1===l&&j.isTimeSeries()&&(h=(f.values[f.values.length-1].x-g.x)/2,e=[new Date(+g.x-h),new Date(+g.x+h)],j.updateXDomain(null,!0,!0,!1,e)):(h=j.isTimeSeries()?f.values.length>1?f.values[f.values.length-1].x-g.x:g.x-j.getXDomain(j.data.targets)[0]:1,e=[g.x-h,g.x],j.updateXDomain(null,!0,!0,!1,e)),j.updateTargets(j.data.targets),j.redraw({flow:{index:g.index,length:n,duration:m(a.duration)?a.duration:j.config.transition_duration,done:a.done,orgDataCount:l},withLegend:!0,withTransition:l>1,withTrimXDomain:!1,withUpdateXAxis:!0})},i.generateFlow=function(a){var b=this,c=b.config,d=b.d3;return function(){var e,f,g,h=a.targets,i=a.flow,j=a.drawBar,k=a.drawLine,m=a.drawArea,n=a.cx,o=a.cy,p=a.xv,q=a.xForText,r=a.yForText,s=a.duration,u=1,v=i.index,w=i.length,x=b.getValueOnIndex(b.data.targets[0].values,v),y=b.getValueOnIndex(b.data.targets[0].values,v+w),z=b.x.domain(),A=i.duration||s,B=i.done||function(){},C=b.generateWait(),D=b.xgrid||d.selectAll([]),E=b.xgridLines||d.selectAll([]),F=b.mainRegion||d.selectAll([]),G=b.mainText||d.selectAll([]),H=b.mainBar||d.selectAll([]),I=b.mainLine||d.selectAll([]),J=b.mainArea||d.selectAll([]),K=b.mainCircle||d.selectAll([]);b.flowing=!0,b.data.targets.forEach(function(a){a.values.splice(0,w)}),g=b.updateXDomain(h,!0,!0),b.updateXGrid&&b.updateXGrid(!0),i.orgDataCount?e=1===i.orgDataCount||(x&&x.x)===(y&&y.x)?b.x(z[0])-b.x(g[0]):b.isTimeSeries()?b.x(z[0])-b.x(g[0]):b.x(x.x)-b.x(y.x):1!==b.data.targets[0].values.length?e=b.x(z[0])-b.x(g[0]):b.isTimeSeries()?(x=b.getValueOnIndex(b.data.targets[0].values,0),y=b.getValueOnIndex(b.data.targets[0].values,b.data.targets[0].values.length-1),e=b.x(x.x)-b.x(y.x)):e=t(g)/2,u=t(z)/t(g),f="translate("+e+",0) scale("+u+",1)",b.hideXGridFocus(),d.transition().ease("linear").duration(A).each(function(){C.add(b.axes.x.transition().call(b.xAxis)),C.add(H.transition().attr("transform",f)),C.add(I.transition().attr("transform",f)),C.add(J.transition().attr("transform",f)),C.add(K.transition().attr("transform",f)),C.add(G.transition().attr("transform",f)),C.add(F.filter(b.isRegionOnX).transition().attr("transform",f)),C.add(D.transition().attr("transform",f)),C.add(E.transition().attr("transform",f))}).call(C,function(){var a,d=[],e=[],f=[];if(w){for(a=0;w>a;a++)d.push("."+l.shape+"-"+(v+a)),e.push("."+l.text+"-"+(v+a)),f.push("."+l.eventRect+"-"+(v+a));b.svg.selectAll("."+l.shapes).selectAll(d).remove(),b.svg.selectAll("."+l.texts).selectAll(e).remove(),b.svg.selectAll("."+l.eventRects).selectAll(f).remove(),b.svg.select("."+l.xgrid).remove()}D.attr("transform",null).attr(b.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",c.axis_rotated?0:p).attr("x2",c.axis_rotated?b.width:p),E.select("text").attr("x",c.axis_rotated?b.width:0).attr("y",p),H.attr("transform",null).attr("d",j),I.attr("transform",null).attr("d",k),J.attr("transform",null).attr("d",m),K.attr("transform",null).attr("cx",n).attr("cy",o),G.attr("transform",null).attr("x",q).attr("y",r).style("fill-opacity",b.opacityForText.bind(b)),F.attr("transform",null),F.select("rect").filter(b.isRegionOnX).attr("x",b.regionX.bind(b)).attr("width",b.regionWidth.bind(b)),c.interaction_enabled&&b.redrawEventRect(),B(),b.flowing=!1})}},h.selected=function(a){var b=this.internal,c=b.d3;return c.merge(b.main.selectAll("."+l.shapes+b.getTargetSelectorSuffix(a)).selectAll("."+l.shape).filter(function(){return c.select(this).classed(l.SELECTED)}).map(function(a){return a.map(function(a){var b=a.__data__;return b.data?b.data:b})}))},h.select=function(a,b,c){var d=this.internal,e=d.d3,f=d.config;f.data_selection_enabled&&d.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(g,h){var i=e.select(this),j=g.data?g.data.id:g.id,k=d.getToggle(this,g).bind(d),m=f.data_selection_grouped||!a||a.indexOf(j)>=0,n=!b||b.indexOf(h)>=0,o=i.classed(l.SELECTED);i.classed(l.line)||i.classed(l.area)||(m&&n?f.data_selection_isselectable(g)&&!o&&k(!0,i.classed(l.SELECTED,!0),g,h):q(c)&&c&&o&&k(!1,i.classed(l.SELECTED,!1),g,h))})},h.unselect=function(a,b){var c=this.internal,d=c.d3,e=c.config;e.data_selection_enabled&&c.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(f,g){var h=d.select(this),i=f.data?f.data.id:f.id,j=c.getToggle(this,f).bind(c),k=e.data_selection_grouped||!a||a.indexOf(i)>=0,m=!b||b.indexOf(g)>=0,n=h.classed(l.SELECTED);h.classed(l.line)||h.classed(l.area)||k&&m&&e.data_selection_isselectable(f)&&n&&j(!1,h.classed(l.SELECTED,!1),f,g)})},h.transform=function(a,b){var c=this.internal,d=["pie","donut"].indexOf(a)>=0?{withTransform:!0}:null;c.transformTo(b,a,d)},i.transformTo=function(a,b,c){var d=this,e=!d.hasArcType(),f=c||{withTransitionForAxis:e};f.withTransitionForTransform=!1,d.transiting=!1,d.setTargetType(a,b),d.updateTargets(d.data.targets),d.updateAndRedraw(f)},h.groups=function(a){var b=this.internal,c=b.config;return p(a)?c.data_groups:(c.data_groups=a,b.redraw(),c.data_groups)},h.xgrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_x_lines=a,b.redrawWithoutRescale(),c.grid_x_lines):c.grid_x_lines},h.xgrids.add=function(a){var b=this.internal;return this.xgrids(b.config.grid_x_lines.concat(a?a:[]))},h.xgrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!0)},h.ygrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_y_lines=a,b.redrawWithoutRescale(),c.grid_y_lines):c.grid_y_lines},h.ygrids.add=function(a){var b=this.internal;return this.ygrids(b.config.grid_y_lines.concat(a?a:[]))},h.ygrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!1)},h.regions=function(a){var b=this.internal,c=b.config;return a?(c.regions=a,b.redrawWithoutRescale(),c.regions):c.regions},h.regions.add=function(a){var b=this.internal,c=b.config;return a?(c.regions=c.regions.concat(a),b.redrawWithoutRescale(),c.regions):c.regions},h.regions.remove=function(a){var b,c,d,e=this.internal,f=e.config;return a=a||{},b=e.getOption(a,"duration",f.transition_duration),c=e.getOption(a,"classes",[l.region]),d=e.main.select("."+l.regions).selectAll(c.map(function(a){return"."+a})),(b?d.transition().duration(b):d).style("opacity",0).remove(),f.regions=f.regions.filter(function(a){var b=!1;return a["class"]?(a["class"].split(" ").forEach(function(a){c.indexOf(a)>=0&&(b=!0)}),!b):!0}),f.regions},h.data=function(a){var b=this.internal.data.targets;return"undefined"==typeof a?b:b.filter(function(b){return[].concat(a).indexOf(b.id)>=0})},h.data.shown=function(a){return this.internal.filterTargetsToShow(this.data(a))},h.data.values=function(a){var b,c=null;return a&&(b=this.data(a),c=b[0]?b[0].values.map(function(a){return a.value}):null),c},h.data.names=function(a){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",a)},h.data.colors=function(a){return this.internal.updateDataAttributes("colors",a)},h.data.axes=function(a){return this.internal.updateDataAttributes("axes",a)},h.category=function(a,b){var c=this.internal,d=c.config;return arguments.length>1&&(d.axis_x_categories[a]=b,c.redraw()),d.axis_x_categories[a]},h.categories=function(a){var b=this.internal,c=b.config;return arguments.length?(c.axis_x_categories=a,b.redraw(),c.axis_x_categories):c.axis_x_categories},h.color=function(a){var b=this.internal;return b.color(a)},h.x=function(a){var b=this.internal;return arguments.length&&(b.updateTargetX(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.xs=function(a){var b=this.internal;return arguments.length&&(b.updateTargetXs(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.axis=function(){},h.axis.labels=function(a){var b=this.internal;arguments.length&&(Object.keys(a).forEach(function(c){b.axis.setLabelText(c,a[c])}),b.axis.updateLabels())},h.axis.max=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_max=a.x),m(a.y)&&(c.axis_y_max=a.y),m(a.y2)&&(c.axis_y2_max=a.y2)):c.axis_y_max=c.axis_y2_max=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_max,y:c.axis_y_max,y2:c.axis_y2_max}},h.axis.min=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_min=a.x),m(a.y)&&(c.axis_y_min=a.y),m(a.y2)&&(c.axis_y2_min=a.y2)):c.axis_y_min=c.axis_y2_min=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_min,y:c.axis_y_min,y2:c.axis_y2_min}},h.axis.range=function(a){return arguments.length?(q(a.max)&&this.axis.max(a.max),void(q(a.min)&&this.axis.min(a.min))):{max:this.axis.max(),min:this.axis.min()}},h.legend=function(){},h.legend.show=function(a){var b=this.internal;b.showLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.legend.hide=function(a){var b=this.internal;b.hideLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.resize=function(a){var b=this.internal,c=b.config;c.size_width=a?a.width:null,c.size_height=a?a.height:null,this.flush()},h.flush=function(){var a=this.internal;a.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},h.destroy=function(){var b=this.internal;if(a.clearInterval(b.intervalForObserveInserted),void 0!==b.resizeTimeout&&a.clearTimeout(b.resizeTimeout),a.detachEvent)a.detachEvent("onresize",b.resizeFunction);else if(a.removeEventListener)a.removeEventListener("resize",b.resizeFunction);else{var c=a.onresize;c&&c.add&&c.remove&&c.remove(b.resizeFunction)}return b.selectChart.classed("c3",!1).html(""),Object.keys(b).forEach(function(a){b[a]=null}),null},h.tooltip=function(){},h.tooltip.show=function(a){var b,c,d=this.internal;a.mouse&&(c=a.mouse),a.data?d.isMultipleX()?(c=[d.x(a.data.x),d.getYScale(a.data.id)(a.data.value)],b=null):b=m(a.data.index)?a.data.index:d.getIndexByX(a.data.x):"undefined"!=typeof a.x?b=d.getIndexByX(a.x):"undefined"!=typeof a.index&&(b=a.index),d.dispatchEvent("mouseover",b,c),d.dispatchEvent("mousemove",b,c),d.config.tooltip_onshow.call(d,a.data)},h.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)};var A;i.isSafari=function(){var b=a.navigator.userAgent;return b.indexOf("Safari")>=0&&b.indexOf("Chrome")<0},i.isChrome=function(){var b=a.navigator.userAgent;return b.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),function(){"SVGPathSeg"in a||(a.SVGPathSeg=function(a,b,c){this.pathSegType=a,this.pathSegTypeAsLetter=b,this._owningPathSegList=c},SVGPathSeg.PATHSEG_UNKNOWN=0,SVGPathSeg.PATHSEG_CLOSEPATH=1,SVGPathSeg.PATHSEG_MOVETO_ABS=2,SVGPathSeg.PATHSEG_MOVETO_REL=3,SVGPathSeg.PATHSEG_LINETO_ABS=4,SVGPathSeg.PATHSEG_LINETO_REL=5,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,SVGPathSeg.PATHSEG_ARC_ABS=10,SVGPathSeg.PATHSEG_ARC_REL=11,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},a.SVGPathSegClosePath=function(a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CLOSEPATH,"z",a)},SVGPathSegClosePath.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegClosePath.prototype.toString=function(){return"[object SVGPathSegClosePath]"},SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},SVGPathSegClosePath.prototype.clone=function(){return new SVGPathSegClosePath(void 0)},a.SVGPathSegMovetoAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_ABS,"M",a),this._x=b,this._y=c},SVGPathSegMovetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoAbs.prototype.toString=function(){return"[object SVGPathSegMovetoAbs]"},SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoAbs.prototype.clone=function(){return new SVGPathSegMovetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegMovetoRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_REL,"m",a),this._x=b,this._y=c},SVGPathSegMovetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoRel.prototype.toString=function(){return"[object SVGPathSegMovetoRel]"},SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoRel.prototype.clone=function(){return new SVGPathSegMovetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_ABS,"L",a),this._x=b,this._y=c},SVGPathSegLinetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoAbs.prototype.toString=function(){return"[object SVGPathSegLinetoAbs]"},SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoAbs.prototype.clone=function(){return new SVGPathSegLinetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_REL,"l",a),this._x=b,this._y=c},SVGPathSegLinetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoRel.prototype.toString=function(){return"[object SVGPathSegLinetoRel]"},SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoRel.prototype.clone=function(){return new SVGPathSegLinetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicAbs=function(a,b,c,d,e,f,g){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,"C",a),this._x=b,this._y=c,this._x1=d,this._y1=e,this._x2=f,this._y2=g},SVGPathSegCurvetoCubicAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicAbs]"},SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicAbs(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicRel=function(a,b,c,d,e,f,g){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,"c",a),this._x=b,this._y=c,this._x1=d,this._y1=e,this._x2=f,this._y2=g},SVGPathSegCurvetoCubicRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicRel]"},SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicRel(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticAbs=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,"Q",a),this._x=b,this._y=c,this._x1=d,this._y1=e},SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticAbs]"},SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticAbs(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticRel=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,"q",a),this._x=b,this._y=c,this._x1=d,this._y1=e},SVGPathSegCurvetoQuadraticRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticRel]"},SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticRel(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegArcAbs=function(a,b,c,d,e,f,g,h){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_ABS,"A",a),this._x=b,this._y=c,this._r1=d,this._r2=e,this._angle=f,this._largeArcFlag=g,this._sweepFlag=h},SVGPathSegArcAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcAbs.prototype.toString=function(){return"[object SVGPathSegArcAbs]"},SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcAbs.prototype.clone=function(){return new SVGPathSegArcAbs(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r1",{get:function(){return this._r1},set:function(a){this._r1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r2",{get:function(){return this._r2},set:function(a){this._r2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"angle",{get:function(){return this._angle},set:function(a){this._angle=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(a){this._largeArcFlag=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(a){this._sweepFlag=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegArcRel=function(a,b,c,d,e,f,g,h){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_REL,"a",a),this._x=b,this._y=c,this._r1=d,this._r2=e,this._angle=f,this._largeArcFlag=g,this._sweepFlag=h},SVGPathSegArcRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcRel.prototype.toString=function(){return"[object SVGPathSegArcRel]"},SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcRel.prototype.clone=function(){return new SVGPathSegArcRel(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r1",{get:function(){return this._r1},set:function(a){this._r1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r2",{get:function(){return this._r2},set:function(a){this._r2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"angle",{get:function(){return this._angle},set:function(a){this._angle=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(a){this._largeArcFlag=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(a){this._sweepFlag=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoHorizontalAbs=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,"H",a),this._x=b},SVGPathSegLinetoHorizontalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalAbs]"},SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new SVGPathSegLinetoHorizontalAbs(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoHorizontalRel=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,"h",a),this._x=b},SVGPathSegLinetoHorizontalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalRel]"},SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new SVGPathSegLinetoHorizontalRel(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoVerticalAbs=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,"V",a),this._y=b},SVGPathSegLinetoVerticalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalAbs]"},SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new SVGPathSegLinetoVerticalAbs(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoVerticalRel=function(a,b){
2315 2315 SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,"v",a),this._y=b},SVGPathSegLinetoVerticalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalRel.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalRel]"},SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new SVGPathSegLinetoVerticalRel(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicSmoothAbs=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,"S",a),this._x=b,this._y=c,this._x2=d,this._y2=e},SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothAbs]"},SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicSmoothRel=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,"s",a),this._x=b,this._y=c,this._x2=d,this._y2=e},SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothRel]"},SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothRel(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticSmoothAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,"T",a),this._x=b,this._y=c},SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothAbs]"},SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticSmoothRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,"t",a),this._x=b,this._y=c},SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothRel]"},SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new SVGPathSegClosePath(void 0)},SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(a,b){return new SVGPathSegMovetoAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegMovetoRel=function(a,b){return new SVGPathSegMovetoRel(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(a,b){return new SVGPathSegLinetoAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegLinetoRel=function(a,b){return new SVGPathSegLinetoRel(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(a,b,c,d,e,f){return new SVGPathSegCurvetoCubicAbs(void 0,a,b,c,d,e,f)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(a,b,c,d,e,f){return new SVGPathSegCurvetoCubicRel(void 0,a,b,c,d,e,f)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(a,b,c,d){return new SVGPathSegCurvetoQuadraticAbs(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(a,b,c,d){return new SVGPathSegCurvetoQuadraticRel(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegArcAbs=function(a,b,c,d,e,f,g){return new SVGPathSegArcAbs(void 0,a,b,c,d,e,f,g)},SVGPathElement.prototype.createSVGPathSegArcRel=function(a,b,c,d,e,f,g){return new SVGPathSegArcRel(void 0,a,b,c,d,e,f,g)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(a){return new SVGPathSegLinetoHorizontalAbs(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(a){return new SVGPathSegLinetoHorizontalRel(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(a){return new SVGPathSegLinetoVerticalAbs(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(a){return new SVGPathSegLinetoVerticalRel(void 0,a)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(a,b,c,d){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(a,b,c,d){return new SVGPathSegCurvetoCubicSmoothRel(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(a,b){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(a,b){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,a,b)}),"SVGPathSegList"in a||(a.SVGPathSegList=function(a){this._pathElement=a,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},Object.defineProperty(SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},SVGPathSegList.prototype._updateListFromPathMutations=function(a){if(this._pathElement){var b=!1;a.forEach(function(a){"d"==a.attributeName&&(b=!0)}),b&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},SVGPathSegList.prototype.segmentChanged=function(a){this._writeListToPath()},SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(a){a._owningPathSegList=null}),this._list=[],this._writeListToPath()},SVGPathSegList.prototype.initialize=function(a){return this._checkPathSynchronizedToList(),this._list=[a],a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype._checkValidIndex=function(a){if(isNaN(a)||0>a||a>=this.numberOfItems)throw"INDEX_SIZE_ERR"},SVGPathSegList.prototype.getItem=function(a){return this._checkPathSynchronizedToList(),this._checkValidIndex(a),this._list[a]},SVGPathSegList.prototype.insertItemBefore=function(a,b){return this._checkPathSynchronizedToList(),b>this.numberOfItems&&(b=this.numberOfItems),a._owningPathSegList&&(a=a.clone()),this._list.splice(b,0,a),a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype.replaceItem=function(a,b){return this._checkPathSynchronizedToList(),a._owningPathSegList&&(a=a.clone()),this._checkValidIndex(b),this._list[b]=a,a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype.removeItem=function(a){this._checkPathSynchronizedToList(),this._checkValidIndex(a);var b=this._list[a];return this._list.splice(a,1),this._writeListToPath(),b},SVGPathSegList.prototype.appendItem=function(a){return this._checkPathSynchronizedToList(),a._owningPathSegList&&(a=a.clone()),this._list.push(a),a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList._pathSegArrayAsString=function(a){var b="",c=!0;return a.forEach(function(a){c?(c=!1,b+=a._asPathString()):b+=" "+a._asPathString()}),b},SVGPathSegList.prototype._parsePath=function(a){if(!a||0==a.length)return[];var b=this,c=function(){this.pathSegList=[]};c.prototype.appendSegment=function(a){this.pathSegList.push(a)};var d=function(a){this._string=a,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};d.prototype._isCurrentSpace=function(){var a=this._string[this._currentIndex];return" ">=a&&(" "==a||"\n"==a||" "==a||"\r"==a||"\f"==a)},d.prototype._skipOptionalSpaces=function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex++;return this._currentIndex<this._endIndex},d.prototype._skipOptionalSpacesOrDelimiter=function(){return this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&","!=this._string.charAt(this._currentIndex)?!1:(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&","==this._string.charAt(this._currentIndex)&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},d.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},d.prototype.peekSegmentType=function(){var a=this._string[this._currentIndex];return this._pathSegTypeFromChar(a)},d.prototype._pathSegTypeFromChar=function(a){switch(a){case"Z":case"z":return SVGPathSeg.PATHSEG_CLOSEPATH;case"M":return SVGPathSeg.PATHSEG_MOVETO_ABS;case"m":return SVGPathSeg.PATHSEG_MOVETO_REL;case"L":return SVGPathSeg.PATHSEG_LINETO_ABS;case"l":return SVGPathSeg.PATHSEG_LINETO_REL;case"C":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case"c":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case"Q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case"q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case"A":return SVGPathSeg.PATHSEG_ARC_ABS;case"a":return SVGPathSeg.PATHSEG_ARC_REL;case"H":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case"h":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case"V":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case"v":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case"S":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case"s":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case"T":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case"t":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return SVGPathSeg.PATHSEG_UNKNOWN}},d.prototype._nextCommandHelper=function(a,b){return("+"==a||"-"==a||"."==a||a>="0"&&"9">=a)&&b!=SVGPathSeg.PATHSEG_CLOSEPATH?b==SVGPathSeg.PATHSEG_MOVETO_ABS?SVGPathSeg.PATHSEG_LINETO_ABS:b==SVGPathSeg.PATHSEG_MOVETO_REL?SVGPathSeg.PATHSEG_LINETO_REL:b:SVGPathSeg.PATHSEG_UNKNOWN},d.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var a=this.peekSegmentType();return a==SVGPathSeg.PATHSEG_MOVETO_ABS||a==SVGPathSeg.PATHSEG_MOVETO_REL},d.prototype._parseNumber=function(){var a=0,b=0,c=1,d=0,e=1,f=1,g=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:this._currentIndex<this._endIndex&&"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,e=-1),!(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")&&"."!=this._string.charAt(this._currentIndex))){for(var h=this._currentIndex;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=h)for(var i=this._currentIndex-1,j=1;i>=h;)b+=j*(this._string.charAt(i--)-"0"),j*=10;if(this._currentIndex<this._endIndex&&"."==this._string.charAt(this._currentIndex)){if(this._currentIndex++,this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)d+=(this._string.charAt(this._currentIndex++)-"0")*(c*=.1)}if(this._currentIndex!=g&&this._currentIndex+1<this._endIndex&&("e"==this._string.charAt(this._currentIndex)||"E"==this._string.charAt(this._currentIndex))&&"x"!=this._string.charAt(this._currentIndex+1)&&"m"!=this._string.charAt(this._currentIndex+1)){if(this._currentIndex++,"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,f=-1),this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)a*=10,a+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var k=b+d;if(k*=e,a&&(k*=Math.pow(10,f*a)),g!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),k}},d.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var a=!1,b=this._string.charAt(this._currentIndex++);if("0"==b)a=!1;else{if("1"!=b)return;a=!0}return this._skipOptionalSpacesOrDelimiter(),a}},d.prototype.parseSegment=function(){var a=this._string[this._currentIndex],c=this._pathSegTypeFromChar(a);if(c==SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==SVGPathSeg.PATHSEG_UNKNOWN)return null;if(c=this._nextCommandHelper(a,this._previousCommand),c==SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=c,c){case SVGPathSeg.PATHSEG_MOVETO_REL:return new SVGPathSegMovetoRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_MOVETO_ABS:return new SVGPathSegMovetoAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_REL:return new SVGPathSegLinetoRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_ABS:return new SVGPathSegLinetoAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new SVGPathSegLinetoHorizontalRel(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new SVGPathSegLinetoHorizontalAbs(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new SVGPathSegLinetoVerticalRel(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new SVGPathSegLinetoVerticalAbs(b,this._parseNumber());case SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new SVGPathSegClosePath(b);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicRel(b,d.x,d.y,d.x1,d.y1,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicAbs(b,d.x,d.y,d.x1,d.y1,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:var d={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothRel(b,d.x,d.y,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:var d={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothAbs(b,d.x,d.y,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticRel(b,d.x,d.y,d.x1,d.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticAbs(b,d.x,d.y,d.x1,d.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new SVGPathSegCurvetoQuadraticSmoothRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new SVGPathSegCurvetoQuadraticSmoothAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_ARC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcRel(b,d.x,d.y,d.x1,d.y1,d.arcAngle,d.arcLarge,d.arcSweep);case SVGPathSeg.PATHSEG_ARC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcAbs(b,d.x,d.y,d.x1,d.y1,d.arcAngle,d.arcLarge,d.arcSweep);default:throw"Unknown path seg type."}};var e=new c,f=new d(a);if(!f.initialCommandIsMoveTo())return[];for(;f.hasMoreData();){var g=f.parseSegment();if(!g)return[];e.appendSegment(g)}return e.pathSegList})}(),"function"==typeof define&&define.amd?define("c3",["d3"],function(){return k}):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=k:a.c3=k}(window);
2316 2316 ;/**
2317 2317 * @version 2.1.8
2318 2318 * @license MIT
2319 2319 */
2320 2320 !function(t,e){"use strict";t.module("smart-table",[]).run(["$templateCache",function(t){t.put("template/smart-table/pagination.html",'<nav ng-if="numPages && pages.length >= 2"><ul class="pagination"><li ng-repeat="page in pages" ng-class="{active: page==currentPage}"><a href="javascript: void(0);" ng-click="selectPage(page)">{{page}}</a></li></ul></nav>')}]),t.module("smart-table").constant("stConfig",{pagination:{template:"template/smart-table/pagination.html",itemsByPage:10,displayedPages:5},search:{delay:400,inputEvent:"input"},select:{mode:"single",selectedClass:"st-selected"},sort:{ascentClass:"st-sort-ascent",descentClass:"st-sort-descent",descendingFirst:!1,skipNatural:!1,delay:300},pipe:{delay:100}}),t.module("smart-table").controller("stTableController",["$scope","$parse","$filter","$attrs",function(a,n,s,i){function r(t){return t?[].concat(t):[]}function l(){b=r(o(a)),v===!0&&S.pipe()}function c(t,e){if(-1!=e.indexOf(".")){var a=e.split("."),s=a.pop(),i=a.join("."),r=n(i)(t);delete r[s],0==Object.keys(r).length&&c(t,i)}else delete t[e]}var o,u,p,g=i.stTable,d=n(g),f=d.assign,m=s("orderBy"),h=s("filter"),b=r(d(a)),P={sort:{},search:{},pagination:{start:0,totalItemCount:0}},v=!0,S=this;i.stSafeSrc&&(o=n(i.stSafeSrc),a.$watch(function(){var t=o(a);return t&&t.length?t[0]:e},function(t,e){t!==e&&l()}),a.$watch(function(){var t=o(a);return t?t.length:0},function(t){t!==b.length&&l()}),a.$watch(function(){return o(a)},function(t,e){t!==e&&(P.pagination.start=0,l())})),this.sortBy=function(e,a){return P.sort.predicate=e,P.sort.reverse=a===!0,t.isFunction(e)?P.sort.functionName=e.name:delete P.sort.functionName,P.pagination.start=0,this.pipe()},this.search=function(e,a){var s=P.search.predicateObject||{},i=a?a:"$";return e=t.isString(e)?e.trim():e,n(i).assign(s,e),e||c(s,i),P.search.predicateObject=s,P.pagination.start=0,this.pipe()},this.pipe=function(){var t,n=P.pagination;u=P.search.predicateObject?h(b,P.search.predicateObject):b,P.sort.predicate&&(u=m(u,P.sort.predicate,P.sort.reverse)),n.totalItemCount=u.length,n.number!==e&&(n.numberOfPages=u.length>0?Math.ceil(u.length/n.number):1,n.start=n.start>=u.length?(n.numberOfPages-1)*n.number:n.start,t=u.slice(n.start,n.start+parseInt(n.number))),f(a,t||u)},this.select=function(t,n){var s=r(d(a)),i=s.indexOf(t);-1!==i&&("single"===n?(t.isSelected=t.isSelected!==!0,p&&(p.isSelected=!1),p=t.isSelected===!0?t:e):s[i].isSelected=!s[i].isSelected)},this.slice=function(t,e){return P.pagination.start=t,P.pagination.number=e,this.pipe()},this.tableState=function(){return P},this.getFilteredCollection=function(){return u||b},this.setFilterFunction=function(t){h=s(t)},this.setSortFunction=function(t){m=s(t)},this.preventPipeOnWatch=function(){v=!1}}]).directive("stTable",function(){return{restrict:"A",controller:"stTableController",link:function(t,e,a,n){a.stSetFilter&&n.setFilterFunction(a.stSetFilter),a.stSetSort&&n.setSortFunction(a.stSetSort)}}}),t.module("smart-table").directive("stSearch",["stConfig","$timeout","$parse",function(t,e,a){return{require:"^stTable",link:function(n,s,i,r){var l=r,c=null,o=i.stDelay||t.search.delay,u=i.stInputEvent||t.search.inputEvent;i.$observe("stSearch",function(t,e){var a=s[0].value;t!==e&&a&&(r.tableState().search={},l.search(a,t))}),n.$watch(function(){return r.tableState().search},function(t){var e=i.stSearch||"$";t.predicateObject&&a(e)(t.predicateObject)!==s[0].value&&(s[0].value=a(e)(t.predicateObject)||"")},!0),s.bind(u,function(t){t=t.originalEvent||t,null!==c&&e.cancel(c),c=e(function(){l.search(t.target.value,i.stSearch||""),c=null},o)})}}}]),t.module("smart-table").directive("stSelectRow",["stConfig",function(t){return{restrict:"A",require:"^stTable",scope:{row:"=stSelectRow"},link:function(e,a,n,s){var i=n.stSelectMode||t.select.mode;a.bind("click",function(){e.$apply(function(){s.select(e.row,i)})}),e.$watch("row.isSelected",function(e){e===!0?a.addClass(t.select.selectedClass):a.removeClass(t.select.selectedClass)})}}}]),t.module("smart-table").directive("stSort",["stConfig","$parse","$timeout",function(a,n,s){return{restrict:"A",require:"^stTable",link:function(i,r,l,c){function o(){P?d=0===d?2:d-1:d++;var e;p=t.isFunction(g(i))||t.isArray(g(i))?g(i):l.stSort,d%3===0&&!!b!=!0?(d=0,c.tableState().sort={},c.tableState().pagination.start=0,e=c.pipe.bind(c)):e=c.sortBy.bind(c,p,d%2===0),null!==v&&s.cancel(v),0>S?e():v=s(e,S)}var u,p=l.stSort,g=n(p),d=0,f=l.stClassAscent||a.sort.ascentClass,m=l.stClassDescent||a.sort.descentClass,h=[f,m],b=l.stSkipNatural!==e?l.stSkipNatural:a.sort.skipNatural,P=l.stDescendingFirst!==e?l.stDescendingFirst:a.sort.descendingFirst,v=null,S=l.stDelay||a.sort.delay;l.stSortDefault&&(u=i.$eval(l.stSortDefault)!==e?i.$eval(l.stSortDefault):l.stSortDefault),r.bind("click",function(){p&&i.$apply(o)}),u&&(d="reverse"===u?1:0,o()),i.$watch(function(){return c.tableState().sort},function(t){t.predicate!==p?(d=0,r.removeClass(f).removeClass(m)):(d=t.reverse===!0?2:1,r.removeClass(h[d%2]).addClass(h[d-1]))},!0)}}}]),t.module("smart-table").directive("stPagination",["stConfig",function(t){return{restrict:"EA",require:"^stTable",scope:{stItemsByPage:"=?",stDisplayedPages:"=?",stPageChange:"&"},templateUrl:function(e,a){return a.stTemplate?a.stTemplate:t.pagination.template},link:function(e,a,n,s){function i(){var t,a,n=s.tableState().pagination,i=1,r=e.currentPage;for(e.totalItemCount=n.totalItemCount,e.currentPage=Math.floor(n.start/n.number)+1,i=Math.max(i,e.currentPage-Math.abs(Math.floor(e.stDisplayedPages/2))),t=i+e.stDisplayedPages,t>n.numberOfPages&&(t=n.numberOfPages+1,i=Math.max(1,t-e.stDisplayedPages)),e.pages=[],e.numPages=n.numberOfPages,a=i;t>a;a++)e.pages.push(a);r!==e.currentPage&&e.stPageChange({newPage:e.currentPage})}e.stItemsByPage=e.stItemsByPage?+e.stItemsByPage:t.pagination.itemsByPage,e.stDisplayedPages=e.stDisplayedPages?+e.stDisplayedPages:t.pagination.displayedPages,e.currentPage=1,e.pages=[],e.$watch(function(){return s.tableState().pagination},i,!0),e.$watch("stItemsByPage",function(t,a){t!==a&&e.selectPage(1)}),e.$watch("stDisplayedPages",i),e.selectPage=function(t){t>0&&t<=e.numPages&&s.slice((t-1)*e.stItemsByPage,e.stItemsByPage)},s.tableState().pagination.number||s.slice(0,e.stItemsByPage)}}}]),t.module("smart-table").directive("stPipe",["stConfig","$timeout",function(e,a){return{require:"stTable",scope:{stPipe:"="},link:{pre:function(n,s,i,r){var l=null;t.isFunction(n.stPipe)&&(r.preventPipeOnWatch(),r.pipe=function(){return null!==l&&a.cancel(l),l=a(function(){n.stPipe(r.tableState(),r)},e.pipe.delay)})},post:function(t,e,a,n){n.pipe()}}}}])}(angular);
2321 2321 //# sourceMappingURL=smart-table.min.js.map
2322 2322
2323 2323 ;"use strict";angular.module("mentio",[]).directive("mentio",["mentioUtil","$document","$compile","$log","$timeout",function(e,t,n,r,i){return{restrict:"A",scope:{macros:"=mentioMacros",search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",typedTerm:"=mentioTypedTerm",altId:"=mentioId",iframeElement:"=mentioIframeElement",requireLeadingSpace:"=mentioRequireLeadingSpace",selectNotFound:"=mentioSelectNotFound",trimTerm:"=mentioTrimTerm",ngModel:"="},controller:["$scope","$timeout","$attrs",function(n,r,i){n.query=function(e,t){var r=n.triggerCharMap[e];(void 0===n.trimTerm||n.trimTerm)&&(t=t.trim()),r.showMenu(),r.search({term:t}),r.typedTerm=t},n.defaultSearch=function(e){var t=[];angular.forEach(n.items,function(n){n.label.toUpperCase().indexOf(e.term.toUpperCase())>=0&&t.push(n)}),n.localItems=t},n.bridgeSearch=function(e){var t=i.mentioSearch?n.search:n.defaultSearch;t({term:e})},n.defaultSelect=function(e){return n.defaultTriggerChar+e.item.label},n.bridgeSelect=function(e){var t=i.mentioSelect?n.select:n.defaultSelect;return t({item:e})},n.setTriggerText=function(e){n.syncTriggerText&&(n.typedTerm=void 0===n.trimTerm||n.trimTerm?e.trim():e)},n.context=function(){return n.iframeElement?{iframe:n.iframeElement}:void 0},n.replaceText=function(t,i){if(n.hideAll(),e.replaceTriggerText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.triggerCharSet,t,n.requireLeadingSpace,i),!i&&(n.setTriggerText(""),angular.element(n.targetElement).triggerHandler("change"),n.isContentEditable())){n.contentEditableMenuPasted=!0;var o=r(function(){n.contentEditableMenuPasted=!1},200);n.$on("$destroy",function(){r.cancel(o)})}},n.hideAll=function(){for(var e in n.triggerCharMap)n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].hideMenu()},n.getActiveMenuScope=function(){for(var e in n.triggerCharMap)if(n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible)return n.triggerCharMap[e];return null},n.selectActive=function(){for(var e in n.triggerCharMap)n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible&&n.triggerCharMap[e].selectActive()},n.isActive=function(){for(var e in n.triggerCharMap)if(n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible)return!0;return!1},n.isContentEditable=function(){return"INPUT"!==n.targetElement.nodeName&&"TEXTAREA"!==n.targetElement.nodeName},n.replaceMacro=function(t,i){i?e.replaceMacroText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.macros,n.macros[t]):(n.replacingMacro=!0,n.timer=r(function(){e.replaceMacroText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.macros,n.macros[t]),angular.element(n.targetElement).triggerHandler("change"),n.replacingMacro=!1},300),n.$on("$destroy",function(){r.cancel(n.timer)}))},n.addMenu=function(e){e.parentScope&&n.triggerCharMap.hasOwnProperty(e.triggerChar)||(n.triggerCharMap[e.triggerChar]=e,void 0===n.triggerCharSet&&(n.triggerCharSet=[]),n.triggerCharSet.push(e.triggerChar),e.setParent(n))},n.$on("menuCreated",function(e,t){(void 0!==i.id||void 0!==i.mentioId)&&(i.id===t.targetElement||void 0!==i.mentioId&&n.altId===t.targetElement)&&n.addMenu(t.scope)}),t.on("click",function(){n.isActive()&&n.$apply(function(){n.hideAll()})}),t.on("keydown keypress paste",function(e){var t=n.getActiveMenuScope();t&&((9===e.which||13===e.which)&&(e.preventDefault(),t.selectActive()),27===e.which&&(e.preventDefault(),t.$apply(function(){t.hideMenu()})),40===e.which&&(e.preventDefault(),t.$apply(function(){t.activateNextItem()}),t.adjustScroll(1)),38===e.which&&(e.preventDefault(),t.$apply(function(){t.activatePreviousItem()}),t.adjustScroll(-1)),(37===e.which||39===e.which)&&e.preventDefault())})}],link:function(t,o,a){function c(e){function n(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}var r=t.getActiveMenuScope();if(r){if(9===e.which||13===e.which)return n(e),r.selectActive(),!1;if(27===e.which)return n(e),r.$apply(function(){r.hideMenu()}),!1;if(40===e.which)return n(e),r.$apply(function(){r.activateNextItem()}),r.adjustScroll(1),!1;if(38===e.which)return n(e),r.$apply(function(){r.activatePreviousItem()}),r.adjustScroll(-1),!1;if(37===e.which||39===e.which)return n(e),!1}}if(t.triggerCharMap={},t.targetElement=o,a.$set("autocomplete","off"),a.mentioItems){t.localItems=[],t.parentScope=t;var l=a.mentioSearch?' mentio-items="items"':' mentio-items="localItems"';t.defaultTriggerChar=a.mentioTriggerChar?t.$eval(a.mentioTriggerChar):"@";var s='<mentio-menu mentio-search="bridgeSearch(term)" mentio-select="bridgeSelect(item)"'+l;a.mentioTemplateUrl&&(s=s+' mentio-template-url="'+a.mentioTemplateUrl+'"'),s=s+" mentio-trigger-char=\"'"+t.defaultTriggerChar+'\'" mentio-parent-scope="parentScope"/>';var m=n(s),u=m(t);o.parent().append(u),t.$on("$destroy",function(){u.remove()})}a.mentioTypedTerm&&(t.syncTriggerText=!0),t.$watch("iframeElement",function(e){if(e){var n=e.contentWindow.document;n.addEventListener("click",function(){t.isActive()&&t.$apply(function(){t.hideAll()})}),n.addEventListener("keydown",c,!0),t.$on("$destroy",function(){n.removeEventListener("keydown",c)})}}),t.$watch("ngModel",function(n){if(n&&""!==n||t.isActive()){if(void 0===t.triggerCharSet)return void r.error("Error, no mentio-items attribute was provided, and no separate mentio-menus were specified. Nothing to do.");if(t.contentEditableMenuPasted)return void(t.contentEditableMenuPasted=!1);t.replacingMacro&&(i.cancel(t.timer),t.replacingMacro=!1);var o=t.isActive(),a=t.isContentEditable(),c=e.getTriggerInfo(t.context(),t.triggerCharSet,t.requireLeadingSpace,o);if(void 0!==c&&(!o||o&&(a&&c.mentionTriggerChar===t.currentMentionTriggerChar||!a&&c.mentionPosition===t.currentMentionPosition)))c.mentionSelectedElement&&(t.targetElement=c.mentionSelectedElement,t.targetElementPath=c.mentionSelectedPath,t.targetElementSelectedOffset=c.mentionSelectedOffset),t.setTriggerText(c.mentionText),t.currentMentionPosition=c.mentionPosition,t.currentMentionTriggerChar=c.mentionTriggerChar,t.query(c.mentionTriggerChar,c.mentionText);else{var l=t.typedTerm;t.setTriggerText(""),t.hideAll();var s=e.getMacroMatch(t.context(),t.macros);if(void 0!==s)t.targetElement=s.macroSelectedElement,t.targetElementPath=s.macroSelectedPath,t.targetElementSelectedOffset=s.macroSelectedOffset,t.replaceMacro(s.macroText,s.macroHasTrailingSpace);else if(t.selectNotFound&&l&&""!==l){var m=t.triggerCharMap[t.currentMentionTriggerChar];if(m){var u=m.select({item:{label:l}});"function"==typeof u.then?u.then(t.replaceText):t.replaceText(u,!0)}}}}})}}}]).directive("mentioMenu",["mentioUtil","$rootScope","$log","$window","$document",function(e,t,n,r,i){return{restrict:"E",scope:{search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",triggerChar:"=mentioTriggerChar",forElem:"=mentioFor",parentScope:"=mentioParentScope"},templateUrl:function(e,t){return void 0!==t.mentioTemplateUrl?t.mentioTemplateUrl:"mentio-menu.tpl.html"},controller:["$scope",function(e){e.visible=!1,this.activate=e.activate=function(t){e.activeItem=t},this.isActive=e.isActive=function(t){return e.activeItem===t},this.selectItem=e.selectItem=function(t){var n=e.select({item:t});"function"==typeof n.then?n.then(e.parentMentio.replaceText):e.parentMentio.replaceText(n)},e.activateNextItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[(t+1)%e.items.length])},e.activatePreviousItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[0===t?e.items.length-1:t-1])},e.isFirstItemActive=function(){var t=e.items.indexOf(e.activeItem);return 0===t},e.isLastItemActive=function(){var t=e.items.indexOf(e.activeItem);return t===e.items.length-1},e.selectActive=function(){e.selectItem(e.activeItem)},e.isVisible=function(){return e.visible},e.showMenu=function(){e.visible||(e.requestVisiblePendingSearch=!0)},e.setParent=function(t){e.parentMentio=t,e.targetElement=t.targetElement}}],link:function(o,a){if(a[0].parentNode.removeChild(a[0]),i[0].body.appendChild(a[0]),o.menuElement=a,o.parentScope)o.parentScope.addMenu(o);else{if(!o.forElem)return void n.error("mentio-menu requires a target element in tbe mentio-for attribute");if(!o.triggerChar)return void n.error("mentio-menu requires a trigger char");t.$broadcast("menuCreated",{targetElement:o.forElem,scope:o})}angular.element(r).bind("resize",function(){if(o.isVisible()){var t=[];t.push(o.triggerChar),e.popUnderMention(o.parentMentio.context(),t,a,o.requireLeadingSpace)}}),o.$watch("items",function(e){e&&e.length>0?(o.activate(e[0]),!o.visible&&o.requestVisiblePendingSearch&&(o.visible=!0,o.requestVisiblePendingSearch=!1)):o.hideMenu()}),o.$watch("isVisible()",function(t){if(t){var n=[];n.push(o.triggerChar),e.popUnderMention(o.parentMentio.context(),n,a,o.requireLeadingSpace)}}),o.parentMentio.$on("$destroy",function(){a.remove()}),o.hideMenu=function(){o.visible=!1,a.css("display","none")},o.adjustScroll=function(e){var t=a[0],n=t.querySelector("ul"),r=t.querySelector("[mentio-menu-item].active")||t.querySelector("[data-mentio-menu-item].active");return o.isFirstItemActive()?n.scrollTop=0:o.isLastItemActive()?n.scrollTop=n.scrollHeight:void(1===e?n.scrollTop+=r.offsetHeight:n.scrollTop-=r.offsetHeight)}}}}]).directive("mentioMenuItem",function(){return{restrict:"A",scope:{item:"=mentioMenuItem"},require:"^mentioMenu",link:function(e,t,n,r){e.$watch(function(){return r.isActive(e.item)},function(e){e?t.addClass("active"):t.removeClass("active")}),t.bind("mouseenter",function(){e.$apply(function(){r.activate(e.item)})}),t.bind("click",function(){return r.selectItem(e.item),!1})}}}).filter("unsafe",["$sce",function(e){return function(t){return e.trustAsHtml(t)}}]).filter("mentioHighlight",function(){function e(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(t,n,r){if(n){var i=r?'<span class="'+r+'">$&</span>':"<strong>$&</strong>";return(""+t).replace(new RegExp(e(n),"gi"),i)}return t}}),angular.module("mentio").factory("mentioUtil",["$window","$location","$anchorScroll","$timeout",function(e,t,n,r){function i(e,t,n,i){var c,l=h(e,t,i,!1);void 0!==l?(c=a(e)?b(e,v(e).activeElement,l.mentionPosition):S(e,l.mentionPosition),n.css({top:c.top+"px",left:c.left+"px",position:"absolute",zIndex:1e4,display:"block"}),r(function(){o(e,n)},0)):n.css({display:"none"})}function o(t,n){for(var r,i=20,o=100,a=n[0];void 0===r||0===r.height;)if(r=a.getBoundingClientRect(),0===r.height&&(a=a.childNodes[0],void 0===a||!a.getBoundingClientRect))return;var c=r.top,l=c+r.height;if(0>c)e.scrollTo(0,e.pageYOffset+r.top-i);else if(l>e.innerHeight){var s=e.pageYOffset+r.top-i;s-e.pageYOffset>o&&(s=e.pageYOffset+o);var m=e.pageYOffset-(e.innerHeight-l);m>s&&(m=s),e.scrollTo(0,m)}}function a(e){var t=v(e).activeElement;if(null!==t){var n=t.nodeName,r=t.getAttribute("type");return"INPUT"===n&&"text"===r||"TEXTAREA"===n}return!1}function c(e,t,n,r){var i,o=t;if(n)for(var a=0;a<n.length;a++){if(o=o.childNodes[n[a]],void 0===o)return;for(;o.length<r;)r-=o.length,o=o.nextSibling;0!==o.childNodes.length||o.length||(o=o.previousSibling)}var c=p(e);i=v(e).createRange(),i.setStart(o,r),i.setEnd(o,r),i.collapse(!0);try{c.removeAllRanges()}catch(l){}c.addRange(i),t.focus()}function l(e,t,n,r){var i,o;o=p(e),i=v(e).createRange(),i.setStart(o.anchorNode,n),i.setEnd(o.anchorNode,r),i.deleteContents();var a=v(e).createElement("div");a.innerHTML=t;for(var c,l,s=v(e).createDocumentFragment();c=a.firstChild;)l=s.appendChild(c);i.insertNode(s),l&&(i=i.cloneRange(),i.setStartAfter(l),i.collapse(!0),o.removeAllRanges(),o.addRange(i))}function s(e,t,n,r){var i=t.nodeName;"INPUT"===i||"TEXTAREA"===i?t!==v(e).activeElement&&t.focus():c(e,t,n,r)}function m(e,t,n,r,i,o){s(e,t,n,r);var c=d(e,i);if(c.macroHasTrailingSpace&&(c.macroText=c.macroText+"Β ",o+="Β "),void 0!==c){var m=v(e).activeElement;if(a(e)){var u=c.macroPosition,g=c.macroPosition+c.macroText.length;m.value=m.value.substring(0,u)+o+m.value.substring(g,m.value.length),m.selectionStart=u+o.length,m.selectionEnd=u+o.length}else l(e,o,c.macroPosition,c.macroPosition+c.macroText.length)}}function u(e,t,n,r,i,o,c,m){s(e,t,n,r);var u=h(e,i,c,!0,m);if(void 0!==u)if(a()){var g=v(e).activeElement;o+=" ";var d=u.mentionPosition,f=u.mentionPosition+u.mentionText.length+1;g.value=g.value.substring(0,d)+o+g.value.substring(f,g.value.length),g.selectionStart=d+o.length,g.selectionEnd=d+o.length}else o+="Β ",l(e,o,u.mentionPosition,u.mentionPosition+u.mentionText.length+1)}function g(e,t){if(null===t.parentNode)return 0;for(var n=0;n<t.parentNode.childNodes.length;n++){var r=t.parentNode.childNodes[n];if(r===t)return n}}function d(e,t){var n,r,i=[];if(a(e))n=v(e).activeElement;else{var o=f(e);o&&(n=o.selected,i=o.path,r=o.offset)}var c=T(e);if(void 0!==c&&null!==c){var l,s=!1;if(c.length>0&&("Β "===c.charAt(c.length-1)||" "===c.charAt(c.length-1))&&(s=!0,c=c.substring(0,c.length-1)),angular.forEach(t,function(e,t){var o=c.toUpperCase().lastIndexOf(t.toUpperCase());if(o>=0&&t.length+o===c.length){var a=o-1;(0===o||"Β "===c.charAt(a)||" "===c.charAt(a))&&(l={macroPosition:o,macroText:t,macroSelectedElement:n,macroSelectedPath:i,macroSelectedOffset:r,macroHasTrailingSpace:s})}}),l)return l}}function f(e){var t,n=p(e),r=n.anchorNode,i=[];if(null!=r){for(var o,a=r.contentEditable;null!==r&&"true"!==a;)o=g(e,r),i.push(o),r=r.parentNode,null!==r&&(a=r.contentEditable);return i.reverse(),t=n.getRangeAt(0).startOffset,{selected:r,path:i,offset:t}}}function h(e,t,n,r,i){var o,c,l;if(a(e))o=v(e).activeElement;else{var s=f(e);s&&(o=s.selected,c=s.path,l=s.offset)}var m=T(e);if(void 0!==m&&null!==m){var u,g=-1;if(t.forEach(function(e){var t=m.lastIndexOf(e);t>g&&(g=t,u=e)}),g>=0&&(0===g||!n||/[\xA0\s]/g.test(m.substring(g-1,g)))){var d=m.substring(g+1,m.length);u=m.substring(g,g+1);var h=d.substring(0,1),p=d.length>0&&(" "===h||"Β "===h);if(i&&(d=d.trim()),!p&&(r||!/[\xA0\s]/g.test(d)))return{mentionPosition:g,mentionText:d,mentionSelectedElement:o,mentionSelectedPath:c,mentionSelectedOffset:l,mentionTriggerChar:u}}}}function p(e){return e?e.iframe.contentWindow.getSelection():window.getSelection()}function v(e){return e?e.iframe.contentWindow.document:document}function T(e){var t;if(a(e)){var n=v(e).activeElement,r=n.selectionStart;t=n.value.substring(0,r)}else{var i=p(e).anchorNode;if(null!=i){var o=i.textContent,c=p(e).getRangeAt(0).startOffset;c>=0&&(t=o.substring(0,c))}}return t}function S(e,t){var n,r,i="ο»Ώ",o="sel_"+(new Date).getTime()+"_"+Math.random().toString().substr(2),a=p(e),c=a.getRangeAt(0);r=v(e).createRange(),r.setStart(a.anchorNode,t),r.setEnd(a.anchorNode,t),r.collapse(!1),n=v(e).createElement("span"),n.id=o,n.appendChild(v(e).createTextNode(i)),r.insertNode(n),a.removeAllRanges(),a.addRange(c);var l={left:0,top:n.offsetHeight};return E(e,n,l),n.parentNode.removeChild(n),l}function E(e,t,n){for(var r=t,i=e?e.iframe:null;r;)n.left+=r.offsetLeft+r.clientLeft,n.top+=r.offsetTop+r.clientTop,r=r.offsetParent,!r&&i&&(r=i,i=null);for(r=t,i=e?e.iframe:null;r!==v().body;)r.scrollTop&&r.scrollTop>0&&(n.top-=r.scrollTop),r.scrollLeft&&r.scrollLeft>0&&(n.left-=r.scrollLeft),r=r.parentNode,!r&&i&&(r=i,i=null)}function b(e,t,n){var r=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing"],i=null!==window.mozInnerScreenX,o=v(e).createElement("div");o.id="input-textarea-caret-position-mirror-div",v(e).body.appendChild(o);var a=o.style,c=window.getComputedStyle?getComputedStyle(t):t.currentStyle;a.whiteSpace="pre-wrap","INPUT"!==t.nodeName&&(a.wordWrap="break-word"),a.position="absolute",a.visibility="hidden",r.forEach(function(e){a[e]=c[e]}),i?(a.width=parseInt(c.width)-2+"px",t.scrollHeight>parseInt(c.height)&&(a.overflowY="scroll")):a.overflow="hidden",o.textContent=t.value.substring(0,n),"INPUT"===t.nodeName&&(o.textContent=o.textContent.replace(/\s/g,"Β "));var l=v(e).createElement("span");l.textContent=t.value.substring(n)||".",o.appendChild(l);var s={top:l.offsetTop+parseInt(c.borderTopWidth)+parseInt(c.fontSize),left:l.offsetLeft+parseInt(c.borderLeftWidth)};return E(e,t,s),v(e).body.removeChild(o),s}return{popUnderMention:i,replaceMacroText:m,replaceTriggerText:u,getMacroMatch:d,getTriggerInfo:h,selectElement:c,getTextAreaOrInputUnderlinePosition:b,getTextPrecedingCurrentSelection:T,getContentEditableSelectedPath:f,getNodePositionInParent:g,getContentEditableCaretPosition:S,pasteHtml:l,resetSelection:s,scrollIntoView:o}}]),angular.module("mentio").run(["$templateCache",function(e){e.put("mentio-menu.tpl.html",'<style>\n.scrollable-menu {\n height: auto;\n max-height: 300px;\n overflow: auto;\n}\n\n.menu-highlighted {\n font-weight: bold;\n}\n</style>\n<ul class="dropdown-menu scrollable-menu" style="display:block">\n <li mentio-menu-item="item" ng-repeat="item in items track by $index">\n <a class="text-primary" ng-bind-html="item.label | mentioHighlight:typedTerm:\'menu-highlighted\' | unsafe"></a>\n </li>\n</ul>')}]);
2324 2324 ;moment.defaultFormat = 'YYYY-MM-DDTHH:mm';
2325 2325
2326 2326 ;// MIT License:
2327 2327 //
2328 2328 // Copyright (c) 2010-2012, Joe Walnes
2329 2329 //
2330 2330 // Permission is hereby granted, free of charge, to any person obtaining a copy
2331 2331 // of this software and associated documentation files (the "Software"), to deal
2332 2332 // in the Software without restriction, including without limitation the rights
2333 2333 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
2334 2334 // copies of the Software, and to permit persons to whom the Software is
2335 2335 // furnished to do so, subject to the following conditions:
2336 2336 //
2337 2337 // The above copyright notice and this permission notice shall be included in
2338 2338 // all copies or substantial portions of the Software.
2339 2339 //
2340 2340 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2341 2341 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2342 2342 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2343 2343 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2344 2344 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2345 2345 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2346 2346 // THE SOFTWARE.
2347 2347
2348 2348 /**
2349 2349 * This behaves like a WebSocket in every way, except if it fails to connect,
2350 2350 * or it gets disconnected, it will repeatedly poll until it succesfully connects
2351 2351 * again.
2352 2352 *
2353 2353 * It is API compatible, so when you have:
2354 2354 * ws = new WebSocket('ws://....');
2355 2355 * you can replace with:
2356 2356 * ws = new ReconnectingWebSocket('ws://....');
2357 2357 *
2358 2358 * The event stream will typically look like:
2359 2359 * onconnecting
2360 2360 * onopen
2361 2361 * onmessage
2362 2362 * onmessage
2363 2363 * onclose // lost connection
2364 2364 * onconnecting
2365 2365 * onopen // sometime later...
2366 2366 * onmessage
2367 2367 * onmessage
2368 2368 * etc...
2369 2369 *
2370 2370 * It is API compatible with the standard WebSocket API.
2371 2371 *
2372 2372 * Latest version: https://github.com/joewalnes/reconnecting-websocket/
2373 2373 * - Joe Walnes
2374 2374 */
2375 2375 function ReconnectingWebSocket(url, protocols) {
2376 2376 protocols = protocols || [];
2377 2377
2378 2378 // These can be altered by calling code.
2379 2379 this.debug = false;
2380 2380 this.reconnectInterval = 1000;
2381 2381 this.timeoutInterval = 2000;
2382 2382
2383 2383 var self = this;
2384 2384 var ws;
2385 2385 var forcedClose = false;
2386 2386 var timedOut = false;
2387 2387
2388 2388 this.url = url;
2389 2389 this.protocols = protocols;
2390 2390 this.readyState = WebSocket.CONNECTING;
2391 2391 this.URL = url; // Public API
2392 2392
2393 2393 this.onopen = function(event) {
2394 2394 };
2395 2395
2396 2396 this.onclose = function(event) {
2397 2397 };
2398 2398
2399 2399 this.onconnecting = function(event) {
2400 2400 };
2401 2401
2402 2402 this.onmessage = function(event) {
2403 2403 };
2404 2404
2405 2405 this.onerror = function(event) {
2406 2406 };
2407 2407
2408 2408 function connect(reconnectAttempt) {
2409 2409 ws = new WebSocket(url, protocols);
2410 2410
2411 2411 self.onconnecting();
2412 2412 if (self.debug || ReconnectingWebSocket.debugAll) {
2413 2413 console.debug('ReconnectingWebSocket', 'attempt-connect', url);
2414 2414 }
2415 2415
2416 2416 var localWs = ws;
2417 2417 var timeout = setTimeout(function() {
2418 2418 if (self.debug || ReconnectingWebSocket.debugAll) {
2419 2419 console.debug('ReconnectingWebSocket', 'connection-timeout', url);
2420 2420 }
2421 2421 timedOut = true;
2422 2422 localWs.close();
2423 2423 timedOut = false;
2424 2424 }, self.timeoutInterval);
2425 2425
2426 2426 ws.onopen = function(event) {
2427 2427 clearTimeout(timeout);
2428 2428 if (self.debug || ReconnectingWebSocket.debugAll) {
2429 2429 console.debug('ReconnectingWebSocket', 'onopen', url);
2430 2430 }
2431 2431 self.readyState = WebSocket.OPEN;
2432 2432 reconnectAttempt = false;
2433 2433 self.onopen(event);
2434 2434 };
2435 2435
2436 2436 ws.onclose = function(event) {
2437 2437 clearTimeout(timeout);
2438 2438 ws = null;
2439 2439 if (forcedClose) {
2440 2440 self.readyState = WebSocket.CLOSED;
2441 2441 self.onclose(event);
2442 2442 } else {
2443 2443 self.readyState = WebSocket.CONNECTING;
2444 2444 self.onconnecting();
2445 2445 if (!reconnectAttempt && !timedOut) {
2446 2446 if (self.debug || ReconnectingWebSocket.debugAll) {
2447 2447 console.debug('ReconnectingWebSocket', 'onclose', url);
2448 2448 }
2449 2449 self.onclose(event);
2450 2450 }
2451 2451 setTimeout(function() {
2452 2452 connect(true);
2453 2453 }, self.reconnectInterval);
2454 2454 }
2455 2455 };
2456 2456 ws.onmessage = function(event) {
2457 2457 if (self.debug || ReconnectingWebSocket.debugAll) {
2458 2458 console.debug('ReconnectingWebSocket', 'onmessage', url, event.data);
2459 2459 }
2460 2460 self.onmessage(event);
2461 2461 };
2462 2462 ws.onerror = function(event) {
2463 2463 if (self.debug || ReconnectingWebSocket.debugAll) {
2464 2464 console.debug('ReconnectingWebSocket', 'onerror', url, event);
2465 2465 }
2466 2466 self.onerror(event);
2467 2467 };
2468 2468 }
2469 2469 connect(url);
2470 2470
2471 2471 this.send = function(data) {
2472 2472 if (ws) {
2473 2473 if (self.debug || ReconnectingWebSocket.debugAll) {
2474 2474 console.debug('ReconnectingWebSocket', 'send', url, data);
2475 2475 }
2476 2476 return ws.send(data);
2477 2477 } else {
2478 2478 throw 'INVALID_STATE_ERR : Pausing to reconnect websocket';
2479 2479 }
2480 2480 };
2481 2481
2482 2482 this.close = function() {
2483 2483 if (ws) {
2484 2484 forcedClose = true;
2485 2485 ws.close();
2486 2486 }
2487 2487 };
2488 2488
2489 2489 /**
2490 2490 * Additional public API method to refresh the connection if still open (close, re-open).
2491 2491 * For example, if the app suspects bad data / missed heart beats, it can try to refresh.
2492 2492 */
2493 2493 this.refresh = function() {
2494 2494 if (ws) {
2495 2495 ws.close();
2496 2496 }
2497 2497 };
2498 2498 }
2499 2499
2500 2500 /**
2501 2501 * Setting this to true is the equivalent of setting all instances of ReconnectingWebSocket.debug to true.
2502 2502 */
2503 2503 ReconnectingWebSocket.debugAll = false;
2504 2504
2505 2505
2506 2506 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
2507 2507 // #
2508 2508 // # This program is free software: you can redistribute it and/or modify
2509 2509 // # it under the terms of the GNU Affero General Public License, version 3
2510 2510 // # (only), as published by the Free Software Foundation.
2511 2511 // #
2512 2512 // # This program is distributed in the hope that it will be useful,
2513 2513 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
2514 2514 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2515 2515 // # GNU General Public License for more details.
2516 2516 // #
2517 2517 // # You should have received a copy of the GNU Affero General Public License
2518 2518 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
2519 2519 // #
2520 2520 // # This program is dual-licensed. If you wish to learn more about the
2521 2521 // # AppEnlight Enterprise Edition, including its added features, Support
2522 2522 // # services, and proprietary license terms, please see
2523 2523 // # https://rhodecode.com/licenses/
2524 2524
2525 2525 if (!String.prototype.trim) {
2526 2526 String.prototype.trim = function () {
2527 2527 return this.replace(/^\s+|\s+$/g, '');
2528 2528 };
2529 2529
2530 2530 String.prototype.ltrim = function () {
2531 2531 return this.replace(/^\s+/, '');
2532 2532 };
2533 2533
2534 2534 String.prototype.rtrim = function () {
2535 2535 return this.replace(/\s+$/, '');
2536 2536 };
2537 2537
2538 2538 String.prototype.fulltrim = function () {
2539 2539 return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, '').replace(/\s+/g, ' ');
2540 2540 };
2541 2541 }
2542 2542
2543 2543 function decodeEncodedJSON (input){
2544 2544 try{
2545 2545 var val = JSON.parse(input);
2546 2546 delete doc;
2547 2547 return val;
2548 2548 }catch(exc){
2549 2549
2550 2550 delete doc;
2551 2551 }
2552 2552 }
2553 2553
2554 2554 function parseTagsToSearch(searchParams) {
2555 2555 var params = {};
2556 2556 _.each(searchParams.tags, function (t) {
2557 2557 if (!_.has(params, t.type)) {
2558 2558 params[t.type] = [];
2559 2559 }
2560 2560 params[t.type].push(t.value);
2561 2561 });
2562 2562 if (searchParams.page > 1){
2563 2563 params.page = searchParams.page;
2564 2564 }
2565 2565 return params;
2566 2566 }
2567 2567
2568 2568 function parseSearchToTags(search) {
2569 2569 var config = {page: 1, tags: [], type:''};
2570 2570 _.each(_.pairs(search), function (obj) {
2571 2571 if (_.isArray(obj[1])) {
2572 2572 _.each(obj[1], function (obj2) {
2573 2573 config.tags.push({type: obj[0], value: obj2});
2574 2574 })
2575 2575 } else {
2576 2576 if (obj[0] == 'page') {
2577 2577 config.page = obj[1];
2578 2578 }
2579 2579 else if (obj[0] == 'type') {
2580 2580 config.type = obj[1];
2581 2581 }
2582 2582 else {
2583 2583 config.tags.push({type: obj[0], value: obj[1]});
2584 2584 }
2585 2585
2586 2586 }
2587 2587 });
2588 2588 return config;
2589 2589 }
2590 2590
2591 2591
2592 2592 /* returns ISO date string from UTC now - timespan */
2593 2593 function timeSpanToStartDate(timeSpan){
2594 2594 var amount = Number(timeSpan.slice(0,-1));
2595 2595 var unit = timeSpan.slice(-1);
2596 2596 return moment.utc().subtract(amount, unit).format();
2597 2597 }
2598 2598
2599 2599 /* Sets server validation messages on form using angular machinery +
2600 2600 * custom key holding actual error messages */
2601 2601 function setServerValidation(form, errors){
2602 2602
2603 2603 if (typeof form.ae_validation === 'undefined'){
2604 2604 form.ae_validation = {};
2605 2605
2606 2606 }
2607 2607 for (var key in form.ae_validation){
2608 2608 form.ae_validation[key] = [];
2609 2609
2610 2610 }
2611 2611
2612 2612
2613 2613 for (var key in form){
2614 2614 if (key[0] !== '$' && key !== 'ae_validation'){
2615 2615 form[key].$setValidity('ae_validation', true);
2616 2616 }
2617 2617 }
2618 2618 if (typeof errors !== undefined){
2619 2619 for (var key in errors){
2620 2620 if (typeof form[key] !== 'undefined'){
2621 2621 form[key].$setValidity('ae_validation', false);
2622 2622 }
2623 2623 // handle wtforms and colander errors based on
2624 2624 // whether we have list of erors or a single error in a key
2625 2625 if (angular.isArray(errors[key])){
2626 2626 form.ae_validation[key] = errors[key];
2627 2627 }
2628 2628 else{
2629 2629 form.ae_validation[key] = [errors[key]];
2630 2630 }
2631 2631 }
2632 2632 }
2633 2633 return form;
2634 2634 }
2635 2635
2636 2636 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
2637 2637 // #
2638 2638 // # This program is free software: you can redistribute it and/or modify
2639 2639 // # it under the terms of the GNU Affero General Public License, version 3
2640 2640 // # (only), as published by the Free Software Foundation.
2641 2641 // #
2642 2642 // # This program is distributed in the hope that it will be useful,
2643 2643 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
2644 2644 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2645 2645 // # GNU General Public License for more details.
2646 2646 // #
2647 2647 // # You should have received a copy of the GNU Affero General Public License
2648 2648 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
2649 2649 // #
2650 2650 // # This program is dual-licensed. If you wish to learn more about the
2651 2651 // # AppEnlight Enterprise Edition, including its added features, Support
2652 2652 // # services, and proprietary license terms, please see
2653 2653 // # https://rhodecode.com/licenses/
2654 2654
2655 2655 'use strict';
2656 2656
2657 2657 // Declare app level module which depends on filters, and services
2658 2658 angular.module('appenlight.base', [
2659 2659 'ngRoute',
2660 2660 'ui.router',
2661 2661 'ui.router.router',
2662 2662 'underscore',
2663 2663 'ui.bootstrap',
2664 2664 'ngResource',
2665 2665 'ngAnimate',
2666 2666 'ngCookies',
2667 2667 'smart-table',
2668 2668 'angular-toArrayFilter',
2669 2669 'mentio'
2670 2670 ]);
2671 2671
2672 2672 angular.module('appenlight.filters', []);
2673 2673 angular.module('appenlight.templates', []);
2674 2674 angular.module('appenlight.controllers', ['appenlight.base']);
2675 2675 angular.module('appenlight.directives', [
2676 2676 'appenlight.directives.appVersion',
2677 2677 'appenlight.directives.c3chart',
2678 2678 'appenlight.directives.confirmValidate',
2679 2679 'appenlight.directives.focus',
2680 2680 'appenlight.directives.formErrors',
2681 2681 'appenlight.directives.humanFormat',
2682 2682 'appenlight.directives.isoToRelativeTime',
2683 2683 'appenlight.directives.permissionsForm',
2684 2684 'appenlight.directives.smallReportGroupList',
2685 2685 'appenlight.directives.smallReportList',
2686 2686 'appenlight.directives.pluginConfig',
2687 2687 'appenlight.directives.recursive',
2688 2688 'appenlight.directives.reportAlertAction',
2689 2689 'appenlight.directives.postProcessAction',
2690 2690 'appenlight.directives.rule',
2691 2691 'appenlight.directives.ruleReadOnly'
2692 2692 ]);
2693 2693 angular.module('appenlight.services', [
2694 2694 'appenlight.services.chartResultParser',
2695 2695 'appenlight.services.resources',
2696 2696 'appenlight.services.stateHolder',
2697 2697 'appenlight.services.typeAheadTagHelper',
2698 2698 'appenlight.services.UUIDProvider'
2699 2699 ]).value('version', '0.1');
2700 2700
2701 2701
2702 2702 var pluginsToLoad = _.map(decodeEncodedJSON(window.AE.plugins),
2703 2703 function(item){
2704 2704 return item.config.angular_module
2705 2705 });
2706 2706
2707 2707 angular.module('appenlight.plugins', pluginsToLoad);
2708 2708
2709 2709 var app = angular.module('appenlight', [
2710 2710 'appenlight.base',
2711 2711 'appenlight.config',
2712 2712 'appenlight.user',
2713 2713 'appenlight.templates',
2714 2714 'appenlight.filters',
2715 2715 'appenlight.services',
2716 2716 'appenlight.directives',
2717 2717 'appenlight.controllers',
2718 2718 'appenlight.plugins'
2719 2719 ]);
2720 2720
2721 2721 function kickstartAE() {
2722 2722
2723 2723
2724 2724
2725 2725 app.config(['$httpProvider', '$uibTooltipProvider', '$locationProvider', function ($httpProvider, $uibTooltipProvider, $locationProvider) {
2726 2726 $locationProvider.html5Mode(true);
2727 2727 $httpProvider.interceptors.push(['$q', '$rootScope', '$timeout', 'stateHolder', function ($q, $rootScope, $timeout, stateHolder) {
2728 2728 return {
2729 2729 'response': function (response) {
2730 2730 var flashMessages = angular.fromJson(response.headers('x-flash-messages'));
2731 2731 if (flashMessages && flashMessages.length > 0) {
2732 2732 stateHolder.flashMessages.extend(flashMessages);
2733 2733 }
2734 2734 return response;
2735 2735 },
2736 2736 'responseError': function (rejection) {
2737 2737
2738 2738 if (rejection.status > 299 && rejection.status !== 422) {
2739 2739 stateHolder.flashMessages.extend([{
2740 2740 msg: 'Response status code: ' + rejection.status + ', "' + rejection.statusText + '", url: ' + rejection.config.url,
2741 2741 type: 'error'
2742 2742 }]);
2743 2743 }
2744 2744 if (rejection.status == 0) {
2745 2745 stateHolder.flashMessages.extend([{
2746 2746 msg: 'Response timeout',
2747 2747 type: 'error'
2748 2748 }]);
2749 2749 }
2750 2750 var flashMessages = angular.fromJson(rejection.headers('x-flash-messages'));
2751 2751 if (flashMessages && flashMessages.length > 0) {
2752 2752 stateHolder.flashMessages.extend(flashMessages);
2753 2753 }
2754 2754
2755 2755 return $q.reject(rejection);
2756 2756 }
2757 2757 }
2758 2758 }]);
2759 2759
2760 2760 $uibTooltipProvider.options({appendToBody: true});
2761 2761
2762 2762 }]);
2763 2763
2764 2764
2765 2765 app.config(function ($provide) {
2766 2766 $provide.decorator("$exceptionHandler", function ($delegate) {
2767 2767 return function (exception, cause) {
2768 2768 $delegate(exception, cause);
2769 2769 if (typeof AppEnlight !== 'undefined') {
2770 2770 AppEnlight.grabError(exception);
2771 2771 }
2772 2772 };
2773 2773 });
2774 2774 });
2775 2775
2776 2776 app.run(['$rootScope', '$timeout', 'stateHolder', '$state', '$location', '$transitions', '$window', 'AeConfig', 'AeUser',
2777 2777 function ($rootScope, $timeout, stateHolder, $state, $location, $transitions, $window, AeConfig, AeUser) {
2778 2778 $rootScope.$state = $state;
2779 2779 $rootScope.stateHolder = stateHolder;
2780 2780 $rootScope.flash = stateHolder.flashMessages.list;
2781 2781 $rootScope.closeAlert = stateHolder.flashMessages.closeAlert;
2782 2782 $rootScope.AeConfig = AeConfig;
2783 2783 $rootScope.AeUser = AeUser;
2784 2784
2785 2785 var transitionApp = function($transition$, $state) {
2786 2786 // redirect user to /register unless its one of open views
2787 2787 var isGuestState = [
2788 2788 'report.view_detail',
2789 2789 'report.view_group',
2790 2790 'dashboard.view'
2791 2791 ].indexOf($transition$.to().name) !== -1;
2792 2792
2793 2793 var path = $window.location.pathname;
2794 2794 // strip trailing slash
2795 2795 if (path.substr(path.length - 1) === '/') {
2796 2796 path = path.substr(0, path.length - 1);
2797 2797 }
2798 2798 var isOpenView = false;
2799 2799 var openViews = [
2800 2800 AeConfig.urls.otherRoutes.lostPassword,
2801 2801 AeConfig.urls.otherRoutes.lostPasswordGenerate
2802 2802 ];
2803 2803
2804 2804 _.each(openViews, function (url) {
2805 2805 var url = '/' + url.split('/').slice(3).join('/');
2806 2806 if (url === path) {
2807 2807 isOpenView = true;
2808 2808 }
2809 2809 });
2810 2810 if (AeUser.id === null && !isGuestState && !isOpenView) {
2811 2811 if (window.location.toString().indexOf(AeConfig.urls.otherRoutes.register) === -1) {
2812 2812
2813 2813 $window.location = AeConfig.urls.otherRoutes.register + '?came_from=' + encodeURIComponent(window.location);
2814 2814 return false;
2815 2815 }
2816 2816 return false;
2817 2817 }
2818 2818 };
2819 2819 $transitions.onBefore({}, transitionApp);
2820 2820
2821 2821 }]);
2822 2822 }
2823 2823
2824 2824 ;angular.module('appenlight.templates').run(['$templateCache', function($templateCache) {
2825 2825 'use strict';
2826 2826
2827 2827 $templateCache.put('templates/admin/applications/applications_list.html',
2828 2828 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications.loading.applications\"></ng-include>\n" +
2829 2829 "\n" +
2830 2830 "<div class=\"panel panel-default\" ng-if=\"!applications.loading.applications\">\n" +
2831 2831 " <div class=\"panel-heading\">\n" +
2832 2832 "\n" +
2833 2833 " Currently active applications: {{applications.applications.length}}\n" +
2834 2834 "\n" +
2835 2835 " </div>\n" +
2836 2836 "\n" +
2837 2837 " <table st-table=\"displayedCollection\" st-safe-src=\"applications.applications\" class=\"table table-striped\">\n" +
2838 2838 " <thead>\n" +
2839 2839 " <tr>\n" +
2840 2840 " <th st-sort=\"resource_name\"><a>Application name</a></th>\n" +
2841 2841 " <th st-sort=\"owner_user_name\"><a>Owner User</a></th>\n" +
2842 2842 " <th st-sort=\"owner_group_name\"><a>Owner Group</a></th>\n" +
2843 2843 " <th class=\"options\"></th>\n" +
2844 2844 " </tr>\n" +
2845 2845 " <tr>\n" +
2846 2846 " <th><input st-search=\"resource_name\" placeholder=\"search for application\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
2847 2847 " <th><input st-search=\"owner_user_name\" placeholder=\"search for user\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
2848 2848 " <th><input st-search=\"owner_group_name\" placeholder=\"search for group\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
2849 2849 " <th></th>\n" +
2850 2850 " </tr>\n" +
2851 2851 " </thead>\n" +
2852 2852 " <tbody>\n" +
2853 2853 "\n" +
2854 2854 " <tr ng-repeat=\"resource in displayedCollection track by resource.resource_id\">\n" +
2855 2855 " <td> {{resource.resource_name}}</td>\n" +
2856 2856 " <td>{{resource.owner_user_name}}</td>\n" +
2857 2857 " <td>{{resource.owner_group_name}}</td>\n" +
2858 2858 " <td>\n" +
2859 2859 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"applications.update({resourceId:resource.resource_id})\" data-toggle=\"tooltip\" title=\"Update application\"><span class=\"fa fa-cog\"></span></a>\n" +
2860 2860 " </td>\n" +
2861 2861 " </tr>\n" +
2862 2862 " <tfoot>\n" +
2863 2863 " <tr>\n" +
2864 2864 " <td colspan=\"4\" class=\"text-center\">\n" +
2865 2865 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
2866 2866 " </td>\n" +
2867 2867 " </tr>\n" +
2868 2868 " </tfoot>\n" +
2869 2869 " </tbody>\n" +
2870 2870 " </table>\n" +
2871 2871 "\n" +
2872 2872 "</div>\n"
2873 2873 );
2874 2874
2875 2875
2876 2876 $templateCache.put('templates/admin/configs/edit.html',
2877 2877 "<ng-include src=\"'templates/loader.html'\" ng-if=\"configs.loading.config\"></ng-include>\n" +
2878 2878 "\n" +
2879 2879 "<div class=\"panel panel-default\" ng-show=\"!configs.loading.config\">\n" +
2880 2880 " <div class=\"panel-heading\">\n" +
2881 2881 " <h3 class=\"panel-title\">Basic Configuration</h3>\n" +
2882 2882 " </div>\n" +
2883 2883 " <div class=\"panel-body\">\n" +
2884 2884 " <h2>Visual</h2>\n" +
2885 2885 " <form class=\"form-horizontal\">\n" +
2886 2886 " <div class=\"form-group\">\n" +
2887 2887 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2888 2888 " Footer HTML\n" +
2889 2889 " </label>\n" +
2890 2890 " <div class=\"col-sm-8 col-lg-9\">\n" +
2891 2891 " <textarea class=\"form-control\" type=\"text\" ng-model=\"configs.configs.global.template_footer_html.value\" style=\"min-height: 150px\"></textarea>\n" +
2892 2892 " </div>\n" +
2893 2893 " </div>\n" +
2894 2894 " </form>\n" +
2895 2895 "\n" +
2896 2896 " <h2>Functional</h2>\n" +
2897 2897 "\n" +
2898 2898 " <form class=\"form-horizontal\">\n" +
2899 2899 " <div class=\"form-group\">\n" +
2900 2900 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2901 2901 " Show user groups to non-admin users\n" +
2902 2902 " </label>\n" +
2903 2903 " <div class=\"col-sm-8 col-lg-9\">\n" +
2904 2904 " <button type=\"button\" class=\"btn btn-default\" ng-model=\"configs.configs.global.list_groups_to_non_admins.value\" uib-btn-checkbox>\n" +
2905 2905 " Enable\n" +
2906 2906 " </button>\n" +
2907 2907 " </div>\n" +
2908 2908 " </div>\n" +
2909 2909 " </form>\n" +
2910 2910 "\n" +
2911 2911 " <h2>Global Rate Limiting</h2>\n" +
2912 2912 "\n" +
2913 2913 " <form class=\"form-horizontal\">\n" +
2914 2914 " <div class=\"form-group\">\n" +
2915 2915 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2916 2916 " Ignore reports per minute/per application\n" +
2917 2917 " </label>\n" +
2918 2918 " <div class=\"col-sm-8 col-lg-9\">\n" +
2919 2919 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_reports_rate_limit.value\" />\n" +
2920 2920 " </div>\n" +
2921 2921 " </div>\n" +
2922 2922 "\n" +
2923 2923 " <div class=\"form-group\">\n" +
2924 2924 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2925 2925 " Ignore logs per minute/per application\n" +
2926 2926 " </label>\n" +
2927 2927 " <div class=\"col-sm-8 col-lg-9\">\n" +
2928 2928 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_logs_rate_limit.value\" />\n" +
2929 2929 " </div>\n" +
2930 2930 " </div>\n" +
2931 2931 "\n" +
2932 2932 " <div class=\"form-group\">\n" +
2933 2933 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2934 2934 " Ignore metrics per minute/per application\n" +
2935 2935 " </label>\n" +
2936 2936 " <div class=\"col-sm-8 col-lg-9\">\n" +
2937 2937 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_metrics_rate_limit.value\" />\n" +
2938 2938 " </div>\n" +
2939 2939 " </div>\n" +
2940 2940 "\n" +
2941 2941 " </form>\n" +
2942 2942 "\n" +
2943 2943 " <hr/>\n" +
2944 2944 "\n" +
2945 2945 " <a class=\"btn btn-primary\" ng-click=\"configs.save()\">Save configuration</a>\n" +
2946 2946 " </div>\n" +
2947 2947 "\n" +
2948 2948 "</div>\n" +
2949 2949 "\n" +
2950 2950 "\n" +
2951 2951 "<div class=\"panel panel-default\">\n" +
2952 2952 " <div class=\"panel-heading\">\n" +
2953 2953 " <h3 class=\"panel-title\">Plugin Configuration</h3>\n" +
2954 2954 " </div>\n" +
2955 2955 " <div class=\"panel-body\">\n" +
2956 2956 " <plugin-config section=\"'admin.config'\">\n" +
2957 2957 " </plugin-config>\n" +
2958 2958 " </div>\n" +
2959 2959 "</div>\n"
2960 2960 );
2961 2961
2962 2962
2963 2963 $templateCache.put('templates/admin/configs/parent_view.html',
2964 2964 "<div ui-view></div>"
2965 2965 );
2966 2966
2967 2967
2968 2968 $templateCache.put('templates/admin/groups/groups_create.html',
2969 2969 "<ng-include src=\"'templates/loader.html'\" ng-if=\"group.loading.group\"></ng-include>\n" +
2970 2970 "\n" +
2971 2971 "<div ng-show=\"!group.loading.group\">\n" +
2972 2972 "\n" +
2973 2973 " <div class=\"panel panel-default\">\n" +
2974 2974 " <div class=\"panel-body\">\n" +
2975 2975 " <form name=\"group.groupForm\" class=\"form-horizontal\" ng-submit=\"group.createGroup()\">\n" +
2976 2976 " <div class=\"form-group\" id=\"row-group_name\">\n" +
2977 2977 " <data-form-errors errors=\"group.groupForm.ae_validation.group_name\"></data-form-errors>\n" +
2978 2978 " <label for=\"group_name\" id=\"label-group_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
2979 2979 " Group name\n" +
2980 2980 " <span class=\"required\">*</span>\n" +
2981 2981 " </label>\n" +
2982 2982 " <div class=\"col-sm-8 col-lg-9\">\n" +
2983 2983 " <input class=\"form-control\" id=\"group_name\" name=\"group_name\" type=\"text\" ng-model=\"group.group.group_name\">\n" +
2984 2984 " </div>\n" +
2985 2985 " </div>\n" +
2986 2986 "\n" +
2987 2987 " <div class=\"form-group\" id=\"row-description\">\n" +
2988 2988 " <data-form-errors errors=\"group.groupForm.ae_validation.description\"></data-form-errors>\n" +
2989 2989 " <label for=\"description\" id=\"label-description\" class=\"control-label col-sm-4 col-lg-3\">\n" +
2990 2990 " Description\n" +
2991 2991 " <span class=\"required\">*</span>\n" +
2992 2992 " </label>\n" +
2993 2993 " <div class=\"col-sm-8 col-lg-9\">\n" +
2994 2994 " <input class=\"form-control\" id=\"description\" name=\"description\" type=\"text\" ng-model=\"group.group.description\">\n" +
2995 2995 " </div>\n" +
2996 2996 " </div>\n" +
2997 2997 "\n" +
2998 2998 "\n" +
2999 2999 " <div class=\"form-group\" id=\"row-submit\">\n" +
3000 3000 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3001 3001 " </label>\n" +
3002 3002 " <div class=\"col-sm-8 col-lg-9\">\n" +
3003 3003 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"{{$state.params.groupId ? 'Update' : 'Add'}} Group\">\n" +
3004 3004 " </div>\n" +
3005 3005 " </div>\n" +
3006 3006 " </form>\n" +
3007 3007 " </div>\n" +
3008 3008 " </div>\n" +
3009 3009 "\n" +
3010 3010 "\n" +
3011 3011 " <div class=\"panel panel-default\" ng-if=\"group.group.id\">\n" +
3012 3012 " <div class=\"panel-heading\">\n" +
3013 3013 " <h3 class=\"panel-title\">Permissions summary</h3>\n" +
3014 3014 " </div>\n" +
3015 3015 " <div class=\"panel-body\">\n" +
3016 3016 " <h3>Direct application permissions</h3>\n" +
3017 3017 "\n" +
3018 3018 " <ul class=\"list-group\">\n" +
3019 3019 " <li ng-repeat=\"perm in group.resourcePermissions.group.application\" class=\"animate-repeat list-group-item\">\n" +
3020 3020 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3021 3021 "\n" +
3022 3022 " <div class=\"pull-right\">\n" +
3023 3023 "\n" +
3024 3024 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3025 3025 "\n" +
3026 3026 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Application\" data-ui-sref=\"applications.update({resourceId:perm.self.resource_id})\">\n" +
3027 3027 " <span class=\"fa fa-cog\"></span>\n" +
3028 3028 " </a>\n" +
3029 3029 " </div>\n" +
3030 3030 " </li>\n" +
3031 3031 " </ul>\n" +
3032 3032 "\n" +
3033 3033 " <h3>Direct dashboard permissions</h3>\n" +
3034 3034 "\n" +
3035 3035 " <ul class=\"list-group\">\n" +
3036 3036 " <li ng-repeat=\"perm in group.resourcePermissions.group.dashboard\" class=\"animate-repeat list-group-item\">\n" +
3037 3037 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3038 3038 "\n" +
3039 3039 " <div class=\"pull-right\">\n" +
3040 3040 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3041 3041 "\n" +
3042 3042 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Dashboard\" data-ui-sref=\"dashboard.update({resourceId:perm.self.resource_id})\">\n" +
3043 3043 " <span class=\"fa fa-cog\"></span>\n" +
3044 3044 " </a>\n" +
3045 3045 " </div>\n" +
3046 3046 " </li>\n" +
3047 3047 " </ul>\n" +
3048 3048 "\n" +
3049 3049 " </div>\n" +
3050 3050 "\n" +
3051 3051 " </div>\n" +
3052 3052 "\n" +
3053 3053 "\n" +
3054 3054 " <div class=\"panel panel-default\" ng-if=\"group.group.id\">\n" +
3055 3055 " <div class=\"panel-heading\">\n" +
3056 3056 " <h3 class=\"panel-title\">User list</h3>\n" +
3057 3057 " </div>\n" +
3058 3058 " <div class=\"panel-body\">\n" +
3059 3059 "\n" +
3060 3060 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"group.addUser()\">\n" +
3061 3061 " <div class=\"form-group\">\n" +
3062 3062 " <input placeholder=\"Username or email\" type=\"text\" class=\"autocomplete form-control\" ng-model=\"group.form.autocompleteUser\" uib-typeahead=\"u for u in group.searchUsers($viewValue) | limitTo:8\" typeahead-loading=\"searchingUsers\" typeahead-wait-ms=\"250\"/>\n" +
3063 3063 " </div>\n" +
3064 3064 " <div class=\"form-group\">\n" +
3065 3065 " <button class=\"btn btn-info\" ng-disabled=\"!group.form.autocompleteUser\"><span class=\"fa fa-user\"></span> Add user</button>\n" +
3066 3066 " </div>\n" +
3067 3067 " </form>\n" +
3068 3068 "\n" +
3069 3069 " </div>\n" +
3070 3070 "\n" +
3071 3071 " <table st-table=\"displayedCollection\" st-safe-src=\"group.users\" class=\"table table-striped\">\n" +
3072 3072 " <thead>\n" +
3073 3073 " <tr>\n" +
3074 3074 " <th st-sort=\"user_name\"><a>Username</a></th>\n" +
3075 3075 " <th st-sort=\"email\"><a>Email</a></th>\n" +
3076 3076 " <th st-sort=\"status\"><a>Status</a></th>\n" +
3077 3077 " <th st-sort=\"first_name\"><a>First Name</a></th>\n" +
3078 3078 " <th st-sort=\"last_name\"><a>Last Name</a></th>\n" +
3079 3079 " <th st-sort=\"last_login_date\"><a>Last login</a></th>\n" +
3080 3080 " <th class=\"options\" style=\"width: 130px\"></th>\n" +
3081 3081 " </tr>\n" +
3082 3082 " <tr>\n" +
3083 3083 " <th><input st-search=\"user_name\" placeholder=\"search for user name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3084 3084 " <th><input st-search=\"email\" placeholder=\"search for email\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3085 3085 " <th></th>\n" +
3086 3086 " <th><input st-search=\"first_name\" placeholder=\"search for first name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3087 3087 " <th><input st-search=\"last_name\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3088 3088 " <th><input st-search=\"last_login_date\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3089 3089 " <th></th>\n" +
3090 3090 " </tr>\n" +
3091 3091 " </thead>\n" +
3092 3092 " <tbody>\n" +
3093 3093 "\n" +
3094 3094 " <tr ng-repeat=\"user in displayedCollection\">\n" +
3095 3095 " <td><img src=\"{{user.gravatar_url}}\" class=\"avatar\"> {{user.user_name}}</td>\n" +
3096 3096 " <td>{{user.email}}</td>\n" +
3097 3097 " <td class=\"text-center\"><span class=\"fa\" ng-class=\"{'fa-check-circle':user.status, 'fa-times':!user.status}\"></span></td>\n" +
3098 3098 " <td>{{user.first_name}}</td>\n" +
3099 3099 " <td>{{user.last_name}}</td>\n" +
3100 3100 " <td><span data-uib-tooltip=\"{{user.last_login_date}}\">{{user.last_login_date | isoToRelativeTime}}</span></td>\n" +
3101 3101 " <td>\n" +
3102 3102 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.user.update({userId:user.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
3103 3103 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
3104 3104 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3105 3105 " <ul class=\"dropdown-menu\">\n" +
3106 3106 " <li><a>No</a></li>\n" +
3107 3107 " <li><a ng-click=\"group.removeUser(user)\">Yes</a></li>\n" +
3108 3108 " </ul>\n" +
3109 3109 " </span>\n" +
3110 3110 " </tr>\n" +
3111 3111 " <tfoot>\n" +
3112 3112 " <tr>\n" +
3113 3113 " <td colspan=\"7\" class=\"text-center\">\n" +
3114 3114 " <div st-pagination=\"\" st-items-by-page=\"50\" st-displayed-pages=\"7\"></div>\n" +
3115 3115 " </td>\n" +
3116 3116 " </tr>\n" +
3117 3117 " </tfoot>\n" +
3118 3118 " </tbody>\n" +
3119 3119 " </table>\n" +
3120 3120 "\n" +
3121 3121 " </div>\n" +
3122 3122 "\n" +
3123 3123 "\n" +
3124 3124 "</div>\n"
3125 3125 );
3126 3126
3127 3127
3128 3128 $templateCache.put('templates/admin/groups/groups_list.html',
3129 3129 "<ng-include src=\"'templates/loader.html'\" ng-if=\"groups.loading.groups\"></ng-include>\n" +
3130 3130 "\n" +
3131 3131 "<div class=\"panel panel-default\" ng-show=\"!groups.loading.groups\">\n" +
3132 3132 "\n" +
3133 3133 " <table st-table=\"displayedCollection\" st-safe-src=\"groups.groups\" class=\"table table-striped\">\n" +
3134 3134 " <thead>\n" +
3135 3135 " <tr>\n" +
3136 3136 " <th st-sort=\"group_name\"><a>Group name</a></th>\n" +
3137 3137 " <th st-sort=\"description\"><a>Description</a></th>\n" +
3138 3138 " <th st-sort=\"members\"><a>Member count</a></th>\n" +
3139 3139 " <th class=\"options\"></th>\n" +
3140 3140 " </tr>\n" +
3141 3141 " <tr>\n" +
3142 3142 " <th><input st-search=\"group_name\" placeholder=\"search for group name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3143 3143 " <th><input st-search=\"description\" placeholder=\"search for description\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3144 3144 " <th></th>\n" +
3145 3145 " <th></th>\n" +
3146 3146 " </tr>\n" +
3147 3147 " </thead>\n" +
3148 3148 " <tbody>\n" +
3149 3149 "\n" +
3150 3150 " <tr ng-repeat=\"group in displayedCollection track by group.id\">\n" +
3151 3151 " <td>{{group.group_name}}</td>\n" +
3152 3152 " <td>{{group.description}}</td>\n" +
3153 3153 " <td>{{group.member_count}}</td>\n" +
3154 3154 " <td>\n" +
3155 3155 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.group.update({groupId:group.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
3156 3156 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
3157 3157 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3158 3158 " <ul class=\"dropdown-menu\">\n" +
3159 3159 " <li><a>No</a></li>\n" +
3160 3160 " <li><a ng-click=\"groups.removeGroup(group)\">Yes</a></li>\n" +
3161 3161 " </ul>\n" +
3162 3162 " </span>\n" +
3163 3163 " </tr>\n" +
3164 3164 " <tfoot>\n" +
3165 3165 " <tr>\n" +
3166 3166 " <td colspan=\"4\" class=\"text-center\">\n" +
3167 3167 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
3168 3168 " </td>\n" +
3169 3169 " </tr>\n" +
3170 3170 " </tfoot>\n" +
3171 3171 " </tbody>\n" +
3172 3172 " </table>\n" +
3173 3173 "\n" +
3174 3174 "</div>\n" +
3175 3175 "\n"
3176 3176 );
3177 3177
3178 3178
3179 3179 $templateCache.put('templates/admin/groups/parent_view.html',
3180 3180 "<div ui-view></div>"
3181 3181 );
3182 3182
3183 3183
3184 3184 $templateCache.put('templates/admin/parent_view.html',
3185 3185 "<div class=\"col-sm-3\" id=\"menu\">\n" +
3186 3186 " <div class=\"panel panel-default\">\n" +
3187 3187 " <div class=\"panel-heading\">Users and groups</div>\n" +
3188 3188 " <ul class=\"list-group\">\n" +
3189 3189 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.user.list\"> Users</a></li>\n" +
3190 3190 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.user.create\"> Create user</a></li>\n" +
3191 3191 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.group.list\"> Groups</a></li>\n" +
3192 3192 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.group.create\"> Create group</a></li>\n" +
3193 3193 " </ul>\n" +
3194 3194 " </div>\n" +
3195 3195 " <div class=\"panel panel-default\">\n" +
3196 3196 " <div class=\"panel-heading\">Resources</div>\n" +
3197 3197 " <ul class=\"list-group\">\n" +
3198 3198 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.application.list\"> List applications</a></li>\n" +
3199 3199 " </ul>\n" +
3200 3200 " </div>\n" +
3201 3201 "\n" +
3202 3202 " <div class=\"panel panel-default\">\n" +
3203 3203 " <div class=\"panel-heading\">System</div>\n" +
3204 3204 " <ul class=\"list-group\">\n" +
3205 3205 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.configs.list\"> Config variables</a></li>\n" +
3206 3206 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.system\"> System</a></li>\n" +
3207 3207 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.partitions\"> Partition Management</a></li>\n" +
3208 3208 " </ul>\n" +
3209 3209 " </div>\n" +
3210 3210 "</div>\n" +
3211 3211 "\n" +
3212 3212 "\n" +
3213 3213 "<div class=\"col-sm-9\" ui-view></div>\n"
3214 3214 );
3215 3215
3216 3216
3217 3217 $templateCache.put('templates/admin/partitions.html',
3218 3218 "<ng-include src=\"'templates/loader.html'\" ng-if=\"partitions.loading.partitions\"></ng-include>\n" +
3219 3219 "\n" +
3220 3220 "<div ng-show=\"!partitions.loading.partitions\">\n" +
3221 3221 "\n" +
3222 3222 " <div class=\"panel panel-default\">\n" +
3223 3223 " <div class=\"panel-heading\">\n" +
3224 3224 " DELETE Daily Partitions\n" +
3225 3225 " </div>\n" +
3226 3226 "\n" +
3227 3227 " <form name=\"partitions.dailyPartitionsForm\"\n" +
3228 3228 " novalidate ng-submit=\"partitions.partitionsDelete('dailyPartitions')\"\n" +
3229 3229 " class=\"form-inline\"\n" +
3230 3230 " ng-class=\"{'has-error':partitions.dailyPartitionsForm.$invalid}\">\n" +
3231 3231 "\n" +
3232 3232 " <div class=\"panel-body\">\n" +
3233 3233 "\n" +
3234 3234 " <input type=\"text\" name=\"confirm\"\n" +
3235 3235 " placeholder=\"Enter CONFIRM to proceed\" class=\"form-control input-autosize\" confirm-validate required ng-model=\"partitions.dailyConfirm\">\n" +
3236 3236 " <input type=\"submit\" class=\"btn btn-danger\" ng-disabled=\"partitions.dailyPartitionsForm.$invalid\">\n" +
3237 3237 " <input type=\"checkbox\" ng-model=\"partitions.dailyChecked\" ng-change=\"partitions.setCheckedList('dailyPartitions')\"> Check All\n" +
3238 3238 "\n" +
3239 3239 " </div>\n" +
3240 3240 "\n" +
3241 3241 " <table class=\"table table-striped\">\n" +
3242 3242 " <tr>\n" +
3243 3243 " <th class=\"c1 date\">Date</th>\n" +
3244 3244 " <th class=\"c2 indices\">Indices</th>\n" +
3245 3245 " </tr>\n" +
3246 3246 " <tr class=\"r{{$index}}\" ng-repeat=\"row in partitions.dailyPartitions\">\n" +
3247 3247 " <td class=\"c1\">{{row[0]}}</td>\n" +
3248 3248 " <td class=\"c2\">\n" +
3249 3249 " <ul class=\"list-group\">\n" +
3250 3250 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].elasticsearch\">\n" +
3251 3251 " <input name=\"es_index\" type=\"checkbox\" ng-model=\"partition.checked\"> ES: {{partition.name}}\n" +
3252 3252 " </li>\n" +
3253 3253 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].pg\">\n" +
3254 3254 " <input name=\"pg_index\" type=\"checkbox\" ng-model=\"partition.checked\"> PG: {{partition.name}}\n" +
3255 3255 " </li>\n" +
3256 3256 " </ul>\n" +
3257 3257 " </td>\n" +
3258 3258 " </tr>\n" +
3259 3259 " </table>\n" +
3260 3260 " </form>\n" +
3261 3261 "\n" +
3262 3262 " </div>\n" +
3263 3263 "\n" +
3264 3264 " <div class=\"panel panel-default\">\n" +
3265 3265 " <div class=\"panel-heading\">\n" +
3266 3266 " DELETE Permanent Partitions\n" +
3267 3267 " </div>\n" +
3268 3268 "\n" +
3269 3269 " <form name=\"partitions.permanentPartitionsForm\" novalidate\n" +
3270 3270 " ng-submit=\"partitions.partitionsDelete('permanentPartitions')\"\n" +
3271 3271 " class=\"form-inline\"\n" +
3272 3272 " ng-class=\"{'has-error':partitions.permanentPartitionsForm.$invalid}\">\n" +
3273 3273 "\n" +
3274 3274 "\n" +
3275 3275 " <div class=\"panel-body\">\n" +
3276 3276 "\n" +
3277 3277 " <div class=\"form-group\">\n" +
3278 3278 " <input type=\"text\" name=\"confirm\"\n" +
3279 3279 " placeholder=\"Enter CONFIRM to proceed\" class=\"form-control\" confirm-validate required ng-model=\"partitions.permConfirm\">\n" +
3280 3280 " <input type=\"submit\" class=\"btn btn-danger\" ng-disabled=\"partitions.permanentPartitionsForm.$invalid\">\n" +
3281 3281 " <input type=\"checkbox\" ng-model=\"partitions.permChecked\" ng-change=\"partitions.setCheckedList('permanentPartitions')\"> Check All\n" +
3282 3282 " </div>\n" +
3283 3283 "\n" +
3284 3284 " </div>\n" +
3285 3285 "\n" +
3286 3286 " <table class=\"table table-striped\">\n" +
3287 3287 " <tr>\n" +
3288 3288 " <th class=\"c1 date\">Date</th>\n" +
3289 3289 " <th class=\"c2 indices\">Indices</th>\n" +
3290 3290 " </tr>\n" +
3291 3291 " <tr class=\"r{{$index}}\" ng-repeat=\"row in partitions.permanentPartitions\">\n" +
3292 3292 " <td class=\"c1\">{{row[0]}}</td>\n" +
3293 3293 " <td class=\"c2\">\n" +
3294 3294 " <ul class=\"list-group\">\n" +
3295 3295 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].elasticsearch\">\n" +
3296 3296 " <input name=\"es_index\" type=\"checkbox\" ng-model=\"partition.checked\"> ES: {{partition.name}}\n" +
3297 3297 " </li>\n" +
3298 3298 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].pg\">\n" +
3299 3299 " <input name=\"pg_index\" type=\"checkbox\" ng-model=\"partition.checked\"> PG: {{partition.name}}\n" +
3300 3300 " </li>\n" +
3301 3301 " </ul>\n" +
3302 3302 " </td>\n" +
3303 3303 " </tr>\n" +
3304 3304 " </table>\n" +
3305 3305 " </form>\n" +
3306 3306 "\n" +
3307 3307 " </div>\n" +
3308 3308 "\n" +
3309 3309 "</div>\n"
3310 3310 );
3311 3311
3312 3312
3313 3313 $templateCache.put('templates/admin/system.html',
3314 3314 "<ng-include src=\"'templates/loader.html'\" ng-if=\"system.loading.system\"></ng-include>\n" +
3315 3315 "\n" +
3316 3316 "<div ng-if=\"system.loading.system == false\">\n" +
3317 3317 " <div class=\"row\">\n" +
3318 3318 " <div class=\"col-sm-12\">\n" +
3319 3319 " <div class=\"panel panel-default\">\n" +
3320 3320 " <div class=\"panel-heading\">\n" +
3321 3321 " <h3 class=\"panel-title\">\n" +
3322 3322 " System Info\n" +
3323 3323 " </h3>\n" +
3324 3324 " </div>\n" +
3325 3325 " <div class=\"panel-body\">\n" +
3326 3326 "\n" +
3327 3327 " <p><strong>System Load:</strong>\n" +
3328 3328 " 1min: {{system.systemLoad[0]}}, 5min: {{system.systemLoad[1]}}, 15min: {{system.systemLoad[2]}}\n" +
3329 3329 " </p>\n" +
3330 3330 " <p><strong>Awaiting tasks:</strong>\n" +
3331 3331 " <ul>\n" +
3332 3332 " <li>reports: {{system.queueStats.waiting_reports}}</li>\n" +
3333 3333 " <li>logs: {{system.queueStats.waiting_logs}}</li>\n" +
3334 3334 " <li>metrics: {{system.queueStats.waiting_metrics}}</li>\n" +
3335 3335 " <li>other: {{system.queueStats.waiting_other}}</li>\n" +
3336 3336 " </ul>\n" +
3337 3337 " </p>\n" +
3338 3338 " <p><strong>Queue stats from last minute:</strong>\n" +
3339 3339 " <ul>\n" +
3340 3340 " <li>Processed reports: {{system.queueStats.processed_reports}}</li>\n" +
3341 3341 " <li>Processed logs: {{system.queueStats.processed_logs}}</li>\n" +
3342 3342 " <li>Processed metrics: {{system.queueStats.processed_metrics}}</li>\n" +
3343 3343 " </ul>\n" +
3344 3344 " </p>\n" +
3345 3345 "\n" +
3346 3346 " <p><strong>Disks:</strong>\n" +
3347 3347 " <ul>\n" +
3348 3348 " <li ng-repeat=\"disk in system.disks\">\n" +
3349 3349 " <strong>{{disk.device}}</strong> {{disk.free}}/{{disk.total}}, {{disk.percentage}}% used\n" +
3350 3350 " </li>\n" +
3351 3351 " </ul>\n" +
3352 3352 " </p>\n" +
3353 3353 "\n" +
3354 3354 " <p><strong>Process stats:</strong>\n" +
3355 3355 " <ul>\n" +
3356 3356 " <li>FD soft limits: {{system.selfInfo.fds.soft}}</li>\n" +
3357 3357 " <li>FD hard limits: {{system.selfInfo.fds.hard}}</li>\n" +
3358 3358 " <li>Memlock soft limits: {{system.selfInfo.memlock.soft}}</li>\n" +
3359 3359 " <li>Memlock hard limits: {{system.selfInfo.memlock.hard}}</li>\n" +
3360 3360 " </ul>\n" +
3361 3361 " </p>\n" +
3362 3362 "\n" +
3363 3363 " </div>\n" +
3364 3364 " </div>\n" +
3365 3365 " </div>\n" +
3366 3366 " </div>\n" +
3367 3367 " <div class=\"row\">\n" +
3368 3368 " <div class=\"col-sm-12\">\n" +
3369 3369 "\n" +
3370 3370 " <div class=\"panel panel-default\">\n" +
3371 3371 " <div class=\"panel-body\">\n" +
3372 3372 "\n" +
3373 3373 " <uib-tabset>\n" +
3374 3374 " <uib-tab>\n" +
3375 3375 " <uib-tab-heading>\n" +
3376 3376 " Postgresql Tables\n" +
3377 3377 " </uib-tab-heading>\n" +
3378 3378 "\n" +
3379 3379 " <table class=\"table table-striped\">\n" +
3380 3380 " <thead>\n" +
3381 3381 " <tr>\n" +
3382 3382 " <th class=\"c1 tablename\">Table name</th>\n" +
3383 3383 " <th class=\"c2 size_human\">Size</th>\n" +
3384 3384 " </tr>\n" +
3385 3385 " </thead>\n" +
3386 3386 " <tbody>\n" +
3387 3387 " <tr class=\"r{{$index}}\" ng-repeat=\"row in system.DBtables\">\n" +
3388 3388 " <td class=\"c1\">{{row.table_name}}</td>\n" +
3389 3389 " <td class=\"c2\">{{row.size_human}}</td>\n" +
3390 3390 " </tr>\n" +
3391 3391 " </tbody>\n" +
3392 3392 " </table>\n" +
3393 3393 "\n" +
3394 3394 " </uib-tab>\n" +
3395 3395 "\n" +
3396 3396 " <uib-tab>\n" +
3397 3397 " <uib-tab-heading>\n" +
3398 3398 " Elasticsearch Indices\n" +
3399 3399 " </uib-tab-heading>\n" +
3400 3400 "\n" +
3401 3401 " <table class=\"table table-striped\">\n" +
3402 3402 " <thead>\n" +
3403 3403 " <tr>\n" +
3404 3404 " <th class=\"c1 tablename\">Index name</th>\n" +
3405 3405 " <th class=\"c2 size_human\">Size</th>\n" +
3406 3406 " </tr>\n" +
3407 3407 " </thead>\n" +
3408 3408 " <tbody>\n" +
3409 3409 " <tr class=\"r{{$index}}\" ng-repeat=\"row in system.ESIndices\">\n" +
3410 3410 " <td class=\"c1\">{{row.name}}</td>\n" +
3411 3411 " <td class=\"c2\">{{row.size_human}}</td>\n" +
3412 3412 " </tr>\n" +
3413 3413 " </tbody>\n" +
3414 3414 " </table>\n" +
3415 3415 "\n" +
3416 3416 " </uib-tab>\n" +
3417 3417 "\n" +
3418 3418 " <uib-tab>\n" +
3419 3419 " <uib-tab-heading>\n" +
3420 3420 " Processes\n" +
3421 3421 " </uib-tab-heading>\n" +
3422 3422 "\n" +
3423 3423 " <table class=\"table table-striped\">\n" +
3424 3424 " <thead>\n" +
3425 3425 " <tr>\n" +
3426 3426 " <th class=\"c1 tablename\">Owner</th>\n" +
3427 3427 " <th class=\"c2 tablename\">PID</th>\n" +
3428 3428 " <th class=\"c3 tablename\">CPU</th>\n" +
3429 3429 " <th class=\"c4 tablename\">MEM</th>\n" +
3430 3430 " <th class=\"c4 tablename\">Name</th>\n" +
3431 3431 " </tr>\n" +
3432 3432 " </thead>\n" +
3433 3433 " <tbody>\n" +
3434 3434 " <tr class=\"r{{$index}}\" ng-repeat-start=\"row in system.processInfo\">\n" +
3435 3435 " <td class=\"c1\">{{row.owner}}</td>\n" +
3436 3436 " <td class=\"c2\">{{row.pid}}</td>\n" +
3437 3437 " <td class=\"c3\">{{row.cpu}}</td>\n" +
3438 3438 " <td class=\"c4\">{{row.mem_usage}} ({{row.mem_percentage}}%)</td>\n" +
3439 3439 " <td class=\"c5\"><strong>{{row.name}}</strong></td>\n" +
3440 3440 " </tr>\n" +
3441 3441 " <tr ng-repeat-end>\n" +
3442 3442 " <td colspan=\"5\" class=\"word-wrap\">{{row.command}}</td>\n" +
3443 3443 " </tr>\n" +
3444 3444 " </tbody>\n" +
3445 3445 " </table>\n" +
3446 3446 "\n" +
3447 3447 " </uib-tab>\n" +
3448 3448 "\n" +
3449 3449 " <uib-tab>\n" +
3450 3450 " <uib-tab-heading>\n" +
3451 3451 " Python packages\n" +
3452 3452 " </uib-tab-heading>\n" +
3453 3453 "\n" +
3454 3454 " <table class=\"table\">\n" +
3455 3455 " <tr ng-repeat=\"package in system.packages\">\n" +
3456 3456 " <td>{{package.name}}</td>\n" +
3457 3457 " <td>{{package.version}}</td>\n" +
3458 3458 " </tr>\n" +
3459 3459 " </table>\n" +
3460 3460 " </p>\n" +
3461 3461 "\n" +
3462 3462 " </uib-tab>\n" +
3463 3463 "\n" +
3464 3464 " </uib-tabset>\n" +
3465 3465 " </div>\n" +
3466 3466 " </div>\n" +
3467 3467 " </div>\n" +
3468 3468 " </div>\n" +
3469 3469 "</div>\n"
3470 3470 );
3471 3471
3472 3472
3473 3473 $templateCache.put('templates/admin/users/parent_view.html',
3474 3474 "<div ui-view></div>"
3475 3475 );
3476 3476
3477 3477
3478 3478 $templateCache.put('templates/admin/users/users_create.html',
3479 3479 "<ng-include src=\"'templates/loader.html'\" ng-if=\"user.loading.user\"></ng-include>\n" +
3480 3480 "\n" +
3481 3481 "<div ng-show=\"!user.loading.user\">\n" +
3482 3482 "\n" +
3483 3483 " <div class=\"panel panel-default\">\n" +
3484 3484 " <div class=\"panel-body\">\n" +
3485 3485 "\n" +
3486 3486 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"user.user.id\">\n" +
3487 3487 " <a class=\"btn btn-default\" data-uib-dropdown-toggle><span class=\"fa fa-user-secret\"></span> Re-login to user</a>\n" +
3488 3488 " <ul class=\"dropdown-menu\">\n" +
3489 3489 " <li><a>No</a></li>\n" +
3490 3490 " <li><a ng-click=\"user.reloginUser(user)\">Yes</a></li>\n" +
3491 3491 " </ul>\n" +
3492 3492 " </span>\n" +
3493 3493 "\n" +
3494 3494 " <form name=\"user.profileForm\" class=\"form-horizontal\" ng-submit=\"user.createUser()\">\n" +
3495 3495 " <div class=\"form-group\" id=\"row-user_name\">\n" +
3496 3496 " <data-form-errors errors=\"user.profileForm.ae_validation.user_name\"></data-form-errors>\n" +
3497 3497 " <label for=\"user_name\" id=\"label-user_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3498 3498 " User name\n" +
3499 3499 " <span class=\"required\">*</span>\n" +
3500 3500 " </label>\n" +
3501 3501 " <div class=\"col-sm-8 col-lg-9\">\n" +
3502 3502 " <input class=\"form-control\" id=\"user_name\" name=\"user_name\" type=\"text\" ng-model=\"user.user.user_name\">\n" +
3503 3503 " </div>\n" +
3504 3504 " </div>\n" +
3505 3505 "\n" +
3506 3506 " <div class=\"form-group\" id=\"row-user_password\">\n" +
3507 3507 " <data-form-errors errors=\"user.profileForm.ae_validation.user_password\"></data-form-errors>\n" +
3508 3508 " <label for=\"user_password\" id=\"label-user_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3509 3509 " Password\n" +
3510 3510 " <span class=\"required\">*</span>\n" +
3511 3511 " </label>\n" +
3512 3512 " <div class=\"col-sm-8 col-lg-9\">\n" +
3513 3513 " <input class=\"form-control\" id=\"user_password\" name=\"user_password\" type=\"password\" ng-model=\"user.user.user_password\">\n" +
3514 3514 "\n" +
3515 3515 " <p class=\"m-t-1\"><a class=\"btn btn-info btn-sm\" ng-click=\"user.generatePassword()\"><span class=\"fa fa-lock\"></span> Generate password</a>\n" +
3516 3516 " <span ng-show=\"user.gen_pass.length > 0\">(generated password: {{user.gen_pass}})</span>\n" +
3517 3517 " </p>\n" +
3518 3518 "\n" +
3519 3519 " </div>\n" +
3520 3520 " </div>\n" +
3521 3521 "\n" +
3522 3522 "\n" +
3523 3523 " <div class=\"form-group\" id=\"row-email\">\n" +
3524 3524 " <data-form-errors errors=\"user.profileForm.ae_validation.email\"></data-form-errors>\n" +
3525 3525 " <label for=\"email\" id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3526 3526 " Email Address\n" +
3527 3527 " <span class=\"required\">*</span>\n" +
3528 3528 " </label>\n" +
3529 3529 " <div class=\"col-sm-8 col-lg-9\">\n" +
3530 3530 " <input class=\"form-control\" id=\"email\" name=\"email\" type=\"text\" ng-model=\"user.user.email\">\n" +
3531 3531 " </div>\n" +
3532 3532 " </div>\n" +
3533 3533 "\n" +
3534 3534 " <div class=\"form-group\" id=\"row-first_name\">\n" +
3535 3535 " <data-form-errors errors=\"user.profileForm.ae_validation.first_name\"></data-form-errors>\n" +
3536 3536 " <label for=\"first_name\" id=\"label-first_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3537 3537 " First Name\n" +
3538 3538 " </label>\n" +
3539 3539 " <div class=\"col-sm-8 col-lg-9\">\n" +
3540 3540 " <input class=\"form-control\" id=\"first_name\" name=\"first_name\" type=\"text\" ng-model=\"user.user.first_name\">\n" +
3541 3541 " </div>\n" +
3542 3542 " </div>\n" +
3543 3543 " <div class=\"form-group\" id=\"row-last_name\">\n" +
3544 3544 " <data-form-errors errors=\"user.profileForm.ae_validation.last_name\"></data-form-errors>\n" +
3545 3545 " <label for=\"last_name\" id=\"label-last_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3546 3546 " Last Name\n" +
3547 3547 " </label>\n" +
3548 3548 " <div class=\"col-sm-8 col-lg-9\">\n" +
3549 3549 " <input class=\"form-control\" id=\"last_name\" name=\"last_name\" type=\"text\" ng-model=\"user.user.last_name\">\n" +
3550 3550 " </div>\n" +
3551 3551 " </div>\n" +
3552 3552 "\n" +
3553 3553 " <div class=\"form-group\" id=\"row-status\">\n" +
3554 3554 " <data-form-errors errors=\"user.profileForm.ae_validation.status\"></data-form-errors>\n" +
3555 3555 " <label for=\"status\" id=\"label-status\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3556 3556 " Active\n" +
3557 3557 " </label>\n" +
3558 3558 " <div class=\"col-sm-8 col-lg-9\">\n" +
3559 3559 " <input checked class=\"form-control\" id=\"status\" name=\"status\" type=\"checkbox\" ng-model=\"user.user.status\">\n" +
3560 3560 " </div>\n" +
3561 3561 " </div>\n" +
3562 3562 "\n" +
3563 3563 " <div class=\"form-group\" id=\"row-submit\">\n" +
3564 3564 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3565 3565 " </label>\n" +
3566 3566 " <div class=\"col-sm-8 col-lg-9\">\n" +
3567 3567 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"{{$state.params.userId ? 'Update' : 'Add'}} User\">\n" +
3568 3568 " </div>\n" +
3569 3569 " </div>\n" +
3570 3570 " </form>\n" +
3571 3571 " </div>\n" +
3572 3572 " </div>\n" +
3573 3573 "\n" +
3574 3574 "\n" +
3575 3575 " <div class=\"panel panel-default\" ng-if=\"user.user.id\">\n" +
3576 3576 " <div class=\"panel-heading\">\n" +
3577 3577 " <h3 class=\"panel-title\">Permission Summary</h3>\n" +
3578 3578 " </div>\n" +
3579 3579 " <div class=\"panel-body\">\n" +
3580 3580 " <h3>Direct application permissions</h3>\n" +
3581 3581 "\n" +
3582 3582 " <ul class=\"list-group\">\n" +
3583 3583 " <li ng-repeat=\"perm in user.resourcePermissions.user.application\" class=\"animate-repeat list-group-item\">\n" +
3584 3584 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3585 3585 " <div class=\"pull-right\">\n" +
3586 3586 "\n" +
3587 3587 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3588 3588 "\n" +
3589 3589 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Application\" data-ui-sref=\"applications.update({resourceId:perm.self.resource_id})\">\n" +
3590 3590 " <span class=\"fa fa-cog\"></span>\n" +
3591 3591 " </a>\n" +
3592 3592 " </div>\n" +
3593 3593 " </li>\n" +
3594 3594 " </ul>\n" +
3595 3595 "\n" +
3596 3596 " <h3>Direct dashboard permissions</h3>\n" +
3597 3597 "\n" +
3598 3598 " <ul class=\"list-group\">\n" +
3599 3599 " <li ng-repeat=\"perm in user.resourcePermissions.user.dashboard\" class=\"animate-repeat list-group-item\">\n" +
3600 3600 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3601 3601 " <div class=\"pull-right\">\n" +
3602 3602 "\n" +
3603 3603 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3604 3604 "\n" +
3605 3605 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Dashboard\" data-ui-sref=\"dashboard.update({resourceId:perm.self.resource_id})\">\n" +
3606 3606 " <span class=\"fa fa-cog\"></span>\n" +
3607 3607 " </a>\n" +
3608 3608 " </div>\n" +
3609 3609 " </li>\n" +
3610 3610 " </ul>\n" +
3611 3611 "\n" +
3612 3612 " </div>\n" +
3613 3613 "\n" +
3614 3614 " </div>\n" +
3615 3615 "\n" +
3616 3616 "\n" +
3617 3617 "</div>\n"
3618 3618 );
3619 3619
3620 3620
3621 3621 $templateCache.put('templates/admin/users/users_list.html',
3622 3622 "<ng-include src=\"'templates/loader.html'\" ng-if=\"users.loading.users\"></ng-include>\n" +
3623 3623 "\n" +
3624 3624 "<div ng-show=\"!users.loading.users\">\n" +
3625 3625 "\n" +
3626 3626 " <div class=\"panel panel-default\">\n" +
3627 3627 "\n" +
3628 3628 " <div class=\"panel-heading\">\n" +
3629 3629 " {{users.activeUsers}} active out of {{users.users.length}} users\n" +
3630 3630 " </div>\n" +
3631 3631 "\n" +
3632 3632 "\n" +
3633 3633 " <table st-table=\"displayedCollection\" st-safe-src=\"users.users\" class=\"table table-striped\">\n" +
3634 3634 " <thead>\n" +
3635 3635 " <tr>\n" +
3636 3636 " <th class=\"user_name\" st-sort=\"user_name\"><a>Username</a></th>\n" +
3637 3637 " <th class=\"email\" st-sort=\"email\"><a>Email</a></th>\n" +
3638 3638 " <th class=\"status\" st-sort=\"status\"><a>Status</a></th>\n" +
3639 3639 " <th st-sort=\"first_name\"><a>First Name</a></th>\n" +
3640 3640 " <th st-sort=\"last_name\"><a>Last Name</a></th>\n" +
3641 3641 " <th st-sort=\"last_login_date\"><a>Last login</a></th>\n" +
3642 3642 " <th class=\"options\"></th>\n" +
3643 3643 " </tr>\n" +
3644 3644 " <tr>\n" +
3645 3645 " <th><input st-search=\"user_name\" placeholder=\"search for user name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3646 3646 " <th><input st-search=\"email\" placeholder=\"search for email\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3647 3647 " <th></th>\n" +
3648 3648 " <th><input st-search=\"first_name\" placeholder=\"search for first name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3649 3649 " <th><input st-search=\"last_name\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3650 3650 " <th><input st-search=\"last_login_date\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3651 3651 " <th></th>\n" +
3652 3652 " </tr>\n" +
3653 3653 " </thead>\n" +
3654 3654 " <tbody>\n" +
3655 3655 "\n" +
3656 3656 " <tr ng-repeat=\"user in displayedCollection track by user.id\">\n" +
3657 3657 " <td><img src=\"{{user.gravatar_url}}\" class=\"avatar\"> {{user.user_name}}</td>\n" +
3658 3658 " <td class=\"word-wrap small\">{{user.email}}</td>\n" +
3659 3659 " <td class=\"text-center\"><span class=\"fa\" ng-class=\"{'fa-check-circle':user.status, 'fa-times':!user.status}\"></span></td>\n" +
3660 3660 " <td class=\"word-wrap small\">{{user.first_name}}</td>\n" +
3661 3661 " <td class=\"word-wrap small\">{{user.last_name}}</td>\n" +
3662 3662 " <td><span data-uib-tooltip=\"{{user.last_login_date}}\" class=\"small\">{{user.last_login_date | isoToRelativeTime}}</span></td>\n" +
3663 3663 " <td>\n" +
3664 3664 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.user.update({userId:user.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
3665 3665 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
3666 3666 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3667 3667 " <ul class=\"dropdown-menu\">\n" +
3668 3668 " <li><a>No</a></li>\n" +
3669 3669 " <li><a ng-click=\"users.removeUser(user)\">Yes</a></li>\n" +
3670 3670 " </ul>\n" +
3671 3671 " </span>\n" +
3672 3672 " </tr>\n" +
3673 3673 " <tfoot>\n" +
3674 3674 " <tr>\n" +
3675 3675 " <td colspan=\"6\" class=\"text-center\">\n" +
3676 3676 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
3677 3677 " </td>\n" +
3678 3678 " </tr>\n" +
3679 3679 " </tfoot>\n" +
3680 3680 " </tbody>\n" +
3681 3681 " </table>\n" +
3682 3682 "\n" +
3683 3683 "\n" +
3684 3684 " </div>\n" +
3685 3685 "</div>\n"
3686 3686 );
3687 3687
3688 3688
3689 3689 $templateCache.put('templates/applications/applications_purge_logs.html',
3690 3690 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications_purge.loading.applications\"></ng-include>\n" +
3691 3691 "\n" +
3692 3692 "<div ng-show=\"!applications_purge.loading.applications\">\n" +
3693 3693 " <div class=\"panel panel-default\">\n" +
3694 3694 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
3695 3695 " <div class=\"panel-body\">\n" +
3696 3696 "\n" +
3697 3697 " <form method=\"post\" class=\"form-horizontal\" name=\"applications_purge.form\" ng-submit=\"applications_purge.purgeLogs()\">\n" +
3698 3698 " <div class=\"form-group\">\n" +
3699 3699 " <label class=\"control-label col-sm-3 col-lg-2\">Application:</label>\n" +
3700 3700 "\n" +
3701 3701 " <div class=\"col-sm-9 col-lg-10 form-inline\">\n" +
3702 3702 " <select ng-model=\"applications_purge.selectedResource\" ng-change=\"applications_purge.getCommonKeys()\"\n" +
3703 3703 " ng-options=\"r.resource_id as r.resource_name for r in applications_purge.applications\" class=\"form-control\"></select>\n" +
3704 3704 " </div>\n" +
3705 3705 " </div>\n" +
3706 3706 "\n" +
3707 3707 " <div class=\"form-group\">\n" +
3708 3708 " <label class=\"control-label col-sm-3 col-lg-2\">Namespace:</label>\n" +
3709 3709 "\n" +
3710 3710 " <div class=\"col-sm-9 col-lg-10\">\n" +
3711 3711 " <input type=\"text\" name=\"namespace\" ng-model=\"applications_purge.namespace\"\n" +
3712 3712 " placeholder=\"Namespace to filter on\" uib-typeahead=\"ns for ns in applications_purge.commonNamespaces\"\n" +
3713 3713 " class=\"form-control\">\n" +
3714 3714 " </div>\n" +
3715 3715 " </div>\n" +
3716 3716 "\n" +
3717 3717 " <div class=\"form-group\">\n" +
3718 3718 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
3719 3719 "\n" +
3720 3720 " <div class=\"col-sm-8 col-lg-9 \">\n" +
3721 3721 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Purge logs meeting the criteria\">\n" +
3722 3722 " </div>\n" +
3723 3723 " </div>\n" +
3724 3724 "\n" +
3725 3725 " </form>\n" +
3726 3726 " </div>\n" +
3727 3727 " </div>\n" +
3728 3728 "</div>\n"
3729 3729 );
3730 3730
3731 3731
3732 3732 $templateCache.put('templates/applications/applications_update.html',
3733 3733 "<ng-include src=\"'templates/loader.html'\" ng-if=\"application.loading.application\"></ng-include>\n" +
3734 3734 "\n" +
3735 3735 "<div ng-show=\"!application.loading.application\">\n" +
3736 3736 "\n" +
3737 3737 " <div class=\"panel panel-default\">\n" +
3738 3738 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
3739 3739 " <div class=\"panel-body\">\n" +
3740 3740 "\n" +
3741 3741 " <div class=\"row\" ng-show=\"application.resource.resource_id\">\n" +
3742 3742 " <div class=\"col-sm-6\">\n" +
3743 3743 "\n" +
3744 3744 " <uib-tabset>\n" +
3745 3745 " <uib-tab>\n" +
3746 3746 " <uib-tab-heading>\n" +
3747 3747 " API keys\n" +
3748 3748 " </uib-tab-heading>\n" +
3749 3749 "\n" +
3750 3750 " <p><strong>PRIVATE API KEY:</strong></p>\n" +
3751 3751 " <p>\n" +
3752 3752 " <div class=\"well well-sm\">{{ application.resource.api_key }}</div>\n" +
3753 3753 " </p>\n" +
3754 3754 " <p><strong>PUBLIC API KEY</strong> (for javascript clients):</p>\n" +
3755 3755 " <p>\n" +
3756 3756 " <div class=\"well well-sm\">{{ application.resource.public_key }}</div>\n" +
3757 3757 " </p>\n" +
3758 3758 " <p><small>Your key will be used to identify to which application your data\n" +
3759 3759 " belongs to please keep them private at all times.</small></p>\n" +
3760 3760 "\n" +
3761 3761 " </uib-tab>\n" +
3762 3762 "\n" +
3763 3763 " <uib-tab>\n" +
3764 3764 " <uib-tab-heading>\n" +
3765 3765 " <span class=\"btn btn-danger btn-xs\"><span class=\"fa fa-exclamation-triangle\"></span></span> Regenerate API keys\n" +
3766 3766 " </uib-tab-heading>\n" +
3767 3767 " <p>Are you sure you want to regenerate API KEY for this application?</p>\n" +
3768 3768 " <p>All client application keys will need to be updated.</p>\n" +
3769 3769 " <form ng-submit=\"application.regenerateAPIKeys()\" name=\"application.regenerateAPIKeysForm\" class=\"form-inline\">\n" +
3770 3770 " <data-form-errors errors=\"application.regenerateAPIKeysForm.ae_validation.password\"></data-form-errors>\n" +
3771 3771 " <div class=\"form-group\">\n" +
3772 3772 " <input type=\"password\" name=\"confirm\"\n" +
3773 3773 " placeholder=\"Enter your password to proceed\" class=\"form-control\" ng-model=\"application.regenerateAPIKeysPassword\">\n" +
3774 3774 " <input type=\"submit\" class=\"btn btn-danger\" value=\"Confirm\">\n" +
3775 3775 " </div>\n" +
3776 3776 " </form>\n" +
3777 3777 " </uib-tab>\n" +
3778 3778 " </uib-tabset>\n" +
3779 3779 " </div>\n" +
3780 3780 " <div class=\"col-sm-6 text-center\">\n" +
3781 3781 " <h2 class=\"m-t-0\">How to connect your application?</h2>\n" +
3782 3782 " <p>Visit our <a href=\"{{AeConfig.urls.docs}}\"><strong>developer documentation</strong></a> for step-by-step integration instructions.</p>\n" +
3783 3783 " <div class=\"clearfix\"></div>\n" +
3784 3784 " <p class=\"text-center\">\n" +
3785 3785 " <a href=\"{{AeConfig.urls.docs}}\"><img src=\"/static/appenlight/images/logos/django_small.png\" alt=\"Django Logo\">\n" +
3786 3786 " <img src=\"/static/appenlight/images/logos/pyramid_small.png\" alt=\"Pyramid Logo\">\n" +
3787 3787 " <img src=\"/static/appenlight/images/logos/flask_small.png\" alt=\"Flask Logo\"></a>\n" +
3788 3788 "\n" +
3789 3789 " <a href=\"{{AeConfig.urls.docs}}\"><img src=\"/static/appenlight/images/logos/js_small.png\" alt=\"Javascript Logo\">\n" +
3790 3790 " <img src=\"/static/appenlight/images/logos/nodejs.png\" alt=\"Node.js\"></a>\n" +
3791 3791 " <img src=\"/static/appenlight/images/logos/ruby_small.png\" alt=\"Ruby Logo\">\n" +
3792 3792 " <img src=\"/static/appenlight/images/logos/php_small.png\" alt=\"PHP Logo\">\n" +
3793 3793 " </a>\n" +
3794 3794 "\n" +
3795 3795 " </p>\n" +
3796 3796 " </div>\n" +
3797 3797 " </div>\n" +
3798 3798 "\n" +
3799 3799 " <hr ng-show=\"application.resource.resource_id\">\n" +
3800 3800 "\n" +
3801 3801 " <form method=\"post\" class=\"form-horizontal\" name=\"application.BasicForm\" ng-submit=\"application.updateBasicForm()\" novalidate>\n" +
3802 3802 " <div class=\"form-group\">\n" +
3803 3803 " <data-form-errors errors=\"application.BasicForm.ae_validation.resource_name\"></data-form-errors>\n" +
3804 3804 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3805 3805 " Application name\n" +
3806 3806 " <span class=\"required\">*</span>\n" +
3807 3807 " </label>\n" +
3808 3808 "\n" +
3809 3809 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3810 3810 " <input class=\"form-control\" name=\"resource_name\" placeholder=\"Application Name\" type=\"text\" ng-model=\"application.resource.resource_name\">\n" +
3811 3811 " </div>\n" +
3812 3812 "\n" +
3813 3813 "\n" +
3814 3814 " </div>\n" +
3815 3815 "\n" +
3816 3816 " <div class=\"form-group\">\n" +
3817 3817 " <data-form-errors errors=\"application.BasicForm.ae_validation.domains\"></data-form-errors>\n" +
3818 3818 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3819 3819 " Domain names for CORS headers\n" +
3820 3820 " </label>\n" +
3821 3821 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3822 3822 " <textarea class=\"form-control\" name=\"domains\" ng-model=\"application.resource.domains\"></textarea>\n" +
3823 3823 " <p class=\"description\">Required for Javascript error tracking (one line one domain, skip http:// part)</p>\n" +
3824 3824 " </div>\n" +
3825 3825 "\n" +
3826 3826 "\n" +
3827 3827 " </div>\n" +
3828 3828 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
3829 3829 " <data-form-errors errors=\"application.BasicForm.ae_validation.default_grouping\"></data-form-errors>\n" +
3830 3830 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3831 3831 " Default grouping for errors\n" +
3832 3832 " </label>\n" +
3833 3833 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3834 3834 " <select class=\"form-control\" name=\"default_grouping\" ng-model=\"application.resource.default_grouping\" ng-options=\"i[0] as i[1] for i in application.groupingOptions\"></select>\n" +
3835 3835 " </div>\n" +
3836 3836 "\n" +
3837 3837 " </div>\n" +
3838 3838 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
3839 3839 " <data-form-errors errors=\"application.BasicForm.ae_validation.error_report_threshold\"></data-form-errors>\n" +
3840 3840 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3841 3841 " Alert on error reports\n" +
3842 3842 " <span class=\"required\">*</span>\n" +
3843 3843 " </label>\n" +
3844 3844 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3845 3845 " <input class=\"form-control\" name=\"error_report_threshold\" type=\"text\" ng-model=\"application.resource.error_report_threshold\">\n" +
3846 3846 " <p class=\"description\">Application requires to send at least this amount of error reports per minute to open alert</p>\n" +
3847 3847 " </div>\n" +
3848 3848 " </div>\n" +
3849 3849 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
3850 3850 " <data-form-errors errors=\"application.BasicForm.ae_validation.slow_report_threshold\"></data-form-errors>\n" +
3851 3851 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3852 3852 " Alert on slow reports\n" +
3853 3853 " <span class=\"required\">*</span>\n" +
3854 3854 " </label>\n" +
3855 3855 "\n" +
3856 3856 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3857 3857 " <input class=\"form-control\" name=\"slow_report_threshold\" type=\"text\" ng-model=\"application.resource.slow_report_threshold\">\n" +
3858 3858 " <p class=\"description\">Application requires to send at least this amount of slow reports per minute to open alert</p>\n" +
3859 3859 " </div>\n" +
3860 3860 " </div>\n" +
3861 3861 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
3862 3862 " <data-form-errors errors=\"application.BasicForm.ae_validation.allow_permanent_storage\"></data-form-errors>\n" +
3863 3863 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3864 3864 " Permanent logs\n" +
3865 3865 " </label>\n" +
3866 3866 " <div class=\" col-sm-8 col-lg-9\">\n" +
3867 3867 " <input class=\"form-control\" name=\"allow_permanent_storage\" type=\"checkbox\" ng-model=\"application.resource.allow_permanent_storage\">\n" +
3868 3868 " <p class=\"description\">Allow permanent storage of logs in separate DB partitions (only administrator can enable this feature)</p>\n" +
3869 3869 " </div>\n" +
3870 3870 " </div>\n" +
3871 3871 " <div class=\"form-group\">\n" +
3872 3872 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3873 3873 "\n" +
3874 3874 " </label>\n" +
3875 3875 "\n" +
3876 3876 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3877 3877 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"{{application.resource.resource_id? 'Update' : 'Create'}} Application\">\n" +
3878 3878 " </div>\n" +
3879 3879 " </div>\n" +
3880 3880 " </form>\n" +
3881 3881 " </div>\n" +
3882 3882 " </div>\n" +
3883 3883 "\n" +
3884 3884 " <div class=\"panel panel-default\" ng-show=\"application.resource.resource_id\">\n" +
3885 3885 " <div class=\"panel-heading\">\n" +
3886 3886 " <h3 class=\"panel-title\">Plugins</h3>\n" +
3887 3887 " </div>\n" +
3888 3888 " <div class=\"panel-body\">\n" +
3889 3889 "\n" +
3890 3890 " <plugin-config resource=\"application.resource\"\n" +
3891 3891 " section=\"'application.update'\"\n" +
3892 3892 " ng-if=\"application.resource.resource_id\">\n" +
3893 3893 " </plugin-config>\n" +
3894 3894 "\n" +
3895 3895 " </div>\n" +
3896 3896 " </div>\n" +
3897 3897 "\n" +
3898 3898 " <div class=\"panel panel-default m-t-1\" ng-show=\"application.resource.resource_id\">\n" +
3899 3899 " <div class=\"panel-heading\">\n" +
3900 3900 " <h3 class=\"panel-title\">API Testing</h3>\n" +
3901 3901 " </div>\n" +
3902 3902 " <div class=\"panel-body\">\n" +
3903 3903 " <p>Please be sure to add at least one <a data-ui-sref=\"user.alert_channels.email\"><strong>email alert channel</strong></a> for your account.</p>\n" +
3904 3904 " <p>This will enable AppEnlight to send you notification emails about errors inside your application.</p>\n" +
3905 3905 " <p><strong>After this is done you can use this CURL commands to test APIs:</strong></p>\n" +
3906 3906 " <p>(Please note that the data like execution times is semi randomly generated)</p>\n" +
3907 3907 " <uib-tabset>\n" +
3908 3908 " <uib-tab>\n" +
3909 3909 " <uib-tab-heading>\n" +
3910 3910 " Log API\n" +
3911 3911 " </uib-tab-heading>\n" +
3912 3912 "\n" +
3913 3913 " <div class=\"codehilite\">\n" +
3914 3914 " <pre class=\"m-a-0\">\n" +
3915 3915 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/logs?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
3916 3916 " [\n" +
3917 3917 " {\n" +
3918 3918 " \"log_level\": \"WARNING\",\n" +
3919 3919 " \"message\": \"OMG ValueError happened\",\n" +
3920 3920 " \"namespace\": \"some.namespace.indicator\",\n" +
3921 3921 " \"request_id\": \"SOME_UUID\",\n" +
3922 3922 " \"permanent\": false,\n" +
3923 3923 " \"primary_key\": \"random_key\",\n" +
3924 3924 " \"server\": \"some.server.hostname\",\n" +
3925 3925 " \"date\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
3926 3926 " \"tags\": [[\"tag1\",\"value\"], [\"tag2\", 5]]\n" +
3927 3927 " },\n" +
3928 3928 " {\n" +
3929 3929 " \"log_level\": \"ERROR\",\n" +
3930 3930 " \"message\": \"OMG ValueError happened2\",\n" +
3931 3931 " \"namespace\": \"some.namespace.indicator\",\n" +
3932 3932 " \"request_id\": \"SOME_UUID\",\n" +
3933 3933 " \"permanent\": false,\n" +
3934 3934 " \"server\": \"some.server.hostname\",\n" +
3935 3935 " \"date\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\"\n" +
3936 3936 " }\n" +
3937 3937 " ]'\n" +
3938 3938 " </pre>\n" +
3939 3939 " </div>\n" +
3940 3940 "\n" +
3941 3941 " </uib-tab>\n" +
3942 3942 "\n" +
3943 3943 " <uib-tab>\n" +
3944 3944 " <uib-tab-heading>\n" +
3945 3945 " Report API\n" +
3946 3946 " </uib-tab-heading>\n" +
3947 3947 "\n" +
3948 3948 " <div class=\"codehilite\">\n" +
3949 3949 " <pre class=\"m-a-0\">\n" +
3950 3950 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/reports?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
3951 3951 " [{\n" +
3952 3952 " \"client\": \"your-client-name-python\",\n" +
3953 3953 " \"language\": \"python\",\n" +
3954 3954 " \"view_name\": \"views/foo:bar\",\n" +
3955 3955 " \"server\": \"SERVERNAME/INSTANCENAME\",\n" +
3956 3956 " \"priority\": 5,\n" +
3957 3957 " \"error\": \"OMG ValueError happened\",\n" +
3958 3958 " \"occurences\":1,\n" +
3959 3959 " \"http_status\": 500,\n" +
3960 3960 " \"tags\": [[\"tag1\",\"value\"], [\"tag2\", 5]],\n" +
3961 3961 " \"username\": \"USER\",\n" +
3962 3962 " \"url\": \"HTTP://SOMEURL\",\n" +
3963 3963 " \"ip\": \"127.0.0.1\",\n" +
3964 3964 " \"start_time\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
3965 3965 " \"end_time\": \"{{application.momentJs.utc().milliseconds(0).add(2, 'seconds').toISOString()}}\",\n" +
3966 3966 " \"user_agent\": \"BROWSER_AGENT\",\n" +
3967 3967 " \"extra\": [[\"message\",\"CUSTOM MESSAGE\"], [\"custom_value\", \"some payload\"]],\n" +
3968 3968 " \"request_id\": \"SOME_UUID\",\n" +
3969 3969 " \"request\": {\"REQUEST_METHOD\": \"GET\",\n" +
3970 3970 " \"PATH_INFO\": \"/FOO/BAR\",\n" +
3971 3971 " \"POST\": {\"FOO\":\"BAZ\",\"XXX\":\"YYY\"}\n" +
3972 3972 " },\n" +
3973 3973 " \"slow_calls\":[{\n" +
3974 3974 " \"start\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
3975 3975 " \"end\": \"{{application.momentJs.utc().milliseconds(0).add(1, 'seconds').toISOString()}}\",\n" +
3976 3976 " \"type\": \"sql\",\n" +
3977 3977 " \"subtype\": \"postgresql\",\n" +
3978 3978 " \"parameters\": [\"QPARAM1\",\"QPARAM2\",\"QPARAMX\"],\n" +
3979 3979 " \"statement\": \"QUERY\"\n" +
3980 3980 " }],\n" +
3981 3981 " \"request_stats\": {\n" +
3982 3982 " \"main\": 2.50779,\n" +
3983 3983 " \"nosql\": 0.01008,\n" +
3984 3984 " \"nosql_calls\": 17.0,\n" +
3985 3985 " \"remote\": 0.0,\n" +
3986 3986 " \"remote_calls\": 0.0,\n" +
3987 3987 " \"sql\": 1,\n" +
3988 3988 " \"sql_calls\": 1.0,\n" +
3989 3989 " \"tmpl\": 0.0,\n" +
3990 3990 " \"tmpl_calls\": 0.0,\n" +
3991 3991 " \"custom\": 0.0,\n" +
3992 3992 " \"custom_calls\": 0.0\n" +
3993 3993 " },\n" +
3994 3994 " \"traceback\": [\n" +
3995 3995 " {\"cline\": \"return foo_bar_baz(1,2,3)\",\n" +
3996 3996 " \"file\": \"somedir/somefile.py\",\n" +
3997 3997 " \"fn\": \"somefunction\",\n" +
3998 3998 " \"line\": 454,\n" +
3999 3999 " \"vars\": [[\"a_list\",\n" +
4000 4000 " [\"1\",2,\"4\",\"5\",6]],\n" +
4001 4001 " [\"b\", {\"1\": \"2\", \"ccc\": \"ddd\", \"1\": \"a\"}],\n" +
4002 4002 " [\"obj\", \"object object at 0x7f0030853dc0\"]]\n" +
4003 4003 " },\n" +
4004 4004 " {\"cline\": \"OMG ValueError happened\",\n" +
4005 4005 " \"file\": \"\",\n" +
4006 4006 " \"fn\": \"\",\n" +
4007 4007 " \"line\": \"\",\n" +
4008 4008 " \"vars\": []}\n" +
4009 4009 " ]\n" +
4010 4010 " }]'\n" +
4011 4011 " </pre>\n" +
4012 4012 " </div>\n" +
4013 4013 "\n" +
4014 4014 " </uib-tab>\n" +
4015 4015 "\n" +
4016 4016 " <uib-tab>\n" +
4017 4017 "\n" +
4018 4018 " <uib-tab-heading>\n" +
4019 4019 " Metrics API\n" +
4020 4020 " </uib-tab-heading>\n" +
4021 4021 "\n" +
4022 4022 " <div class=\"codehilite\">\n" +
4023 4023 " <pre class=\"m-a-0\">\n" +
4024 4024 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/general_metrics?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
4025 4025 " [{\n" +
4026 4026 " \"namespace\": \"some.monitor\",\n" +
4027 4027 " \"timestamp\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4028 4028 " \"server_name\": \"server.name\",\n" +
4029 4029 " \"tags\": [[\"value1\", 15.7], [\"value2\", 26]]}]'\n" +
4030 4030 " </pre>\n" +
4031 4031 " </div>\n" +
4032 4032 "\n" +
4033 4033 " </uib-tab>\n" +
4034 4034 "\n" +
4035 4035 " <uib-tab>\n" +
4036 4036 "\n" +
4037 4037 " <uib-tab-heading>\n" +
4038 4038 " Request Stats API\n" +
4039 4039 " </uib-tab-heading>\n" +
4040 4040 "\n" +
4041 4041 " <div class=\"codehilite\">\n" +
4042 4042 " <pre class=\"m-a-0\">\n" +
4043 4043 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/request_stats?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
4044 4044 " [{\"server\": \"some.server.hostname\",\n" +
4045 4045 " \"timestamp\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4046 4046 " \"metrics\": [[\"dir/module:func\",\n" +
4047 4047 " {\"custom\": 0.0,\n" +
4048 4048 " \"custom_calls\": 0,\n" +
4049 4049 " \"main\": 0.01664,\n" +
4050 4050 " \"nosql\": 0.00061,\n" +
4051 4051 " \"nosql_calls\": 23,\n" +
4052 4052 " \"remote\": 0.0,\n" +
4053 4053 " \"remote_calls\": 0,\n" +
4054 4054 " \"requests\": 1,\n" +
4055 4055 " \"sql\": 0.00105,\n" +
4056 4056 " \"sql_calls\": 2,\n" +
4057 4057 " \"tmpl\": 0.0,\n" +
4058 4058 " \"tmpl_calls\": 0}],\n" +
4059 4059 " [\"SomeView.function\",\n" +
4060 4060 " {\"custom\": 0.0,\n" +
4061 4061 " \"custom_calls\": 0,\n" +
4062 4062 " \"main\": 0.647261,\n" +
4063 4063 " \"nosql\": 0.306554,\n" +
4064 4064 " \"nosql_calls\": 140,\n" +
4065 4065 " \"remote\": 0.0,\n" +
4066 4066 " \"remote_calls\": 0,\n" +
4067 4067 " \"requests\": 28,\n" +
4068 4068 " \"sql\": 0.0,\n" +
4069 4069 " \"sql_calls\": 0,\n" +
4070 4070 " \"tmpl\": 0.0,\n" +
4071 4071 " \"tmpl_calls\": 0}]]\n" +
4072 4072 " }]'\n" +
4073 4073 " </pre>\n" +
4074 4074 " </div>\n" +
4075 4075 "\n" +
4076 4076 " </uib-tab>\n" +
4077 4077 "\n" +
4078 4078 " </uib-tabset>\n" +
4079 4079 "\n" +
4080 4080 " </div>\n" +
4081 4081 " </div>\n" +
4082 4082 "\n" +
4083 4083 " <permissions-form resource=\"application.resource\" current-permissions=\"application.resource.current_permissions\"\n" +
4084 4084 " possible-permissions=\"application.resource.possible_permissions\" ng-if=\"application.resource.resource_id\"></permissions-form>\n" +
4085 4085 "\n" +
4086 4086 " <div class=\"panel panel-info\" ng-show=\"application.resource.resource_id\">\n" +
4087 4087 " <div class=\"panel-heading\">\n" +
4088 4088 " <h3 class=\"panel-title\">Postprocessing</h3>\n" +
4089 4089 " </div>\n" +
4090 4090 " <div class=\"panel-body\">\n" +
4091 4091 " <p>This section allows you influence the rating of report groups - if rule is matched once its not executed anymore</p>\n" +
4092 4092 "\n" +
4093 4093 " <p>\n" +
4094 4094 " <a class=\"btn btn-info\" ng-click=\"application.addRule()\"><span class=\"fa fa-plus-circle\"></span> Add rule</a>\n" +
4095 4095 " </p>\n" +
4096 4096 "\n" +
4097 4097 " <post-process-action action=\"action\" resource=\"application.resource\" ng-repeat=\"action in application.resource.postprocessing_rules\"></post-process-action>\n" +
4098 4098 " </div>\n" +
4099 4099 " </div>\n" +
4100 4100 "\n" +
4101 4101 " <div class=\"panel panel-danger\" ng-show=\"application.resource.resource_id\">\n" +
4102 4102 " <div class=\"panel-heading\">\n" +
4103 4103 " <h3 class=\"panel-title\">Administration</h3>\n" +
4104 4104 " </div>\n" +
4105 4105 " <div class=\"panel-body\">\n" +
4106 4106 " <h2>Transfer ownership</h2>\n" +
4107 4107 " <p>Please note that by transfering ownership you WILL lose access to the application data and new owner needs to give you access permission</p>\n" +
4108 4108 " <div class=\"confirmation_form\" ng-submit=\"application.transferApplication()\">\n" +
4109 4109 " <form class=\"form-horizontal\" name=\"application.formTransfer\">\n" +
4110 4110 " <div class=\"form-group\">\n" +
4111 4111 " <data-form-errors errors=\"application.formTransfer.ae_validation.password\"></data-form-errors>\n" +
4112 4112 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4113 4113 " Password\n" +
4114 4114 " </label>\n" +
4115 4115 " <div class=\"col-sm-8 col-lg-9\">\n" +
4116 4116 " <input class=\"form-control\" name=\"password\" type=\"password\" ng-model=\"application.formTransferModel.password\">\n" +
4117 4117 " </div>\n" +
4118 4118 " </div>\n" +
4119 4119 " <div class=\"form-group\">\n" +
4120 4120 " <data-form-errors errors=\"application.formTransfer.ae_validation.user_name\"></data-form-errors>\n" +
4121 4121 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4122 4122 " New owners username\n" +
4123 4123 " </label>\n" +
4124 4124 " <div class=\"col-sm-8 col-lg-9\">\n" +
4125 4125 " <input class=\"form-control\" name=\"user_name\" type=\"text\" ng-model=\"application.formTransferModel.user_name\">\n" +
4126 4126 " </div>\n" +
4127 4127 " </div>\n" +
4128 4128 " <div class=\"form-group\">\n" +
4129 4129 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4130 4130 " </label>\n" +
4131 4131 " <div class=\"col-sm-8 col-lg-9\">\n" +
4132 4132 " <button class=\"btn btn-danger\">\n" +
4133 4133 " <span class=\"fa fa-user-plus\"></span>\n" +
4134 4134 " Transfer ownership of application\n" +
4135 4135 " </button>\n" +
4136 4136 " </div>\n" +
4137 4137 " </div>\n" +
4138 4138 " </form>\n" +
4139 4139 " </div>\n" +
4140 4140 "\n" +
4141 4141 " <hr/>\n" +
4142 4142 "\n" +
4143 4143 " <h2>Remove application</h2>\n" +
4144 4144 " <p><strong>This operation will wipe out all data from database - there is no undo.</strong></p>\n" +
4145 4145 "\n" +
4146 4146 " <div class=\"confirmation_form\">\n" +
4147 4147 " <form class=\"form-horizontal\" name=\"application.formDelete\" ng-submit=\"application.deleteApplication()\">\n" +
4148 4148 " <div class=\"form-group\">\n" +
4149 4149 " <data-form-errors errors=\"application.formDelete.ae_validation.password\"></data-form-errors>\n" +
4150 4150 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4151 4151 " Password\n" +
4152 4152 " </label>\n" +
4153 4153 " <div class=\"col-sm-8 col-lg-9\">\n" +
4154 4154 " <input class=\"form-control\" name=\"password\" type=\"password\" ng-model=\"application.formDeleteModel.password\">\n" +
4155 4155 " </div>\n" +
4156 4156 " </div>\n" +
4157 4157 " <div class=\"form-group\">\n" +
4158 4158 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4159 4159 "\n" +
4160 4160 " </label>\n" +
4161 4161 " <div class=\"col-sm-8 col-lg-9\">\n" +
4162 4162 " <button class=\"btn btn-danger\">\n" +
4163 4163 " <span class=\"fa fa-trash-o\"></span>\n" +
4164 4164 " Delete my application\n" +
4165 4165 " </button>\n" +
4166 4166 " </div>\n" +
4167 4167 " </div>\n" +
4168 4168 " </form>\n" +
4169 4169 " </div>\n" +
4170 4170 " </div>\n" +
4171 4171 " </div>\n" +
4172 4172 "</div>\n"
4173 4173 );
4174 4174
4175 4175
4176 4176 $templateCache.put('templates/applications/breadcrumbs.html',
4177 4177 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('applications')\">\n" +
4178 4178 " <li>Applications</li>\n" +
4179 4179 " <li ng-show=\"$state.includes('applications.list')\" ng-class=\"{bold:$state.is('applications.list')}\">Owned applications</li>\n" +
4180 4180 " <li ng-show=\"$state.includes('applications.update')\" ng-class=\"{bold:$state.is('applications.update')}\">Modify application</li>\n" +
4181 4181 " <li ng-show=\"$state.includes('applications.integrations')\" ng-class=\"{bold:$state.includes('applications.integrations')}\">Integrations</li>\n" +
4182 4182 " <li ng-show=\"$state.includes('applications.purge_logs')\" ng-class=\"{bold:$state.includes('applications.purge_logs')}\">Log Purging</li>\n" +
4183 4183 "</ol>\n"
4184 4184 );
4185 4185
4186 4186
4187 4187 $templateCache.put('templates/applications/integrations.html',
4188 4188 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application && $state.is('applications.integrations')\"></ng-include>\n" +
4189 4189 "\n" +
4190 4190 "<ui-view>\n" +
4191 4191 " <div class=\"panel panel-default\" ng-show=\"!integrations.loading.application\">\n" +
4192 4192 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4193 4193 " <div class=\"panel-body\">\n" +
4194 4194 "\n" +
4195 4195 " <a class=\"btn btn-default integration\"\n" +
4196 4196 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'bitbucket'})\">\n" +
4197 4197 " <span class=\"fa fa-fw fa-bitbucket fa-3x pull-left\"></span>\n" +
4198 4198 " <strong>Bitbucket</strong>\n" +
4199 4199 "\n" +
4200 4200 " <p>Send issues and reports to Bitbucket</p>\n" +
4201 4201 " </a>\n" +
4202 4202 "\n" +
4203 4203 " <a class=\"btn btn-default integration\"\n" +
4204 4204 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'campfire'})\">\n" +
4205 4205 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4206 4206 " <strong>Campfire</strong>\n" +
4207 4207 "\n" +
4208 4208 " <p>Receive reports and alerts in your Campfire rooms</p>\n" +
4209 4209 " </a>\n" +
4210 4210 "\n" +
4211 4211 " <a class=\"btn btn-default integration\"\n" +
4212 4212 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'flowdock'})\">\n" +
4213 4213 " <span class=\"fa fa-fw fa-envelope fa-3x pull-left\"></span>\n" +
4214 4214 " <strong>Flowdock</strong>\n" +
4215 4215 "\n" +
4216 4216 " <p>Receive reports and alerts on your Flowdock team\n" +
4217 4217 " inbox</p>\n" +
4218 4218 " </a>\n" +
4219 4219 "\n" +
4220 4220 " <a class=\"btn btn-default integration\"\n" +
4221 4221 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'github'})\">\n" +
4222 4222 " <span class=\"fa fa-fw fa-github fa-3x pull-left\"></span>\n" +
4223 4223 " <strong>Github</strong>\n" +
4224 4224 "\n" +
4225 4225 " <p>Send issues and reports to Github</p>\n" +
4226 4226 " </a>\n" +
4227 4227 "\n" +
4228 4228 " <a class=\"btn btn-default integration\"\n" +
4229 4229 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'hipchat'})\">\n" +
4230 4230 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4231 4231 " <strong>HipChat</strong>\n" +
4232 4232 "\n" +
4233 4233 " <p>Receive reports and alerts in your Hipchat chanels</p>\n" +
4234 4234 " </a>\n" +
4235 4235 "\n" +
4236 4236 " <a class=\"btn btn-default integration\"\n" +
4237 4237 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'jira'})\">\n" +
4238 4238 " <span class=\"fa fa-fw fa-ticket fa-3x pull-left\"></span>\n" +
4239 4239 " <strong>Jira</strong>\n" +
4240 4240 "\n" +
4241 4241 " <p>Send issues and reports to Jira</p>\n" +
4242 4242 " </a>\n" +
4243 4243 "\n" +
4244 4244 " <a class=\"btn btn-default integration\"\n" +
4245 4245 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'slack'})\">\n" +
4246 4246 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4247 4247 " <strong>Slack</strong>\n" +
4248 4248 "\n" +
4249 4249 " <p>Receive reports and alerts in your Slack chanels</p>\n" +
4250 4250 " </a>\n" +
4251 4251 "\n" +
4252 4252 " <a class=\"btn btn-default integration\"\n" +
4253 4253 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'webhooks'})\">\n" +
4254 4254 " <span class=\"fa fa-fw fa-cloud-upload fa-3x pull-left\"></span>\n" +
4255 4255 " <strong>Webhooks</strong>\n" +
4256 4256 "\n" +
4257 4257 " <p>Notify third party API's of your reports and alerts</p>\n" +
4258 4258 " </a>\n" +
4259 4259 " </div>\n" +
4260 4260 " </div>\n" +
4261 4261 "</ui-view>\n"
4262 4262 );
4263 4263
4264 4264
4265 4265 $templateCache.put('templates/applications/integrations/bitbucket.html',
4266 4266 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4267 4267 "\n" +
4268 4268 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4269 4269 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4270 4270 " <div class=\"panel-body\">\n" +
4271 4271 "\n" +
4272 4272 " <h1>Bitbucket Integration</h1>\n" +
4273 4273 "\n" +
4274 4274 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4275 4275 " <div class=\"form-group\">\n" +
4276 4276 "\n" +
4277 4277 " <label class=\"control-label col-sm-3 col-lg-2\">Repository</label>\n" +
4278 4278 "\n" +
4279 4279 " <div class=\"col-sm-8 col-lg-9\">\n" +
4280 4280 "\n" +
4281 4281 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4282 4282 " <data-form-errors errors=\"integration.integrationForm.ae_validation.repo_name\"></data-form-errors>\n" +
4283 4283 "\n" +
4284 4284 " <div class=\"input-group\">\n" +
4285 4285 " <div class=\"input-group-addon\">https://bitbucket.org/</div>\n" +
4286 4286 " <input class=\"form-control\" ng-model=\"integration.config.user_name\" placeholder=\"user\" type=\"text\">\n" +
4287 4287 " <div class=\"input-group-addon\">/</div>\n" +
4288 4288 " <input class=\"form-control\" ng-model=\"integration.config.repo_name\" placeholder=\"repo_name\" type=\"text\">\n" +
4289 4289 " </div>\n" +
4290 4290 "\n" +
4291 4291 " </div>\n" +
4292 4292 " </div>\n" +
4293 4293 " <div class=\"form-group\">\n" +
4294 4294 "\n" +
4295 4295 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4296 4296 "\n" +
4297 4297 " <div class=\"col-sm-8 col-lg-9\">\n" +
4298 4298 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Use this repo\">\n" +
4299 4299 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4300 4300 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4301 4301 " <ul class=\"dropdown-menu\">\n" +
4302 4302 " <li><a>No</a></li>\n" +
4303 4303 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4304 4304 " </ul>\n" +
4305 4305 " </span>\n" +
4306 4306 " </div>\n" +
4307 4307 " </div>\n" +
4308 4308 " </form>\n" +
4309 4309 "\n" +
4310 4310 " <p class=\"m-t-1\">Remember you first need to\n" +
4311 4311 " <strong>\n" +
4312 4312 " <a data-ui-sref=\"user.profile.identities\">authorize your user account</a></strong>\n" +
4313 4313 " with Bitbucket before we can send issues on your behalf.</p>\n" +
4314 4314 "\n" +
4315 4315 " <p>Every user will have to authorize AppEnlight to access Bitbucket to be able to post issues.</p>\n" +
4316 4316 "\n" +
4317 4317 " </div>\n" +
4318 4318 "</div>\n"
4319 4319 );
4320 4320
4321 4321
4322 4322 $templateCache.put('templates/applications/integrations/campfire.html',
4323 4323 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4324 4324 "\n" +
4325 4325 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4326 4326 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4327 4327 " <div class=\"panel-body\">\n" +
4328 4328 " <h1>Campfire Integration</h1>\n" +
4329 4329 "\n" +
4330 4330 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4331 4331 "\n" +
4332 4332 " <div class=\"form-group\">\n" +
4333 4333 "\n" +
4334 4334 " <label class=\"control-label col-sm-3 col-lg-2\">Account name</label>\n" +
4335 4335 " <div class=\"col-sm-8 col-lg-9\">\n" +
4336 4336 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4337 4337 "\n" +
4338 4338 " <div class=\"input-group\">\n" +
4339 4339 " <div class=\"input-group-addon\">http://</div>\n" +
4340 4340 " <input class=\"form-control\" ng-model=\"integration.config.account\" placeholder=\"account\">\n" +
4341 4341 " <div class=\"input-group-addon\">.campfirenow.com</div>\n" +
4342 4342 " </div>\n" +
4343 4343 " </div>\n" +
4344 4344 " </div>\n" +
4345 4345 "\n" +
4346 4346 " <div class=\"form-group\">\n" +
4347 4347 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4348 4348 " <div class=\"col-sm-8 col-lg-9\">\n" +
4349 4349 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4350 4350 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\">\n" +
4351 4351 " </div>\n" +
4352 4352 " </div>\n" +
4353 4353 "\n" +
4354 4354 " <div class=\"form-group\">\n" +
4355 4355 " <label class=\"control-label col-sm-3 col-lg-2\">Room ID list</label>\n" +
4356 4356 " <div class=\"col-sm-8 col-lg-9\">\n" +
4357 4357 " <data-form-errors errors=\"integration.integrationForm.ae_validation.rooms\"></data-form-errors>\n" +
4358 4358 " <input class=\"form-control\" ng-model=\"integration.config.rooms\" placeholder=\"Room ID list\">\n" +
4359 4359 " <p>\n" +
4360 4360 " <small>Room ID list separated by comma</small>\n" +
4361 4361 " </p>\n" +
4362 4362 " </div>\n" +
4363 4363 " </div>\n" +
4364 4364 " <div class=\"form-group\">\n" +
4365 4365 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Campfire\">\n" +
4366 4366 "\n" +
4367 4367 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4368 4368 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4369 4369 " <ul class=\"dropdown-menu\">\n" +
4370 4370 " <li><a>No</a></li>\n" +
4371 4371 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4372 4372 " </ul>\n" +
4373 4373 " </span>\n" +
4374 4374 "\n" +
4375 4375 " <div class=\"btn-group\" uib-dropdown>\n" +
4376 4376 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4377 4377 " Test integration <span class=\"caret\"></span>\n" +
4378 4378 " </button>\n" +
4379 4379 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4380 4380 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4381 4381 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4382 4382 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4383 4383 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4384 4384 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4385 4385 " </ul>\n" +
4386 4386 " </div>\n" +
4387 4387 "\n" +
4388 4388 " </div>\n" +
4389 4389 "\n" +
4390 4390 " </form>\n" +
4391 4391 "\n" +
4392 4392 " </div>\n" +
4393 4393 "</div>\n"
4394 4394 );
4395 4395
4396 4396
4397 4397 $templateCache.put('templates/applications/integrations/flowdock.html',
4398 4398 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4399 4399 "\n" +
4400 4400 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4401 4401 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4402 4402 " <div class=\"panel-body\">\n" +
4403 4403 "\n" +
4404 4404 " <h1>Flowdock Integration</h1>\n" +
4405 4405 "\n" +
4406 4406 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4407 4407 "\n" +
4408 4408 " <div class=\"form-group\">\n" +
4409 4409 "\n" +
4410 4410 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4411 4411 "\n" +
4412 4412 " <div class=\"col-sm-8 col-lg-9\">\n" +
4413 4413 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4414 4414 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\" type=\"text\">\n" +
4415 4415 " </div>\n" +
4416 4416 "\n" +
4417 4417 "\n" +
4418 4418 " </div>\n" +
4419 4419 "\n" +
4420 4420 " <div class=\"form-group\">\n" +
4421 4421 "\n" +
4422 4422 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4423 4423 "\n" +
4424 4424 " <div class=\"col-sm-8 col-lg-9\">\n" +
4425 4425 "\n" +
4426 4426 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Flowdock\">\n" +
4427 4427 "\n" +
4428 4428 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4429 4429 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4430 4430 " <ul class=\"dropdown-menu\">\n" +
4431 4431 " <li><a>No</a></li>\n" +
4432 4432 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4433 4433 " </ul>\n" +
4434 4434 " </span>\n" +
4435 4435 " <div class=\"btn-group\" uib-dropdown>\n" +
4436 4436 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4437 4437 " Test integration <span class=\"caret\"></span>\n" +
4438 4438 " </button>\n" +
4439 4439 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4440 4440 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4441 4441 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4442 4442 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4443 4443 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4444 4444 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4445 4445 " </ul>\n" +
4446 4446 " </div>\n" +
4447 4447 " </div>\n" +
4448 4448 " </div>\n" +
4449 4449 "\n" +
4450 4450 "\n" +
4451 4451 " </form>\n" +
4452 4452 "\n" +
4453 4453 " </div>\n" +
4454 4454 "</div>\n"
4455 4455 );
4456 4456
4457 4457
4458 4458 $templateCache.put('templates/applications/integrations/github.html',
4459 4459 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4460 4460 "\n" +
4461 4461 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4462 4462 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4463 4463 " <div class=\"panel-body\">\n" +
4464 4464 "\n" +
4465 4465 " <h1>Github Integration</h1>\n" +
4466 4466 "\n" +
4467 4467 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4468 4468 "\n" +
4469 4469 "\n" +
4470 4470 " <div class=\"form-group\">\n" +
4471 4471 "\n" +
4472 4472 " <label class=\"control-label col-sm-3 col-lg-2\">Repository</label>\n" +
4473 4473 "\n" +
4474 4474 " <div class=\"col-sm-8 col-lg-9\">\n" +
4475 4475 "\n" +
4476 4476 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4477 4477 " <data-form-errors errors=\"integration.integrationForm.ae_validation.repo_name\"></data-form-errors>\n" +
4478 4478 "\n" +
4479 4479 " <div class=\"input-group\">\n" +
4480 4480 " <div class=\"input-group-addon\">https://api.github.com/</div>\n" +
4481 4481 " <input class=\"form-control\" ng-model=\"integration.config.user_name\" placeholder=\"user\" type=\"text\">\n" +
4482 4482 " <div class=\"input-group-addon\">/</div>\n" +
4483 4483 " <input class=\"form-control\" ng-model=\"integration.config.repo_name\" placeholder=\"repo_name\" type=\"text\">\n" +
4484 4484 " </div>\n" +
4485 4485 "\n" +
4486 4486 " </div>\n" +
4487 4487 " </div>\n" +
4488 4488 "\n" +
4489 4489 " <div class=\"form-group\">\n" +
4490 4490 "\n" +
4491 4491 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4492 4492 "\n" +
4493 4493 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Use this repo\">\n" +
4494 4494 "\n" +
4495 4495 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4496 4496 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4497 4497 " <ul class=\"dropdown-menu\">\n" +
4498 4498 " <li><a>No</a></li>\n" +
4499 4499 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4500 4500 " </ul>\n" +
4501 4501 " </span>\n" +
4502 4502 "\n" +
4503 4503 " </div>\n" +
4504 4504 " </form>\n" +
4505 4505 "\n" +
4506 4506 " <p class=\"m-t-1\">Remember you first need to\n" +
4507 4507 " <strong>\n" +
4508 4508 " <a data-ui-sref=\"user.profile.identities\">authorize your user account</a></strong>\n" +
4509 4509 " with Github before we can send issues on your behalf.</p>\n" +
4510 4510 "\n" +
4511 4511 " <p>Every user will have to authorize AppEnlight to access Github to be able to post issues.</p>\n" +
4512 4512 "\n" +
4513 4513 " <div class=\"panel panel-warning\">\n" +
4514 4514 " <div class=\"panel-heading\">Private repository access</div>\n" +
4515 4515 " <div class=\"panel-body\">\n" +
4516 4516 " <p>If you need access to private repositories <a data-ui-sref=\"user.profile.identities\">profile page</a> allows you to require token including private repository permissions.</p>\n" +
4517 4517 "\n" +
4518 4518 " <p>Registration page OAuth does NOT give you token with private repository access permissions.</p>\n" +
4519 4519 " </div>\n" +
4520 4520 " </div>\n" +
4521 4521 "\n" +
4522 4522 " </div>\n" +
4523 4523 "</div>\n"
4524 4524 );
4525 4525
4526 4526
4527 4527 $templateCache.put('templates/applications/integrations/hipchat.html',
4528 4528 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4529 4529 "\n" +
4530 4530 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4531 4531 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4532 4532 " <div class=\"panel-body\">\n" +
4533 4533 "\n" +
4534 4534 " <h1>Hipchat Integration</h1>\n" +
4535 4535 "\n" +
4536 4536 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4537 4537 "\n" +
4538 4538 " <div class=\"form-group\">\n" +
4539 4539 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4540 4540 "\n" +
4541 4541 " <div class=\"col-sm-8 col-lg-9\">\n" +
4542 4542 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4543 4543 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\" type=\"text\">\n" +
4544 4544 " </div>\n" +
4545 4545 " </div>\n" +
4546 4546 "\n" +
4547 4547 " <div class=\"form-group\">\n" +
4548 4548 "\n" +
4549 4549 " <label class=\"control-label col-sm-3 col-lg-2\">Room ID list</label>\n" +
4550 4550 "\n" +
4551 4551 " <div class=\"col-sm-8 col-lg-9\">\n" +
4552 4552 " <data-form-errors errors=\"integration.integrationForm.ae_validation.rooms\"></data-form-errors>\n" +
4553 4553 " <input class=\"form-control\" ng-model=\"integration.config.rooms\" placeholder=\"Room ID list\" type=\"text\">\n" +
4554 4554 "\n" +
4555 4555 " <p>\n" +
4556 4556 " <small>Room ID list separated by comma</small>\n" +
4557 4557 " </p>\n" +
4558 4558 " </div>\n" +
4559 4559 "\n" +
4560 4560 " </div>\n" +
4561 4561 "\n" +
4562 4562 " <div class=\"form-group\">\n" +
4563 4563 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4564 4564 " <div class=\"col-sm-8 col-lg-9\">\n" +
4565 4565 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Hipchat\">\n" +
4566 4566 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4567 4567 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4568 4568 " <ul class=\"dropdown-menu\">\n" +
4569 4569 " <li><a>No</a></li>\n" +
4570 4570 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4571 4571 " </ul>\n" +
4572 4572 " </span>\n" +
4573 4573 "\n" +
4574 4574 " <div class=\"btn-group\" uib-dropdown>\n" +
4575 4575 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4576 4576 " Test integration <span class=\"caret\"></span>\n" +
4577 4577 " </button>\n" +
4578 4578 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4579 4579 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4580 4580 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4581 4581 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4582 4582 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4583 4583 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4584 4584 " </ul>\n" +
4585 4585 " </div>\n" +
4586 4586 "\n" +
4587 4587 " </div>\n" +
4588 4588 " </div>\n" +
4589 4589 "\n" +
4590 4590 " </form>\n" +
4591 4591 "\n" +
4592 4592 " </div>\n" +
4593 4593 "</div>\n"
4594 4594 );
4595 4595
4596 4596
4597 4597 $templateCache.put('templates/applications/integrations/jira.html',
4598 4598 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4599 4599 "\n" +
4600 4600 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4601 4601 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4602 4602 " <div class=\"panel-body\">\n" +
4603 4603 "\n" +
4604 4604 " <h1>Jira Integration</h1>\n" +
4605 4605 "\n" +
4606 4606 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4607 4607 "\n" +
4608 4608 " <div class=\"form-group\" id=\"row-host_name\">\n" +
4609 4609 "\n" +
4610 4610 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4611 4611 " Server URL <span class=\"required\">*</span>\n" +
4612 4612 " </label>\n" +
4613 4613 " <div class=\"col-sm-8 col-lg-9\">\n" +
4614 4614 " <data-form-errors errors=\"integration.integrationForm.ae_validation.host_name\"></data-form-errors>\n" +
4615 4615 " <input class=\"form-control\" id=\"host_name\" name=\"host_name\" type=\"text\" ng-model=\"integration.config.host_name\">\n" +
4616 4616 " </div>\n" +
4617 4617 " </div>\n" +
4618 4618 " <div class=\"form-group\" id=\"row-user_name\">\n" +
4619 4619 "\n" +
4620 4620 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4621 4621 " Username <span class=\"required\">*</span>\n" +
4622 4622 " </label>\n" +
4623 4623 " <div class=\"col-sm-8 col-lg-9\">\n" +
4624 4624 "\n" +
4625 4625 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4626 4626 " <input class=\"form-control\" id=\"user_name\" name=\"user_name\" type=\"text\" ng-model=\"integration.config.user_name\">\n" +
4627 4627 " </div>\n" +
4628 4628 " </div>\n" +
4629 4629 " <div class=\"form-group\" id=\"row-password\">\n" +
4630 4630 "\n" +
4631 4631 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4632 4632 " Password <span class=\"required\">*</span>\n" +
4633 4633 " </label>\n" +
4634 4634 " <div class=\"col-sm-8 col-lg-9\">\n" +
4635 4635 " <data-form-errors errors=\"integration.integrationForm.ae_validation.password\"></data-form-errors>\n" +
4636 4636 " <input class=\"form-control\" id=\"password\" name=\"password\" type=\"password\" ng-model=\"integration.config.password\">\n" +
4637 4637 " </div>\n" +
4638 4638 " </div>\n" +
4639 4639 " <div class=\"form-group\" id=\"row-project\">\n" +
4640 4640 "\n" +
4641 4641 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4642 4642 " Project key <span class=\"required\">*</span>\n" +
4643 4643 " </label>\n" +
4644 4644 " <div class=\"col-sm-8 col-lg-9\">\n" +
4645 4645 " <data-form-errors errors=\"integration.integrationForm.ae_validation.project\"></data-form-errors>\n" +
4646 4646 " <input class=\"form-control\" id=\"project\" name=\"project\" type=\"text\" ng-model=\"integration.config.project\">\n" +
4647 4647 " </div>\n" +
4648 4648 " </div>\n" +
4649 4649 " <div class=\"form-group\" id=\"row-submit\">\n" +
4650 4650 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4651 4651 " <div class=\"col-sm-8 col-lg-9\">\n" +
4652 4652 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Setup Jira\">\n" +
4653 4653 "\n" +
4654 4654 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4655 4655 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4656 4656 " <ul class=\"dropdown-menu\">\n" +
4657 4657 " <li><a>No</a></li>\n" +
4658 4658 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4659 4659 " </ul>\n" +
4660 4660 " </span>\n" +
4661 4661 " </div>\n" +
4662 4662 " </div>\n" +
4663 4663 "\n" +
4664 4664 " </form>\n" +
4665 4665 "\n" +
4666 4666 "\n" +
4667 4667 " </div>\n" +
4668 4668 "</div>\n"
4669 4669 );
4670 4670
4671 4671
4672 4672 $templateCache.put('templates/applications/integrations/slack.html',
4673 4673 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4674 4674 "\n" +
4675 4675 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4676 4676 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4677 4677 " <div class=\"panel-body\">\n" +
4678 4678 "\n" +
4679 4679 " <h1>Slack Integration</h1>\n" +
4680 4680 "\n" +
4681 4681 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4682 4682 "\n" +
4683 4683 " <div class=\"form-group\">\n" +
4684 4684 "\n" +
4685 4685 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4686 4686 " API Token <span class=\"required\">*</span>\n" +
4687 4687 " </label>\n" +
4688 4688 " <div class=\"col-sm-8 col-lg-9\">\n" +
4689 4689 " <data-form-errors errors=\"integration.integrationForm.ae_validation.webhook_url\"></data-form-errors>\n" +
4690 4690 " <input class=\"form-control\" ng-model=\"integration.config.webhook_url\" placeholder=\"Webhook URL\" type=\"webhook_url\">\n" +
4691 4691 " </div>\n" +
4692 4692 " </div>\n" +
4693 4693 "\n" +
4694 4694 " <div class=\"form-group\">\n" +
4695 4695 "\n" +
4696 4696 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4697 4697 " <div class=\"col-sm-8 col-lg-9\">\n" +
4698 4698 " <input type=\"submit\" class=\"btn btn-primary\"\n" +
4699 4699 " value=\"Connect to Slack\">\n" +
4700 4700 "\n" +
4701 4701 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4702 4702 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4703 4703 " <ul class=\"dropdown-menu\">\n" +
4704 4704 " <li><a>No</a></li>\n" +
4705 4705 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4706 4706 " </ul>\n" +
4707 4707 " </span>\n" +
4708 4708 "\n" +
4709 4709 " <div class=\"btn-group\" uib-dropdown>\n" +
4710 4710 " <button type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4711 4711 " Test integration <span class=\"caret\"></span>\n" +
4712 4712 " </button>\n" +
4713 4713 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4714 4714 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4715 4715 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4716 4716 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4717 4717 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4718 4718 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4719 4719 " </ul>\n" +
4720 4720 " </div>\n" +
4721 4721 " </div>\n" +
4722 4722 " </div>\n" +
4723 4723 " </form>\n" +
4724 4724 "\n" +
4725 4725 " </div>\n" +
4726 4726 "</div>\n"
4727 4727 );
4728 4728
4729 4729
4730 4730 $templateCache.put('templates/applications/integrations/webhooks.html',
4731 4731 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4732 4732 "\n" +
4733 4733 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4734 4734 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4735 4735 " <div class=\"panel-body\">\n" +
4736 4736 "\n" +
4737 4737 " <h1>Webhooks Integration</h1>\n" +
4738 4738 "\n" +
4739 4739 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4740 4740 " <div class=\"form-group\" id=\"row-reports_webhook\">\n" +
4741 4741 "\n" +
4742 4742 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4743 4743 " Reports webhook <span class=\"required\">*</span>\n" +
4744 4744 " </label>\n" +
4745 4745 " <div class=\"col-sm-8 col-lg-9\">\n" +
4746 4746 " <data-form-errors errors=\"integration.integrationForm.ae_validation.reports_webhook\"></data-form-errors>\n" +
4747 4747 " <input class=\"form-control\" id=\"reports_webhook\" name=\"reports_webhook\" type=\"text\" ng-model=\"integration.config.reports_webhook\">\n" +
4748 4748 " </div>\n" +
4749 4749 " </div>\n" +
4750 4750 " <div class=\"form-group\" id=\"row-alerts_webhook\">\n" +
4751 4751 "\n" +
4752 4752 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4753 4753 " Alerts webhook <span class=\"required\">*</span>\n" +
4754 4754 " </label>\n" +
4755 4755 " <div class=\"col-sm-8 col-lg-9\">\n" +
4756 4756 " <data-form-errors errors=\"integration.integrationForm.ae_validation.alerts_webhook\"></data-form-errors>\n" +
4757 4757 " <input class=\"form-control StringField None\" id=\"alerts_webhook\" name=\"alerts_webhook\" type=\"text\" ng-model=\"integration.config.alerts_webhook\">\n" +
4758 4758 " </div>\n" +
4759 4759 "\n" +
4760 4760 "\n" +
4761 4761 " </div>\n" +
4762 4762 " <div class=\"form-group\" id=\"row-submit\">\n" +
4763 4763 "\n" +
4764 4764 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4765 4765 " <div class=\"col-sm-8 col-lg-9\">\n" +
4766 4766 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Setup webhooks\">\n" +
4767 4767 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4768 4768 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4769 4769 " <ul class=\"dropdown-menu\">\n" +
4770 4770 " <li><a>No</a></li>\n" +
4771 4771 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4772 4772 " </ul>\n" +
4773 4773 " </span>\n" +
4774 4774 " </div>\n" +
4775 4775 " </div>\n" +
4776 4776 " </form>\n" +
4777 4777 " </div>\n" +
4778 4778 "</div>\n"
4779 4779 );
4780 4780
4781 4781
4782 4782 $templateCache.put('templates/applications/list.html',
4783 4783 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications.loading.applications\"></ng-include>\n" +
4784 4784 "\n" +
4785 4785 "<div class=\"panel panel-default\" ng-show=\"!applications.loading.applications\">\n" +
4786 4786 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4787 4787 " <div class=\"panel-body\" ng-if=\"applications.applications.length === 0 \">\n" +
4788 4788 "\n" +
4789 4789 " <p>You have to create a new application first.</p>\n" +
4790 4790 "\n" +
4791 4791 " </div>\n" +
4792 4792 "\n" +
4793 4793 " <table class=\"table table-striped\" ng-if=\"applications.applications.length > 0\">\n" +
4794 4794 " <thead>\n" +
4795 4795 " <tr>\n" +
4796 4796 " <th class=\"resource_name\">Resource Name</th>\n" +
4797 4797 " <th class=\"domains\">Domains</th>\n" +
4798 4798 " <th class=\"options\">Options</th>\n" +
4799 4799 " </tr>\n" +
4800 4800 " </thead>\n" +
4801 4801 " <tbody>\n" +
4802 4802 " <tr class=\"r{{$index+1}}\" ng-repeat=\"application in applications.applications\">\n" +
4803 4803 " <td>{{application.resource_name}}</td>\n" +
4804 4804 " <td>{{application.domains}}</td>\n" +
4805 4805 " <td class=\"options\">\n" +
4806 4806 " <a class=\"btn btn-default\" data-ui-sref=\"applications.update({resourceId:application.resource_id})\" data-toggle=\"tooltip\" title=\"Update application\"><span class=\"fa fa-cog\"></span> Update</a>\n" +
4807 4807 " <a class=\"btn btn-default\" data-ui-sref=\"applications.integrations({resourceId:application.resource_id})\" data-toggle=\"tooltip\" title=\"Manage Integrations\"><span class=\"fa fa-wrench\"></span> Integrations</a>\n" +
4808 4808 " </td>\n" +
4809 4809 " </tr>\n" +
4810 4810 " </tbody>\n" +
4811 4811 " </table>\n" +
4812 4812 "\n" +
4813 4813 "</div>\n"
4814 4814 );
4815 4815
4816 4816
4817 4817 $templateCache.put('templates/applications/parent_view.html',
4818 4818 "<div class=\"row application-management\">\n" +
4819 4819 " <div class=\"col-sm-3\" id=\"menu\">\n" +
4820 4820 " <div ng-include=\"'templates/user/menu.html'\"></div>\n" +
4821 4821 " </div>\n" +
4822 4822 "\n" +
4823 4823 " <div class=\"col-sm-9\" ui-view></div>\n" +
4824 4824 "\n" +
4825 4825 "</div>\n"
4826 4826 );
4827 4827
4828 4828
4829 4829 $templateCache.put('templates/dashboard.html',
4830 4830 "<style type=\"text/css\">\n" +
4831 4831 " #metrics_chart .c3-line {\n" +
4832 4832 " stroke-width: 0px;\n" +
4833 4833 " }\n" +
4834 4834 "\n" +
4835 4835 " #metrics_chart .c3-area {\n" +
4836 4836 " stroke-width: 0;\n" +
4837 4837 " opacity: 0.75;\n" +
4838 4838 " }\n" +
4839 4839 "\n" +
4840 4840 "\n" +
4841 4841 "</style>\n" +
4842 4842 "\n" +
4843 4843 "<div class=\"row\">\n" +
4844 4844 " <div class=\"col-sm-12 dashboard\" id=\"content\">\n" +
4845 4845 "\n" +
4846 4846 " <div ng-if=\"!AeUser.applications.length\">\n" +
4847 4847 "\n" +
4848 4848 " <div ng-include=\"'templates/quickstart.html'\"></div>\n" +
4849 4849 "\n" +
4850 4850 " </div>\n" +
4851 4851 "\n" +
4852 4852 " <div ng-if=\"AeUser.applications.length\">\n" +
4853 4853 "\n" +
4854 4854 " <div class=\"row\">\n" +
4855 4855 " <div class=\"col-sm-6\">\n" +
4856 4856 " <div class=\"panel panel-default\">\n" +
4857 4857 " <div class=\"panel-body\">\n" +
4858 4858 " <form class=\"graph-type form-inline\">\n" +
4859 4859 " <select ng-model=\"index.resource\" ng-options=\"r.resource_id as r.resource_name for r in AeUser.applications\" ng-change=\"index.updateSearchParams()\"\n" +
4860 4860 " class=\"SelectField form-control input-sm slim-input\"></select>\n" +
4861 4861 "\n" +
4862 4862 " <select class=\"SelectField form-control input-sm slim-input\" ng-model=\"index.timeSpan\"\n" +
4863 4863 " ng-options=\"i as i.label for i in index.timeOptions | objectToOrderedArray:'minutes'\" ng-change=\"index.updateSearchParams()\"\n" +
4864 4864 " class=\"SelectField\"></select>\n" +
4865 4865 "\n" +
4866 4866 "\n" +
4867 4867 " <div class=\"btn-group\">\n" +
4868 4868 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
4869 4869 " uib-btn-radio=\"'requests_graphs'\" data-uib-tooltip=\"Requests per second\">\n" +
4870 4870 " <span class=\"fa fa-line-chart\"></span>\n" +
4871 4871 " </button>\n" +
4872 4872 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
4873 4873 " uib-btn-radio=\"'response_graphs'\" data-uib-tooltip=\"Average response time\">\n" +
4874 4874 " <span class=\"fa fa-random\"></span>\n" +
4875 4875 " </button>\n" +
4876 4876 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
4877 4877 " uib-btn-radio=\"'metrics_graphs'\" data-uib-tooltip=\"Time spent per request\">\n" +
4878 4878 " <span class=\"fa fa-bar-chart-o\"></span>\n" +
4879 4879 " </button>\n" +
4880 4880 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
4881 4881 " uib-btn-radio=\"'report_graphs'\" data-uib-tooltip=\"Errors\">\n" +
4882 4882 " <span class=\"fa fa-exclamation-triangle\"></span>\n" +
4883 4883 " </button>\n" +
4884 4884 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
4885 4885 " uib-btn-radio=\"'slow_report_graphs'\" data-uib-tooltip=\"Slow reports\">\n" +
4886 4886 " <span class=\"fa fa-clock-o\"></span>\n" +
4887 4887 " </button>\n" +
4888 4888 " </div>\n" +
4889 4889 " </form>\n" +
4890 4890 " <div class=\"clearfix\"></div>\n" +
4891 4891 "\n" +
4892 4892 " <p ng-if=\"index.loading.series != false\" class=\"text-center\">\n" +
4893 4893 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
4894 4894 " </p>\n" +
4895 4895 "\n" +
4896 4896 " <div ng-if=\"index.loading.series == false\">\n" +
4897 4897 " <div ng-if=\"index.graphType.selected == 'requests_graphs'\">\n" +
4898 4898 " <c3chart data-domid=\"reponse_chart\" data-data=\"index.requestsChartData\" data-config=\"index.requestsChartConfig\" update=\"true\">\n" +
4899 4899 " </c3chart>\n" +
4900 4900 " </div>\n" +
4901 4901 "\n" +
4902 4902 " <div ng-if=\"index.graphType.selected == 'response_graphs'\">\n" +
4903 4903 " <c3chart data-domid=\"reponse_chart\" data-data=\"index.responseChartData\" data-config=\"index.responseChartConfig\" update=\"true\">\n" +
4904 4904 " </c3chart>\n" +
4905 4905 " </div>\n" +
4906 4906 "\n" +
4907 4907 " <div ng-if=\"index.graphType.selected == 'metrics_graphs'\">\n" +
4908 4908 " <c3chart data-domid=\"metrics_chart\" data-data=\"index.metricsChartData\" data-config=\"index.metricsChartConfig\" update=\"true\">\n" +
4909 4909 " </c3chart>\n" +
4910 4910 " </div>\n" +
4911 4911 " <div ng-if=\"index.graphType.selected == 'report_graphs'\">\n" +
4912 4912 " <c3chart data-domid=\"reports_chart\" data-data=\"index.reportChartData\" data-config=\"index.reportChartConfig\" update=\"true\">\n" +
4913 4913 " </c3chart>\n" +
4914 4914 " </div>\n" +
4915 4915 "\n" +
4916 4916 " <div ng-if=\"index.graphType.selected == 'slow_report_graphs'\">\n" +
4917 4917 " <c3chart data-domid=\"slow_reports_chart\" data-data=\"index.reportSlowChartData\" data-config=\"index.reportSlowChartConfig\" update=\"true\">\n" +
4918 4918 " </c3chart>\n" +
4919 4919 " </div>\n" +
4920 4920 "\n" +
4921 4921 " <p ng-if=\"index.graphType.selected == 'requests_graphs'\" class=\"text-center\">\n" +
4922 4922 " <small>Average requests per second from all servers</small>\n" +
4923 4923 " </p>\n" +
4924 4924 "\n" +
4925 4925 " <p ng-if=\"index.graphType.selected == 'response_graphs'\" class=\"text-center\">\n" +
4926 4926 " <small>Average response time from all servers</small>\n" +
4927 4927 " </p>\n" +
4928 4928 "\n" +
4929 4929 " <p ng-if=\"index.graphType.selected == 'metrics_graphs'\" class=\"text-center\">\n" +
4930 4930 " <small>Aggregated average time spent per request - broken to layers</small>\n" +
4931 4931 " </p>\n" +
4932 4932 "\n" +
4933 4933 " <p ng-if=\"index.graphType.selected == 'report_graphs'\" class=\"text-center\">\n" +
4934 4934 " <small>Aggregated reports sent by your application</small>\n" +
4935 4935 " </p>\n" +
4936 4936 "\n" +
4937 4937 " <p ng-if=\"index.graphType.selected == 'slow_report_graphs'\" class=\"text-center\">\n" +
4938 4938 " <small>Aggregated slow reports sent by your application</small>\n" +
4939 4939 " </p>\n" +
4940 4940 " </div>\n" +
4941 4941 " </div>\n" +
4942 4942 " </div>\n" +
4943 4943 " </div>\n" +
4944 4944 "\n" +
4945 4945 "\n" +
4946 4946 " <div class=\"col-sm-6\">\n" +
4947 4947 "\n" +
4948 4948 " <div id=\"server-container\">\n" +
4949 4949 "\n" +
4950 4950 " <div ng-if=\"index.loading.apdex==false\" class=\"text-center m-b-1\">\n" +
4951 4951 "\n" +
4952 4952 " <a data-ui-sref=\"report.list({resource:index.resource, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"error-rate\">\n" +
4953 4953 " <small>Exceptions</small>\n" +
4954 4954 " <br/>\n" +
4955 4955 " <strong>{{ index.exceptions|numberToThousands}}</strong>\n" +
4956 4956 " <span class=\"fa fa-chevron-right\"></span>\n" +
4957 4957 " </a><!--\n" +
4958 4958 "\n" +
4959 4959 " --><a data-ui-sref=\"report.list_slow({resource:index.resource, min_duration:4, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"frustrating-requests\" data-uib-tooltip=\"Requests over 4s\">\n" +
4960 4960 " <small>Frustrating req.</small>\n" +
4961 4961 " <br/>\n" +
4962 4962 " <strong>{{index.frustratingRequests|numberToThousands}}</strong>\n" +
4963 4963 " <span class=\"fa fa-chevron-right\"></span>\n" +
4964 4964 " </a><!--\n" +
4965 4965 "\n" +
4966 4966 " --><a data-ui-sref=\"report.list_slow({resource:index.resource, min_duration:1, max_duration:4, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"tolerated-requests\"\n" +
4967 4967 " data-uib-tooltip=\"Requests under 4s\">\n" +
4968 4968 " <small>Tolerated req.</small>\n" +
4969 4969 " <br/>\n" +
4970 4970 " <strong>{{index.toleratedRequests|numberToThousands}}</strong>\n" +
4971 4971 " <span class=\"fa fa-chevron-right\"></span>\n" +
4972 4972 " </a><!--\n" +
4973 4973 " \n" +
4974 4974 " --><a class=\"combined-stat text-center\" id=\"satisfying-requests\" data-uib-tooltip=\"Requests under 1s\">\n" +
4975 4975 " <small>Satisfying req.</small>\n" +
4976 4976 " <br/>\n" +
4977 4977 " <strong>{{index.satisfyingRequests|numberToThousands}}</strong>\n" +
4978 4978 " </a><!--\n" +
4979 4979 "\n" +
4980 4980 " --><a data-ui-sref=\"uptime({resource:index.resource})\" class=\"combined-stat text-center\" id=\"uptime-stats\" data-uib-tooltip=\"Uptime\">\n" +
4981 4981 " <small>Uptime</small>\n" +
4982 4982 " <br/>\n" +
4983 4983 " <strong>{{index.uptimeStats}}%</strong>\n" +
4984 4984 " <span class=\"fa fa-chevron-right\"></span>\n" +
4985 4985 " </a>\n" +
4986 4986 "\n" +
4987 4987 " <div class=\"clearfix\"></div>\n" +
4988 4988 " </div>\n" +
4989 4989 "\n" +
4990 4990 " <div id=\"apdex-rate\" class=\"m-b-1 panel panel-default\">\n" +
4991 4991 " <table class=\"servers table table-striped\">\n" +
4992 4992 " <thead>\n" +
4993 4993 " <tr>\n" +
4994 4994 " <th></th>\n" +
4995 4995 " <th>Server</th>\n" +
4996 4996 " <th>Apdex\n" +
4997 4997 " <span class=\"fa fa-question-circle\"\n" +
4998 4998 " data-uib-tooltip=\"Application Performance Index - measures viewer satisfaction based on response times and error rates\"></span>\n" +
4999 4999 " </th>\n" +
5000 5000 " <th>rpm</th>\n" +
5001 5001 " <th>avg. response</th>\n" +
5002 5002 " </tr>\n" +
5003 5003 " </thead>\n" +
5004 5004 " <tbody>\n" +
5005 5005 " <tr ng-if=\"index.loading.apdex!=false\" class=\"text-center\">\n" +
5006 5006 " <td colspan=\"5\"><span class=\"fa fa-cog fa-spin fa-5x loader\"></span></td>\n" +
5007 5007 " </tr>\n" +
5008 5008 " <tr ng-repeat=\"server in index.apdexStats\" class=\"{{ server | apdexValue }}\"\n" +
5009 5009 " ng-if=\"index.loading.apdex==false\">\n" +
5010 5010 " <td><span class=\"fa fa-hdd-o\"></span></td>\n" +
5011 5011 " <td>\n" +
5012 5012 " <small><strong>{{ server.name }}</strong></small>\n" +
5013 5013 " </td>\n" +
5014 5014 " <td class=\"apdex\">\n" +
5015 5015 " <small><strong>{{ server.apdex }} %</strong></small>\n" +
5016 5016 " </td>\n" +
5017 5017 " <td>\n" +
5018 5018 " <small><strong>{{ server.rpm }}rpm</strong></small>\n" +
5019 5019 " </td>\n" +
5020 5020 " <td>\n" +
5021 5021 " <small><strong>{{ server.avg_response_time }}s</strong></small>\n" +
5022 5022 " </td>\n" +
5023 5023 " </tr>\n" +
5024 5024 " </tbody>\n" +
5025 5025 " </table>\n" +
5026 5026 "\n" +
5027 5027 " </div>\n" +
5028 5028 " </div>\n" +
5029 5029 "\n" +
5030 5030 " </div>\n" +
5031 5031 "\n" +
5032 5032 "\n" +
5033 5033 " </div>\n" +
5034 5034 "\n" +
5035 5035 " <div class=\"row\">\n" +
5036 5036 " <div class=\"col-sm-6\">\n" +
5037 5037 "\n" +
5038 5038 " <div class=\"panel panel-default\">\n" +
5039 5039 " <div class=\"panel-heading position-relative\">\n" +
5040 5040 " <h3 class=\"panel-title\"><span class=\"fa fa-exclamation-triangle\"></span> Newest errors (real-time)\n" +
5041 5041 " </h3>\n" +
5042 5042 " <a tooltip-append-to-body=\"true\" data-uib-tooltip=\"Play/Pause stream\" class=\"btn btn-primary btn-sm pause_stream\" ng-model=\"index.stream.paused\" uib-btn-checkbox>\n" +
5043 5043 " <span class=\"fa {{stream.paused ? 'fa-play' : 'fa-pause'}}\"></span>\n" +
5044 5044 " </a>\n" +
5045 5045 " <a tooltip-append-to-body=\"true\" data-uib-tooltip=\"Limit reports to current application\" class=\"btn btn-primary btn-sm limit_stream\" ng-model=\"index.stream.filtered\" uib-btn-checkbox>\n" +
5046 5046 " <span class=\"fa fa-lock\"></span>\n" +
5047 5047 " </a>\n" +
5048 5048 "\n" +
5049 5049 "\n" +
5050 5050 " </div>\n" +
5051 5051 " <div class=\"panel-body\">\n" +
5052 5052 "\n" +
5053 5053 " <p ng-if=\"index.stream.reports.length === 0\">No new reports</p>\n" +
5054 5054 "\n" +
5055 5055 " <div small-report-list reports=\"index.stream.reports\" applications=\"index.applications\"></div>\n" +
5056 5056 " </div>\n" +
5057 5057 " </div>\n" +
5058 5058 " </div>\n" +
5059 5059 "\n" +
5060 5060 " <div class=\"col-sm-6\">\n" +
5061 5061 "\n" +
5062 5062 " <div class=\"panel panel-default\">\n" +
5063 5063 " <div class=\"panel-heading\">\n" +
5064 5064 " <h3 class=\"panel-title\"><span class=\"fa fa-sort-amount-desc\"></span> Request breakdown over {{ index.timeSpan.label }}</h3>\n" +
5065 5065 " </div>\n" +
5066 5066 " <div class=\"panel-body\" id=\"view-breakdown-container\">\n" +
5067 5067 " <p ng-if=\"index.loading.requestsBreakdown!=false\" class=\"text-center\">\n" +
5068 5068 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5069 5069 " </p>\n" +
5070 5070 "\n" +
5071 5071 " <div class=\"report-list\">\n" +
5072 5072 " <div ng-if=\"index.loading.requestsBreakdown==false\" ng-repeat=\"view in index.requestsBreakdown\">\n" +
5073 5073 " <div class=\"view-info\">\n" +
5074 5074 " <div class=\"view-name\">\n" +
5075 5075 " <div class=\"bar\" style=\"width: {{view.percentage}}%\">\n" +
5076 5076 " </div>\n" +
5077 5077 " </div>\n" +
5078 5078 " <strong ng-if=\"view.latest_details.length\">\n" +
5079 5079 " <a data-ui-sref=\"report.list_slow({view_name:view.view_name})\">{{view.view_name}}</a></strong>\n" +
5080 5080 " <strong ng-if=\"!view.latest_details.length\">{{view.view_name}}</strong>\n" +
5081 5081 "\n" +
5082 5082 " <div class=\"stats\">\n" +
5083 5083 " <small>\n" +
5084 5084 " avg. response <strong>{{view.avg_response}}s</strong> in\n" +
5085 5085 " <span class=\"requests\"\n" +
5086 5086 " data-uib-tooltip=\"Requests\"><strong>{{view.requests|numberToThousands}}</strong> requests</span>\n" +
5087 5087 "\n" +
5088 5088 " <span ng-if=\"view.latest_details\">\n" +
5089 5089 " &nbsp;&nbsp; Latest reports:\n" +
5090 5090 " <a ng-repeat=\"d in view.latest_details\" target=\"_blank\" ui-sref=\"report.view_detail({groupId:d.group_id, reportId:d.report_id})\"> <strong>{{$index+1}}</strong></a>\n" +
5091 5091 " </span>\n" +
5092 5092 " </small>\n" +
5093 5093 " </div>\n" +
5094 5094 "\n" +
5095 5095 " </div>\n" +
5096 5096 "\n" +
5097 5097 " </div>\n" +
5098 5098 " </div>\n" +
5099 5099 "\n" +
5100 5100 "\n" +
5101 5101 " </div>\n" +
5102 5102 " </div>\n" +
5103 5103 "\n" +
5104 5104 " </div>\n" +
5105 5105 "\n" +
5106 5106 " </div>\n" +
5107 5107 "\n" +
5108 5108 " <div class=\"row\">\n" +
5109 5109 " <div class=\"col-sm-6\">\n" +
5110 5110 "\n" +
5111 5111 " <div class=\"panel panel-default\">\n" +
5112 5112 " <div class=\"panel-heading\">\n" +
5113 5113 " <h3 class=\"panel-title\">\n" +
5114 5114 " <span class=\"fa fa-exclamation-triangle\"></span> Report groups trending over {{ index.timeSpan.label }}\n" +
5115 5115 " </h3>\n" +
5116 5116 " </div>\n" +
5117 5117 " <div class=\"panel-body\">\n" +
5118 5118 " <p ng-if=\"index.loading.reports != false\" class=\"text-center\">\n" +
5119 5119 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5120 5120 " </p>\n" +
5121 5121 "\n" +
5122 5122 " <p ng-if=\"index.trendingReports.length == 0 && index.loading.reports == false\">\n" +
5123 5123 " No reports found\n" +
5124 5124 " </p>\n" +
5125 5125 "\n" +
5126 5126 " <div small-report-group-list groups=\"index.trendingReports\" applications=\"index.applications\" ng-if=\"index.loading.reports==false\"></div>\n" +
5127 5127 " </div>\n" +
5128 5128 " </div>\n" +
5129 5129 "\n" +
5130 5130 " </div>\n" +
5131 5131 "\n" +
5132 5132 " <div class=\"col-sm-6\">\n" +
5133 5133 "\n" +
5134 5134 "\n" +
5135 5135 " <div class=\"panel panel-default\">\n" +
5136 5136 " <div class=\"panel-heading\">\n" +
5137 5137 " <h3 class=\"panel-title\">\n" +
5138 5138 " Most common slow calls over {{ index.timeSpan.label }}\n" +
5139 5139 " </h3>\n" +
5140 5140 " </div>\n" +
5141 5141 " <div class=\"panel-body\">\n" +
5142 5142 "\n" +
5143 5143 " <div ng-if=\"index.loading.slowCalls!=false\" class=\"text-center\">\n" +
5144 5144 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5145 5145 " </div>\n" +
5146 5146 "\n" +
5147 5147 " <table id=\"slow-statements\" ng-if=\"index.loading.slowCalls==false\">\n" +
5148 5148 " <tbody>\n" +
5149 5149 " <tr ng-repeat=\"call in index.slowCalls\">\n" +
5150 5150 " <td class=\"occurences\">\n" +
5151 5151 " <span class=\"occurences\" data-uib-tooltip=\"Occurences\">{{call.occurences|numberToThousands}}</span>\n" +
5152 5152 " </td>\n" +
5153 5153 " <td class=\"ellipsis\">\n" +
5154 5154 " <small title=\"{{call.statement}}\" class=\"statement\">{{call.statement}}</small>\n" +
5155 5155 " <br/>\n" +
5156 5156 " <span class=\"type\">{{call.statement_type}}</span>\n" +
5157 5157 " <span class=\"subtype\">{{call.statement_subtype}}</span>\n" +
5158 5158 " <span class=\"duration\" data-uib-tooltip=\"Average duration\">{{call.total_duration/call.occurences|round:2}}s</span>\n" +
5159 5159 " <span class=\"report-list\">\n" +
5160 5160 " Latest reports:\n" +
5161 5161 " <a ng-repeat=\"d in call.latest_details\" target=\"_blank\" ui-sref=\"report.view_detail({groupId:d.group_id, reportId:d.report_id})\"> <strong>{{$index+1}}</strong> </a>\n" +
5162 5162 " </span>\n" +
5163 5163 " </td>\n" +
5164 5164 " </tr>\n" +
5165 5165 " </tbody>\n" +
5166 5166 " </table>\n" +
5167 5167 "\n" +
5168 5168 "\n" +
5169 5169 " </div>\n" +
5170 5170 " </div>\n" +
5171 5171 "\n" +
5172 5172 "\n" +
5173 5173 " </div>\n" +
5174 5174 "\n" +
5175 5175 " </div>\n" +
5176 5176 " </div>\n" +
5177 5177 " </div>\n" +
5178 5178 "</div>\n"
5179 5179 );
5180 5180
5181 5181
5182 5182 $templateCache.put('templates/directives/permissions.html',
5183 5183 "<div class=\"panel panel-default\">\n" +
5184 5184 " <div class=\"panel-heading\">\n" +
5185 5185 " <h3 class=\"panel-title\">Permissions</h3>\n" +
5186 5186 " </div>\n" +
5187 5187 " <div class=\"panel-body\">\n" +
5188 5188 " <p>Here you can <strong>set permissions</strong> for others to access your app data.</p>\n" +
5189 5189 "\n" +
5190 5190 " <p>For example you can let other staff member view or alter error reports.</p>\n" +
5191 5191 "\n" +
5192 5192 " <div ng-if=\"permissions.possibleGroups.length > 0\">\n" +
5193 5193 " <h3>Group permissions</h3>\n" +
5194 5194 "\n" +
5195 5195 " <ul class=\"list-group\">\n" +
5196 5196 " <li ng-repeat=\"perm in permissions.currentPermissions.group\" class=\"animate-repeat list-group-item\">\n" +
5197 5197 " <strong>{{ perm.self.group_name }}</strong>\n" +
5198 5198 " <div ng-repeat=\"perm_name in perm.permissions\" class=\"pull-right animate-repeat m-l-1\">\n" +
5199 5199 " <span ng-if=\"perm_name == '__all_permissions__'\">Resource owner</span>\n" +
5200 5200 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"perm_name != '__all_permissions__'\">\n" +
5201 5201 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> {{ perm_name }}</a>\n" +
5202 5202 " <ul class=\"dropdown-menu\">\n" +
5203 5203 " <li><a>No</a></li>\n" +
5204 5204 " <li><a ng-click=\"permissions.removeGroupPermission(perm_name, perm)\">Yes</a></li>\n" +
5205 5205 " </ul>\n" +
5206 5206 " </span>\n" +
5207 5207 " </div>\n" +
5208 5208 " </li>\n" +
5209 5209 " </ul>\n" +
5210 5210 "\n" +
5211 5211 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"permissions.setGroupPermission()\">\n" +
5212 5212 " <div class=\"form-group\">\n" +
5213 5213 " <select class=\"form-control\" ng-model=\"permissions.form.selectedGroup\" ng-options=\"g.id as g.group_name for g in permissions.possibleGroups\"></select>\n" +
5214 5214 " </div>\n" +
5215 5215 " <div class=\"form-group\">\n" +
5216 5216 " <span ng-repeat=\"permission in permissions.possiblePermissions\">\n" +
5217 5217 " <input type=\"checkbox\" ng-model=\"permissions.form.selectedGroupPermissions[permission]\"> {{ permission }}\n" +
5218 5218 " </span>\n" +
5219 5219 " </div>\n" +
5220 5220 " <div class=\"form-group\">\n" +
5221 5221 " <button class=\"btn btn-info\"><span class=\"fa fa-user\"></span> Give permission</button>\n" +
5222 5222 " </div>\n" +
5223 5223 " </form>\n" +
5224 5224 "\n" +
5225 5225 " </div>\n" +
5226 5226 "\n" +
5227 5227 " <h3>User permissions</h3>\n" +
5228 5228 " <div>\n" +
5229 5229 " <ul class=\"list-group\">\n" +
5230 5230 " <li ng-repeat=\"perm in permissions.currentPermissions.user\" class=\"animate-repeat list-group-item\">\n" +
5231 5231 " <strong>{{ perm.self.user_name }}</strong>\n" +
5232 5232 " <div ng-repeat=\"perm_name in perm.permissions\" class=\"pull-right animate-repeat m-l-1\">\n" +
5233 5233 " <span ng-if=\"perm_name == '__all_permissions__'\">Resource owner</span>\n" +
5234 5234 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"perm_name != '__all_permissions__'\">\n" +
5235 5235 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> {{ perm_name }}</a>\n" +
5236 5236 " <ul class=\"dropdown-menu\">\n" +
5237 5237 " <li><a>No</a></li>\n" +
5238 5238 " <li><a ng-click=\"permissions.removeUserPermission(perm_name,perm)\">Yes</a></li>\n" +
5239 5239 " </ul>\n" +
5240 5240 " </span>\n" +
5241 5241 " </div>\n" +
5242 5242 " </li>\n" +
5243 5243 " </ul>\n" +
5244 5244 " </div>\n" +
5245 5245 " <div>\n" +
5246 5246 " <p>First enter username or full email of person you want to give access to (the person needs to be <strong>already registered in AppEnlight</strong>)</p>\n" +
5247 5247 "\n" +
5248 5248 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"permissions.setUserPermission()\">\n" +
5249 5249 " <div class=\"form-group\">\n" +
5250 5250 " <input type=\"text\" class=\"autocomplete form-control\" placeholder=\"Search for user/email\" ng-model=\"permissions.form.autocompleteUser\"\n" +
5251 5251 " uib-typeahead=\"u.user for u in permissions.searchUsers($viewValue) | limitTo:8\" typeahead-loading=\"permissions.searchingUsers\" typeahead-wait-ms=\"250\"\n" +
5252 5252 " typeahead-template-url=\"templates/directives/user_search_type_ahead.html\"\n" +
5253 5253 " />\n" +
5254 5254 " </div>\n" +
5255 5255 " <div class=\"form-group\">\n" +
5256 5256 " <span ng-repeat=\"permission in permissions.possiblePermissions\">\n" +
5257 5257 " <input type=\"checkbox\" ng-model=\"permissions.form.selectedUserPermissions[permission]\"> {{ permission }}\n" +
5258 5258 " </span>\n" +
5259 5259 " </div>\n" +
5260 5260 " <div class=\"form-group\">\n" +
5261 5261 " <button class=\"btn btn-info\" ng-disabled=\"!permissions.form.autocompleteUser\"><span class=\"fa fa-user\"></span> Give permission</button>\n" +
5262 5262 " </div>\n" +
5263 5263 " </form>\n" +
5264 5264 " </div>\n" +
5265 5265 " </div>\n" +
5266 5266 "</div>\n"
5267 5267 );
5268 5268
5269 5269
5270 5270 $templateCache.put('templates/directives/plugin_config.html',
5271 5271 "<div ng-repeat=\"tmpl in plugin_ctrlr.inclusions track by $index\">\n" +
5272 5272 " <div><strong>Plugin: {{tmpl.name}}</strong></div>\n" +
5273 5273 " <ng-include src=\"tmpl.template\"></ng-include>\n" +
5274 5274 " <hr/>\n" +
5275 5275 "</div>\n"
5276 5276 );
5277 5277
5278 5278
5279 5279 $templateCache.put('templates/directives/postprocess_action.html',
5280 5280 "<div class=\"panel panel-default action\">\n" +
5281 5281 " <div class=\"panel-body form-inline\">\n" +
5282 5282 " <div class=\"pull-right\">\n" +
5283 5283 " <span class=\"dropdown\" data-uib-dropdown>\n" +
5284 5284 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
5285 5285 " <ul class=\"dropdown-menu\">\n" +
5286 5286 " <li><a>No</a></li>\n" +
5287 5287 " <li><a ng-click=\"ctrl.deleteAction(ctrl.action)\">Yes</a></li>\n" +
5288 5288 " </ul>\n" +
5289 5289 " </span>\n" +
5290 5290 " </div>\n" +
5291 5291 "\n" +
5292 5292 " <div class=\"form-group\">\n" +
5293 5293 " <label>Action</label>\n" +
5294 5294 "\n" +
5295 5295 " <div class=\"form-group\">\n" +
5296 5296 " <select class=\"form-control\" ng-model=\"ctrl.action.new_value\" ng-options=\"f[0] as f[1] for f in ctrl.possibleActions\" ng-change=\"ctrl.setDirty()\"></select>\n" +
5297 5297 " </div>\n" +
5298 5298 "\n" +
5299 5299 " <a class=\"btn btn-success\" ng-if=\"ctrl.action.dirty\" ng-click=\"ctrl.saveAction()\"><span class=\"fa fa-save\"></span> &nbsp;Save changes</a>\n" +
5300 5300 "\n" +
5301 5301 " </div>\n" +
5302 5302 " <hr/>\n" +
5303 5303 " <p>Meeting following criteria:</p>\n" +
5304 5304 " <form-errors errors=\"ctrl.errors\"></form-errors>\n" +
5305 5305 " {{ctrl.rule}}\n" +
5306 5306 " <rule rule=\"ctrl.action.rule\" rule-definitions=\"ctrl.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"ctrl.action\"></rule>\n" +
5307 5307 " </div>\n" +
5308 5308 "</div>\n"
5309 5309 );
5310 5310
5311 5311
5312 5312 $templateCache.put('templates/directives/report_alert_action.html',
5313 5313 "<div class=\"panel panel-default action\">\n" +
5314 5314 " <div class=\"panel-body form-inline\">\n" +
5315 5315 " <div class=\"pull-right\">\n" +
5316 5316 " <span class=\"dropdown\" data-uib-dropdown>\n" +
5317 5317 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
5318 5318 " <ul class=\"dropdown-menu\">\n" +
5319 5319 " <li><a>No</a></li>\n" +
5320 5320 " <li><a ng-click=\"ctrl.deleteAction(ctrl.actions, ctrl.action)\">Yes</a></li>\n" +
5321 5321 " </ul>\n" +
5322 5322 " </span>\n" +
5323 5323 " </div>\n" +
5324 5324 "\n" +
5325 5325 " <div class=\"form-group\">\n" +
5326 5326 " <label>Applies to</label>\n" +
5327 5327 " <select class=\"form-control\" ng-model=\"ctrl.action.resource_id\" ng-options=\"f.resource_id as f.resource_name for f in ctrl.applications\" ng-change=\"ctrl.setDirty()\">\n" +
5328 5328 " <option value=\"\">All Resources</option>\n" +
5329 5329 " </select>\n" +
5330 5330 " </div>\n" +
5331 5331 " <div class=\"form-group\">\n" +
5332 5332 " <label>Notify</label>\n" +
5333 5333 " <select class=\"form-control\" ng-model=\"ctrl.action.action\" ng-change=\"ctrl.setDirty()\" ng-options=\"f[0] as f[1] for f in ctrl.possibleNotifications\"></select>\n" +
5334 5334 "\n" +
5335 5335 " <a class=\"btn btn-success\" ng-if=\"ctrl.action.dirty\" ng-click=\"ctrl.saveAction()\"><span class=\"fa fa-save\"></span> &nbsp;Save changes</a>\n" +
5336 5336 "\n" +
5337 5337 " </div>\n" +
5338 5338 " <div>\n" +
5339 5339 " <p><strong>Channels:</strong></p>\n" +
5340 5340 " <ul class=\"list-group\">\n" +
5341 5341 " <li class=\"list-group-item\" ng-repeat=\"channel in ctrl.action.channels\">\n" +
5342 5342 " <strong>{{channel.channel_visible_value}}</strong>\n" +
5343 5343 " <div class=\"pull-right\">\n" +
5344 5344 " <span class=\"dropdown\" data-uib-dropdown>\n" +
5345 5345 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
5346 5346 " <ul class=\"dropdown-menu\">\n" +
5347 5347 " <li><a>No</a></li>\n" +
5348 5348 " <li><a ng-click=\"ctrl.unBindChannel(channel)\">Yes</a></li>\n" +
5349 5349 " </ul>\n" +
5350 5350 " </span>\n" +
5351 5351 " </div>\n" +
5352 5352 " </li>\n" +
5353 5353 " </ul>\n" +
5354 5354 " <div class=\"form-group\" ng-if=\"ctrl.possibleChannels.length\">\n" +
5355 5355 " <select class=\"form-control\" ng-model=\"ctrl.channelToBind\" ng-options=\"c as c.channel_visible_value for c in ctrl.possibleChannels |filter: c.supports_report_alerting\"></select>\n" +
5356 5356 " <a class=\"btn btn-info\" ng-click=\"ctrl.bindChannel(channel, ctrl.action)\"><span class=\"fa fa-plus-circle\"></span> Add Channel</a>\n" +
5357 5357 " </div>\n" +
5358 5358 " <div class=\"alert alert-danger\" ng-if=\"!ctrl.possibleChannels.length\">\n" +
5359 5359 " <span class=\"fa fa-exclamation-triangle \"></span>You need to create an alert channel before you can assign it to your rule.\n" +
5360 5360 " </div>\n" +
5361 5361 "\n" +
5362 5362 " </div>\n" +
5363 5363 " <hr/>\n" +
5364 5364 " <p>Meeting following criteria:</p>\n" +
5365 5365 " <form-errors errors=\"ctrl.errors\"></form-errors>\n" +
5366 5366 " <rule rule=\"ctrl.action.rule\" rule-definitions=\"ctrl.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"ctrl.action\"></rule>\n" +
5367 5367 " </div>\n" +
5368 5368 "</div>\n"
5369 5369 );
5370 5370
5371 5371
5372 5372 $templateCache.put('templates/directives/rule_read_only.html',
5373 5373 "<div class=\"rule-read-only\">\n" +
5374 5374 "\n" +
5375 5375 " <span class=\"form-group\">\n" +
5376 5376 " {{rule_ctrlr.readOnlyPossibleFields[rule_ctrlr.rule.field]}}\n" +
5377 5377 " </span>\n" +
5378 5378 "\n" +
5379 5379 " <span ng-if=\"rule_ctrlr.rule.field != '__AND__' && rule_ctrlr.rule.field !='__OR__' && rule_ctrlr.rule.field !='__NOT__'\">\n" +
5380 5380 " is {{rule_ctrlr.ruleDefinitions.allOps[rule_ctrlr.rule.op]}} {{rule_ctrlr.rule.value}}\n" +
5381 5381 " </span>\n" +
5382 5382 "\n" +
5383 5383 " <span ng-if=\"rule_ctrlr.rule.field == '__AND__' || rule_ctrlr.rule.field =='__OR__' || rule_ctrlr.rule.field =='__NOT__'\">\n" +
5384 5384 " <p ng-if=\"parent\"><strong>Subrules</strong></p>\n" +
5385 5385 " <div ng-repeat=\"subrule in rule_ctrlr.rule.rules\" class=\"m-l-2\">\n" +
5386 5386 "\n" +
5387 5387 " <div class=\"panel panel-default\">\n" +
5388 5388 " <div class=\"panel-body form-inline\">\n" +
5389 5389 " <recursive>\n" +
5390 5390 " <rule-read-only rule=\"subrule\" rule-definitions=\"rule_ctrlr.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"rule_ctrlr.parentObj\"></rule-read-only>\n" +
5391 5391 " </recursive>\n" +
5392 5392 " </div>\n" +
5393 5393 " </div>\n" +
5394 5394 " </div>\n" +
5395 5395 "\n" +
5396 5396 " </span>\n" +
5397 5397 "</div>\n"
5398 5398 );
5399 5399
5400 5400
5401 5401 $templateCache.put('templates/directives/rule.html',
5402 5402 "<div class=\"rule form-inline\">\n" +
5403 5403 "\n" +
5404 5404 " <div class=\"form-group\">\n" +
5405 5405 " <select class=\"form-control\"\n" +
5406 5406 " ng-model=\"rule_ctrlr.rule.field\"\n" +
5407 5407 " ng-change=\"rule_ctrlr.fieldChange()\"\n" +
5408 5408 " ng-options=\"key as label for (key, label) in rule_ctrlr.ruleDefinitions.possibleFields\"></select>\n" +
5409 5409 " </div>\n" +
5410 5410 "\n" +
5411 5411 " <div ng-if=\"rule_ctrlr.rule.field != '__AND__' && rule_ctrlr.rule.field !='__OR__' && rule_ctrlr.rule.field !='__NOT__'\" class=\"form-group\">\n" +
5412 5412 "\n" +
5413 5413 " <select ng-model=\"rule_ctrlr.rule.op\" class=\"form-control\"\n" +
5414 5414 " ng-change=\"rule_ctrlr.setDirty()\"\n" +
5415 5415 " ng-options=\"op as rule_ctrlr.ruleDefinitions.allOps[op] for op in rule_ctrlr.ruleDefinitions.fieldOps[rule_ctrlr.rule.field]\">\n" +
5416 5416 " </select>\n" +
5417 5417 "\n" +
5418 5418 " <input type=\"text\" placeholder=\"Value\" ng-model=\"rule_ctrlr.rule.value\" ng-change=\"rule_ctrlr.setDirty()\" class=\"form-control\">\n" +
5419 5419 "\n" +
5420 5420 " </div>\n" +
5421 5421 "\n" +
5422 5422 " <span ng-if=\"rule_ctrlr.rule.field == '__AND__' || rule_ctrlr.rule.field =='__OR__' || rule_ctrlr.rule.field =='__NOT__'\">\n" +
5423 5423 " <p ng-if=\"parent\"><strong>Subrules</strong></p>\n" +
5424 5424 " <div ng-repeat=\"subrule in rule_ctrlr.rule.rules\" class=\"m-l-2\">\n" +
5425 5425 " <div class=\"panel panel-default\">\n" +
5426 5426 " <div class=\"panel-body form-inline\">\n" +
5427 5427 " <recursive>\n" +
5428 5428 " <rule rule=\"subrule\" rule-definitions=\"rule_ctrlr.ruleDefinitions\" parent-rule=\"rule_ctrlr.rule\" parent-obj=\"rule_ctrlr.parentObj\"></rule>\n" +
5429 5429 " </recursive>\n" +
5430 5430 " </div>\n" +
5431 5431 " </div>\n" +
5432 5432 " </div>\n" +
5433 5433 "\n" +
5434 5434 " <span ng-if=\"(rule_ctrlr.config.disable_subrules == false) == false\" class=\"btn btn-info\" ng-click=\"rule_ctrlr.add()\"><span class=\"fa fa-plus-circle\"></span> Add rule</span>\n" +
5435 5435 "\n" +
5436 5436 " </span>\n" +
5437 5437 " <div class=\"pull-right\" ng-if=\"rule_ctrlr.parentRule\">\n" +
5438 5438 " <span class=\"dropdown\" data-uib-dropdown>\n" +
5439 5439 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
5440 5440 " <ul class=\"dropdown-menu\">\n" +
5441 5441 " <li><a>No</a></li>\n" +
5442 5442 " <li><a ng-click=\"rule_ctrlr.deleteRule(rule_ctrlr.parentRule, rule_ctrlr.rule)\">Yes</a></li>\n" +
5443 5443 " </ul>\n" +
5444 5444 " </span>\n" +
5445 5445 " </div>\n" +
5446 5446 "</div>\n"
5447 5447 );
5448 5448
5449 5449
5450 5450 $templateCache.put('templates/directives/search_type_ahead.html',
5451 5451 "<a>\n" +
5452 5452 " <span class=\"tag\" ng-show=\"match.model.tag\">{{match.model.tag}}</span>\n" +
5453 5453 " <span class=\"tag\" ng-show=\"!match.model.tag\">{{match.label}}</span>\n" +
5454 5454 " <span ng-show=\"match.model.example\">-</span> <span class=\"example\">{{match.model.example}}</span>\n" +
5455 5455 " <div class=\"description\">{{match.model.description}}</div>\n" +
5456 5456 "\n" +
5457 5457 "</a>\n"
5458 5458 );
5459 5459
5460 5460
5461 5461 $templateCache.put('templates/directives/user_search_type_ahead.html',
5462 5462 "<a>\n" +
5463 5463 " <span>{{match.label}}</span> -\n" +
5464 5464 " <span class=\"color-secondary\">{{match.model.name}}</span>\n" +
5465 5465 "</a>\n"
5466 5466 );
5467 5467
5468 5468
5469 5469 $templateCache.put('templates/events.html',
5470 5470 "<div class=\"panel panel-default\">\n" +
5471 5471 " <div class=\"panel-body\">\n" +
5472 5472 "\n" +
5473 5473 " <h1>Event history</h1>\n" +
5474 5474 "\n" +
5475 5475 " <table class=\"table table-striped event-table\">\n" +
5476 5476 " <tr ng-repeat=\"event in events.events track by event.id\">\n" +
5477 5477 " <td class=\"text-center icons\">\n" +
5478 5478 " <span ng-if=\"event.event_type === 1\" class=\"fa fa-exclamation-triangle fa-2x\" style=\"color:orangered\"></span>\n" +
5479 5479 " <span ng-if=\"event.event_type === 3\" class=\"fa fa-clock-o fa-2x\" style=\"color:darkorange\"></span>\n" +
5480 5480 " <span ng-if=\"event.event_type === 7\" class=\"fa fa-question-circle fa-2x\" style=\"color:dimgrey\"></span>\n" +
5481 5481 " <span ng-if=\"event.event_type === 9\" class=\"fa fa-line-chart fa-2x\" style=\"color:green\"></span>\n" +
5482 5482 " </td>\n" +
5483 5483 " <td>\n" +
5484 5484 " <p>For <strong>{{ event.resource_name }}</strong></p>\n" +
5485 5485 "\n" +
5486 5486 " <p>{{ event.text }}</p>\n" +
5487 5487 " <small class=\"date\" data-uib-tooltip=\"{{event.start_date}}\"> created:\n" +
5488 5488 " <iso-to-relative-time time=\"{{event.start_date}}\"/>\n" +
5489 5489 " </small>\n" +
5490 5490 " <small class=\"date\" ng-show=\"event.end_date\" data-uib-tooltip=\"{{event.end_date}}\"> | closed:\n" +
5491 5491 " <iso-to-relative-time time=\"{{event.end_date}}\"/>\n" +
5492 5492 " </small>\n" +
5493 5493 " </td>\n" +
5494 5494 " <td class=\"options\">\n" +
5495 5495 "\n" +
5496 5496 " <span class=\"dropdown pull-right\" ng-if=\"event.status === 1\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
5497 5497 " <a class=\"dropdown-toggle btn btn-danger\" data-uib-dropdown-toggle>\n" +
5498 5498 " <span class=\"fa fa-exclamation-circle\"></span>\n" +
5499 5499 " </a>\n" +
5500 5500 " <ul class=\"dropdown-menu\">\n" +
5501 5501 " <li>\n" +
5502 5502 " <a ng-click=\"events.closeEvent(event)\">Close event</a>\n" +
5503 5503 " <a>Do nothing</a>\n" +
5504 5504 " </li>\n" +
5505 5505 " </ul>\n" +
5506 5506 " </span>\n" +
5507 5507 "\n" +
5508 5508 " </td>\n" +
5509 5509 " </tr>\n" +
5510 5510 " </table>\n" +
5511 5511 " </div>\n" +
5512 5512 "</div>\n"
5513 5513 );
5514 5514
5515 5515
5516 5516 $templateCache.put('templates/integrations/bitbucket.html',
5517 5517 " <div class=\"modal-header\">\n" +
5518 5518 " <h3 class=\"m-t-0\">Add issue to Bitbucket</h3>\n" +
5519 5519 " </div>\n" +
5520 5520 " <div class=\"modal-body\">\n" +
5521 5521 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5522 5522 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5523 5523 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5524 5524 " </div>\n" +
5525 5525 "\n" +
5526 5526 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5527 5527 " <div class=\"form-group\">\n" +
5528 5528 " <label for=\"issue_title\">Issue Title</label>\n" +
5529 5529 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5530 5530 " </div>\n" +
5531 5531 " <div class=\"form-group row\">\n" +
5532 5532 " <div class=\"col-sm-6\">\n" +
5533 5533 " <label for=\"issue_priority\">Priority</label>\n" +
5534 5534 " <select class=\"form-control\" id=\"issue_priority\" ng-options=\"s for s in ctrl.priorities\" ng-model=\"ctrl.form.priority\"></select>\n" +
5535 5535 " </div>\n" +
5536 5536 "\n" +
5537 5537 " <div class=\"col-sm-6\">\n" +
5538 5538 " <label for=\"issue_responsible\">Assignee</label>\n" +
5539 5539 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.user for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5540 5540 " </div>\n" +
5541 5541 " </div>\n" +
5542 5542 " <div class=\"form-group\">\n" +
5543 5543 " <label for=\"issue_content\">Description</label>\n" +
5544 5544 " <textarea id=\"issue_content\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5545 5545 " </div>\n" +
5546 5546 " </form>\n" +
5547 5547 "\n" +
5548 5548 " </div>\n" +
5549 5549 " <div class=\"modal-footer\">\n" +
5550 5550 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5551 5551 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5552 5552 " </div>\n"
5553 5553 );
5554 5554
5555 5555
5556 5556 $templateCache.put('templates/integrations/github.html',
5557 5557 " <div class=\"modal-header\">\n" +
5558 5558 " <h3 class=\"m-t-0\">Add issue to Github</h3>\n" +
5559 5559 " </div>\n" +
5560 5560 " <div class=\"modal-body\">\n" +
5561 5561 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5562 5562 "\n" +
5563 5563 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5564 5564 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5565 5565 " </div>\n" +
5566 5566 "\n" +
5567 5567 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5568 5568 " <div class=\"form-group\">\n" +
5569 5569 " <label for=\"issue_title\">Issue Title</label>\n" +
5570 5570 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5571 5571 " </div>\n" +
5572 5572 " <div class=\"form-group row\">\n" +
5573 5573 " <div class=\"col-sm-6\">\n" +
5574 5574 " <label for=\"issue_status\">Tag</label>\n" +
5575 5575 " <select class=\"form-control\" id=\"issue_status\" ng-options=\"s for s in ctrl.statuses\" ng-model=\"ctrl.form.status\"></select>\n" +
5576 5576 " </div>\n" +
5577 5577 "\n" +
5578 5578 " <div class=\"col-sm-6\">\n" +
5579 5579 " <label for=\"issue_responsible\">Assignee</label>\n" +
5580 5580 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.user for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5581 5581 " </div>\n" +
5582 5582 " </div>\n" +
5583 5583 " <div class=\"form-group\">\n" +
5584 5584 " <label for=\"issue_description\">Description</label>\n" +
5585 5585 " <textarea id=\"issue_description\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5586 5586 " </div>\n" +
5587 5587 " </form>\n" +
5588 5588 "\n" +
5589 5589 " </div>\n" +
5590 5590 " <div class=\"modal-footer\">\n" +
5591 5591 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5592 5592 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5593 5593 " </div>\n"
5594 5594 );
5595 5595
5596 5596
5597 5597 $templateCache.put('templates/integrations/jira.html',
5598 5598 " <div class=\"modal-header\">\n" +
5599 5599 " <h3 class=\"m-t-0\">Add issue to Jira</h3>\n" +
5600 5600 " </div>\n" +
5601 5601 " <div class=\"modal-body\">\n" +
5602 5602 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5603 5603 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5604 5604 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5605 5605 " </div>\n" +
5606 5606 "\n" +
5607 5607 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5608 5608 " <div class=\"form-group\">\n" +
5609 5609 " <label for=\"issue_title\">Issue Title</label>\n" +
5610 5610 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5611 5611 " </div>\n" +
5612 5612 " <div class=\"form-group row\">\n" +
5613 5613 " <div class=\"col-sm-6\">\n" +
5614 5614 " <label for=\"issue_priority\">Priority</label>\n" +
5615 5615 " <select class=\"form-control\" id=\"issue_priority\" ng-options=\"s.name for s in ctrl.priorities\" ng-model=\"ctrl.form.priority\"></select>\n" +
5616 5616 " </div>\n" +
5617 5617 "\n" +
5618 5618 " <div class=\"col-sm-6\">\n" +
5619 5619 " <label for=\"issue_responsible\">Assignee</label>\n" +
5620 5620 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.name for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5621 5621 " </div>\n" +
5622 5622 " </div>\n" +
5623 5623 " <div class=\"form-group\">\n" +
5624 5624 " <label for=\"issue_content\">Description</label>\n" +
5625 5625 " <textarea id=\"issue_content\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5626 5626 " </div>\n" +
5627 5627 " </form>\n" +
5628 5628 "\n" +
5629 5629 " </div>\n" +
5630 5630 " <div class=\"modal-footer\">\n" +
5631 5631 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5632 5632 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5633 5633 " </div>\n"
5634 5634 );
5635 5635
5636 5636
5637 5637 $templateCache.put('templates/loader.html',
5638 5638 "<div class=\"text-center\">\n" +
5639 5639 " <span class=\"fa fa-cog fa-spin fa-5x m-a-4\"></span>\n" +
5640 5640 "</div>\n"
5641 5641 );
5642 5642
5643 5643
5644 5644 $templateCache.put('templates/logs.html',
5645 5645 "<ng-include src=\"'templates/loader.html'\" ng-if=\"logs.isLoading.logs\"></ng-include>\n" +
5646 5646 "\n" +
5647 5647 "<div ng-if=\"logs.isLoading.logs === false\">\n" +
5648 5648 "\n" +
5649 5649 " <p class=\"search-params\">\n" +
5650 5650 " <strong>Search params:</strong>\n" +
5651 5651 " <span ng-repeat=\"tag in logs.searchParams.tags\" class=\"tag\">\n" +
5652 5652 " <strong>{{tag.type}}</strong>\n" +
5653 5653 " {{ tag.type == 'resource' ? logs.applications[tag.value].resource_name : tag.value }}\n" +
5654 5654 "\n" +
5655 5655 " <a ng-click=\"logs.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
5656 5656 " </span>\n" +
5657 5657 " </p>\n" +
5658 5658 "\n" +
5659 5659 " <p>\n" +
5660 5660 "\n" +
5661 5661 " <script type=\"text/ng-template\" id=\"SearchTypeAheadUrl.html\">\n" +
5662 5662 "\n" +
5663 5663 " </script>\n" +
5664 5664 "\n" +
5665 5665 " <form class=\"form\">\n" +
5666 5666 " <div class=\"typeahead-tags\">\n" +
5667 5667 " <input type=\"text\" id=\"typeAhead\" ng-model=\"logs.filterTypeAhead\" placeholder=\"Start typing to filter logs for events, filter by servers, namespaces, levels.\"\n" +
5668 5668 " ng-keydown=\"logs.typeAheadTag($event)\"\n" +
5669 5669 " uib-typeahead=\"tag as tag.text for tag in logs.filterTypeAheadOptions | filter:$viewValue:logs.aheadFilter\"\n" +
5670 5670 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
5671 5671 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
5672 5672 " </div>\n" +
5673 5673 " </form>\n" +
5674 5674 "\n" +
5675 5675 " <div class=\"well animate-show position-absolute increse-zindex\" ng-if=\"logs.showDatePicker\" ng-model=\"logs.pickerDate\" ng-change=\"logs.pickerDateChanged()\">\n" +
5676 5676 " <uib-datepicker></uib-datepicker>\n" +
5677 5677 " </div>\n" +
5678 5678 "\n" +
5679 5679 " </p>\n" +
5680 5680 "\n" +
5681 5681 " <div class=\"panel\">\n" +
5682 5682 "\n" +
5683 5683 " <div class=\"panel-body\">\n" +
5684 5684 " <c3chart data-domid=\"log_events_chart\" data-data=\"logs.logEventsChartData\" data-config=\"logs.logEventsChartConfig\">\n" +
5685 5685 " </c3chart>\n" +
5686 5686 " </div>\n" +
5687 5687 " </div>\n" +
5688 5688 "\n" +
5689 5689 "\n" +
5690 5690 " <div class=\"text-center\">\n" +
5691 5691 " <uib-pagination total-items=\"logs.itemCount\" items-per-page=\"logs.itemsPerPage\" ng-model=\"logs.searchParams.page\" max-size=\"10\"\n" +
5692 5692 " ng-change=\"logs.paginationChange()\"\n" +
5693 5693 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"></uib-pagination>\n" +
5694 5694 " </div>\n" +
5695 5695 "\n" +
5696 5696 " <div class=\"panel panel-default\">\n" +
5697 5697 "\n" +
5698 5698 " <table class=\"table table-striped log-list\">\n" +
5699 5699 " <caption>Logs</caption>\n" +
5700 5700 " <thead>\n" +
5701 5701 " <tr>\n" +
5702 5702 " <th class=\"c1 resource\">Application</th>\n" +
5703 5703 " <th class=\"c2 message\">Message</th>\n" +
5704 5704 " <th class=\"c3 when\">When</th>\n" +
5705 5705 " </tr>\n" +
5706 5706 " </thead>\n" +
5707 5707 " <tbody>\n" +
5708 5708 " <tr ng-repeat=\"log in logs.logsPage track by log.log_id\" class=\"{{$odd ? 'odd' : 'even'}}\">\n" +
5709 5709 " <td class=\"c1\">\n" +
5710 5710 " <a class=\"tag application\" ng-click=\"logs.addSearchTag({type:'resource', value:log.resource_id})\">\n" +
5711 5711 " <span class=\"name\">{{log.resource_name}}</span></a>\n" +
5712 5712 " </td>\n" +
5713 5713 " <td class=\"c2\">\n" +
5714 5714 " <a class=\"tag {{log.log_level|lowercase}}\" ng-click=\"logs.addSearchTag({type:'level', value:log.log_level})\">\n" +
5715 5715 " <span class=\"name\">level:</span> {{log.log_level}}</a>\n" +
5716 5716 " <a class=\"tag\" ng-click=\"logs.addSearchTag({type:'namespace', value:log.namespace})\">\n" +
5717 5717 " <span class=\"name\">namespace:</span> {{log.namespace}}</a>\n" +
5718 5718 " <a ng-repeat=\"(tag, value) in log.tags\" class=\"tag\" ng-click=\"logs.addSearchTag({type:tag, value:value})\">\n" +
5719 5719 " <span class=\"name\">{{tag}}:</span> {{value}}</a>\n" +
5720 " <div class=\"log\">\n" +
5721 " {{log.message}}\n" +
5722 " </div>\n" +
5720 " <div class=\"log\">{{log.message}}</div>\n" +
5723 5721 " </td>\n" +
5724 5722 " <td class=\"c3 when\">\n" +
5725 5723 " <a ng-click=\"logs.filterId(log)\" data-uib-tooltip=\"{{log.timestamp}}\">\n" +
5726 5724 " <iso-to-relative-time time=\"{{log.timestamp}}\"/>\n" +
5727 5725 " </a>\n" +
5728 5726 " </td>\n" +
5729 5727 " </tr>\n" +
5730 5728 "\n" +
5731 5729 " </tbody>\n" +
5732 5730 " </table>\n" +
5733 5731 "\n" +
5734 5732 " </div>\n" +
5735 5733 "\n" +
5736 5734 " <div class=\"text-center\">\n" +
5737 5735 " <uib-pagination total-items=\"logs.itemCount\" items-per-page=\"logs.itemsPerPage\" ng-model=\"logs.searchParams.page\" max-size=\"10\"\n" +
5738 5736 " ng-change=\"logs.paginationChange()\"\n" +
5739 5737 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"></uib-pagination>\n" +
5740 5738 " </div>\n" +
5741 5739 "\n" +
5742 5740 "</div>\n"
5743 5741 );
5744 5742
5745 5743
5746 5744 $templateCache.put('templates/quickstart.html',
5747 5745 "<h2>AppEnlight quickstart</h2>\n" +
5748 5746 "\n" +
5749 5747 "<p>\n" +
5750 5748 " <span class=\"point\">1</span>\n" +
5751 5749 " For AppEnlight to operate, you need to\n" +
5752 5750 " <a data-ui-sref=\"applications.update({resourceId:'new'})\" target=\"_blank\"><strong>create an app profile</strong></a> that allows\n" +
5753 5751 " you to\n" +
5754 5752 " obtain an <strong>API key</strong> that one of the clients can use.\n" +
5755 5753 "</p>\n" +
5756 5754 "\n" +
5757 5755 "<div class=\"clear\"></div>\n" +
5758 5756 "<hr/>\n" +
5759 5757 "\n" +
5760 5758 "<p>\n" +
5761 5759 " <span class=\"point\">2</span>\n" +
5762 5760 " It is a good idea to configure an\n" +
5763 5761 " <a data-ui-sref=\"user.alert_channels.email\" target=\"_blank\">\n" +
5764 5762 " <strong>email alert channel</strong></a> that you can use to receive\n" +
5765 5763 " notifications about events that happen in your application.\n" +
5766 5764 "</p>\n" +
5767 5765 "\n" +
5768 5766 "<p>\n" +
5769 5767 " It can be the same email account you used to register withing AppEnlight -\n" +
5770 5768 " although we often recommend using a separate <em>errors@...</em> account\n" +
5771 5769 " designated for alert notifications.\n" +
5772 5770 "</p>\n" +
5773 5771 "\n" +
5774 5772 "<div class=\"clear\"></div>\n" +
5775 5773 "<hr/>\n" +
5776 5774 "\n" +
5777 5775 "<p>\n" +
5778 5776 " <span class=\"point\">3</span>\n" +
5779 5777 " In order for your application to stream meaningful information, you will need to\n" +
5780 5778 " integrate a compatible client for your language of choice.\n" +
5781 5779 "</p>\n" +
5782 5780 "\n" +
5783 5781 "<p>Head over to the <a href=\"{{AeConfig.urls.docs}}\" target=\"_blank\">\n" +
5784 5782 " <strong>developers section</strong></a> for information on currently available\n" +
5785 5783 " clients that you can plug into your software</p>\n"
5786 5784 );
5787 5785
5788 5786
5789 5787 $templateCache.put('templates/register.html',
5790 5788 ""
5791 5789 );
5792 5790
5793 5791
5794 5792 $templateCache.put('templates/reports/list_slow.html',
5795 5793 "<ng-include src=\"'templates/loader.html'\" ng-if=\"reports_list.is_loading\"></ng-include>\n" +
5796 5794 "\n" +
5797 5795 "<div ng-if=\"reports_list.is_loading === false\">\n" +
5798 5796 "\n" +
5799 5797 " <p class=\"search-params\">\n" +
5800 5798 " <strong>Search params:</strong>\n" +
5801 5799 " <span ng-repeat=\"tag in reports_list.searchParams.tags\" class=\"tag\">\n" +
5802 5800 " <strong>{{tag.type}}</strong>\n" +
5803 5801 " {{ tag.type == 'resource' ? reports_list.applications[tag.value].resource_name : tag.value }}\n" +
5804 5802 "\n" +
5805 5803 " <a ng-click=\"reports_list.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
5806 5804 " </span>\n" +
5807 5805 " </p>\n" +
5808 5806 "\n" +
5809 5807 " <p>\n" +
5810 5808 "\n" +
5811 5809 " <form class=\"form\">\n" +
5812 5810 " <div class=\"typeahead-tags\">\n" +
5813 5811 " <input type=\"text\" id=\"typeAhead\" ng-model=\"reports_list.filterTypeAhead\" placeholder=\"Start typing to filter slowness reports - filter by tags, average response time, priority or other properties.\"\n" +
5814 5812 " ng-keydown=\"reports_list.typeAheadTag($event)\"\n" +
5815 5813 " uib-typeahead=\"tag as tag.text for tag in reports_list.filterTypeAheadOptions | filter:$viewValue:aheadFilter\"\n" +
5816 5814 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
5817 5815 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
5818 5816 " </div>\n" +
5819 5817 " </form>\n" +
5820 5818 "\n" +
5821 5819 "\n" +
5822 5820 " <div class=\"well position-absolute increse-zindex\" ng-show=\"reports_list.showDatePicker\" ng-model=\"reports_list.pickerDate\" ng-change=\"reports_list.pickerDateChanged()\"\n" +
5823 5821 " class=\"animate-show\">\n" +
5824 5822 " <uib-datepicker></uib-datepicker>\n" +
5825 5823 " </div>\n" +
5826 5824 "\n" +
5827 5825 " </p>\n" +
5828 5826 "\n" +
5829 5827 "\n" +
5830 5828 " <div class=\"text-center\">\n" +
5831 5829 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
5832 5830 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
5833 5831 " ng-change=\"reports_list.paginationChange()\"\n" +
5834 5832 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
5835 5833 " </div>\n" +
5836 5834 "\n" +
5837 5835 "\n" +
5838 5836 " <div class=\"panel panel-default\">\n" +
5839 5837 " <!-- Default panel contents -->\n" +
5840 5838 "\n" +
5841 5839 " <table class=\"table table-striped report-list\" ng-show=\"!reports_list.is_loading\">\n" +
5842 5840 " <caption>Slow Request Reports</caption>\n" +
5843 5841 " <thead>\n" +
5844 5842 " <tr>\n" +
5845 5843 " <td class=\"c1 ordering occurences\">#</td>\n" +
5846 5844 " <td class=\"c2 average_duration\">Avg. duration</td>\n" +
5847 5845 " <td class=\"c3 application\">Application</td>\n" +
5848 5846 " <td class=\"c5 when\">When <input type=\"checkbox\" ng-model=\"reports_list.notRelativeTime\"\n" +
5849 5847 " ng-change=\"reports_list.changeRelativeTime()\"\n" +
5850 5848 " title=\"Tick to see UTC time instead relative\"></td>\n" +
5851 5849 " <td class=\"c6 error_type\">Location</td>\n" +
5852 5850 " </tr>\n" +
5853 5851 " </thead>\n" +
5854 5852 " <tbody>\n" +
5855 5853 " <tr ng-repeat=\"report in reports_list.reportsPage track by report.id\">\n" +
5856 5854 " <td class=\"c1 occurences\">\n" +
5857 5855 " <span class=\"priority-{{report.group.priority}}\" data-uib-tooltip=\"Report priority\">{{report.group.priority}}</span>\n" +
5858 5856 " <span class=\"count {{report.presentation.className}}\" data-uib-tooltip=\"{{report.presentation.tooltip}}\">\n" +
5859 5857 " {{report.group.occurences|numberToThousands}}\n" +
5860 5858 " </span>\n" +
5861 5859 " </td>\n" +
5862 5860 " <td class=\"c2 average_duration\">{{report.group.average_duration.toFixed(3)}}s</td>\n" +
5863 5861 " <td class=\"c3 application\">\n" +
5864 5862 " <div class=\"app_name\">{{report.resource_name}}</div>\n" +
5865 5863 " <span class=\"server\">@{{report.tags.server_name}}</span></td>\n" +
5866 5864 " <td class=\"c4 when\">\n" +
5867 5865 " <span ng-show=\"!reports_list.notRelativeTime\"><span data-uib-tooltip=\"{{report.group.last_timestamp}}\"><iso-to-relative-time\n" +
5868 5866 " time=\"{{report.group.last_timestamp}}\"/></span>\n" +
5869 5867 " </span>\n" +
5870 5868 " <span ng-show=\"reports_list.notRelativeTime\">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>\n" +
5871 5869 " </td>\n" +
5872 5870 " <td class=\"c5 report ellipsis\">\n" +
5873 5871 " <a ui-sref=\"report.view_detail({groupId:report.group.id, reportId:report.id})\">{{ report.tags.view_name || report.url_path}} </span></a></td>\n" +
5874 5872 " </td>\n" +
5875 5873 " </tr>\n" +
5876 5874 "\n" +
5877 5875 " </tbody>\n" +
5878 5876 " </table>\n" +
5879 5877 "\n" +
5880 5878 " </div>\n" +
5881 5879 "\n" +
5882 5880 " <div class=\"text-center\">\n" +
5883 5881 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
5884 5882 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
5885 5883 " ng-change=\"reports_list.paginationChange()\"\n" +
5886 5884 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
5887 5885 " </div>\n" +
5888 5886 "\n" +
5889 5887 "</div>\n"
5890 5888 );
5891 5889
5892 5890
5893 5891 $templateCache.put('templates/reports/list.html',
5894 5892 "<ng-include src=\"'templates/loader.html'\" ng-if=\"reports_list.is_loading\"></ng-include>\n" +
5895 5893 "\n" +
5896 5894 "<div ng-if=\"reports_list.is_loading === false\">\n" +
5897 5895 "\n" +
5898 5896 " <p class=\"search-params\">\n" +
5899 5897 " <strong>Search params:</strong>\n" +
5900 5898 " <span ng-repeat=\"tag in reports_list.searchParams.tags\" class=\"tag\">\n" +
5901 5899 " <strong>{{tag.type}}</strong>\n" +
5902 5900 " {{ tag.type == 'resource' ? reports_list.applications[tag.value].resource_name : tag.value }}\n" +
5903 5901 "\n" +
5904 5902 " <a ng-click=\"reports_list.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
5905 5903 " </span>\n" +
5906 5904 " </p>\n" +
5907 5905 "\n" +
5908 5906 " <form class=\"form\">\n" +
5909 5907 " <div class=\"typeahead-tags\">\n" +
5910 5908 " <input type=\"text\" id=\"typeAhead\" ng-model=\"reports_list.filterTypeAhead\" placeholder=\"Start typing to filter reports - filter by tags, exception, priority or other properties.\"\n" +
5911 5909 " ng-keydown=\"reports_list.typeAheadTag($event)\"\n" +
5912 5910 " uib-typeahead=\"tag as tag.text for tag in reports_list.filterTypeAheadOptions | filter:$viewValue:aheadFilter\"\n" +
5913 5911 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
5914 5912 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
5915 5913 " </div>\n" +
5916 5914 " </form>\n" +
5917 5915 "\n" +
5918 5916 "\n" +
5919 5917 " <div class=\"well position-absolute increse-zindex\" ng-show=\"reports_list.showDatePicker\" ng-model=\"reports_list.pickerDate\" ng-change=\"reports_list.pickerDateChanged()\"\n" +
5920 5918 " class=\"animate-show\">\n" +
5921 5919 " <uib-datepicker></uib-datepicker>\n" +
5922 5920 " </div>\n" +
5923 5921 "\n" +
5924 5922 " </p>\n" +
5925 5923 "\n" +
5926 5924 "\n" +
5927 5925 " <div class=\"text-center\">\n" +
5928 5926 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
5929 5927 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
5930 5928 " ng-change=\"reports_list.paginationChange()\"\n" +
5931 5929 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
5932 5930 " </div>\n" +
5933 5931 "\n" +
5934 5932 " <div class=\"panel panel-default\">\n" +
5935 5933 " <!-- Default panel contents -->\n" +
5936 5934 "\n" +
5937 5935 " <table class=\"table table-striped report-list\" ng-show=\"!reports_list.is_loading\">\n" +
5938 5936 " <caption>Reports</caption>\n" +
5939 5937 " <thead>\n" +
5940 5938 " <tr>\n" +
5941 5939 " <th class=\"c1 ordering occurences\">#</th>\n" +
5942 5940 " <th class=\"c2 application\">Application</th>\n" +
5943 5941 " <th class=\"c4 when\">When <input type=\"checkbox\" ng-model=\"reports_list.notRelativeTime\"\n" +
5944 5942 " ng-change=\"reports_list.changeRelativeTime()\"\n" +
5945 5943 " title=\"Tick to see UTC time instead relative\"></th>\n" +
5946 5944 " <th class=\"c5 error_type\">Error</th>\n" +
5947 5945 " </tr>\n" +
5948 5946 " </thead>\n" +
5949 5947 " <tbody>\n" +
5950 5948 " <tr ng-repeat=\"report in reports_list.reportsPage track by report.id\">\n" +
5951 5949 " <td class=\"c1 occurences\">\n" +
5952 5950 " <span class=\"priority-{{report.group.priority}}\" data-uib-tooltip=\"Report priority\">{{report.group.priority}}</span>\n" +
5953 5951 " <span class=\"count {{report.presentation.className}}\" data-uib-tooltip=\"{{report.presentation.tooltip}}\">\n" +
5954 5952 " {{report.group.occurences|numberToThousands}}\n" +
5955 5953 " </span>\n" +
5956 5954 " </td>\n" +
5957 5955 " <td class=\"c2 application\">\n" +
5958 5956 " <div class=\"app_name\">{{report.resource_name}}</div>\n" +
5959 5957 " <span class=\"server\">@{{report.tags.server_name}}</span></td>\n" +
5960 5958 " <td class=\"c3 when\">\n" +
5961 5959 " <span ng-show=\"!reports_list.notRelativeTime\"><span data-uib-tooltip=\"{{report.group.last_timestamp}}\"><iso-to-relative-time\n" +
5962 5960 " time=\"{{report.group.last_timestamp}}\"/></span>\n" +
5963 5961 " </span>\n" +
5964 5962 " <span ng-show=\"reports_list.notRelativeTime\">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>\n" +
5965 5963 " </td>\n" +
5966 5964 " <td class=\"c4 report ellipsis\"><a ui-sref=\"report.view_detail({groupId:report.group.id, reportId:report.id})\" title=\"{{report.error}}\">{{report.error || 'Unknown Exception'}}</a> <br/>\n" +
5967 5965 " <span class=\"url\">{{ report.tags.view_name || report.url_path}}</td>\n" +
5968 5966 " </tr>\n" +
5969 5967 "\n" +
5970 5968 " </tbody>\n" +
5971 5969 " </table>\n" +
5972 5970 " </div>\n" +
5973 5971 "\n" +
5974 5972 "\n" +
5975 5973 " <div class=\"text-center\">\n" +
5976 5974 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
5977 5975 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
5978 5976 " ng-change=\"reports_list.paginationChange()\"\n" +
5979 5977 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
5980 5978 " </div>\n" +
5981 5979 "\n" +
5982 5980 "</div>\n"
5983 5981 );
5984 5982
5985 5983
5986 5984 $templateCache.put('templates/reports/parent_view.html',
5987 5985 "<div ui-view></div>"
5988 5986 );
5989 5987
5990 5988
5991 5989 $templateCache.put('templates/reports/small_report_group_list.html',
5992 5990 "<table class=\"errors-small-list\">\n" +
5993 5991 " <tr ng-repeat=\"report_group in groups track by report_group.id\" class=\"animate-repeat\">\n" +
5994 5992 " <td class=\"c1 occurences\"><span class=\"occurences\" data-uib-tooltip=\"occurences\">{{ report_group.occurences|numberToThousands }}</span></td>\n" +
5995 5993 " <td class=\"ellipsis c2 report_group\">\n" +
5996 5994 " <a ui-sref=\"report.view_detail({groupId:report_group.id, reportId:report_group.last_report})\" title=\"{{report_group.error}}\" class=\"error-type\">\n" +
5997 5995 " {{ report_group.error || \"Slow Report\"}}</a>\n" +
5998 5996 " <br/>\n" +
5999 5997 " <span ng-show=\"report_group.summed_duration\" class=\"duration\" data-uib-tooltip=\"Average duration\">{{report_group.summed_duration/report_group.occurences|round:2}}s</span>\n" +
6000 5998 " <span class=\"url\">{{ report_group.view_name || report_group.url_path}}</span>\n" +
6001 5999 " </td>\n" +
6002 6000 " <td class=\"info\">\n" +
6003 6001 " <strong ng-show=\"report_group.resource_id\">@{{applications[report_group.resource_id].resource_name}}</strong><br/>\n" +
6004 6002 " <span class=\"date\">{{report_group.last_timestamp | isoToRelativeTime}}</span>\n" +
6005 6003 " </td>\n" +
6006 6004 " </tr>\n" +
6007 6005 "</table>\n"
6008 6006 );
6009 6007
6010 6008
6011 6009 $templateCache.put('templates/reports/small_report_list.html',
6012 6010 "<table class=\"errors-small-list\">\n" +
6013 6011 " <tr ng-repeat=\"report in reports track by $index\" ng-show=\"reports.length > 0\" class=\"animate-repeat\">\n" +
6014 6012 " <td class=\"c1 occurences\"><span class=\"occurences\" data-uib-tooltip=\"occurences\">{{ report.group.occurences|numberToThousands }}</span></td>\n" +
6015 6013 " <td class=\"ellipsis c2 report\">\n" +
6016 6014 " <a ui-sref=\"report.view_detail({groupId:report.group_id, reportId:report.report_id})\" title=\"{{report.error}}\" class=\"error-type\">\n" +
6017 6015 " {{ report.error || \"Slow Report\"}}</a>\n" +
6018 6016 " <br/>\n" +
6019 6017 " <span ng-show=\"report.group.summed_duration\" class=\"duration\" data-uib-tooltip=\"Average duration\">{{report.group.summed_duration/report.group.occurences|round:2}}s</span>\n" +
6020 6018 " <span class=\"url\">{{ report.view_name || report.url_path}}</span>\n" +
6021 6019 " </td>\n" +
6022 6020 " <td class=\"info\">\n" +
6023 6021 " <strong ng-show=\"report.resource_id\">@{{applications[report.resource_id].resource_name}}</strong><br/>\n" +
6024 6022 " <span class=\"date\">{{report.last_timestamp | isoToRelativeTime}}</span>\n" +
6025 6023 " </td>\n" +
6026 6024 " </tr>\n" +
6027 6025 "</table>\n"
6028 6026 );
6029 6027
6030 6028
6031 6029 $templateCache.put('templates/reports/view.html',
6032 6030 "<script type=\"text/ng-template\" id=\"slow_call.html\">\n" +
6033 6031 " <table class=\"report-table\">\n" +
6034 6032 " <tr>\n" +
6035 6033 " <td class=\"table-label\">Type</td>\n" +
6036 6034 " <td class=\"data\"><strong>{{call.type}}\n" +
6037 6035 " ({{call.subtype}})\n" +
6038 6036 " </strong></td>\n" +
6039 6037 " </tr>\n" +
6040 6038 " <tr>\n" +
6041 6039 " <td class=\"table-label\">Duration</td>\n" +
6042 6040 " <td class=\"data\"><strong class=\"textColor_1\">{{call.duration}}</strong></td>\n" +
6043 6041 " </tr>\n" +
6044 6042 " <tr>\n" +
6045 6043 " <td class=\"table-label\">Start Time</td>\n" +
6046 6044 " <td class=\"data\">{{call.timestamp}}</td>\n" +
6047 6045 " </tr>\n" +
6048 6046 " <tr>\n" +
6049 6047 " <td class=\"table-label\">Statement</td>\n" +
6050 6048 " <td class=\"data\">\n" +
6051 6049 " <pre class=\"word-wrap\">{{call.statement}}</pre>\n" +
6052 6050 " </td>\n" +
6053 6051 " </tr>\n" +
6054 6052 " <tr ng-if=\"call.location\">\n" +
6055 6053 " <td class=\"table-label\">Location</td>\n" +
6056 6054 " <td class=\"data\">{{call.location}}</td>\n" +
6057 6055 " </tr>\n" +
6058 6056 " <tr>\n" +
6059 6057 " <td class=\"table-label\">Parameters</td>\n" +
6060 6058 " <td class=\"\">\n" +
6061 6059 " <div class=\"var-listing\" human-format vars=\"call.parameters\"></div>\n" +
6062 6060 " </td>\n" +
6063 6061 " </tr>\n" +
6064 6062 " </table>\n" +
6065 6063 "\n" +
6066 6064 " <div ng-if=\"call.children.length > 0\" class=\"subcalls p-l-8\">\n" +
6067 6065 "\n" +
6068 6066 " <p><strong>\n" +
6069 6067 " <small>Sub-calls</small>\n" +
6070 6068 " </strong></p>\n" +
6071 6069 "\n" +
6072 6070 " <div class=\"panel panel-default\">\n" +
6073 6071 " <div ng-repeat=\"call in call.children\" ng-include=\"'slow_call.html'\" class=\"panel-body\"/>\n" +
6074 6072 " </div>\n" +
6075 6073 " </div>\n" +
6076 6074 " </div>\n" +
6077 6075 "\n" +
6078 6076 "</script>\n" +
6079 6077 "\n" +
6080 6078 "<script type=\"text/ng-template\" id=\"AssignReportCtrl.html\">\n" +
6081 6079 "\n" +
6082 6080 " <div class=\"modal-header\">\n" +
6083 6081 " <h3>Assign users to report</h3>\n" +
6084 6082 " </div>\n" +
6085 6083 " <div class=\"modal-body\">\n" +
6086 6084 "\n" +
6087 6085 " <ng-include src=\"'templates/loader.html'\" ng-if=\"ctrl.loading\"></ng-include>\n" +
6088 6086 "\n" +
6089 6087 " <div class=\"row\" ng-if=\"!ctrl.loading\">\n" +
6090 6088 " <div class=\"col-sm-6\">\n" +
6091 6089 " <strong>Unassigned</strong>\n" +
6092 6090 "\n" +
6093 6091 " <div class=\"user-assignment\" ng-repeat=\"user in ctrl.unAssignedUsers\"\n" +
6094 6092 " ng-click=\"ctrl.reassignUser(user)\">\n" +
6095 6093 " <img ng-src=\"{{user.gravatar_url}}\"/>\n" +
6096 6094 " <strong>{{user.user_name}}</strong><br/>\n" +
6097 6095 " {{user.name}}\n" +
6098 6096 " <div class=\"clear\"></div>\n" +
6099 6097 " </div>\n" +
6100 6098 " </div>\n" +
6101 6099 "\n" +
6102 6100 " <div class=\"col-sm-6\">\n" +
6103 6101 " <strong>Assigned</strong>\n" +
6104 6102 "\n" +
6105 6103 " <div class=\"user-assignment\" ng-repeat=\"user in ctrl.assignedUsers\" ng-click=\"ctrl.reassignUser(user)\">\n" +
6106 6104 " <img ng-src=\"{{user.gravatar_url}}\"/>\n" +
6107 6105 " {{user.user_name}}<br/>\n" +
6108 6106 " {{user.name}}\n" +
6109 6107 " <div class=\"clear\"></div>\n" +
6110 6108 " </div>\n" +
6111 6109 " </div>\n" +
6112 6110 " </div>\n" +
6113 6111 " </div>\n" +
6114 6112 " <div class=\"modal-footer\">\n" +
6115 6113 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">OK</button>\n" +
6116 6114 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
6117 6115 " </div>\n" +
6118 6116 "</script>\n" +
6119 6117 "\n" +
6120 6118 "<ng-include src=\"'templates/loader.html'\" ng-if=\"report.is_loading.report\"></ng-include>\n" +
6121 6119 "\n" +
6122 6120 "<div ng-if=\"!report.is_loading.report && report.report === null\">\n" +
6123 6121 " <strong>OOPS something went wrong :(</strong>\n" +
6124 6122 "</div>\n" +
6125 6123 "\n" +
6126 6124 "<div ng-if=\"report.report !== null && !report.is_loading.report\">\n" +
6127 6125 "\n" +
6128 6126 " <div ng-if=\"AeUser.id\" class=\"row\">\n" +
6129 6127 " <div class=\"col-lg-12\">\n" +
6130 6128 " <a onclick=\"window.history.back()\" class=\"btn btn-default\" ng-if=\"report.window.history.length > 2\"><span class=\"fa fa-arrow-circle-o-left\"></span>\n" +
6131 6129 " Go back</a>\n" +
6132 6130 " <a class=\"btn btn-default\" ng-click=\"report.assignUsersModal()\" ng-if=\"report.reportType == 'report'\"><span\n" +
6133 6131 " class=\"fa fa-flag\"></span> Assign report\n" +
6134 6132 " to user</a>\n" +
6135 6133 "\n" +
6136 6134 " <a class=\"btn {{ report.report.group.fixed ? 'btn-success' : 'btn-default'}}\" ng-click=\"report.markFixed()\"\n" +
6137 6135 " ng-if=\"report.reportType == 'report'\">\n" +
6138 6136 " <span class=\"fa fa-check\"></span> Mark fixed</a>\n" +
6139 6137 "\n" +
6140 6138 " <span class=\"dropdown\" ng-if=\"report.report.application.integrations.length\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6141 6139 " <a class=\"dropdown-toggle btn btn-default\" data-uib-dropdown-toggle>\n" +
6142 6140 " <span class=\"fa fa-send\"></span> Integrations\n" +
6143 6141 " </a>\n" +
6144 6142 " <ul class=\"dropdown-menu\">\n" +
6145 6143 " <li ng-repeat=\"choice in report.report.application.integrations\">\n" +
6146 6144 " <a ng-click=\"report.runIntegration(choice.name)\">{{choice.action}}</a>\n" +
6147 6145 " </li>\n" +
6148 6146 " </ul>\n" +
6149 6147 " </span>\n" +
6150 6148 "\n" +
6151 6149 " <a class=\"btn btn-default\" ng-click=\"report.markPublic()\">Make {{report.group.public ? 'private' : 'public'}}</a>\n" +
6152 6150 "\n" +
6153 6151 "<span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6154 6152 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Delete</a>\n" +
6155 6153 " <ul class=\"dropdown-menu\">\n" +
6156 6154 " <li><a>No</a></li>\n" +
6157 6155 " <li><a ng-click=\"report.delete()\">Yes</a></li>\n" +
6158 6156 " </ul>\n" +
6159 6157 "</span>\n" +
6160 6158 " </div>\n" +
6161 6159 " </div>\n" +
6162 6160 "\n" +
6163 6161 " <div class=\"row\">\n" +
6164 6162 " <div class=\"col-lg-4\">\n" +
6165 6163 "\n" +
6166 6164 " <div class=\"panel panel-default m-t-1\">\n" +
6167 6165 " <div class=\"panel-body\">\n" +
6168 6166 "\n" +
6169 6167 " <h3 class=\"m-t-0\">Report Information</h3>\n" +
6170 6168 "\n" +
6171 6169 " <table class=\"report-table with-ellipsis\">\n" +
6172 6170 " <tr>\n" +
6173 6171 " <td class=\"table-label\">Occurences</td>\n" +
6174 6172 " <td class=\"data\">{{report.report.group.occurences}}</td>\n" +
6175 6173 " </tr>\n" +
6176 6174 " <tr ng-if=\"report.report.http_status\">\n" +
6177 6175 " <td class=\"table-label\">HTTP status</td>\n" +
6178 6176 " <td class=\"data\">{{report.report.http_status}}</td>\n" +
6179 6177 " </tr>\n" +
6180 6178 " <tr ng-if=\"report.report.group.priority\">\n" +
6181 6179 " <td class=\"table-label\">Priority</td>\n" +
6182 6180 " <td class=\"data\">{{report.report.group.priority}}</td>\n" +
6183 6181 " </tr>\n" +
6184 6182 " <tr ng-if=\"report.report.group.public\">\n" +
6185 6183 " <td class=\"table-label\">Public URL</td>\n" +
6186 6184 " <td class=\"data\">\n" +
6187 6185 " <form>\n" +
6188 6186 " <textarea class=\"TextAreaField form-control\" id=\"public-url\" onclick=\"this.select()\">{{$state.href($state.current.name, $state.params, {absolute: true})}}</textarea>\n" +
6189 6187 " </form>\n" +
6190 6188 " </td>\n" +
6191 6189 " </tr>\n" +
6192 6190 " <tr data-uib-tooltip=\"{{report.report.url}}\">\n" +
6193 6191 " <td class=\"table-label\">URL</td>\n" +
6194 6192 " <td class=\"data ellipsis\"><a href=\"{{report.report.url}}\">{{report.report.url}}</a></td>\n" +
6195 6193 " </tr>\n" +
6196 6194 "\n" +
6197 6195 " <tr ng-if=\"report.report.ip\">\n" +
6198 6196 " <td class=\"table-label\">Remote IP</td>\n" +
6199 6197 " <td class=\"data\">{{report.report.ip}}</td>\n" +
6200 6198 " </tr>\n" +
6201 6199 " <tr ng-if=\"report.report.user_agent\" data-uib-tooltip=\"{{report.report.user_agent}}\">\n" +
6202 6200 " <td class=\"table-label\">User Agent</td>\n" +
6203 6201 " <td class=\"data ellipsis\">{{report.report.user_agent}}</td>\n" +
6204 6202 " </tr>\n" +
6205 6203 " <tr ng-if=\"report.report.message\">\n" +
6206 6204 " <td class=\"table-label\">Message</td>\n" +
6207 6205 " <td class=\"data\">{{report.report.message}}</td>\n" +
6208 6206 " </tr>\n" +
6209 6207 " <tr ng-if=\"report.report.duration > 0\">\n" +
6210 6208 " <td class=\"table-label\">Duration</td>\n" +
6211 6209 " <td class=\"data\">\n" +
6212 6210 " <span>{{report.report.duration}}s</span>\n" +
6213 6211 " </td>\n" +
6214 6212 " </tr>\n" +
6215 6213 " <tr>\n" +
6216 6214 " <td class=\"table-label\">First occured</td>\n" +
6217 6215 " <td class=\"data\">\n" +
6218 6216 " <span uib-tooltip=\"{{report.report.group.first_timestamp}}\"><iso-to-relative-time\n" +
6219 6217 " time=\"{{report.report.group.first_timestamp}}\"/></span>\n" +
6220 6218 " </td>\n" +
6221 6219 " </tr>\n" +
6222 6220 " <tr>\n" +
6223 6221 " <td class=\"table-label\">Last occured</td>\n" +
6224 6222 " <td class=\"data\">\n" +
6225 6223 " <span uib-tooltip=\"{{report.report.group.last_timestamp}}\"><iso-to-relative-time\n" +
6226 6224 " time=\"{{report.report.group.last_timestamp}}\"/></span>\n" +
6227 6225 " </td>\n" +
6228 6226 " </tr>\n" +
6229 6227 " </table>\n" +
6230 6228 "\n" +
6231 6229 " <div ng-if=\"report.requestStats\">\n" +
6232 6230 " <h3>Performance stats</h3>\n" +
6233 6231 "\n" +
6234 6232 " <div class=\"perf_stats\">\n" +
6235 6233 " <span class=\"stat\" ng-repeat=\"stat in report.requestStats\"\n" +
6236 6234 " ng-if=\"stat.calls > 0 || stat.value > 0\"><strong>\n" +
6237 6235 " <span class=\"{{stat.name}} bar\" style=\"width:10px\"></span> {{stat.calls}}\n" +
6238 6236 " <span ng-if=\"stat.name!='main'\"><small>{{stat.name}} calls</small></span>\n" +
6239 6237 " <span ng-if=\"stat.name=='main'\">\n" +
6240 6238 " <span class=\"fa fa-question-circle\"\n" +
6241 6239 " data-uib-tooltip=\"Execution time that didnt get assigned to other layers\"></span> Other</span>\n" +
6242 6240 " </strong>\n" +
6243 6241 " </span>\n" +
6244 6242 "\n" +
6245 6243 " <div style=\"width: 100%; overflow:hidden\">\n" +
6246 6244 " <div class=\"{{stat.name}} bar\" style=\"width:{{stat.percent}}%; height: 25px\"\n" +
6247 6245 " ng-repeat=\"stat in report.requestStats\"\n" +
6248 6246 " data-uib-tooltip=\"{{stat.value}}s - Cumulative time spent in this request on all {{ stat.name }} calls\"></div>\n" +
6249 6247 " <div class=\"row\">\n" +
6250 6248 " <div class=\"col-xs-6 text-left\">\n" +
6251 6249 " <small>0s</small>\n" +
6252 6250 " </div>\n" +
6253 6251 " <div class=\"col-xs-6 text-right\">\n" +
6254 6252 " <small>{{report.report.duration.toFixed(3)}}s</small>\n" +
6255 6253 " </div>\n" +
6256 6254 " </div>\n" +
6257 6255 " </div>\n" +
6258 6256 " </div>\n" +
6259 6257 " </div>\n" +
6260 6258 "\n" +
6261 6259 " <h3>Tags</h3>\n" +
6262 6260 "\n" +
6263 6261 " <table class=\"report-table with-tags\">\n" +
6264 6262 " <tr ng-repeat=\"(tag, value) in report.report.tags\">\n" +
6265 6263 " <td class=\"table-label\" ng-switch=\"tag\"><!--\n" +
6266 6264 " --><span ng-switch-when=\"user_name\">Username/UID</span><!--\n" +
6267 6265 " --><span ng-switch-when=\"view_name\">View Name</span><!--\n" +
6268 6266 " --><span ng-switch-when=\"server_name\">Server Name</span><!--\n" +
6269 6267 " --><span ng-switch-default>{{ tag }}</span>\n" +
6270 6268 " </td>\n" +
6271 6269 " <td class=\"data\"><a ng-click=\"report.searchTag(tag, value)\">{{ value }}</td>\n" +
6272 6270 " </tr>\n" +
6273 6271 " </table>\n" +
6274 6272 "\n" +
6275 6273 " </div>\n" +
6276 6274 " </div>\n" +
6277 6275 "\n" +
6278 6276 "\n" +
6279 6277 " </div>\n" +
6280 6278 " <div class=\"col-lg-8\">\n" +
6281 6279 " <div class=\"frames\">\n" +
6282 6280 " <p class=\"text-center\">Report history</p>\n" +
6283 6281 "\n" +
6284 6282 " <div class=\"panel\" ng-if=\"!report.is_loading.history\">\n" +
6285 6283 " <div class=\"panel-body\">\n" +
6286 6284 " <c3chart data-domid=\"report_history_chart\" data-data=\"report.reportHistoryData\" data-config=\"report.reportHistoryConfig\">\n" +
6287 6285 " </c3chart>\n" +
6288 6286 " </div>\n" +
6289 6287 " </div>\n" +
6290 6288 "\n" +
6291 6289 " <div class=\"row m-b-1\">\n" +
6292 6290 " <div class=\"col-sm-2 text-left\">\n" +
6293 6291 " <a class=\"switch_detail btn btn-sm btn-default {{report.report.group.previous_report ? '' : 'disabled'}}\"\n" +
6294 6292 " ng-click=\"report.previousDetail()\">\n" +
6295 6293 " <span class=\"fa fa-arrow-left\"></span>\n" +
6296 6294 " Prev. detail</a>\n" +
6297 6295 "\n" +
6298 6296 " </div>\n" +
6299 6297 " <div class=\"col-sm-8 text-center\">\n" +
6300 6298 " <small>\n" +
6301 6299 " <span uib-tooltip=\"{{report.report.start_time|isoToRelativeTime}}\" class=\"m-r-1\">\n" +
6302 6300 " {{report.report.start_time.replace('T', ' ')}} UTC</span>\n" +
6303 6301 " <span class=\"text-muted\">ID: {{report.report.request_id}}</span>\n" +
6304 6302 " </small>\n" +
6305 6303 " </div>\n" +
6306 6304 " <div class=\"col-sm-2 text-right\">\n" +
6307 6305 " <a class=\"switch_detail btn btn-sm btn-default {{report.report.group.next_report ? '' : 'disabled'}}\"\n" +
6308 6306 " ng-click=\"report.nextDetail()\">\n" +
6309 6307 " Next detail <span class=\"fa fa-arrow-right\"></span></a>\n" +
6310 6308 " </div>\n" +
6311 6309 " </div>\n" +
6312 6310 "\n" +
6313 6311 " <h3 class=\"word-wrap\">{{report.report.error}}</h3>\n" +
6314 6312 "\n" +
6315 6313 " <div ng-if=\"report.report.traceback\">\n" +
6316 6314 "\n" +
6317 6315 " <h3><strong>Traceback</strong></h3>\n" +
6318 6316 "\n" +
6319 6317 " <div class=\"btn-group\">\n" +
6320 6318 " <a ng-if=\"report.traceback.length-10 > 0 \" ng-click=\"report.showLong = !report.showLong\"\n" +
6321 6319 " class=\"btn btn-default {{report.showLong ? 'active' : ''}}\">\n" +
6322 6320 " <span class=\"fa fa-align-left\"></span>\n" +
6323 6321 " <small>Show {{report.traceback.length-10}} remaining frames</small>\n" +
6324 6322 " </a>\n" +
6325 6323 "\n" +
6326 6324 " <a class=\"btn btn-default {{report.showRaw ? 'active' : ''}}\" ng-click=\"report.showRaw = !report.showRaw\">\n" +
6327 6325 " <span class=\"fa fa-list\"></span>\n" +
6328 6326 " <small>Raw version</small>\n" +
6329 6327 " </a>\n" +
6330 6328 " </div>\n" +
6331 6329 "\n" +
6332 6330 " <div ng-if=\"report.showRaw\" class=\"m-t-1\">\n" +
6333 6331 " <pre>{{report.rawTraceback}}</pre>\n" +
6334 6332 " </div>\n" +
6335 6333 " <div ng-if=\"!report.showRaw\" class=\"m-t-1\">\n" +
6336 6334 "\n" +
6337 6335 " <div ng-repeat=\"frame in report.traceback\" class=\"frame {{$odd ? 'odd' : 'even'}}\"\n" +
6338 6336 " ng-if=\"$index >= report.traceback.length-10 || report.traceback.length <= 10 || report.showLong\">\n" +
6339 6337 " <div class=\"frameline\" ng-if=\"frame.line\">\n" +
6340 6338 " <a class=\"inspect_vars\" ng-click=\"frame.showVars = !frame.showVars\" ng-if=\"frame.vars\">\n" +
6341 6339 " <span class=\"fa fa-search dim btn btn-default\"\n" +
6342 6340 " uib-tooltip=\"Show local vars\"> </span>\n" +
6343 6341 " </a>\n" +
6344 6342 "\n" +
6345 6343 " <span class=\"no-vars\" ng-if=\"frame.vars.length == 0\"></span>\n" +
6346 6344 "\n" +
6347 6345 " <span ng-if=\"frame.file\">\n" +
6348 6346 " <span class=\"mono\">File</span> <span class=\"file mono\">{{frame.file || 'Unknown file'}}</span>,\n" +
6349 6347 " </span>\n" +
6350 6348 " <span ng-if=\"frame.module && !frame.file\">\n" +
6351 6349 " <span class=\"mono\">Module</span> <span class=\"file mono\">{{frame.module || 'Unknown module'}}</span>,\n" +
6352 6350 " </span>\n" +
6353 6351 " <span class=\"mono\">line</span> <span class=\"line mono\">{{frame.line || 'Unknown line'}}</span>\n" +
6354 6352 "\n" +
6355 6353 " <span ng-if=\"frame.fn\"><span class=\"mono\">in</span> <strong\n" +
6356 6354 " class=\"fn mono\">{{frame.fn || 'Unknown function'}}</strong></span>\n" +
6357 6355 "\n" +
6358 6356 " </div>\n" +
6359 6357 " <div class=\"cline mono\" ng-if=\"frame.cline\">{{frame.cline || 'Unknown context'}}</div>\n" +
6360 6358 "\n" +
6361 6359 " <div class=\"vars\" ng-if=\"frame.showVars\">\n" +
6362 6360 " <table class=\"var-listing small\">\n" +
6363 6361 " <tr ng-repeat=\"fvar in frame.vars track by $index\" class=\"frame {{$odd ? 'odd' : 'even'}}\">\n" +
6364 6362 " <td class=\"var-label\">{{ fvar[0] }}</td>\n" +
6365 6363 " <td>\n" +
6366 6364 " <span human-format vars=\"fvar[1]\"></span>\n" +
6367 6365 " </td>\n" +
6368 6366 " </tr>\n" +
6369 6367 " </table>\n" +
6370 6368 "\n" +
6371 6369 " </div>\n" +
6372 6370 " </div>\n" +
6373 6371 " </div>\n" +
6374 6372 "\n" +
6375 6373 "\n" +
6376 6374 " </div>\n" +
6377 6375 "\n" +
6378 6376 "\n" +
6379 6377 " <uib-tabset>\n" +
6380 6378 " <uib-tab select=\"report.selectedTab('slow_calls')\" active=\"report.tabs.slow_calls\">\n" +
6381 6379 " <uib-tab-heading>\n" +
6382 6380 " Slow Calls\n" +
6383 6381 " </uib-tab-heading>\n" +
6384 6382 "\n" +
6385 6383 " <h3><strong>Slow Calls</strong></h3>\n" +
6386 6384 "\n" +
6387 6385 " <div ng-if=\"report.report.slow_calls.length > 0\">\n" +
6388 6386 " <div ng-repeat=\"call in report.report.slow_calls\" ng-include=\"'slow_call.html'\"></div>\n" +
6389 6387 " </div>\n" +
6390 6388 "\n" +
6391 6389 " <div ng-if=\"report.report.slow_calls.length == 0\">\n" +
6392 6390 " No slow calls reported\n" +
6393 6391 " </div>\n" +
6394 6392 "\n" +
6395 6393 " </uib-tab>\n" +
6396 6394 "\n" +
6397 6395 "\n" +
6398 6396 " <uib-tab select=\"report.selectedTab('request_details')\" active=\"report.tabs.request_details\">\n" +
6399 6397 " <uib-tab-heading>\n" +
6400 6398 " Request details\n" +
6401 6399 " </uib-tab-heading>\n" +
6402 6400 "\n" +
6403 6401 " <h3><strong>Extra</strong></h3>\n" +
6404 6402 " <div class=\"var-listing\" human-format vars=\"report.report.extra\"></div>\n" +
6405 6403 " <h3><strong>Request details</strong></h3>\n" +
6406 6404 " <div class=\"var-listing\" human-format vars=\"report.report.request\"></div>\n" +
6407 6405 "\n" +
6408 6406 " </uib-tab>\n" +
6409 6407 "\n" +
6410 6408 " <uib-tab select=\"report.selectedTab('logs')\" active=\"report.tabs.logs\">\n" +
6411 6409 " <uib-tab-heading>\n" +
6412 6410 " Logs\n" +
6413 6411 " </uib-tab-heading>\n" +
6414 6412 "\n" +
6415 6413 " <div ng-if=\"report.is_loading.logs!=false\" class=\"text-center\">\n" +
6416 6414 " <span class=\"fa fa-cog fa-spin fa-3x loader\"></span>\n" +
6417 6415 " </div>\n" +
6418 6416 " <p ng-if=\"report.reportLogs.length == 0\"> No logs found</p>\n" +
6419 6417 "\n" +
6420 6418 " <table class=\"table table-striped log-list\" ng-if=\"report.reportLogs.length > 0\">\n" +
6421 6419 "\n" +
6422 6420 " <caption>Logs</caption>\n" +
6423 6421 " <thead>\n" +
6424 6422 " <tr>\n" +
6425 6423 " <th class=\"message\">Message</th>\n" +
6426 6424 " <th class=\"when\">When</th>\n" +
6427 6425 " </tr>\n" +
6428 6426 " </thead>\n" +
6429 6427 " <tbody>\n" +
6430 6428 " <tr ng-repeat=\"log in report.reportLogs track by log.log_id\">\n" +
6431 6429 " <td>\n" +
6432 6430 " <a class=\"tag {{log.log_level|lowercase}}\">\n" +
6433 6431 " <span class=\"name\">level:</span> {{log.log_level}}</a>\n" +
6434 6432 " <a class=\"tag\">\n" +
6435 6433 " <span class=\"name\">namespace:</span> {{log.namespace}}</a>\n" +
6436 6434 " <a ng-repeat=\"(tag, value) in log.tags\" class=\"tag\">\n" +
6437 6435 " <span class=\"name\">{{tag}}:</span> {{value}}</a>\n" +
6438 6436 " <div class=\"log\">\n" +
6439 6437 " {{log.message}}\n" +
6440 6438 " </div>\n" +
6441 6439 " </td>\n" +
6442 6440 " <td class=\"when\">\n" +
6443 6441 " <a data-uib-tooltip=\"{{log.timestamp}}\">\n" +
6444 6442 " <iso-to-relative-time time=\"{{log.timestamp}}\"/>\n" +
6445 6443 " </a>\n" +
6446 6444 " </td>\n" +
6447 6445 " </tr>\n" +
6448 6446 "\n" +
6449 6447 " </tbody>\n" +
6450 6448 " </table>\n" +
6451 6449 "\n" +
6452 6450 " </uib-tab>\n" +
6453 6451 "\n" +
6454 6452 "\n" +
6455 6453 " <uib-tab select=\"report.selectedTab('comments')\" active=\"report.tabs.comments\">\n" +
6456 6454 " <uib-tab-heading>\n" +
6457 6455 " Comments\n" +
6458 6456 " <span class=\"label label-info\">{{report.report.comments.length}}</span>\n" +
6459 6457 "\n" +
6460 6458 " </uib-tab-heading>\n" +
6461 6459 "\n" +
6462 6460 " <h3><strong>Comments</strong></h3>\n" +
6463 6461 "\n" +
6464 6462 " <p ng-if=\"report.report.comments.length == 0\">No comments yet - be first to add one!</p>\n" +
6465 6463 "\n" +
6466 6464 " <div class=\"comment\" ng-repeat=\"comment in report.report.comments\">\n" +
6467 6465 " <p name=\"comment-{{comment.comment_id}}\"><span class=\"fa fa-comment\"></span>\n" +
6468 6466 " <strong>{{comment.user_name}}</strong>\n" +
6469 6467 " <iso-to-relative-time time=\"{{comment.created_timestamp}}\"/>\n" +
6470 6468 " </p>\n" +
6471 6469 " <p class=\"well\">{{comment.body}}</p>\n" +
6472 6470 " </div>\n" +
6473 6471 "\n" +
6474 6472 " <form name=\"commentForm\" ng-submit=\"report.addComment()\">\n" +
6475 6473 " <div class=\"form-group\">\n" +
6476 6474 " <textarea type=\"text\" class=\"form-control\" id=\"report.commentForm\" ng-model=\"report.comment\" required\n" +
6477 6475 " mentio mentio-search=\"report.searchMentionedPeople(term)\" mentio-items=\"report.mentionedPeople| filter:label:typedTerm\" class=\"form-control\"></textarea>\n" +
6478 6476 "\n" +
6479 6477 " </div>\n" +
6480 6478 " <div class=\"form-group\">\n" +
6481 6479 " <button class=\"btn btn-info\" ng-disabled=\"report.commentForm.$invalid\">Comment</button>\n" +
6482 6480 " </div>\n" +
6483 6481 " </form>\n" +
6484 6482 "\n" +
6485 6483 " <div ng-repeat=\"comment in report.report.comments\" class=\"{{$odd ? 'odd' : 'even'}}\" class=\"repeat-animate\">\n" +
6486 6484 " </div>\n" +
6487 6485 "\n" +
6488 6486 " </uib-tab>\n" +
6489 6487 "\n" +
6490 6488 " <uib-tab select=\"report.selectedTab('affected_users')\" active=\"report.tabs.affected_users\">\n" +
6491 6489 " <uib-tab-heading>\n" +
6492 6490 " Affected users\n" +
6493 6491 " <span class=\"label label-warning\">{{report.report.affected_users_count}}</span>\n" +
6494 6492 "\n" +
6495 6493 " </uib-tab-heading>\n" +
6496 6494 "\n" +
6497 6495 " <h3><strong>50 most affected users ID's by this issue:</strong></h3>\n" +
6498 6496 " <ul class=\"affected-user-list\">\n" +
6499 6497 " <li ng-repeat=\"user in report.report.top_affected_users\">\n" +
6500 6498 " <strong>{{user.username}}</strong> <span class=\"badge\" uib-tooltip=\"occurences\">{{user.count}}</span>\n" +
6501 6499 " </li>\n" +
6502 6500 " </ul>\n" +
6503 6501 "\n" +
6504 6502 " </uib-tab>\n" +
6505 6503 "\n" +
6506 6504 " </uib-tabset>\n" +
6507 6505 "\n" +
6508 6506 "\n" +
6509 6507 " </div>\n" +
6510 6508 "\n" +
6511 6509 " </div>\n" +
6512 6510 " </div>\n" +
6513 6511 "</div>\n"
6514 6512 );
6515 6513
6516 6514
6517 6515 $templateCache.put('templates/user/alert_channels_email.html',
6518 6516 "<ng-include src=\"'templates/loader.html'\" ng-if=\"email.loading.email\"></ng-include>\n" +
6519 6517 "\n" +
6520 6518 "<div ng-show=\"!email.loading.email\">\n" +
6521 6519 "\n" +
6522 6520 " <div class=\"panel panel-default\">\n" +
6523 6521 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6524 6522 " <div class=\"panel-body\">\n" +
6525 6523 " <p>Adding email alert channel - after you authorize your email in the system we can send alerts directly to this mailbox.</p>\n" +
6526 6524 " <form class=\"form-horizontal\" name=\"email.channelForm\" ng-submit=\"email.createChannel()\">\n" +
6527 6525 " <div class=\"form-group\" id=\"row-email\">\n" +
6528 6526 " <data-form-errors errors=\"email.channelForm.ae_validation.email\"></data-form-errors>\n" +
6529 6527 " <label id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6530 6528 " Email Address\n" +
6531 6529 " <span class=\"required\">*</span>\n" +
6532 6530 " </label>\n" +
6533 6531 " <div class=\"col-sm-8 col-lg-9\">\n" +
6534 6532 " <input class=\"form-control\" type=\"text\" ng-model=\"email.form.email\">\n" +
6535 6533 " </div>\n" +
6536 6534 " </div>\n" +
6537 6535 " <div class=\"form-group\">\n" +
6538 6536 " <label for=\"submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6539 6537 " </label>\n" +
6540 6538 " <div class=\"col-sm-8 col-lg-9\">\n" +
6541 6539 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Add email channel\">\n" +
6542 6540 " </div>\n" +
6543 6541 " </div>\n" +
6544 6542 " </form>\n" +
6545 6543 " </div>\n" +
6546 6544 " </div>\n" +
6547 6545 "</div>\n"
6548 6546 );
6549 6547
6550 6548
6551 6549 $templateCache.put('templates/user/alert_channels_list.html',
6552 6550 "<ng-include src=\"'templates/loader.html'\" ng-if=\"channels.loading.channels || channels.loading.applications\"></ng-include>\n" +
6553 6551 "\n" +
6554 6552 "<div ng-if=\"!channels.loading.channels && !channels.loading.applications && !channels.loading.actions\">\n" +
6555 6553 "\n" +
6556 6554 " <div class=\"panel panel-default\">\n" +
6557 6555 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6558 6556 " <div class=\"panel-body\">\n" +
6559 6557 " <h1>Report alert rules</h1>\n" +
6560 6558 " <p>\n" +
6561 6559 " <a class=\"btn btn-info\" ng-click=\"channels.addAction()\"><span class=\"fa fa-plus-circle\"></span> Add top-level rule</a>\n" +
6562 6560 " </p>\n" +
6563 6561 "\n" +
6564 6562 " <report-alert-action action=\"action\" rule-definitions=\"channels.ruleDefinitions\"\n" +
6565 6563 " possible-channels=\"channels.alertChannels\"\n" +
6566 6564 " actions=\"channels.alertActions\" applications=\"channels.applications\"\n" +
6567 6565 " ng-repeat=\"action in channels.alertActions | filter: {type:'report'}\"></report-alert-action>\n" +
6568 6566 "\n" +
6569 6567 " </div>\n" +
6570 6568 " </div>\n" +
6571 6569 "\n" +
6572 6570 " <div class=\"panel panel-default\">\n" +
6573 6571 " <div class=\"panel-body\">\n" +
6574 6572 " <h1>Alert channels</h1>\n" +
6575 6573 "\n" +
6576 6574 " <p>Here you can configure your <em>alert channels</em>.</p>\n" +
6577 6575 "\n" +
6578 6576 " <p>An alert channel serves as means of delivery of notifications about important events that happen in your applications.</p>\n" +
6579 6577 "\n" +
6580 6578 " <div class=\"alert alert-success\">You can add more integrations that support different alert channels via application management panel.</div>\n" +
6581 6579 "\n" +
6582 6580 " <table class=\"table table-striped\">\n" +
6583 6581 " <tr ng-repeat=\"channel in channels.alertChannels\" class=\"animate-repeat\">\n" +
6584 6582 " <td><strong>{{ channel.channel_visible_value }}</strong></td>\n" +
6585 6583 " <td class=\"text-right\">\n" +
6586 6584 " <span class=\"btn btn-default\" data-uib-tooltip=\"Channel is {{ channel.channel_validated? '' :'NOT' }} validated\" tooltip-append-to-body=\"true\"\n" +
6587 6585 " ng-class=\"{dim:!channel.channel_validated}\">\n" +
6588 6586 " <span class=\"fa\" ng-class=\"{'fa-check-circle':channel.channel_validated, 'fa-times-circle':!channel.channel_validated}\"></span>\n" +
6589 6587 " </span>\n" +
6590 6588 " <a class=\"btn btn-default\" data-uib-tooltip=\"Press to turn {{ channel.send_alerts ? 'OFF' : 'ON' }} alerting on this chanel\"\n" +
6591 6589 " ng-click=\"channels.updateChannel(channel,'send_alerts')\" ng-class=\"{dim:!channel.send_alerts}\" tooltip-append-to-body=\"true\">\n" +
6592 6590 " <span class=\"fa fa-rss\"></span> Alerts\n" +
6593 6591 " </a>\n" +
6594 6592 " <a class=\"btn btn-default\" data-uib-tooltip=\"Press to turn {{ channel.daily_digest ? 'OFF' : 'ON' }} daily digests on this channel\"\n" +
6595 6593 " ng-click=\"channels.updateChannel(channel,'daily_digest')\" ng-class=\"{dim:!channel.daily_digest}\" tooltip-append-to-body=\"true\">\n" +
6596 6594 " <span class=\"fa fa-envelope\"></span> Daily digests\n" +
6597 6595 " </a>\n" +
6598 6596 "\n" +
6599 6597 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6600 6598 " <a class=\"btn btn-default\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove</a>\n" +
6601 6599 " <ul class=\"dropdown-menu\">\n" +
6602 6600 " <li><a>No</a></li>\n" +
6603 6601 " <li><a ng-click=\"channels.removeChannel(channel)\">Yes</a></li>\n" +
6604 6602 " </ul>\n" +
6605 6603 " </span>\n" +
6606 6604 "\n" +
6607 6605 " </td>\n" +
6608 6606 " </tr>\n" +
6609 6607 " </table>\n" +
6610 6608 "\n" +
6611 6609 " </div>\n" +
6612 6610 " </div>\n" +
6613 6611 "\n" +
6614 6612 "</div>\n"
6615 6613 );
6616 6614
6617 6615
6618 6616 $templateCache.put('templates/user/alert_channels.html',
6619 6617 "<ui-view></ui-view>"
6620 6618 );
6621 6619
6622 6620
6623 6621 $templateCache.put('templates/user/auth_tokens.html',
6624 6622 "<ng-include src=\"'templates/loader.html'\" ng-if=\"auth_tokens.loading.tokens\"></ng-include>\n" +
6625 6623 "\n" +
6626 6624 "<div ng-show=\"!auth_tokens.loading.tokens\">\n" +
6627 6625 "\n" +
6628 6626 " <div class=\"panel panel-default\">\n" +
6629 6627 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6630 6628 "\n" +
6631 6629 " <div class=\"panel-body\">\n" +
6632 6630 "\n" +
6633 6631 " <div class=\"alert alert-success\">You can use those tokens to authenticate yourself when performing various API calls</div>\n" +
6634 6632 "\n" +
6635 6633 " <hr/>\n" +
6636 6634 "\n" +
6637 6635 " <form method=\"post\" class=\"form-inline\" name=\"auth_tokens.TokenForm\" ng-submit=\"auth_tokens.addToken()\" novalidate>\n" +
6638 6636 " <data-form-errors errors=\"auth_tokens.TokenForm.ae_validation.description\"></data-form-errors>\n" +
6639 6637 " <data-form-errors errors=\"auth_tokens.TokenForm.ae_validation.expires\"></data-form-errors>\n" +
6640 6638 " <div class=\"form-group\">\n" +
6641 6639 " <label>\n" +
6642 6640 " Description\n" +
6643 6641 " </label>\n" +
6644 6642 " <input class=\"form-control\" name=\"description\" placeholder=\"Token description\" type=\"text\" ng-model=\"auth_tokens.form.description\">\n" +
6645 6643 " </div>\n" +
6646 6644 " <div class=\"form-group\">\n" +
6647 6645 " <label>\n" +
6648 6646 " Expires\n" +
6649 6647 " </label>\n" +
6650 6648 " <select class=\"form-control\" ng-model=\"auth_tokens.form.expires\" ng-options=\"i.key as i.label for i in auth_tokens.expireOptions | objectToOrderedArray:'minutes'\">\n" +
6651 6649 " <option value=\"\">Never</option>\n" +
6652 6650 " </select>\n" +
6653 6651 " </div>\n" +
6654 6652 " <div class=\"form-group\">\n" +
6655 6653 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
6656 6654 " </label>\n" +
6657 6655 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Create Token\">\n" +
6658 6656 " </div>\n" +
6659 6657 " </form>\n" +
6660 6658 "\n" +
6661 6659 " </div>\n" +
6662 6660 "\n" +
6663 6661 "\n" +
6664 6662 " </div>\n" +
6665 6663 "\n" +
6666 6664 " <div class=\"panel panel-default\">\n" +
6667 6665 " <table st-table=\"displayedCollection\" st-safe-src=\"auth_tokens.tokens\" class=\"table table-striped\">\n" +
6668 6666 " <caption>Your current tokens</caption>\n" +
6669 6667 " <thead>\n" +
6670 6668 " <tr>\n" +
6671 6669 " <th st-sort=\"description\"><a>Description</a></th>\n" +
6672 6670 " <th class=\"created\"><a>Created</a></th>\n" +
6673 6671 " <th class=\"expires\"><a>Expires</a></th>\n" +
6674 6672 " <th class=\"options\"></th>\n" +
6675 6673 " </tr>\n" +
6676 6674 " <tr>\n" +
6677 6675 " <th><input st-search=\"description\" placeholder=\"search for description\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
6678 6676 " <th></th>\n" +
6679 6677 " <th></th>\n" +
6680 6678 " <th></th>\n" +
6681 6679 " </tr>\n" +
6682 6680 " </thead>\n" +
6683 6681 " <tbody>\n" +
6684 6682 "\n" +
6685 6683 " <tr ng-repeat=\"token in displayedCollection\">\n" +
6686 6684 " <td><p>{{token.description}}</p>\n" +
6687 6685 " <pre ng-init=\"token.limit = 8\" ng-mouseover=\"token.limit = 99\" ng-mouseleave=\"token.limit = 8\">{{token.token| limitTo:token.limit}}...</pre>\n" +
6688 6686 " </td>\n" +
6689 6687 " <td><span data-uib-tooltip=\"{{token.creation_date}}\">{{token.creation_date | isoToRelativeTime}}</span></td>\n" +
6690 6688 " <td><span ng-if=\"token.expires\" data-uib-tooltip=\"{{token.expires}}\">{{token.expires | isoToRelativeTime}}</span>\n" +
6691 6689 " <span ng-if=\"!token.expires\">Never</span></td>\n" +
6692 6690 " <td>\n" +
6693 6691 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6694 6692 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
6695 6693 " <ul class=\"dropdown-menu\">\n" +
6696 6694 " <li><a>No</a></li>\n" +
6697 6695 " <li><a ng-click=\"auth_tokens.removeToken(token)\">Yes</a></li>\n" +
6698 6696 " </ul>\n" +
6699 6697 " </span>\n" +
6700 6698 " </td>\n" +
6701 6699 " </tr>\n" +
6702 6700 " </tbody>\n" +
6703 6701 " </table>\n" +
6704 6702 " </div>\n" +
6705 6703 "\n" +
6706 6704 "</div>\n"
6707 6705 );
6708 6706
6709 6707
6710 6708 $templateCache.put('templates/user/breadcrumbs.html',
6711 6709 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('user.profile')\">\n" +
6712 6710 " <li>Settings</li>\n" +
6713 6711 " <li ng-show=\"$state.includes('user.profile.edit')\" ng-class=\"{bold:$state.is('user.profile.edit')}\">User Profile</li>\n" +
6714 6712 " <li ng-show=\"$state.includes('user.profile.password')\" ng-class=\"{bold:$state.is('user.profile.password')}\">Password</li>\n" +
6715 6713 " <li ng-show=\"$state.includes('user.profile.identities')\" ng-class=\"{bold:$state.is('user.profile.identities')}\">Identities</li>\n" +
6716 6714 "</ol>\n" +
6717 6715 "\n" +
6718 6716 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('user.alert_channels')\">\n" +
6719 6717 "<li>Notifications</li>\n" +
6720 6718 "<li ng-show=\"$state.includes('user.alert_channels.list')\" ng-class=\"{bold:$state.is('user.alert_channels.list')}\">Alert Channels</li>\n" +
6721 6719 "<li ng-show=\"$state.includes('user.alert_channels.email')\" ng-class=\"{bold:$state.is('user.alert_channels.email')}\">Create email channel</li>\n" +
6722 6720 "</ol>\n"
6723 6721 );
6724 6722
6725 6723
6726 6724 $templateCache.put('templates/user/index.html',
6727 6725 ""
6728 6726 );
6729 6727
6730 6728
6731 6729 $templateCache.put('templates/user/menu.html',
6732 6730 "<div class=\"panel panel-default\">\n" +
6733 6731 " <div class=\"panel-heading\">Applications</div>\n" +
6734 6732 " <ul class=\"list-group\">\n" +
6735 6733 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.list\"><span class=\"fa fa-cog\"></span> List applications</a></li>\n" +
6736 6734 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.update({resourceId:'new'})\"><span class=\"fa fa-plus-circle\"></span> Create application</a></li>\n" +
6737 6735 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.purge_logs\"><span class=\"fa fa-trash-o\"></span> Purge logs</a></li>\n" +
6738 6736 " </ul>\n" +
6739 6737 "</div>\n" +
6740 6738 "\n" +
6741 6739 "\n" +
6742 6740 "<div class=\"panel panel-default\">\n" +
6743 6741 " <div class=\"panel-heading\">Settings</div>\n" +
6744 6742 " <ul class=\"list-group\">\n" +
6745 6743 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.edit\"><span class=\"fa fa-user\"></span> Profile details</a></li>\n" +
6746 6744 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.password\"><span class=\"fa fa-lock\"></span> Change Password</a></li>\n" +
6747 6745 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.identities\"><span class=\"fa fa-link\"></span> External Identities</a></li>\n" +
6748 6746 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.auth_tokens\"><span class=\"fa fa-unlock\"></span> Auth Tokens</a></li>\n" +
6749 6747 " </ul>\n" +
6750 6748 "</div>\n" +
6751 6749 "\n" +
6752 6750 "<div class=\"panel panel-default\">\n" +
6753 6751 " <div class=\"panel-heading\">Notifications</div>\n" +
6754 6752 " <ul class=\"list-group\">\n" +
6755 6753 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.alert_channels.list\"><span class=\"fa fa-bullhorn\"></span> Alert channels</a></li>\n" +
6756 6754 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.alert_channels.email\"><span class=\"fa fa-envelope\"></span> Add email channel</a></li>\n" +
6757 6755 " </ul>\n" +
6758 6756 "</div>"
6759 6757 );
6760 6758
6761 6759
6762 6760 $templateCache.put('templates/user/parent_view.html',
6763 6761 "<div class=\"row\">\n" +
6764 6762 " <div class=\"col-sm-3\" id=\"menu\">\n" +
6765 6763 " <div ng-include=\"'templates/user/menu.html'\"></div>\n" +
6766 6764 " </div>\n" +
6767 6765 "\n" +
6768 6766 " <div class=\"col-sm-9\" ui-view></div>\n" +
6769 6767 "</div>\n"
6770 6768 );
6771 6769
6772 6770
6773 6771 $templateCache.put('templates/user/profile_edit.html',
6774 6772 "<ng-include src=\"'templates/loader.html'\" ng-if=\"profile.loading.profile\"></ng-include>\n" +
6775 6773 "\n" +
6776 6774 "<div ng-show=\"!profile.loading.profile\">\n" +
6777 6775 " <div class=\"panel panel-default\">\n" +
6778 6776 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6779 6777 " <div class=\"panel-body\">\n" +
6780 6778 " <form name=\"profile.profileForm\" class=\"form-horizontal\" ng-submit=\"profile.updateProfile()\">\n" +
6781 6779 " <div class=\"form-group\" id=\"row-email\">\n" +
6782 6780 " <data-form-errors errors=\"profile.profileForm.ae_validation.email\"></data-form-errors>\n" +
6783 6781 " <label for=\"email\" id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6784 6782 " Email Address\n" +
6785 6783 " <span class=\"required\">*</span>\n" +
6786 6784 " </label>\n" +
6787 6785 " <div class=\"col-sm-8 col-lg-9\">\n" +
6788 6786 " <input class=\"form-control\" id=\"email\" name=\"email\" type=\"text\" ng-model=\"profile.user.email\">\n" +
6789 6787 " </div>\n" +
6790 6788 " </div>\n" +
6791 6789 "\n" +
6792 6790 " <div class=\"form-group\" id=\"row-first_name\">\n" +
6793 6791 " <data-form-errors errors=\"profile.profileForm.ae_validation.first_name\"></data-form-errors>\n" +
6794 6792 " <label for=\"first_name\" id=\"label-first_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6795 6793 " First Name\n" +
6796 6794 " </label>\n" +
6797 6795 " <div class=\"col-sm-8 col-lg-9\">\n" +
6798 6796 " <input class=\"form-control\" id=\"first_name\" name=\"first_name\" type=\"text\" ng-model=\"profile.user.first_name\">\n" +
6799 6797 " </div>\n" +
6800 6798 " </div>\n" +
6801 6799 " <div class=\"form-group\" id=\"row-last_name\">\n" +
6802 6800 " <data-form-errors errors=\"profile.profileForm.ae_validation.last_name\"></data-form-errors>\n" +
6803 6801 " <label for=\"last_name\" id=\"label-last_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6804 6802 " Last Name\n" +
6805 6803 " </label>\n" +
6806 6804 " <div class=\"col-sm-8 col-lg-9\">\n" +
6807 6805 " <input class=\"form-control\" id=\"last_name\" name=\"last_name\" type=\"text\" ng-model=\"profile.user.last_name\">\n" +
6808 6806 " </div>\n" +
6809 6807 " </div>\n" +
6810 6808 " <div class=\"form-group\" id=\"row-company_name\">\n" +
6811 6809 " <data-form-errors errors=\"profile.profileForm.ae_validation.company_name\"></data-form-errors>\n" +
6812 6810 " <label for=\"company_name\" id=\"label-company_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6813 6811 " Company Name\n" +
6814 6812 " </label>\n" +
6815 6813 " <div class=\"col-sm-8 col-lg-9\">\n" +
6816 6814 " <input class=\"form-control\" id=\"company_name\" name=\"company_name\" type=\"text\" ng-model=\"profile.user.company_name\">\n" +
6817 6815 " </div>\n" +
6818 6816 " </div>\n" +
6819 6817 " <div class=\"form-group\" id=\"row-company_address\">\n" +
6820 6818 " <data-form-errors errors=\"profile.profileForm.ae_validation.company_address\"></data-form-errors>\n" +
6821 6819 " <label for=\"company_address\" id=\"label-company_address\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6822 6820 " Company Address\n" +
6823 6821 " </label>\n" +
6824 6822 " <div class=\"col-sm-8 col-lg-9\">\n" +
6825 6823 " <textarea class=\"form-control\" id=\"company_address\" name=\"company_address\" ng-model=\"profile.user.company_address\"></textarea>\n" +
6826 6824 " </div>\n" +
6827 6825 " </div>\n" +
6828 6826 " <div class=\"form-group\" id=\"row-zip_code\">\n" +
6829 6827 " <data-form-errors errors=\"profile.profileForm.ae_validation.zip_code\"></data-form-errors>\n" +
6830 6828 " <label for=\"zip_code\" id=\"label-zip_code\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6831 6829 " ZIP code\n" +
6832 6830 " </label>\n" +
6833 6831 " <div class=\"col-sm-8 col-lg-9\">\n" +
6834 6832 " <input class=\"form-control\" id=\"zip_code\" name=\"zip_code\" type=\"text\" ng-model=\"profile.user.zip_code\">\n" +
6835 6833 " </div>\n" +
6836 6834 " </div>\n" +
6837 6835 " <div class=\"form-group\" id=\"row-city\">\n" +
6838 6836 " <data-form-errors errors=\"profile.profileForm.ae_validation.city\"></data-form-errors>\n" +
6839 6837 " <label for=\"city\" id=\"label-city\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6840 6838 " City\n" +
6841 6839 " </label>\n" +
6842 6840 " <div class=\"col-sm-8 col-lg-9\">\n" +
6843 6841 " <input class=\"form-control\" id=\"city\" name=\"city\" type=\"text\" ng-model=\"profile.user.city\">\n" +
6844 6842 " </div>\n" +
6845 6843 " </div>\n" +
6846 6844 " <div class=\"form-group\" id=\"row-notifications\">\n" +
6847 6845 " <data-form-errors errors=\"profile.profileForm.ae_validation.notifications\"></data-form-errors>\n" +
6848 6846 " <label for=\"notifications\" id=\"label-notifications\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6849 6847 " Account notifications\n" +
6850 6848 " </label>\n" +
6851 6849 " <div class=\"col-sm-8 col-lg-9\">\n" +
6852 6850 " <input checked class=\"form-control\" id=\"notifications\" name=\"notifications\" type=\"checkbox\" ng-model=\"profile.user.notifications\">\n" +
6853 6851 " </div>\n" +
6854 6852 " </div>\n" +
6855 6853 " <div class=\"form-group\" id=\"row-submit\">\n" +
6856 6854 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6857 6855 " </label>\n" +
6858 6856 " <div class=\"col-sm-8 col-lg-9\">\n" +
6859 6857 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Update Account\">\n" +
6860 6858 " </div>\n" +
6861 6859 " </div>\n" +
6862 6860 " </form>\n" +
6863 6861 " </div>\n" +
6864 6862 " </div>\n" +
6865 6863 "</div>\n"
6866 6864 );
6867 6865
6868 6866
6869 6867 $templateCache.put('templates/user/profile_identities.html',
6870 6868 "<ng-include src=\"'templates/loader.html'\" ng-if=\"identities.loading.identities\"></ng-include>\n" +
6871 6869 "\n" +
6872 6870 "<div ng-show=\"!identities.loading.identities\">\n" +
6873 6871 "\n" +
6874 6872 " <div class=\"panel panel-default\">\n" +
6875 6873 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6876 6874 " <div class=\"panel-body\">\n" +
6877 6875 "\n" +
6878 6876 " <div class=\"col-sm-6\">\n" +
6879 6877 " <p ng-show=\"identities.identities.length === 0\">No external providers linked yet</p>\n" +
6880 6878 " <ul class=\"list-group\">\n" +
6881 6879 " <li ng-repeat=\"provider in identities.identities\" class=\"animate-repeat list-group-item\">\n" +
6882 6880 " <div class=\"pull-right\">\n" +
6883 6881 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6884 6882 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
6885 6883 " <ul class=\"dropdown-menu\">\n" +
6886 6884 " <li><a>No</a></li>\n" +
6887 6885 " <li><a ng-click=\"identities.removeProvider(provider)\">Yes</a></li>\n" +
6888 6886 " </ul>\n" +
6889 6887 " </span>\n" +
6890 6888 " </div>\n" +
6891 6889 " <em>@{{ provider.provider }}</em>: <strong>{{ provider.id }}</strong>\n" +
6892 6890 " </li>\n" +
6893 6891 " </ul>\n" +
6894 6892 " </div>\n" +
6895 6893 " <div class=\"col-sm-6\">\n" +
6896 6894 " <ul class=\"list-group\">\n" +
6897 6895 " <li class=\"list-group-item\">\n" +
6898 6896 " <a href=\"{{AeConfig.urls.social_auth.google}}\" target=\"_self\">\n" +
6899 6897 " <span class=\"fa fa-google-plus-square fa-2x\"></span> Connect with Google</a>\n" +
6900 6898 " </li>\n" +
6901 6899 " <li class=\"list-group-item\">\n" +
6902 6900 " <a href=\"{{AeConfig.urls.social_auth.twitter}}\" target=\"_self\">\n" +
6903 6901 " <span class=\"fa fa-twitter fa-2x\"></span> Connect with Twitter</a>\n" +
6904 6902 " </li>\n" +
6905 6903 " <li class=\"list-group-item\">\n" +
6906 6904 " <a href=\"{{AeConfig.urls.social_auth.bitbucket}}\" target=\"_self\">\n" +
6907 6905 " <span class=\"fa fa-bitbucket fa-2x\"></span> Connect with Bitbucket</a>\n" +
6908 6906 " </li>\n" +
6909 6907 " <li class=\"list-group-item\">\n" +
6910 6908 " <a href=\"{{AeConfig.urls.social_auth.github}}\" target=\"_self\">\n" +
6911 6909 " <span class=\"fa fa-github fa-2x\"></span> Connect with Github including private repo access</a>\n" +
6912 6910 " </li>\n" +
6913 6911 " </ul>\n" +
6914 6912 " </div>\n" +
6915 6913 " </div>\n" +
6916 6914 " </div>\n" +
6917 6915 "</div>\n"
6918 6916 );
6919 6917
6920 6918
6921 6919 $templateCache.put('templates/user/profile_password.html',
6922 6920 "<ng-include src=\"'templates/loader.html'\" ng-if=\"password.loading.password\"></ng-include>\n" +
6923 6921 "\n" +
6924 6922 "<div ng-show=\"!password.loading.password\">\n" +
6925 6923 "\n" +
6926 6924 " <div class=\"panel panel-default\">\n" +
6927 6925 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6928 6926 " <div class=\"panel-body\">\n" +
6929 6927 "\n" +
6930 6928 " <form class=\"form-horizontal\" name=\"password.passwordForm\" ng-submit=\"password.updatePassword()\">\n" +
6931 6929 " <div class=\"form-group\" id=\"row-old_password\">\n" +
6932 6930 " <data-form-errors errors=\"password.passwordForm.ae_validation.old_password\"></data-form-errors>\n" +
6933 6931 " <label for=\"old_password\" id=\"label-old_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6934 6932 " Old Password\n" +
6935 6933 " <span class=\"required\">*</span>\n" +
6936 6934 " </label>\n" +
6937 6935 " <div class=\"col-sm-8 col-lg-9\">\n" +
6938 6936 " <input class=\"form-control\" id=\"old_password\" name=\"old_password\" type=\"password\" ng-model=\"password.form.old_password\">\n" +
6939 6937 " </div>\n" +
6940 6938 " </div>\n" +
6941 6939 " <div class=\"form-group\" id=\"row-new_password\">\n" +
6942 6940 " <data-form-errors errors=\"password.passwordForm.ae_validation.new_password\"></data-form-errors>\n" +
6943 6941 " <label for=\"new_password\" id=\"label-new_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6944 6942 " New Password\n" +
6945 6943 " <span class=\"required\">*</span>\n" +
6946 6944 " </label>\n" +
6947 6945 " <div class=\"col-sm-8 col-lg-9\">\n" +
6948 6946 " <input class=\"form-control\" id=\"new_password\" name=\"new_password\" type=\"password\" ng-model=\"password.form.new_password\">\n" +
6949 6947 " </div>\n" +
6950 6948 " </div>\n" +
6951 6949 " <div class=\"form-group\" id=\"row-new_password_confirm\">\n" +
6952 6950 " <data-form-errors errors=\"password.passwordForm.ae_validation.new_password_confirm\"></data-form-errors>\n" +
6953 6951 " <label for=\"new_password_confirm\" id=\"label-new_password_confirm\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6954 6952 " Confirm Password\n" +
6955 6953 " <span class=\"required\">*</span>\n" +
6956 6954 " </label>\n" +
6957 6955 " <div class=\"col-sm-8 col-lg-9\">\n" +
6958 6956 " <input class=\"form-control\" id=\"new_password_confirm\" name=\"new_password_confirm\" type=\"password\" ng-model=\"password.form.new_password_confirm\">\n" +
6959 6957 " </div>\n" +
6960 6958 " </div>\n" +
6961 6959 " <div class=\"form-group\" id=\"row-submit\">\n" +
6962 6960 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\"></label>\n" +
6963 6961 " <div class=\"col-sm-8 col-lg-9\">\n" +
6964 6962 " <input class=\"form-control SubmitField btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Change Password\">\n" +
6965 6963 " </div>\n" +
6966 6964 " </div>\n" +
6967 6965 " </form>\n" +
6968 6966 "\n" +
6969 6967 " </div>\n" +
6970 6968 " </div>\n" +
6971 6969 "</div>\n"
6972 6970 );
6973 6971
6974 6972
6975 6973 $templateCache.put('templates/user/profile.html',
6976 6974 "<ui-view></ui-view>"
6977 6975 );
6978 6976
6979 6977 }]);
6980 6978
6981 6979 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
6982 6980 // #
6983 6981 // # This program is free software: you can redistribute it and/or modify
6984 6982 // # it under the terms of the GNU Affero General Public License, version 3
6985 6983 // # (only), as published by the Free Software Foundation.
6986 6984 // #
6987 6985 // # This program is distributed in the hope that it will be useful,
6988 6986 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
6989 6987 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6990 6988 // # GNU General Public License for more details.
6991 6989 // #
6992 6990 // # You should have received a copy of the GNU Affero General Public License
6993 6991 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
6994 6992 // #
6995 6993 // # This program is dual-licensed. If you wish to learn more about the
6996 6994 // # AppEnlight Enterprise Edition, including its added features, Support
6997 6995 // # services, and proprietary license terms, please see
6998 6996 // # https://rhodecode.com/licenses/
6999 6997
7000 6998 var aeconfig = angular.module('appenlight.config', []);
7001 6999 aeconfig.factory('AeConfig', function () {
7002 7000 var obj = {};
7003 7001 obj.flashMessages = decodeEncodedJSON(window.AE.flash_messages);
7004 7002 obj.timeOptions = decodeEncodedJSON(window.AE.timeOptions);
7005 7003 obj.plugins = decodeEncodedJSON(window.AE.plugins);
7006 7004 obj.ws_url = window.AE.ws_url;
7007 7005 obj.urls = window.AE.urls;
7008 7006
7009 7007 // set keys on values because we wont be able to retrieve them everywhere
7010 7008 for (var key in obj.timeOptions) {
7011 7009 obj.timeOptions[key]['key'] = key;
7012 7010 }
7013 7011 console.info('config', obj);
7014 7012 return obj;
7015 7013 });
7016 7014
7017 7015 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7018 7016 // #
7019 7017 // # This program is free software: you can redistribute it and/or modify
7020 7018 // # it under the terms of the GNU Affero General Public License, version 3
7021 7019 // # (only), as published by the Free Software Foundation.
7022 7020 // #
7023 7021 // # This program is distributed in the hope that it will be useful,
7024 7022 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7025 7023 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7026 7024 // # GNU General Public License for more details.
7027 7025 // #
7028 7026 // # You should have received a copy of the GNU Affero General Public License
7029 7027 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7030 7028 // #
7031 7029 // # This program is dual-licensed. If you wish to learn more about the
7032 7030 // # AppEnlight Enterprise Edition, including its added features, Support
7033 7031 // # services, and proprietary license terms, please see
7034 7032 // # https://rhodecode.com/licenses/
7035 7033
7036 7034 angular.module('appenlight.controllers').controller('AdminApplicationsListController', AdminApplicationsListController);
7037 7035
7038 7036 AdminApplicationsListController.$inject = ['applicationsResource'];
7039 7037
7040 7038 function AdminApplicationsListController(applicationsResource) {
7041 7039
7042 7040 var vm = this;
7043 7041 vm.loading = {applications: true};
7044 7042
7045 7043 vm.applications = applicationsResource.query({
7046 7044 root_list: true,
7047 7045 resource_type: 'application'
7048 7046 }, function (data) {
7049 7047 vm.loading = {applications: false};
7050 7048 });
7051 7049 };
7052 7050
7053 7051 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7054 7052 // #
7055 7053 // # This program is free software: you can redistribute it and/or modify
7056 7054 // # it under the terms of the GNU Affero General Public License, version 3
7057 7055 // # (only), as published by the Free Software Foundation.
7058 7056 // #
7059 7057 // # This program is distributed in the hope that it will be useful,
7060 7058 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7061 7059 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7062 7060 // # GNU General Public License for more details.
7063 7061 // #
7064 7062 // # You should have received a copy of the GNU Affero General Public License
7065 7063 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7066 7064 // #
7067 7065 // # This program is dual-licensed. If you wish to learn more about the
7068 7066 // # AppEnlight Enterprise Edition, including its added features, Support
7069 7067 // # services, and proprietary license terms, please see
7070 7068 // # https://rhodecode.com/licenses/
7071 7069
7072 7070 angular.module('appenlight.controllers').controller('ConfigsListController', ConfigsListController);
7073 7071
7074 7072 ConfigsListController.$inject = ['configsResource', 'configsNoIdResource'];
7075 7073
7076 7074 function ConfigsListController(configsResource, configsNoIdResource) {
7077 7075 var vm = this;
7078 7076 vm.loading = {config: true};
7079 7077
7080 7078 var filters = [
7081 7079 'template_footer_html:global',
7082 7080 'list_groups_to_non_admins:global',
7083 7081 'per_application_reports_rate_limit:global',
7084 7082 'per_application_logs_rate_limit:global',
7085 7083 'per_application_metrics_rate_limit:global',
7086 7084 ];
7087 7085
7088 7086 vm.configs = {};
7089 7087
7090 7088 vm.configList = configsResource.query({filter: filters},
7091 7089 function (data) {
7092 7090 vm.loading = {config: false};
7093 7091 _.each(data, function (item) {
7094 7092 if (vm.configs[item.section] === undefined) {
7095 7093 vm.configs[item.section] = {};
7096 7094 }
7097 7095 vm.configs[item.section][item.key] = item;
7098 7096 });
7099 7097 });
7100 7098
7101 7099 vm.save = function () {
7102 7100 vm.loading.config = true;
7103 7101 _.each(vm.configList, function (item) {
7104 7102 item.$save();
7105 7103 });
7106 7104 vm.loading.config = false;
7107 7105 };
7108 7106
7109 7107 };
7110 7108
7111 7109 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7112 7110 // #
7113 7111 // # This program is free software: you can redistribute it and/or modify
7114 7112 // # it under the terms of the GNU Affero General Public License, version 3
7115 7113 // # (only), as published by the Free Software Foundation.
7116 7114 // #
7117 7115 // # This program is distributed in the hope that it will be useful,
7118 7116 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7119 7117 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7120 7118 // # GNU General Public License for more details.
7121 7119 // #
7122 7120 // # You should have received a copy of the GNU Affero General Public License
7123 7121 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7124 7122 // #
7125 7123 // # This program is dual-licensed. If you wish to learn more about the
7126 7124 // # AppEnlight Enterprise Edition, including its added features, Support
7127 7125 // # services, and proprietary license terms, please see
7128 7126 // # https://rhodecode.com/licenses/
7129 7127
7130 7128 angular.module('appenlight.controllers').controller('AdminGroupsCreateController', AdminGroupsCreateController);
7131 7129
7132 7130 AdminGroupsCreateController.$inject = ['$state', 'groupsResource', 'groupsPropertyResource', 'sectionViewResource', 'AeConfig'];
7133 7131
7134 7132 function AdminGroupsCreateController($state, groupsResource, groupsPropertyResource, sectionViewResource, AeConfig) {
7135 7133
7136 7134 var vm = this;
7137 7135 vm.loading = {
7138 7136 group: false,
7139 7137 resource_permissions: false,
7140 7138 users: false
7141 7139 };
7142 7140
7143 7141 vm.form = {
7144 7142 autocompleteUser: '',
7145 7143 }
7146 7144
7147 7145
7148 7146 if (typeof $state.params.groupId !== 'undefined') {
7149 7147 vm.loading.group = true;
7150 7148 var groupId = $state.params.groupId;
7151 7149 vm.group = groupsResource.get({groupId: groupId}, function (data) {
7152 7150 vm.loading.group = false;
7153 7151 });
7154 7152
7155 7153 vm.resource_permissions = groupsPropertyResource.query(
7156 7154 {groupId: groupId, key: 'resource_permissions'}, function (data) {
7157 7155 vm.loading.resource_permissions = false;
7158 7156 var tmpObj = {
7159 7157 'group': {
7160 7158 'application': {},
7161 7159 'dashboard': {}
7162 7160 }
7163 7161 };
7164 7162 _.each(data, function (item) {
7165 7163
7166 7164 var section = tmpObj[item.type][item.resource_type];
7167 7165 if (typeof section[item.resource_id] == 'undefined') {
7168 7166 section[item.resource_id] = {
7169 7167 self: item,
7170 7168 permissions: []
7171 7169 }
7172 7170 }
7173 7171 section[item.resource_id].permissions.push(item.perm_name);
7174 7172
7175 7173 });
7176 7174 vm.resourcePermissions = tmpObj;
7177 7175 });
7178 7176
7179 7177 vm.users = groupsPropertyResource.query(
7180 7178 {groupId: groupId, key: 'users'}, function (data) {
7181 7179 vm.loading.users = false;
7182 7180 }, function () {
7183 7181 vm.loading.users = false;
7184 7182 });
7185 7183
7186 7184 }
7187 7185 else {
7188 7186 var groupId = null;
7189 7187 }
7190 7188
7191 7189 var formResponse = function (response) {
7192 7190 if (response.status === 422) {
7193 7191 setServerValidation(vm.groupForm, response.data);
7194 7192 }
7195 7193 vm.loading.group = false;
7196 7194 };
7197 7195
7198 7196 vm.createGroup = function () {
7199 7197 vm.loading.group = true;
7200 7198 if (groupId) {
7201 7199 groupsResource.update({groupId: vm.group.id}, vm.group, function (data) {
7202 7200 setServerValidation(vm.groupForm);
7203 7201 vm.loading.group = false;
7204 7202 }, formResponse);
7205 7203 }
7206 7204 else {
7207 7205 groupsResource.save(vm.group, function (data) {
7208 7206 $state.go('admin.group.update', {groupId: data.id});
7209 7207 }, formResponse);
7210 7208 }
7211 7209 };
7212 7210
7213 7211 vm.removeUser = function (user) {
7214 7212 groupsPropertyResource.delete(
7215 7213 {groupId: groupId, key: 'users', user_name: user.user_name},
7216 7214 function (data) {
7217 7215 vm.loading.users = false;
7218 7216 vm.users = _.filter(vm.users, function (item) {
7219 7217 return item != user;
7220 7218 });
7221 7219 }, function () {
7222 7220 vm.loading.users = false;
7223 7221 });
7224 7222 };
7225 7223
7226 7224 vm.addUser = function () {
7227 7225 groupsPropertyResource.save(
7228 7226 {groupId: groupId, key: 'users'},
7229 7227 {user_name: vm.form.autocompleteUser},
7230 7228 function (data) {
7231 7229 vm.loading.users = false;
7232 7230 vm.users.push(data);
7233 7231 vm.form.autocompleteUser = '';
7234 7232 }, function () {
7235 7233 vm.loading.users = false;
7236 7234 });
7237 7235 }
7238 7236
7239 7237 vm.searchUsers = function (searchPhrase) {
7240 7238
7241 7239 return sectionViewResource.query({
7242 7240 section: 'users_section',
7243 7241 view: 'search_users',
7244 7242 'user_name': searchPhrase
7245 7243 }).$promise.then(function (data) {
7246 7244 return _.map(data, function (item) {
7247 7245 return item.user;
7248 7246 });
7249 7247 });
7250 7248 }
7251 7249 };
7252 7250
7253 7251 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7254 7252 // #
7255 7253 // # This program is free software: you can redistribute it and/or modify
7256 7254 // # it under the terms of the GNU Affero General Public License, version 3
7257 7255 // # (only), as published by the Free Software Foundation.
7258 7256 // #
7259 7257 // # This program is distributed in the hope that it will be useful,
7260 7258 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7261 7259 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7262 7260 // # GNU General Public License for more details.
7263 7261 // #
7264 7262 // # You should have received a copy of the GNU Affero General Public License
7265 7263 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7266 7264 // #
7267 7265 // # This program is dual-licensed. If you wish to learn more about the
7268 7266 // # AppEnlight Enterprise Edition, including its added features, Support
7269 7267 // # services, and proprietary license terms, please see
7270 7268 // # https://rhodecode.com/licenses/
7271 7269
7272 7270 angular.module('appenlight.controllers').controller('AdminGroupsController', AdminGroupsController);
7273 7271
7274 7272 AdminGroupsController.$inject = ['groupsResource'];
7275 7273
7276 7274 function AdminGroupsController(groupsResource) {
7277 7275
7278 7276 var vm = this;
7279 7277 vm.loading = {groups: true};
7280 7278
7281 7279 vm.groups = groupsResource.query({}, function (data) {
7282 7280 vm.loading = {groups: false};
7283 7281 vm.activeUsers = _.reduce(vm.groups, function(memo, val){
7284 7282 if (val.status == 1){
7285 7283 return memo + 1;
7286 7284 }
7287 7285 return memo;
7288 7286 }, 0);
7289 7287
7290 7288 });
7291 7289
7292 7290
7293 7291 vm.removeGroup = function (group) {
7294 7292 groupsResource.remove({groupId: group.id}, function (data, responseHeaders) {
7295 7293
7296 7294 if (data) {
7297 7295 var index = vm.groups.indexOf(group);
7298 7296 if (index !== -1) {
7299 7297 vm.groups.splice(index, 1);
7300 7298 vm.activeGroups -= 1;
7301 7299 }
7302 7300 }
7303 7301 });
7304 7302 }
7305 7303 };
7306 7304
7307 7305 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7308 7306 // #
7309 7307 // # This program is free software: you can redistribute it and/or modify
7310 7308 // # it under the terms of the GNU Affero General Public License, version 3
7311 7309 // # (only), as published by the Free Software Foundation.
7312 7310 // #
7313 7311 // # This program is distributed in the hope that it will be useful,
7314 7312 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7315 7313 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7316 7314 // # GNU General Public License for more details.
7317 7315 // #
7318 7316 // # You should have received a copy of the GNU Affero General Public License
7319 7317 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7320 7318 // #
7321 7319 // # This program is dual-licensed. If you wish to learn more about the
7322 7320 // # AppEnlight Enterprise Edition, including its added features, Support
7323 7321 // # services, and proprietary license terms, please see
7324 7322 // # https://rhodecode.com/licenses/
7325 7323
7326 7324 angular.module('appenlight.controllers').controller('AdminPartitionsController', AdminPartitionsController);
7327 7325
7328 7326 AdminPartitionsController.$inject = ['sectionViewResource'];
7329 7327
7330 7328 function AdminPartitionsController(sectionViewResource) {
7331 7329 var vm = this;
7332 7330 vm.permanentPartitions = [];
7333 7331 vm.dailyPartitions = [];
7334 7332 vm.loading = {partitions: true};
7335 7333 vm.dailyChecked = false;
7336 7334 vm.permChecked = false;
7337 7335 vm.dailyConfirm = '';
7338 7336 vm.permConfirm = '';
7339 7337
7340 7338
7341 7339 vm.loadPartitions = function (data) {
7342 7340 var permanentPartitions = vm.transformPartitionList(
7343 7341 data.permanent_partitions);
7344 7342 var dailyPartitions = vm.transformPartitionList(
7345 7343 data.daily_partitions);
7346 7344 vm.permanentPartitions = permanentPartitions;
7347 7345 vm.dailyPartitions = dailyPartitions;
7348 7346 vm.loading = {partitions: false};
7349 7347 };
7350 7348
7351 7349 vm.setCheckedList = function (scope) {
7352 7350 var toTest = null;
7353 7351 if (scope === 'dailyPartitions'){
7354 7352 toTest = 'dailyChecked';
7355 7353 }
7356 7354 else{
7357 7355 toTest = 'permChecked';
7358 7356 }
7359 7357
7360 7358 if (vm[toTest]) {
7361 7359 var val = true;
7362 7360 }
7363 7361 else {
7364 7362 var val = false;
7365 7363 }
7366 7364
7367 7365 _.each(vm[scope], function (item) {
7368 7366 _.each(item[1].pg, function (index) {
7369 7367 index.checked = val;
7370 7368 });
7371 7369 _.each(item[1].elasticsearch, function (index) {
7372 7370 index.checked = val;
7373 7371 });
7374 7372 });
7375 7373 }
7376 7374
7377 7375
7378 7376 vm.transformPartitionList = function (inputList) {
7379 7377 var outputList = [];
7380 7378
7381 7379 _.each(inputList, function (item) {
7382 7380 var time = [item[0], {
7383 7381 elasticsearch: [],
7384 7382 pg: []
7385 7383 }]
7386 7384 _.each(item[1].pg, function (index) {
7387 7385 time[1].pg.push({name: index, checked: false})
7388 7386 });
7389 7387 _.each(item[1].elasticsearch, function (index) {
7390 7388 time[1].elasticsearch.push({
7391 7389 name: index,
7392 7390 checked: false
7393 7391 })
7394 7392 });
7395 7393 outputList.push(time);
7396 7394 });
7397 7395 return outputList;
7398 7396 };
7399 7397
7400 7398 sectionViewResource.get({section:'admin_section', view: 'partitions'},
7401 7399 vm.loadPartitions);
7402 7400
7403 7401 vm.partitionsDelete = function (partitionType) {
7404 7402 var es_indices = [];
7405 7403 var pg_indices = [];
7406 7404 _.each(vm[partitionType], function (item) {
7407 7405 _.each(item[1].pg, function (index) {
7408 7406 if (index.checked) {
7409 7407 pg_indices.push(index.name)
7410 7408 }
7411 7409 });
7412 7410 _.each(item[1].elasticsearch, function (index) {
7413 7411 if (index.checked) {
7414 7412 es_indices.push(index.name)
7415 7413 }
7416 7414 });
7417 7415 });
7418 7416
7419 7417
7420 7418 vm.loading = {partitions: true};
7421 7419 sectionViewResource.save({section:'admin_section',
7422 7420 view: 'partitions_remove'}, {
7423 7421 es_indices: es_indices,
7424 7422 pg_indices: pg_indices,
7425 7423 confirm: 'CONFIRM'
7426 7424 }, vm.loadPartitions);
7427 7425
7428 7426 }
7429 7427
7430 7428 }
7431 7429
7432 7430 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7433 7431 // #
7434 7432 // # This program is free software: you can redistribute it and/or modify
7435 7433 // # it under the terms of the GNU Affero General Public License, version 3
7436 7434 // # (only), as published by the Free Software Foundation.
7437 7435 // #
7438 7436 // # This program is distributed in the hope that it will be useful,
7439 7437 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7440 7438 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7441 7439 // # GNU General Public License for more details.
7442 7440 // #
7443 7441 // # You should have received a copy of the GNU Affero General Public License
7444 7442 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7445 7443 // #
7446 7444 // # This program is dual-licensed. If you wish to learn more about the
7447 7445 // # AppEnlight Enterprise Edition, including its added features, Support
7448 7446 // # services, and proprietary license terms, please see
7449 7447 // # https://rhodecode.com/licenses/
7450 7448
7451 7449 angular.module('appenlight.controllers').controller('AdminSystemController', AdminSystemController);
7452 7450
7453 7451 AdminSystemController.$inject = ['sectionViewResource'];
7454 7452
7455 7453 function AdminSystemController(sectionViewResource) {
7456 7454 var vm = this;
7457 7455 vm.tables = [];
7458 7456 vm.loading = {system: true};
7459 7457 sectionViewResource.get({
7460 7458 section: 'admin_section',
7461 7459 view: 'system'
7462 7460 }, null, function (data) {
7463 7461 vm.DBtables = data.db_tables;
7464 7462 vm.ESIndices = data.es_indices;
7465 7463 vm.queueStats = data.queue_stats;
7466 7464 vm.systemLoad = data.system_load;
7467 7465 vm.packages = data.packages;
7468 7466 vm.processInfo = data.process_info;
7469 7467 vm.disks = data.disks;
7470 7468 vm.memory = data.memory;
7471 7469 vm.selfInfo = data.self_info;
7472 7470
7473 7471 vm.loading.system = false;
7474 7472 });
7475 7473 };
7476 7474
7477 7475 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7478 7476 // #
7479 7477 // # This program is free software: you can redistribute it and/or modify
7480 7478 // # it under the terms of the GNU Affero General Public License, version 3
7481 7479 // # (only), as published by the Free Software Foundation.
7482 7480 // #
7483 7481 // # This program is distributed in the hope that it will be useful,
7484 7482 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7485 7483 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7486 7484 // # GNU General Public License for more details.
7487 7485 // #
7488 7486 // # You should have received a copy of the GNU Affero General Public License
7489 7487 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7490 7488 // #
7491 7489 // # This program is dual-licensed. If you wish to learn more about the
7492 7490 // # AppEnlight Enterprise Edition, including its added features, Support
7493 7491 // # services, and proprietary license terms, please see
7494 7492 // # https://rhodecode.com/licenses/
7495 7493
7496 7494 angular.module('appenlight.controllers').controller('AdminUsersCreateController', AdminUsersCreateController);
7497 7495
7498 7496 AdminUsersCreateController.$inject = ['$state', 'usersResource', 'usersPropertyResource', 'sectionViewResource', 'AeConfig'];
7499 7497
7500 7498 function AdminUsersCreateController($state, usersResource, usersPropertyResource, sectionViewResource, AeConfig) {
7501 7499
7502 7500 var vm = this;
7503 7501 vm.loading = {user: false};
7504 7502
7505 7503
7506 7504 if (typeof $state.params.userId !== 'undefined') {
7507 7505 vm.loading.user = true;
7508 7506 var userId = $state.params.userId;
7509 7507 vm.user = usersResource.get({userId: userId}, function (data) {
7510 7508 vm.loading.user = false;
7511 7509 // cast to true for angular checkbox
7512 7510 if (vm.user.status === 1) {
7513 7511 vm.user.status = true;
7514 7512 }
7515 7513 });
7516 7514
7517 7515 vm.resource_permissions = usersPropertyResource.query(
7518 7516 {userId: userId, key: 'resource_permissions'}, function (data) {
7519 7517 vm.loading.resource_permissions = false;
7520 7518 var tmpObj = {
7521 7519 'user': {
7522 7520 'application': {},
7523 7521 'dashboard': {}
7524 7522 },
7525 7523 'group': {
7526 7524 'application': {},
7527 7525 'dashboard': {}
7528 7526 }
7529 7527 };
7530 7528 _.each(data, function (item) {
7531 7529
7532 7530 var section = tmpObj[item.type][item.resource_type];
7533 7531 if (typeof section[item.resource_id] == 'undefined'){
7534 7532 section[item.resource_id] = {
7535 7533 self:item,
7536 7534 permissions: []
7537 7535 }
7538 7536 }
7539 7537 section[item.resource_id].permissions.push(item.perm_name);
7540 7538
7541 7539 });
7542 7540 vm.resourcePermissions = tmpObj;
7543 7541 });
7544 7542
7545 7543 }
7546 7544 else {
7547 7545 var userId = null;
7548 7546 vm.user = {
7549 7547 status: true
7550 7548 }
7551 7549 }
7552 7550
7553 7551 var formResponse = function (response) {
7554 7552 if (response.status == 422) {
7555 7553 setServerValidation(vm.profileForm, response.data);
7556 7554 }
7557 7555 vm.loading.user = false;
7558 7556 }
7559 7557
7560 7558 vm.createUser = function () {
7561 7559 vm.loading.user = true;
7562 7560
7563 7561 if (userId) {
7564 7562 usersResource.update({userId: vm.user.id}, vm.user, function (data) {
7565 7563 setServerValidation(vm.profileForm);
7566 7564 vm.loading.user = false;
7567 7565 }, formResponse);
7568 7566 }
7569 7567 else {
7570 7568 usersResource.save(vm.user, function (data) {
7571 7569 $state.go('admin.user.update', {userId: data.id});
7572 7570 }, formResponse);
7573 7571 }
7574 7572 }
7575 7573
7576 7574 vm.generatePassword = function () {
7577 7575 var length = 8;
7578 7576 var charset = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
7579 7577 vm.gen_pass = "";
7580 7578 for (var i = 0, n = charset.length; i < length; ++i) {
7581 7579 vm.gen_pass += charset.charAt(Math.floor(Math.random() * n));
7582 7580 }
7583 7581 vm.user.user_password = '' + vm.gen_pass;
7584 7582
7585 7583 }
7586 7584
7587 7585 vm.reloginUser = function () {
7588 7586 sectionViewResource.get({
7589 7587 section: 'admin_section', view: 'relogin_user',
7590 7588 user_id: vm.user.id
7591 7589 }, function () {
7592 7590 window.location = AeConfig.urls.baseUrl;
7593 7591 });
7594 7592
7595 7593 }
7596 7594 };
7597 7595
7598 7596 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7599 7597 // #
7600 7598 // # This program is free software: you can redistribute it and/or modify
7601 7599 // # it under the terms of the GNU Affero General Public License, version 3
7602 7600 // # (only), as published by the Free Software Foundation.
7603 7601 // #
7604 7602 // # This program is distributed in the hope that it will be useful,
7605 7603 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7606 7604 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7607 7605 // # GNU General Public License for more details.
7608 7606 // #
7609 7607 // # You should have received a copy of the GNU Affero General Public License
7610 7608 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7611 7609 // #
7612 7610 // # This program is dual-licensed. If you wish to learn more about the
7613 7611 // # AppEnlight Enterprise Edition, including its added features, Support
7614 7612 // # services, and proprietary license terms, please see
7615 7613 // # https://rhodecode.com/licenses/
7616 7614
7617 7615 angular.module('appenlight.controllers').controller('AdminUsersController', AdminUsersController);
7618 7616
7619 7617 AdminUsersController.$inject = ['usersResource'];
7620 7618
7621 7619 function AdminUsersController(usersResource) {
7622 7620
7623 7621 var vm = this;
7624 7622 vm.loading = {users: true};
7625 7623
7626 7624 vm.users = usersResource.query({}, function (data) {
7627 7625 vm.loading = {users: false};
7628 7626 vm.activeUsers = _.reduce(vm.users, function(memo, val){
7629 7627 if (val.status == 1){
7630 7628 return memo + 1;
7631 7629 }
7632 7630 return memo;
7633 7631 }, 0);
7634 7632
7635 7633 });
7636 7634
7637 7635
7638 7636 vm.removeUser = function (user) {
7639 7637 usersResource.remove({userId: user.id}, function (data, responseHeaders) {
7640 7638
7641 7639 if (data) {
7642 7640 var index = vm.users.indexOf(user);
7643 7641 if (index !== -1) {
7644 7642 vm.users.splice(index, 1);
7645 7643 vm.activeUsers -= 1;
7646 7644 }
7647 7645 }
7648 7646 });
7649 7647 }
7650 7648 };
7651 7649
7652 7650 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7653 7651 // #
7654 7652 // # This program is free software: you can redistribute it and/or modify
7655 7653 // # it under the terms of the GNU Affero General Public License, version 3
7656 7654 // # (only), as published by the Free Software Foundation.
7657 7655 // #
7658 7656 // # This program is distributed in the hope that it will be useful,
7659 7657 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7660 7658 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7661 7659 // # GNU General Public License for more details.
7662 7660 // #
7663 7661 // # You should have received a copy of the GNU Affero General Public License
7664 7662 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7665 7663 // #
7666 7664 // # This program is dual-licensed. If you wish to learn more about the
7667 7665 // # AppEnlight Enterprise Edition, including its added features, Support
7668 7666 // # services, and proprietary license terms, please see
7669 7667 // # https://rhodecode.com/licenses/
7670 7668
7671 7669 angular.module('appenlight.controllers')
7672 7670 .controller('ApplicationsUpdateController', ApplicationsUpdateController)
7673 7671
7674 7672 ApplicationsUpdateController.$inject = ['$state', 'applicationsNoIdResource', 'applicationsResource', 'applicationsPropertyResource', 'AeUser'];
7675 7673
7676 7674 function ApplicationsUpdateController($state, applicationsNoIdResource, applicationsResource, applicationsPropertyResource, AeUser) {
7677 7675 'use strict';
7678 7676
7679 7677 var vm = this;
7680 7678 vm.loading = {application: false};
7681 7679
7682 7680 vm.groupingOptions = [
7683 7681 ['url_type', 'Error Type + location'],
7684 7682 ['url_traceback', 'Traceback + location'],
7685 7683 ['traceback_server', 'Traceback + Server'],
7686 7684 ];
7687 7685
7688 7686 var resourceId = $state.params.resourceId;
7689 7687
7690 7688
7691 7689 var options = {};
7692 7690
7693 7691 vm.momentJs = moment;
7694 7692
7695 7693 vm.formTransferModel = {password:''};
7696 7694
7697 7695 // set initial data
7698 7696
7699 7697 if (resourceId === 'new') {
7700 7698 vm.resource = {
7701 7699 resource_id: null,
7702 7700 slow_report_threshold: 10,
7703 7701 error_report_threshold: 10,
7704 7702 allow_permanent_storage: true,
7705 7703 default_grouping: vm.groupingOptions[1][0]
7706 7704 };
7707 7705 }
7708 7706 else {
7709 7707 vm.loading.application = true;
7710 7708 vm.resource = applicationsResource.get({
7711 7709 'resourceId': resourceId
7712 7710 }, function (data) {
7713 7711 vm.loading.application = false;
7714 7712 });
7715 7713 }
7716 7714
7717 7715
7718 7716 vm.updateBasicForm = function () {
7719 7717 vm.loading.application = true;
7720 7718 if (vm.resource.resource_id === null) {
7721 7719 applicationsNoIdResource.save(null, vm.resource, function (data) {
7722 7720
7723 7721 AeUser.addApplication(data);
7724 7722
7725 7723 $state.go('applications.update', {resourceId: data.resource_id});
7726 7724 setServerValidation(vm.BasicForm);
7727 7725 }, function (response) {
7728 7726 if (response.status == 422) {
7729 7727 setServerValidation(vm.BasicForm, response.data);
7730 7728 }
7731 7729 vm.loading.application = false;
7732 7730
7733 7731 });
7734 7732 }
7735 7733 else {
7736 7734 applicationsResource.update({resourceId: vm.resource.resource_id},
7737 7735 vm.resource, function (data) {
7738 7736 vm.resource = data;
7739 7737 vm.loading.application = false;
7740 7738 setServerValidation(vm.BasicForm);
7741 7739 }, function (response) {
7742 7740 if (response.status == 422) {
7743 7741 setServerValidation(vm.BasicForm, response.data);
7744 7742 }
7745 7743 vm.loading.application = false;
7746 7744 });
7747 7745 }
7748 7746 };
7749 7747
7750 7748 vm.addRule = function () {
7751 7749
7752 7750 applicationsPropertyResource.save({
7753 7751 resourceId: vm.resource.resource_id,
7754 7752 key: 'postprocessing_rules'
7755 7753 }, null,
7756 7754 function (data) {
7757 7755 vm.resource.postprocessing_rules.push(data);
7758 7756 }
7759 7757 );
7760 7758 };
7761 7759
7762 7760 vm.regenerateAPIKeys = function(){
7763 7761 vm.loading.application = true;
7764 7762 applicationsPropertyResource.save({
7765 7763 resourceId: vm.resource.resource_id,
7766 7764 key: 'api_key'
7767 7765 }, {password: vm.regenerateAPIKeysPassword},
7768 7766 function (data) {
7769 7767 vm.resource = data;
7770 7768 vm.loading.application = false;
7771 7769 vm.regenerateAPIKeysPassword = '';
7772 7770 setServerValidation(vm.regenerateAPIKeysForm);
7773 7771 },
7774 7772 function (response) {
7775 7773 if (response.status == 422) {
7776 7774 setServerValidation(vm.regenerateAPIKeysForm, response.data);
7777 7775
7778 7776 }
7779 7777 vm.loading.application = false;
7780 7778 }
7781 7779 )
7782 7780 };
7783 7781
7784 7782 vm.deleteApplication = function(){
7785 7783 vm.loading.application = true;
7786 7784 applicationsPropertyResource.update({
7787 7785 resourceId: vm.resource.resource_id,
7788 7786 key: 'delete_resource'
7789 7787 }, vm.formDeleteModel,
7790 7788 function (data) {
7791 7789
7792 7790 AeUser.removeApplicationById(vm.resource.resource_id);
7793 7791
7794 7792 $state.go('applications.list');
7795 7793 },
7796 7794 function (response) {
7797 7795 if (response.status == 422) {
7798 7796 setServerValidation(vm.formDelete, response.data);
7799 7797
7800 7798 }
7801 7799 vm.loading.application = false;
7802 7800 }
7803 7801 );
7804 7802 };
7805 7803
7806 7804 vm.transferApplication = function(){
7807 7805 vm.loading.application = true;
7808 7806 applicationsPropertyResource.update({
7809 7807 resourceId: vm.resource.resource_id,
7810 7808 key: 'owner'
7811 7809 }, vm.formTransferModel,
7812 7810 function (data) {
7813 7811 $state.go('applications.list');
7814 7812 },
7815 7813 function (response) {
7816 7814 if (response.status == 422) {
7817 7815 setServerValidation(vm.formTransfer, response.data);
7818 7816
7819 7817 }
7820 7818 vm.loading.application = false;
7821 7819 }
7822 7820 )
7823 7821 }
7824 7822
7825 7823 }
7826 7824
7827 7825 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7828 7826 // #
7829 7827 // # This program is free software: you can redistribute it and/or modify
7830 7828 // # it under the terms of the GNU Affero General Public License, version 3
7831 7829 // # (only), as published by the Free Software Foundation.
7832 7830 // #
7833 7831 // # This program is distributed in the hope that it will be useful,
7834 7832 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7835 7833 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7836 7834 // # GNU General Public License for more details.
7837 7835 // #
7838 7836 // # You should have received a copy of the GNU Affero General Public License
7839 7837 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7840 7838 // #
7841 7839 // # This program is dual-licensed. If you wish to learn more about the
7842 7840 // # AppEnlight Enterprise Edition, including its added features, Support
7843 7841 // # services, and proprietary license terms, please see
7844 7842 // # https://rhodecode.com/licenses/
7845 7843
7846 7844 angular.module('appenlight.controllers')
7847 7845 .controller('IntegrationController', IntegrationController)
7848 7846
7849 7847 IntegrationController.$inject = ['$state', 'integrationResource'];
7850 7848
7851 7849 function IntegrationController($state, integrationResource) {
7852 7850
7853 7851 var vm = this;
7854 7852 vm.loading = {integration: true};
7855 7853 vm.config = integrationResource.get(
7856 7854 {
7857 7855 integration: $state.params.integration,
7858 7856 action: 'setup',
7859 7857 resourceId: $state.params.resourceId
7860 7858 }, function (data) {
7861 7859 vm.loading.integration = false;
7862 7860 });
7863 7861
7864 7862 vm.configureIntegration = function () {
7865 7863 console.info('configureIntegration');
7866 7864 vm.loading.integration = true;
7867 7865 integrationResource.save(
7868 7866 {
7869 7867 integration: $state.params.integration,
7870 7868 action: 'setup',
7871 7869 resourceId: $state.params.resourceId
7872 7870 }, vm.config, function (data) {
7873 7871 vm.loading.integration = false;
7874 7872 setServerValidation(vm.integrationForm);
7875 7873 }, function (response) {
7876 7874 if (response.status == 422) {
7877 7875 setServerValidation(vm.integrationForm, response.data);
7878 7876 }
7879 7877 vm.loading.integration = false;
7880 7878 });
7881 7879 };
7882 7880
7883 7881 vm.removeIntegration = function () {
7884 7882 console.info('removeIntegration');
7885 7883 integrationResource.remove({
7886 7884 integration: $state.params.integration,
7887 7885 resourceId: $state.params.resourceId,
7888 7886 action: 'delete'
7889 7887 },
7890 7888 function () {
7891 7889 $state.go('applications.integrations',
7892 7890 {resourceId: $state.params.resourceId});
7893 7891 }
7894 7892 );
7895 7893 }
7896 7894
7897 7895 vm.testIntegration = function(to_test){
7898 7896 console.info('testIntegration', to_test);
7899 7897 vm.loading.integration = true;
7900 7898 integrationResource.save(
7901 7899 {
7902 7900 integration: $state.params.integration,
7903 7901 action: 'test_'+ to_test,
7904 7902 resourceId: $state.params.resourceId
7905 7903 }, vm.config, function (data) {
7906 7904 vm.loading.integration = false;
7907 7905 }, function (response) {
7908 7906 vm.loading.integration = false;
7909 7907 });
7910 7908 }
7911 7909
7912 7910
7913 7911 }
7914 7912
7915 7913 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7916 7914 // #
7917 7915 // # This program is free software: you can redistribute it and/or modify
7918 7916 // # it under the terms of the GNU Affero General Public License, version 3
7919 7917 // # (only), as published by the Free Software Foundation.
7920 7918 // #
7921 7919 // # This program is distributed in the hope that it will be useful,
7922 7920 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7923 7921 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7924 7922 // # GNU General Public License for more details.
7925 7923 // #
7926 7924 // # You should have received a copy of the GNU Affero General Public License
7927 7925 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7928 7926 // #
7929 7927 // # This program is dual-licensed. If you wish to learn more about the
7930 7928 // # AppEnlight Enterprise Edition, including its added features, Support
7931 7929 // # services, and proprietary license terms, please see
7932 7930 // # https://rhodecode.com/licenses/
7933 7931
7934 7932 angular.module('appenlight.controllers')
7935 7933 .controller('IntegrationsListController', IntegrationsListController)
7936 7934
7937 7935 IntegrationsListController.$inject = ['$state', 'applicationsResource'];
7938 7936
7939 7937 function IntegrationsListController($state, applicationsResource) {
7940 7938
7941 7939 var vm = this;
7942 7940 vm.loading = {application: true};
7943 7941 vm.resource = applicationsResource.get({resourceId: $state.params.resourceId}, function (data) {
7944 7942 vm.loading.application = false;
7945 7943 $state.current.data.resource = vm.resource;
7946 7944 });
7947 7945 }
7948 7946
7949 7947 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7950 7948 // #
7951 7949 // # This program is free software: you can redistribute it and/or modify
7952 7950 // # it under the terms of the GNU Affero General Public License, version 3
7953 7951 // # (only), as published by the Free Software Foundation.
7954 7952 // #
7955 7953 // # This program is distributed in the hope that it will be useful,
7956 7954 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7957 7955 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7958 7956 // # GNU General Public License for more details.
7959 7957 // #
7960 7958 // # You should have received a copy of the GNU Affero General Public License
7961 7959 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7962 7960 // #
7963 7961 // # This program is dual-licensed. If you wish to learn more about the
7964 7962 // # AppEnlight Enterprise Edition, including its added features, Support
7965 7963 // # services, and proprietary license terms, please see
7966 7964 // # https://rhodecode.com/licenses/
7967 7965
7968 7966 angular.module('appenlight.controllers')
7969 7967 .controller('ApplicationsListController', ApplicationsListController)
7970 7968
7971 7969 ApplicationsListController.$inject = ['applicationsResource'];
7972 7970
7973 7971 function ApplicationsListController(applicationsResource) {
7974 7972
7975 7973 var vm = this;
7976 7974 vm.loading = {applications: true};
7977 7975 vm.applications = applicationsResource.query(null, function(){
7978 7976 vm.loading.applications = false;
7979 7977 });
7980 7978 }
7981 7979
7982 7980 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7983 7981 // #
7984 7982 // # This program is free software: you can redistribute it and/or modify
7985 7983 // # it under the terms of the GNU Affero General Public License, version 3
7986 7984 // # (only), as published by the Free Software Foundation.
7987 7985 // #
7988 7986 // # This program is distributed in the hope that it will be useful,
7989 7987 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7990 7988 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7991 7989 // # GNU General Public License for more details.
7992 7990 // #
7993 7991 // # You should have received a copy of the GNU Affero General Public License
7994 7992 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7995 7993 // #
7996 7994 // # This program is dual-licensed. If you wish to learn more about the
7997 7995 // # AppEnlight Enterprise Edition, including its added features, Support
7998 7996 // # services, and proprietary license terms, please see
7999 7997 // # https://rhodecode.com/licenses/
8000 7998
8001 7999 angular.module('appenlight.controllers')
8002 8000 .controller('ApplicationsPurgeLogsController', ApplicationsPurgeLogsController)
8003 8001
8004 8002 ApplicationsPurgeLogsController.$inject = ['applicationsResource', 'sectionViewResource', 'logsNoIdResource'];
8005 8003
8006 8004 function ApplicationsPurgeLogsController(applicationsResource, sectionViewResource, logsNoIdResource) {
8007 8005
8008 8006 var vm = this;
8009 8007 vm.loading = {applications: true};
8010 8008
8011 8009 vm.namespace = null;
8012 8010 vm.selectedResource = null;
8013 8011 vm.commonNamespaces = [];
8014 8012
8015 8013 vm.applications = applicationsResource.query({'type':'update_reports'}, function () {
8016 8014 vm.loading.applications = false;
8017 8015 vm.selectedResource = vm.applications[0].resource_id;
8018 8016 vm.getCommonKeys();
8019 8017 });
8020 8018
8021 8019 /**
8022 8020 * Fetches most commonly used tags in logs
8023 8021 */
8024 8022 vm.getCommonKeys = function () {
8025 8023 sectionViewResource.get({
8026 8024 section: 'logs_section',
8027 8025 view: 'common_tags',
8028 8026 resource: vm.selectedResource
8029 8027 }, function (data) {
8030 8028 vm.commonNamespaces = data['namespaces']
8031 8029 });
8032 8030 };
8033 8031
8034 8032 vm.purgeLogs = function () {
8035 8033 vm.loading.applications = true;
8036 8034 logsNoIdResource.delete({resource:vm.selectedResource,
8037 8035 namespace: vm.namespace}, function(){
8038 8036 vm.loading.applications = false;
8039 8037 });
8040 8038 }
8041 8039 }
8042 8040
8043 8041 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8044 8042 // #
8045 8043 // # This program is free software: you can redistribute it and/or modify
8046 8044 // # it under the terms of the GNU Affero General Public License, version 3
8047 8045 // # (only), as published by the Free Software Foundation.
8048 8046 // #
8049 8047 // # This program is distributed in the hope that it will be useful,
8050 8048 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8051 8049 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8052 8050 // # GNU General Public License for more details.
8053 8051 // #
8054 8052 // # You should have received a copy of the GNU Affero General Public License
8055 8053 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8056 8054 // #
8057 8055 // # This program is dual-licensed. If you wish to learn more about the
8058 8056 // # AppEnlight Enterprise Edition, including its added features, Support
8059 8057 // # services, and proprietary license terms, please see
8060 8058 // # https://rhodecode.com/licenses/
8061 8059
8062 8060 angular.module('appenlight.controllers').controller('EventsController', EventsController);
8063 8061
8064 8062 EventsController.$inject = ['eventsNoIdResource', 'eventsResource'];
8065 8063
8066 8064 function EventsController(eventsNoIdResource, eventsResource) {
8067 8065 console.info('EventsController');
8068 8066 var vm = this;
8069 8067
8070 8068 vm.loading = {events: true};
8071 8069
8072 8070 vm.events = eventsNoIdResource.query(
8073 8071 {key: 'events'},
8074 8072 function (data) {
8075 8073 vm.loading.events = false;
8076 8074 });
8077 8075
8078 8076
8079 8077 vm.closeEvent = function (event) {
8080 8078
8081 8079 eventsResource.update({eventId: event.id}, {status: 0}, function (data) {
8082 8080 event.status = 0;
8083 8081 });
8084 8082 }
8085 8083
8086 8084 }
8087 8085
8088 8086 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8089 8087 // #
8090 8088 // # This program is free software: you can redistribute it and/or modify
8091 8089 // # it under the terms of the GNU Affero General Public License, version 3
8092 8090 // # (only), as published by the Free Software Foundation.
8093 8091 // #
8094 8092 // # This program is distributed in the hope that it will be useful,
8095 8093 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8096 8094 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8097 8095 // # GNU General Public License for more details.
8098 8096 // #
8099 8097 // # You should have received a copy of the GNU Affero General Public License
8100 8098 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8101 8099 // #
8102 8100 // # This program is dual-licensed. If you wish to learn more about the
8103 8101 // # AppEnlight Enterprise Edition, including its added features, Support
8104 8102 // # services, and proprietary license terms, please see
8105 8103 // # https://rhodecode.com/licenses/
8106 8104
8107 8105 angular.module('appenlight.controllers')
8108 8106 .controller('IndexDashboardController', IndexDashboardController);
8109 8107
8110 8108 IndexDashboardController.$inject = ['$scope', '$location','$cookies', '$interval', 'stateHolder', 'userSelfPropertyResource', 'applicationsPropertyResource', 'AeConfig', 'AeUser'];
8111 8109
8112 8110 function IndexDashboardController($scope, $location, $cookies, $interval, stateHolder, userSelfPropertyResource, applicationsPropertyResource, AeConfig, AeUser) {
8113 8111 var vm = this;
8114 8112 stateHolder.section = 'dashboard';
8115 8113 vm.timeOptions = {};
8116 8114 var allowed = ['1h', '4h', '12h', '24h', '1w', '2w', '1M'];
8117 8115 _.each(allowed, function (key) {
8118 8116 if (allowed.indexOf(key) !== -1) {
8119 8117 vm.timeOptions[key] = AeConfig.timeOptions[key];
8120 8118 }
8121 8119 });
8122 8120 vm.urls = AeConfig.urls;
8123 8121 vm.applications = AeUser.applications_map;
8124 8122 vm.show_dashboard = false;
8125 8123 vm.resource = null;
8126 8124 vm.graphType = {selected: null};
8127 8125 vm.timeSpan = vm.timeOptions['1h'];
8128 8126 vm.trendingReports = [];
8129 8127 vm.exceptions = 0;
8130 8128 vm.satisfyingRequests = 0;
8131 8129 vm.toleratedRequests = 0;
8132 8130 vm.frustratingRequests = 0;
8133 8131 vm.uptimeStats = 0;
8134 8132 vm.apdexStats = [];
8135 8133 vm.seriesRequestsData = [];
8136 8134 vm.seriesMetricsData = [];
8137 8135 vm.seriesSlowData = [];
8138 8136 vm.slowCalls = [];
8139 8137 vm.slowURIS = [];
8140 8138
8141 8139 vm.reportChartConfig = {
8142 8140 data: {
8143 8141 json: [],
8144 8142 xFormat: '%Y-%m-%dT%H:%M:%S'
8145 8143 },
8146 8144 color: {
8147 8145 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
8148 8146 },
8149 8147 axis: {
8150 8148 x: {
8151 8149 type: 'timeseries',
8152 8150 tick: {
8153 8151 culling: {
8154 8152 max: 6 // the number of tick texts will be adjusted to less than this value
8155 8153 },
8156 8154 format: '%Y-%m-%d %H:%M'
8157 8155 }
8158 8156 },
8159 8157 y: {
8160 8158 tick: {
8161 8159 count: 5,
8162 8160 format: d3.format('.2s')
8163 8161 }
8164 8162 }
8165 8163 },
8166 8164 subchart: {
8167 8165 show: true,
8168 8166 size: {
8169 8167 height: 20
8170 8168 }
8171 8169 },
8172 8170 size: {
8173 8171 height: 250
8174 8172 },
8175 8173 zoom: {
8176 8174 rescale: true
8177 8175 },
8178 8176 grid: {
8179 8177 x: {
8180 8178 show: true
8181 8179 },
8182 8180 y: {
8183 8181 show: true
8184 8182 }
8185 8183 },
8186 8184 tooltip: {
8187 8185 format: {
8188 8186 title: function (d) {
8189 8187 return '' + d;
8190 8188 },
8191 8189 value: function (v) {
8192 8190 return v
8193 8191 }
8194 8192 }
8195 8193 }
8196 8194 };
8197 8195 vm.reportChartData = {};
8198 8196
8199 8197 vm.reportSlowChartConfig = {
8200 8198 data: {
8201 8199 json: [],
8202 8200 xFormat: '%Y-%m-%dT%H:%M:%S'
8203 8201 },
8204 8202 color: {
8205 8203 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
8206 8204 },
8207 8205 axis: {
8208 8206 x: {
8209 8207 type: 'timeseries',
8210 8208 tick: {
8211 8209 culling: {
8212 8210 max: 6 // the number of tick texts will be adjusted to less than this value
8213 8211 },
8214 8212 format: '%Y-%m-%d %H:%M'
8215 8213 }
8216 8214 },
8217 8215 y: {
8218 8216 tick: {
8219 8217 count: 5,
8220 8218 format: d3.format('.2s')
8221 8219 }
8222 8220 }
8223 8221 },
8224 8222 subchart: {
8225 8223 show: true,
8226 8224 size: {
8227 8225 height: 20
8228 8226 }
8229 8227 },
8230 8228 size: {
8231 8229 height: 250
8232 8230 },
8233 8231 zoom: {
8234 8232 rescale: true
8235 8233 },
8236 8234 grid: {
8237 8235 x: {
8238 8236 show: true
8239 8237 },
8240 8238 y: {
8241 8239 show: true
8242 8240 }
8243 8241 },
8244 8242 tooltip: {
8245 8243 format: {
8246 8244 title: function (d) {
8247 8245 return '' + d;
8248 8246 },
8249 8247 value: function (v) {
8250 8248 return v
8251 8249 }
8252 8250 }
8253 8251 }
8254 8252 };
8255 8253 vm.reportSlowChartData = {};
8256 8254
8257 8255 vm.metricsChartConfig = {
8258 8256 data: {
8259 8257 json: [],
8260 8258 xFormat: '%Y-%m-%dT%H:%M:%S',
8261 8259 keys: {
8262 8260 x: 'x',
8263 8261 value: ["main", "sql", "nosql", "tmpl", "remote", "custom"]
8264 8262 },
8265 8263 names: {
8266 8264 main: 'View/Application logic',
8267 8265 sql: 'Relational database queries',
8268 8266 nosql: 'NoSql datastore calls',
8269 8267 tmpl: 'Template rendering',
8270 8268 custom: 'Custom timed calls',
8271 8269 remote: 'Requests to remote resources'
8272 8270 },
8273 8271 type: 'area',
8274 8272 groups: [["main", "sql", "nosql", "remote", "custom", "tmpl"]],
8275 8273 order: null
8276 8274 },
8277 8275 color: {
8278 8276 pattern: ['#6baed6', '#c7e9c0', '#fd8d3c', '#d6616b', '#ffcc00', '#c6dbef']
8279 8277 },
8280 8278 axis: {
8281 8279 x: {
8282 8280 type: 'timeseries',
8283 8281 tick: {
8284 8282 culling: {
8285 8283 max: 6 // the number of tick texts will be adjusted to less than this value
8286 8284 },
8287 8285 format: '%Y-%m-%d %H:%M'
8288 8286 }
8289 8287 },
8290 8288 y: {
8291 8289 tick: {
8292 8290 count: 5,
8293 8291 format: d3.format('.2f')
8294 8292 }
8295 8293 }
8296 8294 },
8297 8295 point: {
8298 8296 show: false
8299 8297 },
8300 8298 subchart: {
8301 8299 show: true,
8302 8300 size: {
8303 8301 height: 20
8304 8302 }
8305 8303 },
8306 8304 size: {
8307 8305 height: 350
8308 8306 },
8309 8307 zoom: {
8310 8308 rescale: true
8311 8309 },
8312 8310 grid: {
8313 8311 x: {
8314 8312 show: true
8315 8313 },
8316 8314 y: {
8317 8315 show: true
8318 8316 }
8319 8317 },
8320 8318 tooltip: {
8321 8319 format: {
8322 8320 title: function (d) {
8323 8321 return '' + d;
8324 8322 },
8325 8323 value: function (v) {
8326 8324 return v
8327 8325 }
8328 8326 }
8329 8327 }
8330 8328 };
8331 8329 vm.metricsChartData = {};
8332 8330
8333 8331 vm.responseChartConfig = {
8334 8332 data: {
8335 8333 json: [],
8336 8334 xFormat: '%Y-%m-%dT%H:%M:%S'
8337 8335 },
8338 8336 color: {
8339 8337 pattern: ['#d6616b', '#6baed6', '#fd8d3c']
8340 8338 },
8341 8339 axis: {
8342 8340 x: {
8343 8341 type: 'timeseries',
8344 8342 tick: {
8345 8343 culling: {
8346 8344 max: 6 // the number of tick texts will be adjusted to less than this value
8347 8345 },
8348 8346 format: '%Y-%m-%d %H:%M'
8349 8347 }
8350 8348 },
8351 8349 y: {
8352 8350 tick: {
8353 8351 count: 5,
8354 8352 format: d3.format('.2f')
8355 8353 }
8356 8354 }
8357 8355 },
8358 8356 point: {
8359 8357 show: false
8360 8358 },
8361 8359 subchart: {
8362 8360 show: true,
8363 8361 size: {
8364 8362 height: 20
8365 8363 }
8366 8364 },
8367 8365 size: {
8368 8366 height: 350
8369 8367 },
8370 8368 zoom: {
8371 8369 rescale: true
8372 8370 },
8373 8371 grid: {
8374 8372 x: {
8375 8373 show: true
8376 8374 },
8377 8375 y: {
8378 8376 show: true
8379 8377 }
8380 8378 },
8381 8379 tooltip: {
8382 8380 format: {
8383 8381 title: function (d) {
8384 8382 return '' + d;
8385 8383 },
8386 8384 value: function (v) {
8387 8385 return v
8388 8386 }
8389 8387 }
8390 8388 }
8391 8389 };
8392 8390 vm.responseChartData = {};
8393 8391
8394 8392 vm.requestsChartConfig = {
8395 8393 data: {
8396 8394 json: [],
8397 8395 xFormat: '%Y-%m-%dT%H:%M:%S'
8398 8396 },
8399 8397 color: {
8400 8398 pattern: ['#d6616b', '#6baed6', '#fd8d3c']
8401 8399 },
8402 8400 axis: {
8403 8401 x: {
8404 8402 type: 'timeseries',
8405 8403 tick: {
8406 8404 culling: {
8407 8405 max: 6 // the number of tick texts will be adjusted to less than this value
8408 8406 },
8409 8407 format: '%Y-%m-%d %H:%M'
8410 8408 }
8411 8409 },
8412 8410 y: {
8413 8411 tick: {
8414 8412 count: 5,
8415 8413 format: d3.format('.2f')
8416 8414 }
8417 8415 }
8418 8416 },
8419 8417 point: {
8420 8418 show: false
8421 8419 },
8422 8420 subchart: {
8423 8421 show: true,
8424 8422 size: {
8425 8423 height: 20
8426 8424 }
8427 8425 },
8428 8426 size: {
8429 8427 height: 350
8430 8428 },
8431 8429 zoom: {
8432 8430 rescale: true
8433 8431 },
8434 8432 grid: {
8435 8433 x: {
8436 8434 show: true
8437 8435 },
8438 8436 y: {
8439 8437 show: true
8440 8438 }
8441 8439 },
8442 8440 tooltip: {
8443 8441 format: {
8444 8442 title: function (d) {
8445 8443 return '' + d;
8446 8444 },
8447 8445 value: function (v) {
8448 8446 return v
8449 8447 }
8450 8448 }
8451 8449 }
8452 8450 };
8453 8451 vm.requestsChartData = {};
8454 8452
8455 8453 vm.loading = {
8456 8454 'apdex': true,
8457 8455 'reports': true,
8458 8456 'graphs': true,
8459 8457 'slowCalls': true,
8460 8458 'slowURIS': true,
8461 8459 'requestsBreakdown': true,
8462 8460 'series': true
8463 8461 };
8464 8462 vm.stream = {paused: false, filtered: false, messages: [], reports: []};
8465 8463 vm.websocket = null;
8466 8464 userSelfPropertyResource.get({key: 'websocket'}, function (data) {
8467 8465
8468 8466
8469 8467 vm.websocket = new ReconnectingWebSocket(AeConfig.ws_url + '/ws?conn_id=' + data.conn_id);
8470 8468 vm.websocket.onopen = function (event) {
8471 8469
8472 8470 };
8473 8471 vm.websocket.onmessage = function (event) {
8474 8472 var data = JSON.parse(event.data);
8475 8473
8476 8474 $scope.$apply(function (scope) {
8477 8475 _.each(data, function (message) {
8478 8476 if (message.type === 'message'){
8479 8477 ws_report = message.message.report;
8480 8478 if (ws_report.http_status != 500) {
8481 8479 return
8482 8480 }
8483 8481 if (vm.stream.paused == true) {
8484 8482 return
8485 8483 }
8486 8484 if (vm.stream.filtered && ws_report.resource_id != vm.resource) {
8487 8485 return
8488 8486 }
8489 8487 var should_insert = true;
8490 8488 _.each(vm.stream.reports, function (report) {
8491 8489 if (report.report_id == ws_report.report_id) {
8492 8490 report.occurences = ws_report.occurences;
8493 8491 should_insert = false;
8494 8492 }
8495 8493 });
8496 8494 if (should_insert) {
8497 8495 if (vm.stream.reports.length > 7) {
8498 8496 vm.stream.reports.pop();
8499 8497 }
8500 8498 vm.stream.reports.unshift(ws_report);
8501 8499 }
8502 8500 }
8503 8501 });
8504 8502 });
8505 8503 };
8506 8504 vm.websocket.onclose = function (event) {
8507 8505
8508 8506 };
8509 8507
8510 8508 vm.websocket.onerror = function (event) {
8511 8509
8512 8510 };
8513 8511
8514 8512 });
8515 8513
8516 8514 vm.determineStartState = function () {
8517 8515 if (AeUser.applications.length) {
8518 8516 vm.resource = Number($location.search().resource);
8519 8517
8520 8518 if (!vm.resource){
8521 8519 var cookieResource = $cookies.getObject('resource');
8522 8520
8523 8521
8524 8522 if (cookieResource) {
8525 8523 vm.resource = cookieResource;
8526 8524 }
8527 8525 else{
8528 8526 vm.resource = AeUser.applications[0].resource_id;
8529 8527 }
8530 8528 }
8531 8529 }
8532 8530
8533 8531 var timespan = $location.search().timespan;
8534 8532
8535 8533 if(_.has(vm.timeOptions, timespan)){
8536 8534 vm.timeSpan = vm.timeOptions[timespan];
8537 8535 }
8538 8536 else{
8539 8537 vm.timeSpan = vm.timeOptions['1h'];
8540 8538 }
8541 8539
8542 8540 var graphType = $location.search().graphtype;
8543 8541 if(!graphType){
8544 8542 vm.graphType = {selected: 'metrics_graphs'};
8545 8543 }
8546 8544 else{
8547 8545 vm.graphType = {selected: graphType};
8548 8546 }
8549 8547 vm.updateSearchParams();
8550 8548 };
8551 8549
8552 8550 vm.updateSearchParams = function () {
8553 8551 $location.search('resource', vm.resource);
8554 8552 $location.search('timespan', vm.timeSpan.key);
8555 8553 $location.search('graphtype', vm.graphType.selected);
8556 8554 stateHolder.resource = vm.resource;
8557 8555 if (vm.resource){
8558 8556 $cookies.putObject('resource', vm.resource,
8559 8557 {expires:new Date(3000, 1, 1)});
8560 8558 }
8561 8559 };
8562 8560
8563 8561 vm.refreshData = function () {
8564 8562 vm.fetchApdexStats();
8565 8563 vm.fetchTrendingReports();
8566 8564 vm.fetchMetrics();
8567 8565 vm.fetchRequestsBreakdown();
8568 8566 vm.fetchSlowCalls();
8569 8567 }
8570 8568
8571 8569 vm.changedTimeSpan = function(){
8572 8570 vm.startDateFilter = timeSpanToStartDate(vm.timeSpan.key);
8573 8571 vm.refreshData();
8574 8572 }
8575 8573
8576 8574 var intervalId = $interval(function () {
8577 8575 if (_.contains(['30m', "1h"], vm.timeSpan.key)) {
8578 8576 // don't do anything if window is unfocused
8579 8577 if(document.hidden === true){
8580 8578 return ;
8581 8579 }
8582 8580 vm.refreshData();
8583 8581 }
8584 8582 }, 60000);
8585 8583
8586 8584 $scope.$on('$destroy',function(){
8587 8585 $interval.cancel(intervalId);
8588 8586 if (vm.websocket && vm.websocket.readyState == 1){
8589 8587 vm.websocket.close();
8590 8588 }
8591 8589 });
8592 8590
8593 8591
8594 8592 vm.fetchApdexStats = function () {
8595 8593 vm.loading.apdex = true;
8596 8594 vm.apdexStats = applicationsPropertyResource.query({
8597 8595 'key': 'apdex_stats',
8598 8596 'resourceId': vm.resource,
8599 8597 "start_date": timeSpanToStartDate(vm.timeSpan.key)
8600 8598 },
8601 8599 function (data) {
8602 8600 vm.loading.apdex = false;
8603 8601
8604 8602 vm.exceptions = _.reduce(data, function (memo, row) {
8605 8603 return memo + row.errors;
8606 8604 }, 0);
8607 8605 vm.satisfyingRequests = _.reduce(data, function (memo, row) {
8608 8606 return memo + row.satisfying_requests;
8609 8607 }, 0);
8610 8608 vm.toleratedRequests = _.reduce(data, function (memo, row) {
8611 8609 return memo + row.tolerated_requests;
8612 8610 }, 0);
8613 8611 vm.frustratingRequests = _.reduce(data, function (memo, row) {
8614 8612 return memo + row.frustrating_requests;
8615 8613 }, 0);
8616 8614 if (data.length) {
8617 8615 vm.uptimeStats = data[0].uptime;
8618 8616 }
8619 8617
8620 8618 },
8621 8619 function () {
8622 8620 vm.loading.apdex = false;
8623 8621 }
8624 8622 );
8625 8623 }
8626 8624
8627 8625 vm.fetchMetrics = function () {
8628 8626 vm.loading.series = true;
8629 8627 applicationsPropertyResource.query({
8630 8628 'resourceId': vm.resource,
8631 8629 'key': vm.graphType.selected,
8632 8630 "start_date": timeSpanToStartDate(vm.timeSpan.key)
8633 8631 }, function (data) {
8634 8632 if (vm.graphType.selected == 'metrics_graphs') {
8635 8633 vm.metricsChartData = {
8636 8634 json: data,
8637 8635 xFormat: '%Y-%m-%dT%H:%M:%S',
8638 8636 keys: {
8639 8637 x: 'x',
8640 8638 value: ["main", "sql", "nosql", "tmpl", "remote", "custom"]
8641 8639 },
8642 8640 names: {
8643 8641 main: 'View/Application logic',
8644 8642 sql: 'Relational database queries',
8645 8643 nosql: 'NoSql datastore calls',
8646 8644 tmpl: 'Template rendering',
8647 8645 custom: 'Custom timed calls',
8648 8646 remote: 'Requests to remote resources'
8649 8647 },
8650 8648 type: 'area',
8651 8649 groups: [["main", "sql", "nosql", "remote", "custom", "tmpl"]],
8652 8650 order: null
8653 8651 };
8654 8652 }
8655 8653 else if (vm.graphType.selected == 'report_graphs') {
8656 8654 vm.reportChartData = {
8657 8655 json: data,
8658 8656 xFormat: '%Y-%m-%dT%H:%M:%S',
8659 8657 keys: {
8660 8658 x: 'x',
8661 8659 value: ["not_found", "report"]
8662 8660 },
8663 8661 names: {
8664 8662 report: 'Errors',
8665 8663 not_found: '404\'s requests'
8666 8664 },
8667 8665 type: 'bar'
8668 8666 };
8669 8667 }
8670 8668 else if (vm.graphType.selected == 'slow_report_graphs') {
8671 8669 vm.reportSlowChartData = {
8672 8670 json: data,
8673 8671 xFormat: '%Y-%m-%dT%H:%M:%S',
8674 8672 keys: {
8675 8673 x: 'x',
8676 8674 value: ["slow_report"]
8677 8675 },
8678 8676 names: {
8679 8677 slow_report: 'Slow reports'
8680 8678 },
8681 8679 type: 'bar'
8682 8680 };
8683 8681 }
8684 8682 else if (vm.graphType.selected == 'response_graphs') {
8685 8683 vm.responseChartData = {
8686 8684 json: data,
8687 8685 xFormat: '%Y-%m-%dT%H:%M:%S',
8688 8686 keys: {
8689 8687 x: 'x',
8690 8688 value: ["today", "days_ago_2", "days_ago_7"]
8691 8689 },
8692 8690 names: {
8693 8691 today: 'Today',
8694 8692 "days_ago_2": '2 days ago',
8695 8693 "days_ago_7": '7 days ago'
8696 8694 }
8697 8695 };
8698 8696 }
8699 8697 else if (vm.graphType.selected == 'requests_graphs') {
8700 8698 vm.requestsChartData = {
8701 8699 json: data,
8702 8700 xFormat: '%Y-%m-%dT%H:%M:%S',
8703 8701 keys: {
8704 8702 x: 'x',
8705 8703 value: ["requests"]
8706 8704 },
8707 8705 names: {
8708 8706 requests: 'Requests/s'
8709 8707 }
8710 8708 };
8711 8709 }
8712 8710 vm.loading.series = false;
8713 8711 }, function(){
8714 8712 vm.loading.series = false;
8715 8713 });
8716 8714 }
8717 8715
8718 8716 vm.fetchSlowCalls = function () {
8719 8717 vm.loading.slowCalls = true;
8720 8718 applicationsPropertyResource.query({
8721 8719 'resourceId': vm.resource,
8722 8720 "start_date": timeSpanToStartDate(vm.timeSpan.key),
8723 8721 'key': 'slow_calls'
8724 8722 }, function (data) {
8725 8723 vm.slowCalls = data;
8726 8724 vm.loading.slowCalls = false;
8727 8725 }, function () {
8728 8726 vm.loading.slowCalls = false;
8729 8727 });
8730 8728 }
8731 8729
8732 8730 vm.fetchRequestsBreakdown = function () {
8733 8731 vm.loading.requestsBreakdown = true;
8734 8732 applicationsPropertyResource.query({
8735 8733 'resourceId': vm.resource,
8736 8734 "start_date": timeSpanToStartDate(vm.timeSpan.key),
8737 8735 'key': 'requests_breakdown'
8738 8736 }, function (data) {
8739 8737 vm.requestsBreakdown = data;
8740 8738 vm.loading.requestsBreakdown = false;
8741 8739 }, function () {
8742 8740 vm.loading.requestsBreakdown = false;
8743 8741 });
8744 8742 }
8745 8743
8746 8744 vm.fetchTrendingReports = function () {
8747 8745
8748 8746 if (vm.graphType.selected == 'slow_report_graphs') {
8749 8747 var report_type = 'slow';
8750 8748 }
8751 8749 else {
8752 8750 var report_type = 'error';
8753 8751 }
8754 8752
8755 8753 vm.loading.reports = true;
8756 8754 vm.trendingReports = applicationsPropertyResource.query({
8757 8755 'key': 'trending_reports',
8758 8756 'resourceId': vm.resource,
8759 8757 "start_date": timeSpanToStartDate(vm.timeSpan.key),
8760 8758 "report_type": report_type
8761 8759 },
8762 8760 function () {
8763 8761 vm.loading.reports = false;
8764 8762 },
8765 8763 function () {
8766 8764 vm.loading.reports = false;
8767 8765 }
8768 8766 )
8769 8767 ;
8770 8768 }
8771 8769
8772 8770 if (AeUser.applications.length){
8773 8771 vm.show_dashboard = true;
8774 8772 vm.determineStartState();
8775 8773 vm.refreshData();
8776 8774 }
8777 8775
8778 8776 $scope.$on('$locationChangeSuccess', function () {
8779 8777
8780 8778 if (vm.loading.series === false) {
8781 8779 vm.determineStartState();
8782 8780 vm.refreshData();
8783 8781 }
8784 8782 });
8785 8783
8786 8784
8787 8785 }
8788 8786
8789 8787 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8790 8788 // #
8791 8789 // # This program is free software: you can redistribute it and/or modify
8792 8790 // # it under the terms of the GNU Affero General Public License, version 3
8793 8791 // # (only), as published by the Free Software Foundation.
8794 8792 // #
8795 8793 // # This program is distributed in the hope that it will be useful,
8796 8794 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8797 8795 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8798 8796 // # GNU General Public License for more details.
8799 8797 // #
8800 8798 // # You should have received a copy of the GNU Affero General Public License
8801 8799 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8802 8800 // #
8803 8801 // # This program is dual-licensed. If you wish to learn more about the
8804 8802 // # AppEnlight Enterprise Edition, including its added features, Support
8805 8803 // # services, and proprietary license terms, please see
8806 8804 // # https://rhodecode.com/licenses/
8807 8805
8808 8806 angular.module('appenlight.controllers')
8809 8807 .controller('HeaderCtrl', HeaderCtrl);
8810 8808
8811 8809 HeaderCtrl.$inject = ['$state', 'stateHolder', 'AeUser'];
8812 8810
8813 8811 function HeaderCtrl($state, stateHolder, AeUser) {
8814 8812 var vm = this;
8815 8813 vm.stateHolder = stateHolder;
8816 8814 vm.assignedReports = AeUser.assigned_reports;
8817 8815 vm.latestEvents = AeUser.latest_events;
8818 8816 vm.activeEvents = 0;
8819 8817 _.each(vm.latestEvents, function (event) {
8820 8818 if (event.status === 1 && event.end_date === null) {
8821 8819 vm.activeEvents += 1;
8822 8820 }
8823 8821 });
8824 8822
8825 8823 vm.clickedEvent = function(event){
8826 8824
8827 8825 // (from Event model)
8828 8826 // exception reports
8829 8827 if (_.contains([1,2], event.event_type)){
8830 8828 $state.go('report.list', {resource:event.resource_id, start_date:event.start_date});
8831 8829 }
8832 8830 // slowness reports
8833 8831 else if (_.contains([3,4], event.event_type)){
8834 8832 $state.go('report.list_slow', {resource:event.resource_id, start_date:event.start_date});
8835 8833 }
8836 8834 // uptime reports
8837 8835 else if (_.contains([7,8], event.event_type)){
8838 8836 $state.go('uptime', {resource:event.resource_id, start_date:event.start_date});
8839 8837 }
8840 8838 else{
8841 8839
8842 8840 }
8843 8841 }
8844 8842 }
8845 8843
8846 8844 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8847 8845 // #
8848 8846 // # This program is free software: you can redistribute it and/or modify
8849 8847 // # it under the terms of the GNU Affero General Public License, version 3
8850 8848 // # (only), as published by the Free Software Foundation.
8851 8849 // #
8852 8850 // # This program is distributed in the hope that it will be useful,
8853 8851 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8854 8852 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8855 8853 // # GNU General Public License for more details.
8856 8854 // #
8857 8855 // # You should have received a copy of the GNU Affero General Public License
8858 8856 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8859 8857 // #
8860 8858 // # This program is dual-licensed. If you wish to learn more about the
8861 8859 // # AppEnlight Enterprise Edition, including its added features, Support
8862 8860 // # services, and proprietary license terms, please see
8863 8861 // # https://rhodecode.com/licenses/
8864 8862
8865 8863 angular.module('appenlight.controllers').controller('IndexCtrl', IndexCtrl);
8866 8864
8867 8865 IndexCtrl.$inject = [IndexCtrl];
8868 8866
8869 8867 function IndexCtrl() {
8870 8868 var vm = this;
8871 8869 vm.selected_section = 'errors';
8872 8870 }
8873 8871
8874 8872 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8875 8873 // #
8876 8874 // # This program is free software: you can redistribute it and/or modify
8877 8875 // # it under the terms of the GNU Affero General Public License, version 3
8878 8876 // # (only), as published by the Free Software Foundation.
8879 8877 // #
8880 8878 // # This program is distributed in the hope that it will be useful,
8881 8879 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8882 8880 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8883 8881 // # GNU General Public License for more details.
8884 8882 // #
8885 8883 // # You should have received a copy of the GNU Affero General Public License
8886 8884 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8887 8885 // #
8888 8886 // # This program is dual-licensed. If you wish to learn more about the
8889 8887 // # AppEnlight Enterprise Edition, including its added features, Support
8890 8888 // # services, and proprietary license terms, please see
8891 8889 // # https://rhodecode.com/licenses/
8892 8890
8893 8891 angular.module('appenlight.controllers')
8894 8892 .controller('BitbucketIntegrationCtrl', BitbucketIntegrationCtrl)
8895 8893
8896 8894 BitbucketIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
8897 8895
8898 8896 function BitbucketIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
8899 8897 var vm = this;
8900 8898 vm.loading = true;
8901 8899 vm.assignees = [];
8902 8900 vm.report = report;
8903 8901 vm.integrationName = integrationName;
8904 8902 vm.statuses = [];
8905 8903 vm.priorities = [];
8906 8904 vm.error_messages = [];
8907 8905 vm.form = {
8908 8906 content: '\n' +
8909 8907 'Issue created for report: ' +
8910 8908 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
8911 8909 };
8912 8910
8913 8911 vm.fetchInfo = function () {
8914 8912 integrationResource.get({
8915 8913 resourceId: vm.report.resource_id,
8916 8914 action: 'info',
8917 8915 integration: vm.integrationName
8918 8916 }, null,
8919 8917 function (data) {
8920 8918 vm.loading = false;
8921 8919 if (data.error_messages) {
8922 8920 vm.error_messages = data.error_messages;
8923 8921 }
8924 8922 vm.assignees = data.assignees;
8925 8923 vm.priorities = data.priorities;
8926 8924 vm.form.responsible = vm.assignees[0];
8927 8925 vm.form.priority = vm.priorities[0];
8928 8926 }, function (error_data) {
8929 8927 if (error_data.data.error_messages) {
8930 8928 vm.error_messages = error_data.data.error_messages;
8931 8929 }
8932 8930 else {
8933 8931 vm.error_messages = ['There was a problem processing your request'];
8934 8932 }
8935 8933 });
8936 8934 };
8937 8935 vm.ok = function () {
8938 8936 vm.loading = true;
8939 8937 vm.form.group_id = vm.report.group_id;
8940 8938 integrationResource.save({
8941 8939 resourceId: vm.report.resource_id,
8942 8940 action: 'create-issue',
8943 8941 integration: vm.integrationName
8944 8942 }, vm.form,
8945 8943 function (data) {
8946 8944 vm.loading = false;
8947 8945 if (data.error_messages) {
8948 8946 vm.error_messages = data.error_messages;
8949 8947 }
8950 8948 if (data !== false) {
8951 8949 $uibModalInstance.dismiss('success');
8952 8950 }
8953 8951 }, function (error_data) {
8954 8952 if (error_data.data.error_messages) {
8955 8953 vm.error_messages = error_data.data.error_messages;
8956 8954 }
8957 8955 else {
8958 8956 vm.error_messages = ['There was a problem processing your request'];
8959 8957 }
8960 8958 });
8961 8959 };
8962 8960 vm.cancel = function () {
8963 8961 $uibModalInstance.dismiss('cancel');
8964 8962 };
8965 8963 vm.fetchInfo();
8966 8964 }
8967 8965
8968 8966 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8969 8967 // #
8970 8968 // # This program is free software: you can redistribute it and/or modify
8971 8969 // # it under the terms of the GNU Affero General Public License, version 3
8972 8970 // # (only), as published by the Free Software Foundation.
8973 8971 // #
8974 8972 // # This program is distributed in the hope that it will be useful,
8975 8973 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8976 8974 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8977 8975 // # GNU General Public License for more details.
8978 8976 // #
8979 8977 // # You should have received a copy of the GNU Affero General Public License
8980 8978 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8981 8979 // #
8982 8980 // # This program is dual-licensed. If you wish to learn more about the
8983 8981 // # AppEnlight Enterprise Edition, including its added features, Support
8984 8982 // # services, and proprietary license terms, please see
8985 8983 // # https://rhodecode.com/licenses/
8986 8984
8987 8985 angular.module('appenlight.controllers')
8988 8986 .controller('GithubIntegrationCtrl', GithubIntegrationCtrl);
8989 8987
8990 8988 GithubIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
8991 8989
8992 8990 function GithubIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
8993 8991 var vm = this;
8994 8992 vm.loading = true;
8995 8993 vm.assignees = [];
8996 8994 vm.report = report;
8997 8995 vm.integrationName = integrationName;
8998 8996 vm.statuses = [];
8999 8997 vm.assignees = [];
9000 8998 vm.error_messages = [];
9001 8999 vm.form = {
9002 9000 content: '\n' +
9003 9001 'Issue created for report: ' +
9004 9002 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
9005 9003 };
9006 9004
9007 9005 vm.fetchInfo = function () {
9008 9006 integrationResource.get({
9009 9007 resourceId: vm.report.resource_id,
9010 9008 action: 'info',
9011 9009 integration: vm.integrationName
9012 9010 }, null,
9013 9011 function (data) {
9014 9012 vm.loading = false;
9015 9013 if (data.error_messages) {
9016 9014 vm.error_messages = data.error_messages;
9017 9015 }
9018 9016 else {
9019 9017 vm.assignees = data.assignees;
9020 9018 vm.statuses = data.statuses;
9021 9019 vm.form.responsible = vm.assignees[0];
9022 9020 vm.form.status = vm.statuses[0];
9023 9021 }
9024 9022 }, function (error_data) {
9025 9023 if (error_data.data.error_messages) {
9026 9024 vm.error_messages = error_data.data.error_messages;
9027 9025 }
9028 9026 else {
9029 9027 vm.error_messages = ['There was a problem processing your request'];
9030 9028 }
9031 9029 });
9032 9030 };
9033 9031 vm.ok = function () {
9034 9032 vm.loading = true;
9035 9033 vm.form.group_id = vm.report.group_id;
9036 9034 integrationResource.save({
9037 9035 resourceId: vm.report.resource_id,
9038 9036 action: 'create-issue',
9039 9037 integration: vm.integrationName
9040 9038 }, vm.form,
9041 9039 function (data) {
9042 9040 vm.loading = false;
9043 9041 if (data.error_messages) {
9044 9042 vm.error_messages = data.error_messages;
9045 9043 }
9046 9044 else {
9047 9045 $uibModalInstance.dismiss('success');
9048 9046 }
9049 9047 }, function (error_data) {
9050 9048 if (error_data.data.error_messages) {
9051 9049 vm.error_messages = error_data.data.error_messages;
9052 9050 }
9053 9051 else {
9054 9052 vm.error_messages = ['There was a problem processing your request'];
9055 9053 }
9056 9054 });
9057 9055 };
9058 9056 vm.cancel = function () {
9059 9057 $uibModalInstance.dismiss('cancel');
9060 9058 };
9061 9059 vm.fetchInfo();
9062 9060 }
9063 9061
9064 9062 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9065 9063 // #
9066 9064 // # This program is free software: you can redistribute it and/or modify
9067 9065 // # it under the terms of the GNU Affero General Public License, version 3
9068 9066 // # (only), as published by the Free Software Foundation.
9069 9067 // #
9070 9068 // # This program is distributed in the hope that it will be useful,
9071 9069 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9072 9070 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9073 9071 // # GNU General Public License for more details.
9074 9072 // #
9075 9073 // # You should have received a copy of the GNU Affero General Public License
9076 9074 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9077 9075 // #
9078 9076 // # This program is dual-licensed. If you wish to learn more about the
9079 9077 // # AppEnlight Enterprise Edition, including its added features, Support
9080 9078 // # services, and proprietary license terms, please see
9081 9079 // # https://rhodecode.com/licenses/
9082 9080
9083 9081 angular.module('appenlight.controllers')
9084 9082 .controller('JiraIntegrationCtrl', JiraIntegrationCtrl)
9085 9083
9086 9084 JiraIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
9087 9085
9088 9086 function JiraIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
9089 9087 var vm = this;
9090 9088 vm.loading = true;
9091 9089 vm.assignees = [];
9092 9090 vm.report = report;
9093 9091 vm.integrationName = integrationName;
9094 9092 vm.statuses = [];
9095 9093 vm.priorities = [];
9096 9094 vm.error_messages = [];
9097 9095 vm.form = {
9098 9096 content: '\n' +
9099 9097 'Issue created for report: ' +
9100 9098 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
9101 9099 };
9102 9100
9103 9101 vm.fetchInfo = function () {
9104 9102 integrationResource.get({
9105 9103 resourceId: vm.report.resource_id,
9106 9104 action: 'info',
9107 9105 integration: vm.integrationName
9108 9106 }, null,
9109 9107 function (data) {
9110 9108 vm.loading = false;
9111 9109 if (data.error_messages) {
9112 9110 vm.error_messages = data.error_messages;
9113 9111 }
9114 9112 vm.assignees = data.assignees;
9115 9113 vm.priorities = data.priorities;
9116 9114 vm.form.responsible = vm.assignees[0];
9117 9115 vm.form.priority = vm.priorities[0];
9118 9116 }, function (error_data) {
9119 9117
9120 9118 if (error_data.data.error_messages) {
9121 9119 vm.error_messages = error_data.data.error_messages;
9122 9120 }
9123 9121 else {
9124 9122 vm.error_messages = ['There was a problem processing your request'];
9125 9123 }
9126 9124 });
9127 9125 };
9128 9126 vm.ok = function () {
9129 9127 vm.loading = true;
9130 9128 vm.form.group_id = vm.report.group_id;
9131 9129 integrationResource.save({
9132 9130 resourceId: vm.report.resource_id,
9133 9131 action: 'create-issue',
9134 9132 integration: vm.integrationName
9135 9133 }, vm.form,
9136 9134 function (data) {
9137 9135 vm.loading = false;
9138 9136 if (data.error_messages) {
9139 9137 vm.error_messages = data.error_messages;
9140 9138 }
9141 9139 if (data !== false) {
9142 9140 $uibModalInstance.dismiss('success');
9143 9141 }
9144 9142 }, function (error_data) {
9145 9143 if (error_data.data.error_messages) {
9146 9144 vm.error_messages = error_data.data.error_messages;
9147 9145 }
9148 9146 else {
9149 9147 vm.error_messages = ['There was a problem processing your request'];
9150 9148 }
9151 9149 });
9152 9150 };
9153 9151 vm.cancel = function () {
9154 9152 $uibModalInstance.dismiss('cancel');
9155 9153 };
9156 9154 vm.fetchInfo();
9157 9155 }
9158 9156
9159 9157 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9160 9158 // #
9161 9159 // # This program is free software: you can redistribute it and/or modify
9162 9160 // # it under the terms of the GNU Affero General Public License, version 3
9163 9161 // # (only), as published by the Free Software Foundation.
9164 9162 // #
9165 9163 // # This program is distributed in the hope that it will be useful,
9166 9164 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9167 9165 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9168 9166 // # GNU General Public License for more details.
9169 9167 // #
9170 9168 // # You should have received a copy of the GNU Affero General Public License
9171 9169 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9172 9170 // #
9173 9171 // # This program is dual-licensed. If you wish to learn more about the
9174 9172 // # AppEnlight Enterprise Edition, including its added features, Support
9175 9173 // # services, and proprietary license terms, please see
9176 9174 // # https://rhodecode.com/licenses/
9177 9175
9178 9176 angular.module('appenlight.controllers').controller('LogsController', LogsController);
9179 9177
9180 9178 LogsController.$inject = ['$scope', '$location', 'stateHolder', 'typeAheadTagHelper', 'logsNoIdResource', 'sectionViewResource', 'AeUser'];
9181 9179
9182 9180 function LogsController($scope, $location, stateHolder, typeAheadTagHelper, logsNoIdResource, sectionViewResource, AeUser) {
9183 9181 var vm = this;
9184 9182 vm.logEventsChartConfig = {
9185 9183 data: {
9186 9184 json: [],
9187 9185 xFormat: '%Y-%m-%dT%H:%M:%S'
9188 9186 },
9189 9187 color: {
9190 9188 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
9191 9189 },
9192 9190 axis: {
9193 9191 x: {
9194 9192 type: 'timeseries',
9195 9193 tick: {
9196 9194 format: '%Y-%m-%d'
9197 9195 }
9198 9196 },
9199 9197 y: {
9200 9198 tick: {
9201 9199 count: 5,
9202 9200 format: d3.format('.2s')
9203 9201 }
9204 9202 }
9205 9203 },
9206 9204 subchart: {
9207 9205 show: true,
9208 9206 size: {
9209 9207 height: 20
9210 9208 }
9211 9209 },
9212 9210 size: {
9213 9211 height: 250
9214 9212 },
9215 9213 zoom: {
9216 9214 rescale: true
9217 9215 },
9218 9216 grid: {
9219 9217 x: {
9220 9218 show: true
9221 9219 },
9222 9220 y: {
9223 9221 show: true
9224 9222 }
9225 9223 },
9226 9224 tooltip: {
9227 9225 format: {
9228 9226 title: function (d) {
9229 9227 return '' + d;
9230 9228 },
9231 9229 value: function (v) {
9232 9230 return v
9233 9231 }
9234 9232 }
9235 9233 }
9236 9234 };
9237 9235 vm.logEventsChartData = {};
9238 9236 stateHolder.section = 'logs';
9239 9237 vm.today = function () {
9240 9238 vm.pickerDate = new Date();
9241 9239 };
9242 9240 vm.today();
9243 9241
9244 9242 vm.applications = AeUser.applications_map;
9245 9243 vm.logsPage = [];
9246 9244 vm.itemCount = 0;
9247 9245 vm.itemsPerPage = 250;
9248 9246 vm.searchParams = parseSearchToTags($location.search());
9249 9247 vm.$location = $location;
9250 9248 vm.isLoading = {
9251 9249 logs: true,
9252 9250 series: true
9253 9251 };
9254 9252 vm.filterTypeAheadOptions = [
9255 9253 {
9256 9254 type: 'message',
9257 9255 text: 'message:',
9258 9256 'description': 'Full-text search in your logs',
9259 9257 tag: 'Message',
9260 9258 example: 'message:text-im-looking-for'
9261 9259 },
9262 9260 {
9263 9261 type: 'namespace',
9264 9262 text: 'namespace:',
9265 9263 'description': 'Query logs from specific namespace',
9266 9264 tag: 'Namespace',
9267 9265 example: "namespace:module.foo"
9268 9266 },
9269 9267 {
9270 9268 type: 'resource',
9271 9269 text: 'resource:',
9272 9270 'description': 'Restrict resultset to application',
9273 9271 tag: 'Application',
9274 9272 example: "resource:ID"
9275 9273 },
9276 9274 {
9277 9275 type: 'request_id',
9278 9276 text: 'request_id:',
9279 9277 'description': 'Show logs with specific request id',
9280 9278 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
9281 9279 tag: 'Request ID'
9282 9280 },
9283 9281 {
9284 9282 type: 'level',
9285 9283 text: 'level:',
9286 9284 'description': 'Show entries with specific log level',
9287 9285 example: 'level:warning',
9288 9286 tag: 'Level'
9289 9287 },
9290 9288 {
9291 9289 type: 'server_name',
9292 9290 text: 'server_name:',
9293 9291 'description': 'Show entries tagged with this key/value pair',
9294 9292 example: 'server_name:hostname',
9295 9293 tag: 'Tag'
9296 9294 },
9297 9295 {
9298 9296 type: 'start_date',
9299 9297 text: 'start_date:',
9300 9298 'description': 'Show results newer than this date (press TAB for dropdown)',
9301 9299 example: 'start_date:2014-08-15T13:00',
9302 9300 tag: 'Start Date'
9303 9301 },
9304 9302 {
9305 9303 type: 'end_date',
9306 9304 text: 'end_date:',
9307 9305 'description': 'Show results older than this date (press TAB for dropdown)',
9308 9306 example: 'start_date:2014-08-15T23:59',
9309 9307 tag: 'End Date'
9310 9308 },
9311 9309 {type: 'level', value: 'debug', text: 'level:debug'},
9312 9310 {type: 'level', value: 'info', text: 'level:info'},
9313 9311 {type: 'level', value: 'warning', text: 'level:warning'},
9314 9312 {type: 'level', value: 'critical', text: 'level:critical'}
9315 9313 ];
9316 9314 vm.filterTypeAhead = null;
9317 9315 vm.showDatePicker = false;
9318 9316 vm.manualOpen = false;
9319 9317 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
9320 9318 vm.removeSearchTag = function (tag) {
9321 9319 $location.search(tag.type, null);
9322 9320 };
9323 9321 vm.addSearchTag = function (tag) {
9324 9322 $location.search(tag.type, tag.value);
9325 9323 };
9326 9324
9327 9325 vm.paginationChange = function(){
9328 9326 $location.search('page', vm.searchParams.page);
9329 9327 };
9330 9328
9331 9329
9332 9330 _.each(vm.applications, function (item) {
9333 9331 vm.filterTypeAheadOptions.push({
9334 9332 type: 'resource',
9335 9333 text: 'resource:' + item.resource_id + ':' + item.resource_name,
9336 9334 example: 'resource:' + item.resource_id,
9337 9335 'tag': item.resource_name,
9338 9336 'description': 'Restrict resultset to this application'
9339 9337 });
9340 9338 });
9341 9339
9342 9340 vm.typeAheadTag = function (event) {
9343 9341 var text = vm.filterTypeAhead;
9344 9342 if (_.isObject(vm.filterTypeAhead)) {
9345 9343 text = vm.filterTypeAhead.text;
9346 9344 }
9347 9345 ;
9348 9346 if (!vm.filterTypeAhead) {
9349 9347 return
9350 9348 }
9351 9349 var parsed = text.split(':');
9352 9350 var tag = {'type': null, 'value': null};
9353 9351 // app tags have : twice
9354 9352 if (parsed.length > 2 && parsed[0] == 'resource') {
9355 9353 tag.type = 'resource';
9356 9354 tag.value = parsed[1];
9357 9355 }
9358 9356 // normal tag:value
9359 9357 else if (parsed.length > 1) {
9360 9358 tag.type = parsed[0];
9361 9359 tag.value = parsed.slice(1).join(':');
9362 9360 }
9363 9361 else {
9364 9362 tag.type = 'message';
9365 9363 tag.value = parsed.join(':');
9366 9364 }
9367 9365
9368 9366 // set datepicker hour based on type of field
9369 9367 if ('start_date:' == text) {
9370 9368 vm.showDatePicker = true;
9371 9369 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
9372 9370 }
9373 9371 else if ('end_date:' == text) {
9374 9372 vm.showDatePicker = true;
9375 9373 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
9376 9374 }
9377 9375
9378 9376 if (event.keyCode != 13 || !tag.type || !tag.value) {
9379 9377 return
9380 9378 }
9381 9379 vm.showDatePicker = false;
9382 9380 // aka we selected one of main options
9383 9381 $location.search(tag.type, tag.value);
9384 9382
9385 9383 // clear typeahead
9386 9384 vm.filterTypeAhead = undefined;
9387 9385 };
9388 9386
9389 9387
9390 9388 vm.pickerDateChanged = function(){
9391 9389 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
9392 9390 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
9393 9391 }
9394 9392 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
9395 9393 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
9396 9394 }
9397 9395 vm.showDatePicker = false;
9398 9396 };
9399 9397
9400 9398 vm.fetchLogs = function (searchParams) {
9401 9399 vm.isLoading.logs = true;
9402 9400 logsNoIdResource.query(searchParams, function (data, getResponseHeaders) {
9403 9401 vm.isLoading.logs = false;
9404 9402 var headers = getResponseHeaders();
9405 9403 vm.logsPage = data;
9406 9404 vm.itemCount = headers['x-total-count'];
9407 9405 vm.itemsPerPage = headers['x-items-per-page'];
9408 9406 }, function () {
9409 9407 vm.isLoading.logs = false;
9410 9408 });
9411 9409 };
9412 9410
9413 9411 vm.fetchSeriesData = function (searchParams) {
9414 9412 searchParams['section'] = 'logs_section';
9415 9413 searchParams['view'] = 'fetch_series';
9416 9414 vm.isLoading.series = true;
9417 9415 sectionViewResource.query(searchParams, function (data) {
9418 9416
9419 9417 vm.logEventsChartData = {
9420 9418 json: data,
9421 9419 xFormat: '%Y-%m-%dT%H:%M:%S',
9422 9420 keys: {
9423 9421 x: 'x',
9424 9422 value: ["logs"]
9425 9423 },
9426 9424 names: {
9427 9425 logs: 'Log events'
9428 9426 },
9429 9427 type: 'bar'
9430 9428 };
9431 9429 vm.isLoading.series = false;
9432 9430 }, function () {
9433 9431 vm.isLoading.series = false;
9434 9432 });
9435 9433 };
9436 9434
9437 9435 vm.filterId = function (log) {
9438 9436 $location.search('request_id', log.request_id);
9439 9437 };
9440 9438
9441 9439 var params = parseTagsToSearch(vm.searchParams);
9442 9440 vm.fetchLogs(params);
9443 9441 vm.fetchSeriesData(params);
9444 9442
9445 9443 $scope.$on('$locationChangeSuccess', function () {
9446 9444
9447 9445 vm.searchParams = parseSearchToTags($location.search());
9448 9446 var params = parseTagsToSearch(vm.searchParams);
9449 9447
9450 9448 if (vm.isLoading.logs === false) {
9451 9449
9452 9450 vm.fetchLogs(params);
9453 9451 vm.fetchSeriesData(params);
9454 9452 }
9455 9453 });
9456 9454
9457 9455 }
9458 9456
9459 9457 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9460 9458 // #
9461 9459 // # This program is free software: you can redistribute it and/or modify
9462 9460 // # it under the terms of the GNU Affero General Public License, version 3
9463 9461 // # (only), as published by the Free Software Foundation.
9464 9462 // #
9465 9463 // # This program is distributed in the hope that it will be useful,
9466 9464 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9467 9465 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9468 9466 // # GNU General Public License for more details.
9469 9467 // #
9470 9468 // # You should have received a copy of the GNU Affero General Public License
9471 9469 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9472 9470 // #
9473 9471 // # This program is dual-licensed. If you wish to learn more about the
9474 9472 // # AppEnlight Enterprise Edition, including its added features, Support
9475 9473 // # services, and proprietary license terms, please see
9476 9474 // # https://rhodecode.com/licenses/
9477 9475
9478 9476 angular.module('appenlight.controllers')
9479 9477 .controller('OverviewCtrl', OverviewCtrl);
9480 9478
9481 9479 OverviewCtrl.$inject = [];
9482 9480
9483 9481 function OverviewCtrl() {
9484 9482
9485 9483 }
9486 9484
9487 9485 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9488 9486 // #
9489 9487 // # This program is free software: you can redistribute it and/or modify
9490 9488 // # it under the terms of the GNU Affero General Public License, version 3
9491 9489 // # (only), as published by the Free Software Foundation.
9492 9490 // #
9493 9491 // # This program is distributed in the hope that it will be useful,
9494 9492 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9495 9493 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9496 9494 // # GNU General Public License for more details.
9497 9495 // #
9498 9496 // # You should have received a copy of the GNU Affero General Public License
9499 9497 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9500 9498 // #
9501 9499 // # This program is dual-licensed. If you wish to learn more about the
9502 9500 // # AppEnlight Enterprise Edition, including its added features, Support
9503 9501 // # services, and proprietary license terms, please see
9504 9502 // # https://rhodecode.com/licenses/
9505 9503
9506 9504 angular.module('appenlight.controllers')
9507 9505 .controller('RegisterController', RegisterController);
9508 9506
9509 9507 RegisterController.$inject = ['$scope', '$location'];
9510 9508
9511 9509 function RegisterController() {
9512 9510 var vm = this;
9513 9511 vm.selected_form = 'sign-up';
9514 9512 if (window.location.search.indexOf('sign_in') != -1 || window.location.search.indexOf('came_from') != -1) {
9515 9513 vm.selected_form = 'sign-in';
9516 9514 }
9517 9515 }
9518 9516
9519 9517 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9520 9518 // #
9521 9519 // # This program is free software: you can redistribute it and/or modify
9522 9520 // # it under the terms of the GNU Affero General Public License, version 3
9523 9521 // # (only), as published by the Free Software Foundation.
9524 9522 // #
9525 9523 // # This program is distributed in the hope that it will be useful,
9526 9524 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9527 9525 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9528 9526 // # GNU General Public License for more details.
9529 9527 // #
9530 9528 // # You should have received a copy of the GNU Affero General Public License
9531 9529 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9532 9530 // #
9533 9531 // # This program is dual-licensed. If you wish to learn more about the
9534 9532 // # AppEnlight Enterprise Edition, including its added features, Support
9535 9533 // # services, and proprietary license terms, please see
9536 9534 // # https://rhodecode.com/licenses/
9537 9535
9538 9536 angular.module('appenlight.controllers').controller('AssignReportCtrl', AssignReportCtrl);
9539 9537 AssignReportCtrl.$inject = ['$uibModalInstance', 'reportGroupPropertyResource', 'report'];
9540 9538
9541 9539 function AssignReportCtrl($uibModalInstance, reportGroupPropertyResource, report) {
9542 9540 var vm = this;
9543 9541 vm.loading = true;
9544 9542 vm.assignedUsers = [];
9545 9543 vm.unAssignedUsers = [];
9546 9544 vm.report = report;
9547 9545 vm.fetchAssignments = function () {
9548 9546 reportGroupPropertyResource.get({
9549 9547 groupId: vm.report.group_id,
9550 9548 key: 'assigned_users'
9551 9549 }, null,
9552 9550 function (data) {
9553 9551 vm.assignedUsers = data.assigned;
9554 9552 vm.unAssignedUsers = data.unassigned;
9555 9553 vm.loading = false;
9556 9554 });
9557 9555 }
9558 9556
9559 9557 vm.reassignUser = function (user) {
9560 9558 var is_assigned = vm.assignedUsers.indexOf(user);
9561 9559 if (is_assigned != -1) {
9562 9560 vm.assignedUsers.splice(is_assigned, 1);
9563 9561 vm.unAssignedUsers.push(user);
9564 9562 return
9565 9563 }
9566 9564 var is_unassigned = vm.unAssignedUsers.indexOf(user);
9567 9565 if (is_unassigned != -1) {
9568 9566 vm.unAssignedUsers.splice(is_unassigned, 1);
9569 9567 vm.assignedUsers.push(user);
9570 9568 return
9571 9569 }
9572 9570 }
9573 9571 vm.updateAssignments = function () {
9574 9572 var post = {'unassigned': [], 'assigned': []};
9575 9573 _.each(vm.assignedUsers, function (u) {
9576 9574 post['assigned'].push(u.user_name)
9577 9575 });
9578 9576 _.each(vm.unAssignedUsers, function (u) {
9579 9577 post['unassigned'].push(u.user_name)
9580 9578 });
9581 9579 vm.loading = true;
9582 9580 reportGroupPropertyResource.update({
9583 9581 groupId: vm.report.group_id,
9584 9582 key: 'assigned_users'
9585 9583 }, post,
9586 9584 function (data) {
9587 9585 vm.loading = false;
9588 9586 $uibModalInstance.close(vm.report);
9589 9587 });
9590 9588 };
9591 9589
9592 9590
9593 9591 vm.ok = function () {
9594 9592 vm.updateAssignments();
9595 9593 };
9596 9594
9597 9595 vm.cancel = function () {
9598 9596 $uibModalInstance.dismiss('cancel');
9599 9597 };
9600 9598
9601 9599 vm.fetchAssignments();
9602 9600
9603 9601 }
9604 9602
9605 9603 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9606 9604 // #
9607 9605 // # This program is free software: you can redistribute it and/or modify
9608 9606 // # it under the terms of the GNU Affero General Public License, version 3
9609 9607 // # (only), as published by the Free Software Foundation.
9610 9608 // #
9611 9609 // # This program is distributed in the hope that it will be useful,
9612 9610 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9613 9611 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9614 9612 // # GNU General Public License for more details.
9615 9613 // #
9616 9614 // # You should have received a copy of the GNU Affero General Public License
9617 9615 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9618 9616 // #
9619 9617 // # This program is dual-licensed. If you wish to learn more about the
9620 9618 // # AppEnlight Enterprise Edition, including its added features, Support
9621 9619 // # services, and proprietary license terms, please see
9622 9620 // # https://rhodecode.com/licenses/
9623 9621
9624 9622 'use strict';
9625 9623
9626 9624 /* Controllers */
9627 9625
9628 9626 angular.module('appenlight.controllers')
9629 9627 .controller('ReportsListSlowController', ReportsListSlowController);
9630 9628
9631 9629 ReportsListSlowController.$inject = ['$scope', '$location', '$cookies',
9632 9630 'stateHolder', 'typeAheadTagHelper', 'slowReportsResource', 'AeUser']
9633 9631
9634 9632 function ReportsListSlowController($scope, $location, $cookies, stateHolder, typeAheadTagHelper, slowReportsResource, AeUser) {
9635 9633 var vm = this;
9636 9634 vm.applications = AeUser.applications_map;
9637 9635 stateHolder.section = 'slow_reports';
9638 9636 vm.today = function () {
9639 9637 vm.pickerDate = new Date();
9640 9638 };
9641 9639 vm.today();
9642 9640 vm.reportsPage = [];
9643 9641 vm.itemCount = 0;
9644 9642 vm.itemsPerPage = 250;
9645 9643 typeAheadTagHelper.tags = [];
9646 9644 vm.searchParams = {tags: [], page: 1, type: 'slow_report'};
9647 9645 vm.searchParams = parseSearchToTags($location.search());
9648 9646 vm.is_loading = false;
9649 9647 vm.filterTypeAheadOptions = [
9650 9648 {
9651 9649 type: 'view_name',
9652 9650 text: 'view_name:',
9653 9651 'description': 'Query reports occured in specific views',
9654 9652 tag: 'View Name',
9655 9653 example: "view_name:module.foo"
9656 9654 },
9657 9655 {
9658 9656 type: 'resource',
9659 9657 text: 'resource:',
9660 9658 'description': 'Restrict resultset to application',
9661 9659 tag: 'Application',
9662 9660 example: "resource:ID"
9663 9661 },
9664 9662 {
9665 9663 type: 'priority',
9666 9664 text: 'priority:',
9667 9665 'description': 'Show reports with specific priority',
9668 9666 example: 'priority:8',
9669 9667 tag: 'Priority'
9670 9668 },
9671 9669 {
9672 9670 type: 'min_occurences',
9673 9671 text: 'min_occurences:',
9674 9672 'description': 'Show reports from groups with at least X occurences',
9675 9673 example: 'min_occurences:25',
9676 9674 tag: 'Min. occurences'
9677 9675 },
9678 9676 {
9679 9677 type: 'min_duration',
9680 9678 text: 'min_duration:',
9681 9679 'description': 'Show reports from groups with average duration >= Xs',
9682 9680 example: 'min_duration:4.5',
9683 9681 tag: 'Min. duration'
9684 9682 },
9685 9683 {
9686 9684 type: 'url_path',
9687 9685 text: 'url_path:',
9688 9686 'description': 'Show reports from specific URL paths',
9689 9687 example: 'url_path:/foo/bar/baz',
9690 9688 tag: 'Url Path'
9691 9689 },
9692 9690 {
9693 9691 type: 'url_domain',
9694 9692 text: 'url_domain:',
9695 9693 'description': 'Show reports from specific domain',
9696 9694 example: 'url_domain:domain.com',
9697 9695 tag: 'Domain'
9698 9696 },
9699 9697 {
9700 9698 type: 'request_id',
9701 9699 text: 'request_id:',
9702 9700 'description': 'Show reports with specific request id',
9703 9701 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
9704 9702 tag: 'Request ID'
9705 9703 },
9706 9704 {
9707 9705 type: 'report_status',
9708 9706 text: 'report_status:',
9709 9707 'description': 'Show reports from groups with specific status',
9710 9708 example: 'report_status:never_reviewed',
9711 9709 tag: 'Status'
9712 9710 },
9713 9711 {
9714 9712 type: 'server_name',
9715 9713 text: 'server_name:',
9716 9714 'description': 'Show reports tagged with this key/value pair',
9717 9715 example: 'server_name:hostname',
9718 9716 tag: 'Tag'
9719 9717 },
9720 9718 {
9721 9719 type: 'start_date',
9722 9720 text: 'start_date:',
9723 9721 'description': 'Show reports newer than this date (press TAB for dropdown)',
9724 9722 example: 'start_date:2014-08-15T13:00',
9725 9723 tag: 'Start Date'
9726 9724 },
9727 9725 {
9728 9726 type: 'end_date',
9729 9727 text: 'end_date:',
9730 9728 'description': 'Show reports older than this date (press TAB for dropdown)',
9731 9729 example: 'start_date:2014-08-15T23:59',
9732 9730 tag: 'End Date'
9733 9731 }
9734 9732 ];
9735 9733
9736 9734 vm.filterTypeAhead = undefined;
9737 9735 vm.showDatePicker = false;
9738 9736 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
9739 9737 vm.removeSearchTag = function (tag) {
9740 9738 $location.search(tag.type, null);
9741 9739 };
9742 9740 vm.addSearchTag = function (tag) {
9743 9741 $location.search(tag.type, tag.value);
9744 9742 };
9745 9743 vm.manualOpen = false;
9746 9744 vm.notRelativeTime = false;
9747 9745 if ($cookies.notRelativeTime) {
9748 9746 vm.notRelativeTime = JSON.parse($cookies.notRelativeTime);
9749 9747 }
9750 9748
9751 9749
9752 9750 vm.changeRelativeTime = function () {
9753 9751 $cookies.notRelativeTime = JSON.stringify(vm.notRelativeTime);
9754 9752 };
9755 9753
9756 9754 _.each(_.range(1, 11), function (priority) {
9757 9755 vm.filterTypeAheadOptions.push({
9758 9756 type: 'priority',
9759 9757 text: 'priority:' + priority.toString(),
9760 9758 description: 'Show entries with specific priority',
9761 9759 example: 'priority:' + priority,
9762 9760 tag: 'Priority'
9763 9761 });
9764 9762 });
9765 9763 _.each(['never_reviewed', 'reviewed', 'fixed', 'public'], function (status) {
9766 9764 vm.filterTypeAheadOptions.push({
9767 9765 type: 'report_status',
9768 9766 text: 'report_status:' + status,
9769 9767 'description': 'Show only reports with this status',
9770 9768 example: 'report_status:' + status,
9771 9769 tag: 'Status ' + status.toUpperCase()
9772 9770 });
9773 9771 });
9774 9772 _.each(AeUser.applications, function (item) {
9775 9773 vm.filterTypeAheadOptions.push({
9776 9774 type: 'resource',
9777 9775 text: 'resource:' + item.resource_id + ':' + item.resource_name,
9778 9776 example: 'resource:' + item.resource_id,
9779 9777 'tag': item.resource_name,
9780 9778 'description': 'Restrict resultset to this application'
9781 9779 });
9782 9780 });
9783 9781
9784 9782 vm.typeAheadTag = function (event) {
9785 9783 var text = vm.filterTypeAhead;
9786 9784 if (_.isObject(vm.filterTypeAhead)) {
9787 9785 text = vm.filterTypeAhead.text;
9788 9786 }
9789 9787 ;
9790 9788 if (!vm.filterTypeAhead) {
9791 9789 return
9792 9790 }
9793 9791 var parsed = text.split(':');
9794 9792 var tag = {'type': null, 'value': null};
9795 9793 // app tags have : twice
9796 9794 if (parsed.length > 2 && parsed[0] == 'resource') {
9797 9795 tag.type = 'resource';
9798 9796 tag.value = parsed[1];
9799 9797 }
9800 9798 // normal tag:value
9801 9799 else if (parsed.length > 1) {
9802 9800 tag.type = parsed[0];
9803 9801 var tagValue = parsed.slice(1);
9804 9802 if (tagValue) {
9805 9803 tag.value = tagValue.join(':');
9806 9804 }
9807 9805 }
9808 9806
9809 9807 // set datepicker hour based on type of field
9810 9808 if ('start_date:' == text) {
9811 9809 vm.showDatePicker = true;
9812 9810 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
9813 9811 }
9814 9812 else if ('end_date:' == text) {
9815 9813 vm.showDatePicker = true;
9816 9814 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
9817 9815 }
9818 9816
9819 9817 if (event.keyCode != 13 || !tag.type || !tag.value) {
9820 9818 return
9821 9819 }
9822 9820 vm.showDatePicker = false;
9823 9821 // aka we selected one of main options
9824 9822 $location.search(tag.type, tag.value);
9825 9823 // clear typeahead
9826 9824 vm.filterTypeAhead = undefined;
9827 9825 }
9828 9826
9829 9827 vm.paginationChange = function(){
9830 9828 $location.search('page', vm.searchParams.page);
9831 9829 }
9832 9830
9833 9831 vm.pickerDateChanged = function(){
9834 9832 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
9835 9833 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
9836 9834 }
9837 9835 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
9838 9836 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
9839 9837 }
9840 9838 vm.showDatePicker = false;
9841 9839 }
9842 9840
9843 9841 var reportPresentation = function (report) {
9844 9842 report.presentation = {};
9845 9843 if (report.group.public) {
9846 9844 report.presentation.className = 'public';
9847 9845 report.presentation.tooltip = 'Public';
9848 9846 }
9849 9847 else if (report.group.fixed) {
9850 9848 report.presentation.className = 'fixed';
9851 9849 report.presentation.tooltip = 'Fixed';
9852 9850 }
9853 9851 else if (report.group.read) {
9854 9852 report.presentation.className = 'reviewed';
9855 9853 report.presentation.tooltip = 'Reviewed';
9856 9854 }
9857 9855 else {
9858 9856 report.presentation.className = 'new';
9859 9857 report.presentation.tooltip = 'New';
9860 9858 }
9861 9859 return report;
9862 9860 }
9863 9861
9864 9862 vm.fetchReports = function (searchParams) {
9865 9863 vm.is_loading = true;
9866 9864 slowReportsResource.query(searchParams, function (data, getResponseHeaders) {
9867 9865 var headers = getResponseHeaders();
9868 9866
9869 9867 vm.is_loading = false;
9870 9868 vm.reportsPage = _.map(data, function (item) {
9871 9869 return reportPresentation(item);
9872 9870 });
9873 9871 vm.itemCount = headers['x-total-count'];
9874 9872 vm.itemsPerPage = headers['x-items-per-page'];
9875 9873 }, function () {
9876 9874 vm.is_loading = false;
9877 9875 });
9878 9876 }
9879 9877
9880 9878 vm.filterId = function (log) {
9881 9879 vm.searchParams.tags.push({
9882 9880 type: "request_id",
9883 9881 value: log.request_id
9884 9882 });
9885 9883 }
9886 9884 //initial load
9887 9885 var params = parseTagsToSearch(vm.searchParams);
9888 9886 vm.fetchReports(params);
9889 9887
9890 9888 $scope.$on('$locationChangeSuccess', function () {
9891 9889
9892 9890 vm.searchParams = parseSearchToTags($location.search());
9893 9891 var params = parseTagsToSearch(vm.searchParams);
9894 9892
9895 9893 if (vm.is_loading === false) {
9896 9894
9897 9895 vm.fetchReports(params);
9898 9896 }
9899 9897 });
9900 9898
9901 9899
9902 9900 }
9903 9901
9904 9902 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9905 9903 // #
9906 9904 // # This program is free software: you can redistribute it and/or modify
9907 9905 // # it under the terms of the GNU Affero General Public License, version 3
9908 9906 // # (only), as published by the Free Software Foundation.
9909 9907 // #
9910 9908 // # This program is distributed in the hope that it will be useful,
9911 9909 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9912 9910 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9913 9911 // # GNU General Public License for more details.
9914 9912 // #
9915 9913 // # You should have received a copy of the GNU Affero General Public License
9916 9914 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9917 9915 // #
9918 9916 // # This program is dual-licensed. If you wish to learn more about the
9919 9917 // # AppEnlight Enterprise Edition, including its added features, Support
9920 9918 // # services, and proprietary license terms, please see
9921 9919 // # https://rhodecode.com/licenses/
9922 9920
9923 9921 angular.module('appenlight.controllers')
9924 9922 .controller('ReportsListController', ReportsListController);
9925 9923
9926 9924 ReportsListController.$inject = ['$scope', '$location', '$cookies',
9927 9925 'stateHolder', 'typeAheadTagHelper', 'reportsResource', 'AeUser'];
9928 9926
9929 9927 function ReportsListController($scope, $location, $cookies, stateHolder,
9930 9928 typeAheadTagHelper, reportsResource, AeUser) {
9931 9929 var vm = this;
9932 9930 vm.applications = AeUser.applications_map;
9933 9931 stateHolder.section = 'reports';
9934 9932 vm.today = function () {
9935 9933 vm.pickerDate = new Date();
9936 9934 };
9937 9935 vm.today();
9938 9936 vm.reportsPage = [];
9939 9937 vm.itemCount = 0;
9940 9938 vm.itemsPerPage = 250;
9941 9939 typeAheadTagHelper.tags = [];
9942 9940 vm.searchParams = {tags: [], page: 1, type: 'report'};
9943 9941 vm.searchParams = parseSearchToTags($location.search());
9944 9942 vm.is_loading = false;
9945 9943 vm.filterTypeAheadOptions = [
9946 9944 {
9947 9945 type: 'error',
9948 9946 text: 'error:',
9949 9947 'description': 'Full-text search in your reports',
9950 9948 example: 'error:text-im-looking-for',
9951 9949 tag: 'Error'
9952 9950 },
9953 9951 {
9954 9952 type: 'view_name',
9955 9953 text: 'view_name:',
9956 9954 'description': 'Query reports occured in specific views',
9957 9955 example: "view_name:module.foo",
9958 9956 tag: 'View Name'
9959 9957 },
9960 9958 {
9961 9959 type: 'resource',
9962 9960 text: 'resource:',
9963 9961 'description': 'Restrict resultset to application',
9964 9962 example: "resource:ID",
9965 9963 tag: 'Application'
9966 9964 },
9967 9965 {
9968 9966 type: 'priority',
9969 9967 text: 'priority:',
9970 9968 'description': 'Show reports with specific priority',
9971 9969 example: 'priority:8',
9972 9970 tag: 'Priority'
9973 9971 },
9974 9972 {
9975 9973 type: 'min_occurences',
9976 9974 text: 'min_occurences:',
9977 9975 'description': 'Show reports from groups with at least X occurences',
9978 9976 example: 'min_occurences:25',
9979 9977 tag: 'Occurences'
9980 9978 },
9981 9979 {
9982 9980 type: 'url_path',
9983 9981 text: 'url_path:',
9984 9982 'description': 'Show reports from specific URL paths',
9985 9983 example: 'url_path:/foo/bar/baz',
9986 9984 tag: 'Url Path'
9987 9985 },
9988 9986 {
9989 9987 type: 'url_domain',
9990 9988 text: 'url_domain:',
9991 9989 'description': 'Show reports from specific domain',
9992 9990 example: 'url_domain:domain.com',
9993 9991 tag: 'Domain'
9994 9992 },
9995 9993 {
9996 9994 type: 'report_status',
9997 9995 text: 'report_status:',
9998 9996 'description': 'Show reports from groups with specific status',
9999 9997 example: 'report_status:never_reviewed',
10000 9998 tag: 'Status'
10001 9999 },
10002 10000 {
10003 10001 type: 'request_id',
10004 10002 text: 'request_id:',
10005 10003 'description': 'Show reports with specific request id',
10006 10004 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
10007 10005 tag: 'Request ID'
10008 10006 },
10009 10007 {
10010 10008 type: 'server_name',
10011 10009 text: 'server_name:',
10012 10010 'description': 'Show reports tagged with this key/value pair',
10013 10011 example: 'server_name:hostname',
10014 10012 tag: 'Tag'
10015 10013 },
10016 10014 {
10017 10015 type: 'http_status',
10018 10016 text: 'http_status:',
10019 10017 'description': 'Show reports with specific HTTP status code',
10020 10018 example: "http_status:",
10021 10019 tag: 'HTTP Status'
10022 10020 },
10023 10021 {
10024 10022 type: 'http_status',
10025 10023 text: 'http_status:500',
10026 10024 'description': 'Show reports with specific HTTP status code',
10027 10025 example: "http_status:500",
10028 10026 tag: 'HTTP Status'
10029 10027 },
10030 10028 {
10031 10029 type: 'http_status',
10032 10030 text: 'http_status:404',
10033 10031 'description': 'Include 404 reports in your search',
10034 10032 example: "http_status:404",
10035 10033 tag: 'HTTP Status'
10036 10034 },
10037 10035 {
10038 10036 type: 'start_date',
10039 10037 text: 'start_date:',
10040 10038 'description': 'Show reports newer than this date (press TAB for dropdown)',
10041 10039 example: 'start_date:2014-08-15T13:00',
10042 10040 tag: 'Start Date'
10043 10041 },
10044 10042 {
10045 10043 type: 'end_date',
10046 10044 text: 'end_date:',
10047 10045 'description': 'Show reports older than this date (press TAB for dropdown)',
10048 10046 example: 'start_date:2014-08-15T23:59',
10049 10047 tag: 'End Date'
10050 10048 }
10051 10049 ];
10052 10050
10053 10051 vm.filterTypeAhead = undefined;
10054 10052 vm.showDatePicker = false;
10055 10053 vm.manualOpen = false;
10056 10054 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
10057 10055 vm.removeSearchTag = function (tag) {
10058 10056 $location.search(tag.type, null);
10059 10057 };
10060 10058 vm.addSearchTag = function (tag) {
10061 10059 $location.search(tag.type, tag.value);
10062 10060 };
10063 10061 vm.notRelativeTime = false;
10064 10062 if ($cookies.notRelativeTime) {
10065 10063 vm.notRelativeTime = JSON.parse($cookies.notRelativeTime);
10066 10064 }
10067 10065
10068 10066 vm.changeRelativeTime = function () {
10069 10067 $cookies.notRelativeTime = JSON.stringify(vm.notRelativeTime);
10070 10068 }
10071 10069
10072 10070 _.each(_.range(1, 11), function (priority) {
10073 10071 vm.filterTypeAheadOptions.push({
10074 10072 type: 'priority',
10075 10073 text: 'priority:' + priority.toString(),
10076 10074 description: 'Show entries with specific priority',
10077 10075 example: 'priority:' + priority,
10078 10076 tag: 'Priority'
10079 10077 });
10080 10078 });
10081 10079 _.each(['never_reviewed', 'reviewed', 'fixed', 'public'], function (status) {
10082 10080 vm.filterTypeAheadOptions.push({
10083 10081 type: 'report_status',
10084 10082 text: 'report_status:' + status,
10085 10083 'description': 'Show only reports with this status',
10086 10084 example: 'report_status:' + status,
10087 10085 tag: 'Status ' + status.toUpperCase()
10088 10086 });
10089 10087 });
10090 10088 _.each(AeUser.applications, function (item) {
10091 10089 vm.filterTypeAheadOptions.push({
10092 10090 type: 'resource',
10093 10091 text: 'resource:' + item.resource_id + ':' + item.resource_name,
10094 10092 example: 'resource:' + item.resource_id,
10095 10093 'tag': item.resource_name,
10096 10094 'description': 'Restrict resultset to this application'
10097 10095 });
10098 10096 });
10099 10097
10100 10098 vm.paginationChange = function(){
10101 10099 $location.search('page', vm.searchParams.page);
10102 10100 };
10103 10101
10104 10102 vm.typeAheadTag = function (event) {
10105 10103 var text = vm.filterTypeAhead;
10106 10104 if (_.isObject(vm.filterTypeAhead)) {
10107 10105 text = vm.filterTypeAhead.text;
10108 10106 }
10109 10107 if (!vm.filterTypeAhead) {
10110 10108 return
10111 10109 }
10112 10110
10113 10111 var parsed = text.split(':');
10114 10112 var tag = {'type': null, 'value': null};
10115 10113 // app tags have : twice
10116 10114 if (parsed.length > 2 && parsed[0] == 'resource') {
10117 10115 tag.type = 'resource';
10118 10116 tag.value = parsed[1];
10119 10117 }
10120 10118 // normal tag:value
10121 10119 else if (parsed.length > 1) {
10122 10120 tag.type = parsed[0];
10123 10121 var tagValue = parsed.slice(1);
10124 10122 if (tagValue) {
10125 10123 tag.value = tagValue.join(':');
10126 10124 }
10127 10125 }
10128 10126 else {
10129 10127 tag.type = 'error';
10130 10128 tag.value = parsed.join(':');
10131 10129 }
10132 10130
10133 10131 // set datepicker hour based on type of field
10134 10132 if ('start_date:' == text) {
10135 10133 vm.showDatePicker = true;
10136 10134 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10137 10135 }
10138 10136 else if ('end_date:' == text) {
10139 10137 vm.showDatePicker = true;
10140 10138 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10141 10139 }
10142 10140
10143 10141 if (event.keyCode != 13 || !tag.type || !tag.value) {
10144 10142 return
10145 10143 }
10146 10144 vm.showDatePicker = false;
10147 10145 // aka we selected one of main options
10148 10146 $location.search(tag.type, tag.value);
10149 10147 // clear typeahead
10150 10148 vm.filterTypeAhead = undefined;
10151 10149 }
10152 10150
10153 10151 vm.pickerDateChanged = function(){
10154 10152 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
10155 10153 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10156 10154 }
10157 10155 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
10158 10156 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10159 10157 }
10160 10158 vm.showDatePicker = false;
10161 10159 };
10162 10160
10163 10161 var reportPresentation = function (report) {
10164 10162 report.presentation = {};
10165 10163 if (report.group.public) {
10166 10164 report.presentation.className = 'public';
10167 10165 report.presentation.tooltip = 'Public';
10168 10166 }
10169 10167 else if (report.group.fixed) {
10170 10168 report.presentation.className = 'fixed';
10171 10169 report.presentation.tooltip = 'Fixed';
10172 10170 }
10173 10171 else if (report.group.read) {
10174 10172 report.presentation.className = 'reviewed';
10175 10173 report.presentation.tooltip = 'Reviewed';
10176 10174 }
10177 10175 else {
10178 10176 report.presentation.className = 'new';
10179 10177 report.presentation.tooltip = 'New';
10180 10178 }
10181 10179 return report;
10182 10180 };
10183 10181
10184 10182 vm.fetchReports = function (searchParams) {
10185 10183 vm.is_loading = true;
10186 10184 reportsResource.query(searchParams, function (data, getResponseHeaders) {
10187 10185 var headers = getResponseHeaders();
10188 10186
10189 10187 vm.is_loading = false;
10190 10188 vm.reportsPage = _.map(data, function (item) {
10191 10189 return reportPresentation(item);
10192 10190 });
10193 10191 vm.itemCount = headers['x-total-count'];
10194 10192 vm.itemsPerPage = headers['x-items-per-page'];
10195 10193 }, function () {
10196 10194 vm.is_loading = false;
10197 10195 });
10198 10196 };
10199 10197
10200 10198 vm.filterId = function (log) {
10201 10199 vm.searchParams.tags.push({
10202 10200 type: "request_id",
10203 10201 value: log.request_id
10204 10202 });
10205 10203 };
10206 10204 // initial load
10207 10205 var params = parseTagsToSearch(vm.searchParams);
10208 10206 vm.fetchReports(params);
10209 10207
10210 10208 $scope.$on('$locationChangeSuccess', function () {
10211 10209
10212 10210 vm.searchParams = parseSearchToTags($location.search());
10213 10211 var params = parseTagsToSearch(vm.searchParams);
10214 10212
10215 10213 if (vm.is_loading === false) {
10216 10214
10217 10215 vm.fetchReports(params);
10218 10216 }
10219 10217
10220 10218 });
10221 10219
10222 10220
10223 10221 }
10224 10222
10225 10223 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10226 10224 // #
10227 10225 // # This program is free software: you can redistribute it and/or modify
10228 10226 // # it under the terms of the GNU Affero General Public License, version 3
10229 10227 // # (only), as published by the Free Software Foundation.
10230 10228 // #
10231 10229 // # This program is distributed in the hope that it will be useful,
10232 10230 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10233 10231 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10234 10232 // # GNU General Public License for more details.
10235 10233 // #
10236 10234 // # You should have received a copy of the GNU Affero General Public License
10237 10235 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10238 10236 // #
10239 10237 // # This program is dual-licensed. If you wish to learn more about the
10240 10238 // # AppEnlight Enterprise Edition, including its added features, Support
10241 10239 // # services, and proprietary license terms, please see
10242 10240 // # https://rhodecode.com/licenses/
10243 10241
10244 10242 angular.module('appenlight.controllers').controller('ReportsViewController', ReportsViewController);
10245 10243 ReportsViewController.$inject = ['$window', '$location', '$state', '$uibModal',
10246 10244 '$cookies', 'reportGroupPropertyResource', 'reportGroupResource',
10247 10245 'logsNoIdResource', 'AeUser'];
10248 10246
10249 10247 function ReportsViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, AeUser) {
10250 10248 var vm = this;
10251 10249 vm.window = $window;
10252 10250 vm.reportHistoryConfig = {
10253 10251 data: {
10254 10252 json: [],
10255 10253 xFormat: '%Y-%m-%dT%H:%M:%S'
10256 10254 },
10257 10255 color: {
10258 10256 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
10259 10257 },
10260 10258 axis: {
10261 10259 x: {
10262 10260 type: 'timeseries',
10263 10261 tick: {
10264 10262 format: '%Y-%m-%d'
10265 10263 }
10266 10264 },
10267 10265 y: {
10268 10266 tick: {
10269 10267 count: 5,
10270 10268 format: d3.format('.2s')
10271 10269 }
10272 10270 }
10273 10271 },
10274 10272 subchart: {
10275 10273 show: true,
10276 10274 size: {
10277 10275 height: 20
10278 10276 }
10279 10277 },
10280 10278 size: {
10281 10279 height: 250
10282 10280 },
10283 10281 zoom: {
10284 10282 rescale: true
10285 10283 },
10286 10284 grid: {
10287 10285 x: {
10288 10286 show: true
10289 10287 },
10290 10288 y: {
10291 10289 show: true
10292 10290 }
10293 10291 },
10294 10292 tooltip: {
10295 10293 format: {
10296 10294 title: function (d) {
10297 10295 return '' + d;
10298 10296 },
10299 10297 value: function (v) {
10300 10298 return v
10301 10299 }
10302 10300 }
10303 10301 }
10304 10302 };
10305 10303 vm.mentionedPeople = [];
10306 10304 vm.reportHistoryData = {};
10307 10305 vm.textTraceback = true;
10308 10306 vm.rawTraceback = '';
10309 10307 vm.traceback = '';
10310 10308 vm.reportType = 'report';
10311 10309 vm.report = null;
10312 10310 vm.showLong = false;
10313 10311 vm.reportLogs = null;
10314 10312 vm.requestStats = null;
10315 10313 vm.comment = null;
10316 10314 vm.is_loading = {
10317 10315 report: true,
10318 10316 logs: true,
10319 10317 history: true
10320 10318 };
10321 10319
10322 10320 vm.searchMentionedPeople = function(term){
10323 10321 //vm.mentionedPeople = [];
10324 10322 var term = term.toLowerCase();
10325 10323 reportGroupPropertyResource.get({
10326 10324 groupId: vm.report.group_id,
10327 10325 key: 'assigned_users'
10328 10326 }, null,
10329 10327 function (data) {
10330 10328 var users = [];
10331 10329 _.each(data.assigned, function(u){
10332 10330 users.push({label: u.user_name});
10333 10331 });
10334 10332 _.each(data.unassigned, function(u){
10335 10333 users.push({label: u.user_name});
10336 10334 });
10337 10335
10338 10336 var result = _.filter(users, function(u){
10339 10337 return u.label.toLowerCase().indexOf(term) !== -1;
10340 10338 });
10341 10339 vm.mentionedPeople = result;
10342 10340 });
10343 10341 };
10344 10342
10345 10343 vm.searchTag = function (tag, value) {
10346 10344
10347 10345 if (vm.report.report_type === 3) {
10348 10346 $location.url($state.href('report.list_slow'));
10349 10347 }
10350 10348 else {
10351 10349 $location.url($state.href('report.list'));
10352 10350 }
10353 10351 $location.search(tag, value);
10354 10352 };
10355 10353
10356 10354 vm.tabs = {
10357 10355 slow_calls:false,
10358 10356 request_details:false,
10359 10357 logs:false,
10360 10358 comments:false,
10361 10359 affected_users:false
10362 10360 };
10363 10361 if ($cookies.selectedReportTab) {
10364 10362 vm.tabs[$cookies.selectedReportTab] = true;
10365 10363 }
10366 10364 else{
10367 10365 $cookies.selectedReportTab = 'request_details';
10368 10366 vm.tabs.request_details = true;
10369 10367 }
10370 10368
10371 10369 vm.fetchLogs = function () {
10372 10370 if (!vm.report.request_id){
10373 10371 return
10374 10372 }
10375 10373 vm.is_loading.logs = true;
10376 10374 logsNoIdResource.query({request_id: vm.report.request_id},
10377 10375 function (data) {
10378 10376 vm.is_loading.logs = false;
10379 10377 vm.reportLogs = data;
10380 10378 }, function () {
10381 10379 vm.is_loading.logs = false;
10382 10380 });
10383 10381 };
10384 10382 vm.addComment = function () {
10385 10383 reportGroupPropertyResource.save({
10386 10384 groupId: vm.report.group_id,
10387 10385 key: 'comments'
10388 10386 }, {body: vm.comment},
10389 10387 function (data) {
10390 10388 vm.report.comments.push(data);
10391 10389 });
10392 10390 vm.comment = '';
10393 10391 };
10394 10392
10395 10393 vm.fetchReport = function () {
10396 10394 vm.is_loading.report = true;
10397 10395 reportGroupResource.get($state.params, function (data) {
10398 10396 vm.is_loading.report = false;
10399 10397 if (data.request) {
10400 10398 try {
10401 10399 var to_sort = _.pairs(data.request);
10402 10400 data.request = _.object(_.sortBy(to_sort, function (i) {
10403 10401 return i[0]
10404 10402 }));
10405 10403 }
10406 10404 catch (err) {
10407 10405 }
10408 10406 }
10409 10407 vm.report = data;
10410 10408 if (vm.report.req_stats) {
10411 10409 vm.requestStats = [];
10412 10410 _.each(_.pairs(vm.report.req_stats['percentages']), function (p) {
10413 10411 vm.requestStats.push({
10414 10412 name: p[0],
10415 10413 value: vm.report.req_stats[p[0]].toFixed(3),
10416 10414 percent: p[1],
10417 10415 calls: vm.report.req_stats[p[0] + '_calls']
10418 10416 })
10419 10417 });
10420 10418 }
10421 10419 vm.traceback = data.traceback;
10422 10420 _.each(vm.traceback, function (frame) {
10423 10421 if (frame.line) {
10424 10422 vm.rawTraceback += 'File ' + frame.file + ' line ' + frame.line + ' in ' + frame.fn + ": \r\n";
10425 10423 }
10426 10424 vm.rawTraceback += ' ' + frame.cline + "\r\n";
10427 10425 });
10428 10426
10429 10427 if (AeUser.id){
10430 10428 vm.fetchHistory();
10431 10429 }
10432 10430
10433 10431 vm.selectedTab($cookies.selectedReportTab);
10434 10432
10435 10433 }, function (response) {
10436 10434
10437 10435 if (response.status == 403) {
10438 10436 var uid = response.headers('x-appenlight-uid');
10439 10437 if (!uid) {
10440 10438 window.location = '/register?came_from=' + encodeURIComponent(window.location);
10441 10439 }
10442 10440 }
10443 10441 vm.is_loading.report = false;
10444 10442 });
10445 10443 };
10446 10444
10447 10445 vm.selectedTab = function(tab_name){
10448 10446 $cookies.selectedReportTab = tab_name;
10449 10447 if (tab_name == 'logs' && vm.reportLogs === null) {
10450 10448 vm.fetchLogs();
10451 10449 }
10452 10450 };
10453 10451
10454 10452 vm.markFixed = function () {
10455 10453 reportGroupResource.update({
10456 10454 groupId: vm.report.group_id
10457 10455 }, {fixed: !vm.report.group.fixed},
10458 10456 function (data) {
10459 10457 vm.report.group.fixed = data.fixed;
10460 10458 });
10461 10459 };
10462 10460
10463 10461 vm.markPublic = function () {
10464 10462 reportGroupResource.update({
10465 10463 groupId: vm.report.group_id
10466 10464 }, {public: !vm.report.group.public},
10467 10465 function (data) {
10468 10466 vm.report.group.public = data.public;
10469 10467 });
10470 10468 };
10471 10469
10472 10470 vm.delete = function () {
10473 10471 reportGroupResource.delete({'groupId': vm.report.group_id},
10474 10472 function (data) {
10475 10473 $state.go('report.list');
10476 10474 })
10477 10475 };
10478 10476
10479 10477 vm.assignUsersModal = function (index) {
10480 10478 vm.opts = {
10481 10479 backdrop: 'static',
10482 10480 templateUrl: 'AssignReportCtrl.html',
10483 10481 controller: 'AssignReportCtrl as ctrl',
10484 10482 resolve: {
10485 10483 report: function () {
10486 10484 return vm.report;
10487 10485 }
10488 10486 }
10489 10487 };
10490 10488 var modalInstance = $uibModal.open(vm.opts);
10491 10489 modalInstance.result.then(function (report) {
10492 10490
10493 10491 }, function () {
10494 10492 console.info('Modal dismissed at: ' + new Date());
10495 10493 });
10496 10494
10497 10495 };
10498 10496
10499 10497 vm.fetchHistory = function () {
10500 10498 reportGroupPropertyResource.query({
10501 10499 groupId: vm.report.group_id,
10502 10500 key: 'history'
10503 10501 }, function (data) {
10504 10502 vm.reportHistoryData = {
10505 10503 json: data,
10506 10504 keys: {
10507 10505 x: 'x',
10508 10506 value: ["reports"]
10509 10507 },
10510 10508 names: {
10511 10509 reports: 'Reports history'
10512 10510 },
10513 10511 type: 'bar'
10514 10512 };
10515 10513 vm.is_loading.history = false;
10516 10514 });
10517 10515 };
10518 10516
10519 10517 vm.nextDetail = function () {
10520 10518 $state.go('report.view_detail', {
10521 10519 groupId: vm.report.group_id,
10522 10520 reportId: vm.report.group.next_report
10523 10521 });
10524 10522 };
10525 10523 vm.previousDetail = function () {
10526 10524 $state.go('report.view_detail', {
10527 10525 groupId: vm.report.group_id,
10528 10526 reportId: vm.report.group.previous_report
10529 10527 });
10530 10528 };
10531 10529
10532 10530 vm.runIntegration = function (integration_name) {
10533 10531
10534 10532 if (integration_name == 'bitbucket') {
10535 10533 var controller = 'BitbucketIntegrationCtrl as ctrl';
10536 10534 var template_url = 'templates/integrations/bitbucket.html';
10537 10535 }
10538 10536 else if (integration_name == 'github') {
10539 10537 var controller = 'GithubIntegrationCtrl as ctrl';
10540 10538 var template_url = 'templates/integrations/github.html';
10541 10539 }
10542 10540 else if (integration_name == 'jira') {
10543 10541 var controller = 'JiraIntegrationCtrl as ctrl';
10544 10542 var template_url = 'templates/integrations/jira.html';
10545 10543 }
10546 10544 else {
10547 10545 return false;
10548 10546 }
10549 10547
10550 10548 vm.opts = {
10551 10549 backdrop: 'static',
10552 10550 templateUrl: template_url,
10553 10551 controller: controller,
10554 10552 resolve: {
10555 10553 integrationName: function () {
10556 10554 return integration_name
10557 10555 },
10558 10556 report: function () {
10559 10557 return vm.report;
10560 10558 }
10561 10559 }
10562 10560 };
10563 10561 var modalInstance = $uibModal.open(vm.opts);
10564 10562 modalInstance.result.then(function (report) {
10565 10563
10566 10564 }, function () {
10567 10565 console.info('Modal dismissed at: ' + new Date());
10568 10566 });
10569 10567
10570 10568 };
10571 10569
10572 10570 // load report
10573 10571 vm.fetchReport();
10574 10572
10575 10573
10576 10574 }
10577 10575
10578 10576 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10579 10577 // #
10580 10578 // # This program is free software: you can redistribute it and/or modify
10581 10579 // # it under the terms of the GNU Affero General Public License, version 3
10582 10580 // # (only), as published by the Free Software Foundation.
10583 10581 // #
10584 10582 // # This program is distributed in the hope that it will be useful,
10585 10583 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10586 10584 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10587 10585 // # GNU General Public License for more details.
10588 10586 // #
10589 10587 // # You should have received a copy of the GNU Affero General Public License
10590 10588 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10591 10589 // #
10592 10590 // # This program is dual-licensed. If you wish to learn more about the
10593 10591 // # AppEnlight Enterprise Edition, including its added features, Support
10594 10592 // # services, and proprietary license terms, please see
10595 10593 // # https://rhodecode.com/licenses/
10596 10594
10597 10595 angular.module('appenlight.controllers')
10598 10596 .controller('AlertChannelsEmailController', AlertChannelsEmailController)
10599 10597
10600 10598 AlertChannelsEmailController.$inject = ['$state','userSelfPropertyResource'];
10601 10599
10602 10600 function AlertChannelsEmailController($state, userSelfPropertyResource) {
10603 10601
10604 10602 var vm = this;
10605 10603 vm.loading = {email: false};
10606 10604 vm.form = {};
10607 10605
10608 10606 vm.createChannel = function () {
10609 10607 vm.loading.email = true;
10610 10608
10611 10609 userSelfPropertyResource.save({key: 'alert_channels'}, vm.form, function () {
10612 10610 //vm.loading.email = false;
10613 10611 //setServerValidation(vm.channelForm);
10614 10612 //vm.form = {};
10615 10613 $state.go('user.alert_channels.list');
10616 10614 }, function (response) {
10617 10615 if (response.status == 422) {
10618 10616 setServerValidation(vm.channelForm, response.data);
10619 10617 }
10620 10618 vm.loading.email = false;
10621 10619 });
10622 10620 }
10623 10621 }
10624 10622
10625 10623 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10626 10624 // #
10627 10625 // # This program is free software: you can redistribute it and/or modify
10628 10626 // # it under the terms of the GNU Affero General Public License, version 3
10629 10627 // # (only), as published by the Free Software Foundation.
10630 10628 // #
10631 10629 // # This program is distributed in the hope that it will be useful,
10632 10630 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10633 10631 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10634 10632 // # GNU General Public License for more details.
10635 10633 // #
10636 10634 // # You should have received a copy of the GNU Affero General Public License
10637 10635 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10638 10636 // #
10639 10637 // # This program is dual-licensed. If you wish to learn more about the
10640 10638 // # AppEnlight Enterprise Edition, including its added features, Support
10641 10639 // # services, and proprietary license terms, please see
10642 10640 // # https://rhodecode.com/licenses/
10643 10641
10644 10642 angular.module('appenlight.controllers').controller('AlertChannelsController', AlertChannelsController);
10645 10643
10646 10644 AlertChannelsController.$inject = ['userSelfPropertyResource', 'applicationsNoIdResource'];
10647 10645
10648 10646 function AlertChannelsController(userSelfPropertyResource, applicationsNoIdResource) {
10649 10647
10650 10648 var vm = this;
10651 10649 vm.loading = {channels: true, applications: true, actions:true};
10652 10650
10653 10651 vm.alertChannels = userSelfPropertyResource.query({key: 'alert_channels'},
10654 10652 function (data) {
10655 10653 vm.loading.channels = false;
10656 10654 });
10657 10655
10658 10656 vm.alertActions = userSelfPropertyResource.query({key: 'alert_actions'},
10659 10657 function (data) {
10660 10658 vm.loading.actions = false;
10661 10659 });
10662 10660
10663 10661 vm.applications = applicationsNoIdResource.query({permission: 'view'},
10664 10662 function (data) {
10665 10663 vm.loading.applications = false;
10666 10664 });
10667 10665
10668 10666 var allOps = {
10669 10667 'eq': 'Equal',
10670 10668 'ne': 'Not equal',
10671 10669 'ge': 'Greater or equal',
10672 10670 'gt': 'Greater than',
10673 10671 'le': 'Lesser or equal',
10674 10672 'lt': 'Lesser than',
10675 10673 'startswith': 'Starts with',
10676 10674 'endswith': 'Ends with',
10677 10675 'contains': 'Contains'
10678 10676 };
10679 10677
10680 10678 var fieldOps = {};
10681 10679 fieldOps['http_status'] = ['eq', 'ne', 'ge', 'le'];
10682 10680 fieldOps['group:priority'] = ['eq', 'ne', 'ge', 'le'];
10683 10681 fieldOps['duration'] = ['ge', 'le'];
10684 10682 fieldOps['url_domain'] = ['eq', 'ne', 'startswith', 'endswith',
10685 10683 'contains'];
10686 10684 fieldOps['url_path'] = ['eq', 'ne', 'startswith', 'endswith',
10687 10685 'contains'];
10688 10686 fieldOps['error'] = ['eq', 'ne', 'startswith', 'endswith',
10689 10687 'contains'];
10690 10688 fieldOps['tags:server_name'] = ['eq', 'ne', 'startswith', 'endswith',
10691 10689 'contains'];
10692 10690 fieldOps['group:occurences'] = ['eq', 'ne', 'ge', 'le'];
10693 10691
10694 10692 var possibleFields = {
10695 10693 '__AND__': 'All met (composite rule)',
10696 10694 '__OR__': 'One met (composite rule)',
10697 10695 '__NOT__': 'Not met (composite rule)',
10698 10696 'http_status': 'HTTP Status',
10699 10697 'duration': 'Request duration',
10700 10698 'group:priority': 'Group -> Priority',
10701 10699 'url_domain': 'Domain',
10702 10700 'url_path': 'URL Path',
10703 10701 'error': 'Error',
10704 10702 'tags:server_name': 'Tag -> Server name',
10705 10703 'group:occurences': 'Group -> Occurences'
10706 10704 };
10707 10705
10708 10706 vm.ruleDefinitions = {
10709 10707 fieldOps: fieldOps,
10710 10708 allOps: allOps,
10711 10709 possibleFields: possibleFields
10712 10710 };
10713 10711
10714 10712 vm.addAction = function (channel) {
10715 10713
10716 10714 userSelfPropertyResource.save({key: 'alert_channels_rules'}, {}, function (data) {
10717 10715 vm.alertActions.push(data);
10718 10716 }, function (response) {
10719 10717 if (response.status == 422) {
10720 10718
10721 10719 }
10722 10720 });
10723 10721 };
10724 10722
10725 10723 vm.updateChannel = function (channel, subKey) {
10726 10724 var params = {
10727 10725 key: 'alert_channels',
10728 10726 channel_name: channel['channel_name'],
10729 10727 channel_value: channel['channel_value']
10730 10728 };
10731 10729 var toUpdate = {};
10732 10730 if (['daily_digest', 'send_alerts'].indexOf(subKey) !== -1) {
10733 10731 toUpdate[subKey] = !channel[subKey];
10734 10732 }
10735 10733 userSelfPropertyResource.update(params, toUpdate, function (data) {
10736 10734 _.extend(channel, data);
10737 10735 });
10738 10736 };
10739 10737
10740 10738 vm.removeChannel = function (channel) {
10741 10739
10742 10740 userSelfPropertyResource.delete({
10743 10741 key: 'alert_channels',
10744 10742 channel_name: channel.channel_name,
10745 10743 channel_value: channel.channel_value
10746 10744 }, function () {
10747 10745 vm.alertChannels = _.filter(vm.alertChannels, function(item){
10748 10746 return item != channel;
10749 10747 });
10750 10748 });
10751 10749
10752 10750 }
10753 10751
10754 10752 }
10755 10753
10756 10754 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10757 10755 // #
10758 10756 // # This program is free software: you can redistribute it and/or modify
10759 10757 // # it under the terms of the GNU Affero General Public License, version 3
10760 10758 // # (only), as published by the Free Software Foundation.
10761 10759 // #
10762 10760 // # This program is distributed in the hope that it will be useful,
10763 10761 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10764 10762 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10765 10763 // # GNU General Public License for more details.
10766 10764 // #
10767 10765 // # You should have received a copy of the GNU Affero General Public License
10768 10766 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10769 10767 // #
10770 10768 // # This program is dual-licensed. If you wish to learn more about the
10771 10769 // # AppEnlight Enterprise Edition, including its added features, Support
10772 10770 // # services, and proprietary license terms, please see
10773 10771 // # https://rhodecode.com/licenses/
10774 10772
10775 10773 angular.module('appenlight.controllers').controller('UserAuthTokensController', UserAuthTokensController);
10776 10774
10777 10775 UserAuthTokensController.$inject = ['$filter', 'userSelfPropertyResource', 'AeConfig'];
10778 10776
10779 10777 function UserAuthTokensController($filter, userSelfPropertyResource, AeConfig) {
10780 10778
10781 10779 var vm = this;
10782 10780 vm.loading = {tokens: true};
10783 10781
10784 10782 vm.expireOptions = AeConfig.timeOptions;
10785 10783
10786 10784 vm.tokens = userSelfPropertyResource.query({key: 'auth_tokens'},
10787 10785 function (data) {
10788 10786 vm.loading.tokens = false;
10789 10787 });
10790 10788
10791 10789 vm.addToken = function () {
10792 10790 vm.loading.tokens = true;
10793 10791 userSelfPropertyResource.save({key: 'auth_tokens'},
10794 10792 vm.form,
10795 10793 function (data) {
10796 10794 vm.loading.tokens = false;
10797 10795 setServerValidation(vm.TokenForm);
10798 10796 vm.form = {};
10799 10797 vm.tokens.push(data);
10800 10798 }, function (response) {
10801 10799 vm.loading.tokens = false;
10802 10800 if (response.status == 422) {
10803 10801 setServerValidation(vm.TokenForm, response.data);
10804 10802 }
10805 10803 })
10806 10804 }
10807 10805
10808 10806 vm.removeToken = function (token) {
10809 10807 userSelfPropertyResource.delete({key: 'auth_tokens',
10810 10808 token:token.token},
10811 10809 function () {
10812 10810 var index = vm.tokens.indexOf(token);
10813 10811 if (index !== -1) {
10814 10812 vm.tokens.splice(index, 1);
10815 10813 }
10816 10814 })
10817 10815 }
10818 10816 }
10819 10817
10820 10818 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10821 10819 // #
10822 10820 // # This program is free software: you can redistribute it and/or modify
10823 10821 // # it under the terms of the GNU Affero General Public License, version 3
10824 10822 // # (only), as published by the Free Software Foundation.
10825 10823 // #
10826 10824 // # This program is distributed in the hope that it will be useful,
10827 10825 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10828 10826 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10829 10827 // # GNU General Public License for more details.
10830 10828 // #
10831 10829 // # You should have received a copy of the GNU Affero General Public License
10832 10830 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10833 10831 // #
10834 10832 // # This program is dual-licensed. If you wish to learn more about the
10835 10833 // # AppEnlight Enterprise Edition, including its added features, Support
10836 10834 // # services, and proprietary license terms, please see
10837 10835 // # https://rhodecode.com/licenses/
10838 10836
10839 10837 angular.module('appenlight.controllers')
10840 10838 .controller('UserIdentitiesController', UserIdentitiesController)
10841 10839
10842 10840 UserIdentitiesController.$inject = ['userSelfPropertyResource'];
10843 10841
10844 10842 function UserIdentitiesController(userSelfPropertyResource) {
10845 10843
10846 10844 var vm = this;
10847 10845 vm.loading = {identities: true};
10848 10846
10849 10847 vm.identities = userSelfPropertyResource.query(
10850 10848 {key: 'external_identities'},
10851 10849 function (data) {
10852 10850 vm.loading.identities = false;
10853 10851
10854 10852 });
10855 10853
10856 10854 vm.removeProvider = function (provider) {
10857 10855
10858 10856 userSelfPropertyResource.delete(
10859 10857 {
10860 10858 key: 'external_identities',
10861 10859 provider: provider.provider,
10862 10860 id: provider.id
10863 10861 },
10864 10862 function (status) {
10865 10863 if (status){
10866 10864 vm.identities = _.filter(vm.identities, function (item) {
10867 10865 return item != provider
10868 10866 });
10869 10867 }
10870 10868
10871 10869 });
10872 10870 }
10873 10871 }
10874 10872
10875 10873 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10876 10874 // #
10877 10875 // # This program is free software: you can redistribute it and/or modify
10878 10876 // # it under the terms of the GNU Affero General Public License, version 3
10879 10877 // # (only), as published by the Free Software Foundation.
10880 10878 // #
10881 10879 // # This program is distributed in the hope that it will be useful,
10882 10880 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10883 10881 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10884 10882 // # GNU General Public License for more details.
10885 10883 // #
10886 10884 // # You should have received a copy of the GNU Affero General Public License
10887 10885 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10888 10886 // #
10889 10887 // # This program is dual-licensed. If you wish to learn more about the
10890 10888 // # AppEnlight Enterprise Edition, including its added features, Support
10891 10889 // # services, and proprietary license terms, please see
10892 10890 // # https://rhodecode.com/licenses/
10893 10891
10894 10892 angular.module('appenlight.controllers')
10895 10893 .controller('UserPasswordController', UserPasswordController)
10896 10894
10897 10895 UserPasswordController.$inject = ['userSelfPropertyResource'];
10898 10896
10899 10897 function UserPasswordController(userSelfPropertyResource) {
10900 10898
10901 10899 var vm = this;
10902 10900 vm.loading = {password: false};
10903 10901 vm.form = {};
10904 10902
10905 10903 vm.updatePassword = function () {
10906 10904 vm.loading.password = true;
10907 10905
10908 10906 userSelfPropertyResource.update({key: 'password'}, vm.form, function () {
10909 10907 vm.loading.password = false;
10910 10908 vm.form = {};
10911 10909 setServerValidation(vm.passwordForm);
10912 10910 }, function (response) {
10913 10911 if (response.status == 422) {
10914 10912
10915 10913 setServerValidation(vm.passwordForm, response.data);
10916 10914
10917 10915 }
10918 10916 vm.loading.password = false;
10919 10917 });
10920 10918 }
10921 10919 }
10922 10920
10923 10921 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10924 10922 // #
10925 10923 // # This program is free software: you can redistribute it and/or modify
10926 10924 // # it under the terms of the GNU Affero General Public License, version 3
10927 10925 // # (only), as published by the Free Software Foundation.
10928 10926 // #
10929 10927 // # This program is distributed in the hope that it will be useful,
10930 10928 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10931 10929 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10932 10930 // # GNU General Public License for more details.
10933 10931 // #
10934 10932 // # You should have received a copy of the GNU Affero General Public License
10935 10933 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10936 10934 // #
10937 10935 // # This program is dual-licensed. If you wish to learn more about the
10938 10936 // # AppEnlight Enterprise Edition, including its added features, Support
10939 10937 // # services, and proprietary license terms, please see
10940 10938 // # https://rhodecode.com/licenses/
10941 10939
10942 10940 angular.module('appenlight.controllers')
10943 10941 .controller('UserProfileController', UserProfileController)
10944 10942
10945 10943 UserProfileController.$inject = ['userSelfResource'];
10946 10944
10947 10945 function UserProfileController(userSelfResource) {
10948 10946
10949 10947 var vm = this;
10950 10948 vm.loading = {profile: true};
10951 10949
10952 10950 vm.user = userSelfResource.get(null, function (data) {
10953 10951 vm.loading.profile = false;
10954 10952
10955 10953 });
10956 10954
10957 10955 vm.updateProfile = function () {
10958 10956 vm.loading.profile = true;
10959 10957
10960 10958
10961 10959 vm.user.$update(null, function () {
10962 10960 vm.loading.profile = false;
10963 10961 setServerValidation(vm.profileForm);
10964 10962 }, function (response) {
10965 10963 if (response.status == 422) {
10966 10964 setServerValidation(vm.profileForm, response.data);
10967 10965 }
10968 10966 vm.loading.profile = false;
10969 10967 });
10970 10968 }
10971 10969 }
10972 10970
10973 10971 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10974 10972 // #
10975 10973 // # This program is free software: you can redistribute it and/or modify
10976 10974 // # it under the terms of the GNU Affero General Public License, version 3
10977 10975 // # (only), as published by the Free Software Foundation.
10978 10976 // #
10979 10977 // # This program is distributed in the hope that it will be useful,
10980 10978 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10981 10979 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10982 10980 // # GNU General Public License for more details.
10983 10981 // #
10984 10982 // # You should have received a copy of the GNU Affero General Public License
10985 10983 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10986 10984 // #
10987 10985 // # This program is dual-licensed. If you wish to learn more about the
10988 10986 // # AppEnlight Enterprise Edition, including its added features, Support
10989 10987 // # services, and proprietary license terms, please see
10990 10988 // # https://rhodecode.com/licenses/
10991 10989
10992 10990 angular.module('appenlight.directives.appVersion', []).
10993 10991 directive('appVersion', ['version', function (version) {
10994 10992 return function (scope, elm, attrs) {
10995 10993 elm.text(version);
10996 10994 };
10997 10995 }])
10998 10996
10999 10997 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11000 10998 // #
11001 10999 // # This program is free software: you can redistribute it and/or modify
11002 11000 // # it under the terms of the GNU Affero General Public License, version 3
11003 11001 // # (only), as published by the Free Software Foundation.
11004 11002 // #
11005 11003 // # This program is distributed in the hope that it will be useful,
11006 11004 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11007 11005 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11008 11006 // # GNU General Public License for more details.
11009 11007 // #
11010 11008 // # You should have received a copy of the GNU Affero General Public License
11011 11009 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11012 11010 // #
11013 11011 // # This program is dual-licensed. If you wish to learn more about the
11014 11012 // # AppEnlight Enterprise Edition, including its added features, Support
11015 11013 // # services, and proprietary license terms, please see
11016 11014 // # https://rhodecode.com/licenses/
11017 11015
11018 11016 // This code is inspired by https://github.com/jettro/c3-angular-sample/tree/master/js
11019 11017 // License is MIT
11020 11018
11021 11019
11022 11020 angular.module('appenlight.directives.c3chart', [])
11023 11021 .controller('ChartCtrl', ['$scope', '$timeout', function ($scope, $timeout) {
11024 11022 $scope.chart = null;
11025 11023 this.showGraph = function () {
11026 11024 var config = angular.copy($scope.config);
11027 11025 var firstLoad = true;
11028 11026 config.bindto = "#" + $scope.domid;
11029 11027 var originalXTickCount = null;
11030 11028 if ($scope.data && $scope.config) {
11031 11029 if (!_.isEmpty($scope.data)) {
11032 11030 _.extend(config.data, angular.copy($scope.data));
11033 11031 }
11034 11032
11035 11033 config.onresized = function () {
11036 11034 if (this.currentWidth < 400){
11037 11035 $scope.chart.internal.config.axis_x_tick_culling_max = 3;
11038 11036 }
11039 11037 else if (this.currentWidth < 600){
11040 11038 $scope.chart.internal.config.axis_x_tick_culling_max = 5;
11041 11039 }
11042 11040 else{
11043 11041 $scope.chart.internal.config.axis_x_tick_culling_max = originalXTickCount;
11044 11042 }
11045 11043 $scope.chart.flush();
11046 11044 };
11047 11045
11048 11046
11049 11047 $scope.chart = c3.generate(config);
11050 11048 originalXTickCount = $scope.chart.internal.config.axis_x_tick_culling_max;
11051 11049 $scope.chart.internal.config.onresized.call($scope.chart.internal);
11052 11050 }
11053 11051
11054 11052 if ($scope.update) {
11055 11053
11056 11054 $scope.$watch('data', function () {
11057 11055 if (!firstLoad) {
11058 11056
11059 11057 $scope.chart.load(angular.copy($scope.data), {unload: true});
11060 11058 if (typeof $scope.data.groups != 'undefined') {
11061 11059
11062 11060 $scope.chart.groups($scope.data.groups);
11063 11061 }
11064 11062 if (typeof $scope.data.names != 'undefined') {
11065 11063
11066 11064 $scope.chart.data.names($scope.data.names);
11067 11065 }
11068 11066 $scope.chart.flush();
11069 11067 }
11070 11068 }, true);
11071 11069 }
11072 11070 $scope.$watch('config.regions', function (newValue, oldValue) {
11073 11071 if (newValue === oldValue) {
11074 11072 return
11075 11073 }
11076 11074 if (typeof $scope.config.regions != 'undefined') {
11077 11075
11078 11076 $scope.chart.regions($scope.config.regions);
11079 11077 }
11080 11078 });
11081 11079
11082 11080 firstLoad = false;
11083 11081 $scope.$watch('resizetrigger', function (newValue, oldValue) {
11084 11082 if (newValue !== oldValue) {
11085 11083 $timeout(function () {
11086 11084 $scope.chart.resize();
11087 11085 $scope.chart.internal.config.onresized.call($scope.chart.internal);
11088 11086 });
11089 11087 }
11090 11088 });
11091 11089 };
11092 11090 }])
11093 11091 .directive('c3chart', function ($timeout) {
11094 11092 var chartLinker = function (scope, element, attrs, chartCtrl) {
11095 11093 // Trick to wait for all rendering of the DOM to be finished.
11096 11094 // then we can tell c3js to "connect" to our dom node
11097 11095 $timeout(function () {
11098 11096 chartCtrl.showGraph()
11099 11097 });
11100 11098
11101 11099 scope.$on("$destroy", function () {
11102 11100 if (scope.chart !== null) {
11103 11101 scope.chart = scope.chart.destroy();
11104 11102 delete element;
11105 11103 delete scope.chart;
11106 11104
11107 11105 }
11108 11106 }
11109 11107 );
11110 11108 };
11111 11109 return {
11112 11110 "restrict": "E",
11113 11111 "controller": "ChartCtrl",
11114 11112 "scope": {
11115 11113 "domid": "@domid",
11116 11114 "config": "=config",
11117 11115 "data": "=data",
11118 11116 "resizetrigger": "=resizetrigger",
11119 11117 "update": "=update"
11120 11118 },
11121 11119 "template": "<div id='{{domid}}' class='chart'></div>",
11122 11120 "replace": true,
11123 11121 "link": chartLinker
11124 11122 }
11125 11123 });
11126 11124
11127 11125 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11128 11126 // #
11129 11127 // # This program is free software: you can redistribute it and/or modify
11130 11128 // # it under the terms of the GNU Affero General Public License, version 3
11131 11129 // # (only), as published by the Free Software Foundation.
11132 11130 // #
11133 11131 // # This program is distributed in the hope that it will be useful,
11134 11132 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11135 11133 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11136 11134 // # GNU General Public License for more details.
11137 11135 // #
11138 11136 // # You should have received a copy of the GNU Affero General Public License
11139 11137 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11140 11138 // #
11141 11139 // # This program is dual-licensed. If you wish to learn more about the
11142 11140 // # AppEnlight Enterprise Edition, including its added features, Support
11143 11141 // # services, and proprietary license terms, please see
11144 11142 // # https://rhodecode.com/licenses/
11145 11143
11146 11144 angular.module('appenlight.directives.confirmValidate', []).
11147 11145 directive('confirmValidate', [function () {
11148 11146 return {
11149 11147 restrict: 'A',
11150 11148 require: 'ngModel',
11151 11149 link: function ($scope, elem, attrs, ngModel) {
11152 11150 ngModel.$validators.confirm = function (modelValue, viewValue) {
11153 11151 var value = modelValue || viewValue;
11154 11152
11155 11153 if (value.toLowerCase() == 'confirm') {
11156 11154 return true;
11157 11155 }
11158 11156 return false;
11159 11157 }
11160 11158 }
11161 11159 }
11162 11160 }])
11163 11161
11164 11162 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11165 11163 // #
11166 11164 // # This program is free software: you can redistribute it and/or modify
11167 11165 // # it under the terms of the GNU Affero General Public License, version 3
11168 11166 // # (only), as published by the Free Software Foundation.
11169 11167 // #
11170 11168 // # This program is distributed in the hope that it will be useful,
11171 11169 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11172 11170 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11173 11171 // # GNU General Public License for more details.
11174 11172 // #
11175 11173 // # You should have received a copy of the GNU Affero General Public License
11176 11174 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11177 11175 // #
11178 11176 // # This program is dual-licensed. If you wish to learn more about the
11179 11177 // # AppEnlight Enterprise Edition, including its added features, Support
11180 11178 // # services, and proprietary license terms, please see
11181 11179 // # https://rhodecode.com/licenses/
11182 11180
11183 11181 angular.module('appenlight.directives.focus', []).directive('focus', function () {
11184 11182 return function (scope, element, attrs) {
11185 11183 attrs.$observe('focus', function (newValue) {
11186 11184 newValue === 'true' && element[0].focus();
11187 11185 });
11188 11186 }
11189 11187 });
11190 11188
11191 11189 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11192 11190 // #
11193 11191 // # This program is free software: you can redistribute it and/or modify
11194 11192 // # it under the terms of the GNU Affero General Public License, version 3
11195 11193 // # (only), as published by the Free Software Foundation.
11196 11194 // #
11197 11195 // # This program is distributed in the hope that it will be useful,
11198 11196 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11199 11197 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11200 11198 // # GNU General Public License for more details.
11201 11199 // #
11202 11200 // # You should have received a copy of the GNU Affero General Public License
11203 11201 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11204 11202 // #
11205 11203 // # This program is dual-licensed. If you wish to learn more about the
11206 11204 // # AppEnlight Enterprise Edition, including its added features, Support
11207 11205 // # services, and proprietary license terms, please see
11208 11206 // # https://rhodecode.com/licenses/
11209 11207
11210 11208 angular.module('appenlight.directives.formErrors', []).
11211 11209 directive('formErrors', function() {
11212 11210 return {
11213 11211 scope: {
11214 11212 errors: '='
11215 11213 },
11216 11214 template: '<div ng-repeat="errorMessage in errors"><div class="form-error alert alert-error">{{ errorMessage }}</div></div>'
11217 11215 }
11218 11216 })
11219 11217
11220 11218 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11221 11219 // #
11222 11220 // # This program is free software: you can redistribute it and/or modify
11223 11221 // # it under the terms of the GNU Affero General Public License, version 3
11224 11222 // # (only), as published by the Free Software Foundation.
11225 11223 // #
11226 11224 // # This program is distributed in the hope that it will be useful,
11227 11225 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11228 11226 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11229 11227 // # GNU General Public License for more details.
11230 11228 // #
11231 11229 // # You should have received a copy of the GNU Affero General Public License
11232 11230 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11233 11231 // #
11234 11232 // # This program is dual-licensed. If you wish to learn more about the
11235 11233 // # AppEnlight Enterprise Edition, including its added features, Support
11236 11234 // # services, and proprietary license terms, please see
11237 11235 // # https://rhodecode.com/licenses/
11238 11236
11239 11237 angular.module('appenlight.directives.humanFormat', []).
11240 11238 directive('humanFormat', [function () {
11241 11239 /* json inspector */
11242 11240 return {
11243 11241 restrict: "A",
11244 11242 scope: {
11245 11243 vars: '=',
11246 11244 },
11247 11245 "link": function (scope, element, attrs) {
11248 11246 scope.$watch('vars', function (newValue, oldValue, scope) {
11249 11247 element.empty();
11250 11248 element.append(JsonHuman.format(scope.vars));
11251 11249 });
11252 11250
11253 11251 }
11254 11252 }
11255 11253 }])
11256 11254
11257 11255 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11258 11256 // #
11259 11257 // # This program is free software: you can redistribute it and/or modify
11260 11258 // # it under the terms of the GNU Affero General Public License, version 3
11261 11259 // # (only), as published by the Free Software Foundation.
11262 11260 // #
11263 11261 // # This program is distributed in the hope that it will be useful,
11264 11262 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11265 11263 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11266 11264 // # GNU General Public License for more details.
11267 11265 // #
11268 11266 // # You should have received a copy of the GNU Affero General Public License
11269 11267 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11270 11268 // #
11271 11269 // # This program is dual-licensed. If you wish to learn more about the
11272 11270 // # AppEnlight Enterprise Edition, including its added features, Support
11273 11271 // # services, and proprietary license terms, please see
11274 11272 // # https://rhodecode.com/licenses/
11275 11273
11276 11274 angular.module('appenlight.directives.isoToRelativeTime', []).
11277 11275 directive('isoToRelativeTime', function () {
11278 11276 return {
11279 11277 "restrict": "E",
11280 11278 scope: {
11281 11279 time: '@'
11282 11280 },
11283 11281 "link": function (scope, element) {
11284 11282 scope.$watch('time', function(newValue, oldValue, scope){
11285 11283 element.empty();
11286 11284 element.html(moment.utc(newValue).fromNow());
11287 11285 });
11288 11286 }
11289 11287 }
11290 11288 })
11291 11289
11292 11290 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11293 11291 // #
11294 11292 // # This program is free software: you can redistribute it and/or modify
11295 11293 // # it under the terms of the GNU Affero General Public License, version 3
11296 11294 // # (only), as published by the Free Software Foundation.
11297 11295 // #
11298 11296 // # This program is distributed in the hope that it will be useful,
11299 11297 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11300 11298 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11301 11299 // # GNU General Public License for more details.
11302 11300 // #
11303 11301 // # You should have received a copy of the GNU Affero General Public License
11304 11302 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11305 11303 // #
11306 11304 // # This program is dual-licensed. If you wish to learn more about the
11307 11305 // # AppEnlight Enterprise Edition, including its added features, Support
11308 11306 // # services, and proprietary license terms, please see
11309 11307 // # https://rhodecode.com/licenses/
11310 11308
11311 11309 angular.module('appenlight.controllers')
11312 11310 .controller('ApplicationPermissionsController', ApplicationPermissionsController);
11313 11311
11314 11312 ApplicationPermissionsController.$inject = ['sectionViewResource',
11315 11313 'applicationsPropertyResource', 'groupsResource']
11316 11314
11317 11315
11318 11316 function ApplicationPermissionsController(sectionViewResource, applicationsPropertyResource , groupsResource) {
11319 11317 var vm = this;
11320 11318 vm.form = {
11321 11319 autocompleteUser: '',
11322 11320 selectedGroup: null,
11323 11321 selectedUserPermissions: {},
11324 11322 selectedGroupPermissions: {}
11325 11323 }
11326 11324 vm.possibleGroups = groupsResource.query(null, function(){
11327 11325 if (vm.possibleGroups.length > 0){
11328 11326 vm.form.selectedGroup = vm.possibleGroups[0].id;
11329 11327 }
11330 11328 });
11331 11329
11332 11330 vm.possibleUsers = [];
11333 11331 _.each(vm.resource.possible_permissions, function (perm) {
11334 11332 vm.form.selectedUserPermissions[perm] = false;
11335 11333 vm.form.selectedGroupPermissions[perm] = false;
11336 11334 });
11337 11335
11338 11336 /**
11339 11337 * Converts the permission list into {user, permission_list objects}
11340 11338 * for rendering in templates
11341 11339 * **/
11342 11340 var tmpObj = {
11343 11341 user: {},
11344 11342 group: {}
11345 11343 };
11346 11344 _.each(vm.currentPermissions, function (perm) {
11347 11345
11348 11346 if (perm.type == 'user') {
11349 11347 if (typeof tmpObj[perm.type][perm.user_name] === 'undefined') {
11350 11348 tmpObj[perm.type][perm.user_name] = {
11351 11349 self: perm,
11352 11350 permissions: []
11353 11351 }
11354 11352 }
11355 11353 if (tmpObj[perm.type][perm.user_name].permissions.indexOf(perm.perm_name) === -1) {
11356 11354 tmpObj[perm.type][perm.user_name].permissions.push(perm.perm_name);
11357 11355 }
11358 11356 }
11359 11357 else {
11360 11358 if (typeof tmpObj[perm.type][perm.group_name] === 'undefined') {
11361 11359 tmpObj[perm.type][perm.group_name] = {
11362 11360 self: perm,
11363 11361 permissions: []
11364 11362 }
11365 11363 }
11366 11364 if (tmpObj[perm.type][perm.group_name].permissions.indexOf(perm.perm_name) === -1) {
11367 11365 tmpObj[perm.type][perm.group_name].permissions.push(perm.perm_name);
11368 11366 }
11369 11367
11370 11368 }
11371 11369 });
11372 11370 vm.currentPermissions = {
11373 11371 user: _.values(tmpObj.user),
11374 11372 group: _.values(tmpObj.group),
11375 11373 };
11376 11374
11377 11375
11378 11376
11379 11377 vm.searchUsers = function (searchPhrase) {
11380 11378
11381 11379 vm.searchingUsers = true;
11382 11380 return sectionViewResource.query({
11383 11381 section: 'users_section',
11384 11382 view: 'search_users',
11385 11383 'user_name': searchPhrase
11386 11384 }).$promise.then(function (data) {
11387 11385 vm.searchingUsers = false;
11388 11386 return _.map(data, function (item) {
11389 11387 return item;
11390 11388 });
11391 11389 });
11392 11390 };
11393 11391
11394 11392
11395 11393 vm.setGroupPermission = function(){
11396 11394 var POSTObj = {
11397 11395 'group_id': vm.form.selectedGroup,
11398 11396 'permissions': []
11399 11397 };
11400 11398 for (var key in vm.form.selectedGroupPermissions) {
11401 11399 if (vm.form.selectedGroupPermissions[key]) {
11402 11400 POSTObj.permissions.push(key)
11403 11401 }
11404 11402 }
11405 11403 applicationsPropertyResource.save({
11406 11404 key: 'group_permissions',
11407 11405 resourceId: vm.resource.resource_id
11408 11406 }, POSTObj,
11409 11407 function (data) {
11410 11408 var found_row = false;
11411 11409 _.each(vm.currentPermissions.group, function (perm) {
11412 11410 if (perm.self.group_id == data.group.id) {
11413 11411 perm['permissions'] = data['permissions'];
11414 11412 found_row = true;
11415 11413 }
11416 11414 });
11417 11415 if (!found_row) {
11418 11416 data.self = data.group;
11419 11417 // normalize data format
11420 11418 data.self.group_id = data.self.id;
11421 11419 vm.currentPermissions.group.push(data);
11422 11420 }
11423 11421 });
11424 11422
11425 11423 }
11426 11424
11427 11425
11428 11426 vm.setUserPermission = function () {
11429 11427
11430 11428 var POSTObj = {
11431 11429 'user_name': vm.form.autocompleteUser,
11432 11430 'permissions': []
11433 11431 };
11434 11432 for (var key in vm.form.selectedUserPermissions) {
11435 11433 if (vm.form.selectedUserPermissions[key]) {
11436 11434 POSTObj.permissions.push(key)
11437 11435 }
11438 11436 }
11439 11437 applicationsPropertyResource.save({
11440 11438 key: 'user_permissions',
11441 11439 resourceId: vm.resource.resource_id
11442 11440 }, POSTObj,
11443 11441 function (data) {
11444 11442 var found_row = false;
11445 11443 _.each(vm.currentPermissions.user, function (perm) {
11446 11444 if (perm.self.user_name == data['user_name']) {
11447 11445 perm['permissions'] = data['permissions'];
11448 11446 found_row = true;
11449 11447 }
11450 11448 });
11451 11449 if (!found_row) {
11452 11450 data.self = data;
11453 11451 vm.currentPermissions.user.push(data);
11454 11452 }
11455 11453 });
11456 11454 }
11457 11455
11458 11456 vm.removeUserPermission = function (perm_name, curr_perm) {
11459 11457
11460 11458
11461 11459 var POSTObj = {
11462 11460 key: 'user_permissions',
11463 11461 user_name: curr_perm.self.user_name,
11464 11462 permissions: [perm_name],
11465 11463 resourceId: vm.resource.resource_id
11466 11464 }
11467 11465 applicationsPropertyResource.delete(POSTObj, function (data) {
11468 11466 _.each(vm.currentPermissions.user, function (perm) {
11469 11467 if (perm.self.user_name == data['user_name']) {
11470 11468 perm['permissions'] = data['permissions']
11471 11469 }
11472 11470 });
11473 11471 });
11474 11472 }
11475 11473
11476 11474 vm.removeGroupPermission = function (perm_name, curr_perm) {
11477 11475
11478 11476 var POSTObj = {
11479 11477 key: 'group_permissions',
11480 11478 group_id: curr_perm.self.group_id,
11481 11479 permissions: [perm_name],
11482 11480 resourceId: vm.resource.resource_id
11483 11481 }
11484 11482 applicationsPropertyResource.delete(POSTObj, function (data) {
11485 11483 _.each(vm.currentPermissions.group, function (perm) {
11486 11484 if (perm.self.group_id == data.group.id) {
11487 11485 perm['permissions'] = data['permissions']
11488 11486 }
11489 11487 });
11490 11488 });
11491 11489 }
11492 11490 }
11493 11491
11494 11492 angular.module('appenlight.directives.permissionsForm',[])
11495 11493 .directive('permissionsForm', function () {
11496 11494 return {
11497 11495 "restrict": "E",
11498 11496 "controller": "ApplicationPermissionsController",
11499 11497 controllerAs: 'permissions',
11500 11498 bindToController: true,
11501 11499 scope: {
11502 11500 currentPermissions: '=',
11503 11501 possiblePermissions: '=',
11504 11502 resource: '='
11505 11503 },
11506 11504 templateUrl: 'templates/directives/permissions.html'
11507 11505 }
11508 11506 })
11509 11507
11510 11508 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11511 11509 // #
11512 11510 // # This program is free software: you can redistribute it and/or modify
11513 11511 // # it under the terms of the GNU Affero General Public License, version 3
11514 11512 // # (only), as published by the Free Software Foundation.
11515 11513 // #
11516 11514 // # This program is distributed in the hope that it will be useful,
11517 11515 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11518 11516 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11519 11517 // # GNU General Public License for more details.
11520 11518 // #
11521 11519 // # You should have received a copy of the GNU Affero General Public License
11522 11520 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11523 11521 // #
11524 11522 // # This program is dual-licensed. If you wish to learn more about the
11525 11523 // # AppEnlight Enterprise Edition, including its added features, Support
11526 11524 // # services, and proprietary license terms, please see
11527 11525 // # https://rhodecode.com/licenses/
11528 11526
11529 11527 angular.module('appenlight.directives.pluginConfig', []).directive('pluginConfig', function () {
11530 11528 return {
11531 11529 scope: {},
11532 11530 bindToController: {
11533 11531 resource: '=',
11534 11532 section: '='
11535 11533 },
11536 11534 restrict: 'E',
11537 11535 templateUrl: 'templates/directives/plugin_config.html',
11538 11536 controller: PluginConfig,
11539 11537 controllerAs: 'plugin_ctrlr'
11540 11538 };
11541 11539
11542 11540 PluginConfig.$inject = ['stateHolder'];
11543 11541
11544 11542 function PluginConfig(stateHolder) {
11545 11543 var vm = this;
11546 11544 vm.plugins = {};
11547 11545 vm.inclusions = stateHolder.plugins.inclusions[vm.section];
11548 11546 }
11549 11547 });
11550 11548
11551 11549 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11552 11550 // #
11553 11551 // # This program is free software: you can redistribute it and/or modify
11554 11552 // # it under the terms of the GNU Affero General Public License, version 3
11555 11553 // # (only), as published by the Free Software Foundation.
11556 11554 // #
11557 11555 // # This program is distributed in the hope that it will be useful,
11558 11556 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11559 11557 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11560 11558 // # GNU General Public License for more details.
11561 11559 // #
11562 11560 // # You should have received a copy of the GNU Affero General Public License
11563 11561 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11564 11562 // #
11565 11563 // # This program is dual-licensed. If you wish to learn more about the
11566 11564 // # AppEnlight Enterprise Edition, including its added features, Support
11567 11565 // # services, and proprietary license terms, please see
11568 11566 // # https://rhodecode.com/licenses/
11569 11567
11570 11568 angular.module('appenlight.directives.postProcessAction', []).directive('postProcessAction', ['applicationsPropertyResource', function (applicationsPropertyResource) {
11571 11569 return {
11572 11570 scope: {},
11573 11571 bindToController:{
11574 11572 action: '=',
11575 11573 resource: '='
11576 11574 },
11577 11575 controller:postProcessActionController,
11578 11576 controllerAs:'ctrl',
11579 11577 restrict: 'E',
11580 11578 templateUrl: 'templates/directives/postprocess_action.html'
11581 11579 };
11582 11580 function postProcessActionController(){
11583 11581 var vm = this;
11584 11582
11585 11583 var allOps = {
11586 11584 'eq': 'Equal',
11587 11585 'ne': 'Not equal',
11588 11586 'ge': 'Greater or equal',
11589 11587 'gt': 'Greater than',
11590 11588 'le': 'Lesser or equal',
11591 11589 'lt': 'Lesser than',
11592 11590 'startswith': 'Starts with',
11593 11591 'endswith': 'Ends with',
11594 11592 'contains': 'Contains'
11595 11593 };
11596 11594
11597 11595 var fieldOps = {};
11598 11596 fieldOps['http_status'] = ['eq', 'ne', 'ge', 'le'];
11599 11597 fieldOps['group:priority'] = ['eq', 'ne', 'ge', 'le'];
11600 11598 fieldOps['duration'] = ['ge', 'le'];
11601 11599 fieldOps['url_domain'] = ['eq', 'ne', 'startswith', 'endswith',
11602 11600 'contains'];
11603 11601 fieldOps['url_path'] = ['eq', 'ne', 'startswith', 'endswith',
11604 11602 'contains'];
11605 11603 fieldOps['error'] = ['eq', 'ne', 'startswith', 'endswith',
11606 11604 'contains'];
11607 11605 fieldOps['tags:server_name'] = ['eq', 'ne', 'startswith', 'endswith',
11608 11606 'contains'];
11609 11607 fieldOps['group:occurences'] = ['eq', 'ne', 'ge', 'le'];
11610 11608
11611 11609 var possibleFields = {
11612 11610 '__AND__': 'All met (composite rule)',
11613 11611 '__OR__': 'One met (composite rule)',
11614 11612 '__NOT__': 'Not met (composite rule)',
11615 11613 'http_status': 'HTTP Status',
11616 11614 'duration': 'Request duration',
11617 11615 'group:priority': 'Group -> Priority',
11618 11616 'url_domain': 'Domain',
11619 11617 'url_path': 'URL Path',
11620 11618 'error': 'Error',
11621 11619 'tags:server_name': 'Tag -> Server name',
11622 11620 'group:occurences': 'Group -> Occurences'
11623 11621 };
11624 11622
11625 11623 vm.ruleDefinitions = {
11626 11624 fieldOps: fieldOps,
11627 11625 allOps: allOps,
11628 11626 possibleFields: possibleFields
11629 11627 };
11630 11628
11631 11629 vm.possibleActions = [
11632 11630 ['1', 'Priority +1'],
11633 11631 ['-1', 'Priority -1']
11634 11632 ];
11635 11633
11636 11634 vm.deleteAction = function (action) {
11637 11635 applicationsPropertyResource.remove({
11638 11636 pkey: vm.action.pkey,
11639 11637 resourceId: vm.resource.resource_id,
11640 11638 key: 'postprocessing_rules'
11641 11639 }, function () {
11642 11640 vm.resource.postprocessing_rules.splice(
11643 11641 vm.resource.postprocessing_rules.indexOf(action), 1);
11644 11642 });
11645 11643 };
11646 11644
11647 11645
11648 11646 vm.saveAction = function () {
11649 11647 var params = {
11650 11648 'pkey': vm.action.pkey,
11651 11649 'resourceId': vm.resource.resource_id,
11652 11650 key: 'postprocessing_rules'
11653 11651 };
11654 11652 applicationsPropertyResource.update(params, vm.action,
11655 11653 function (data) {
11656 11654 vm.action.dirty = false;
11657 11655 vm.errors = [];
11658 11656 }, function (response) {
11659 11657 if (response.status == 422) {
11660 11658 var errorDict = angular.fromJson(response.data);
11661 11659 vm.errors = _.values(errorDict);
11662 11660 }
11663 11661 });
11664 11662 };
11665 11663
11666 11664 vm.setDirty = function() {
11667 11665 vm.action.dirty = true;
11668 11666
11669 11667 };
11670 11668 }
11671 11669
11672 11670 }]);
11673 11671
11674 11672 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11675 11673 // #
11676 11674 // # This program is free software: you can redistribute it and/or modify
11677 11675 // # it under the terms of the GNU Affero General Public License, version 3
11678 11676 // # (only), as published by the Free Software Foundation.
11679 11677 // #
11680 11678 // # This program is distributed in the hope that it will be useful,
11681 11679 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11682 11680 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11683 11681 // # GNU General Public License for more details.
11684 11682 // #
11685 11683 // # You should have received a copy of the GNU Affero General Public License
11686 11684 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11687 11685 // #
11688 11686 // # This program is dual-licensed. If you wish to learn more about the
11689 11687 // # AppEnlight Enterprise Edition, including its added features, Support
11690 11688 // # services, and proprietary license terms, please see
11691 11689 // # https://rhodecode.com/licenses/
11692 11690
11693 11691 angular.module('appenlight.directives.recursive', []).directive("recursive", function ($compile) {
11694 11692 return {
11695 11693 restrict: "EACM",
11696 11694 priority: 100000,
11697 11695 compile: function (tElement, tAttr) {
11698 11696 var contents = tElement.contents().remove();
11699 11697 var compiledContents;
11700 11698 return function (scope, iElement, iAttr) {
11701 11699 if (!compiledContents) {
11702 11700 compiledContents = $compile(contents);
11703 11701 }
11704 11702 iElement.append(compiledContents(scope, function (clone) {
11705 11703 return clone;
11706 11704 }));
11707 11705 };
11708 11706 }
11709 11707 };
11710 11708 });
11711 11709
11712 11710 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11713 11711 // #
11714 11712 // # This program is free software: you can redistribute it and/or modify
11715 11713 // # it under the terms of the GNU Affero General Public License, version 3
11716 11714 // # (only), as published by the Free Software Foundation.
11717 11715 // #
11718 11716 // # This program is distributed in the hope that it will be useful,
11719 11717 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11720 11718 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11721 11719 // # GNU General Public License for more details.
11722 11720 // #
11723 11721 // # You should have received a copy of the GNU Affero General Public License
11724 11722 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11725 11723 // #
11726 11724 // # This program is dual-licensed. If you wish to learn more about the
11727 11725 // # AppEnlight Enterprise Edition, including its added features, Support
11728 11726 // # services, and proprietary license terms, please see
11729 11727 // # https://rhodecode.com/licenses/
11730 11728
11731 11729 angular.module('appenlight.directives.reportAlertAction', []).directive('reportAlertAction', ['userSelfPropertyResource', function (userSelfPropertyResource) {
11732 11730 return {
11733 11731 scope: {},
11734 11732 bindToController:{
11735 11733 action: '=',
11736 11734 applications: '=',
11737 11735 possibleChannels: '=',
11738 11736 actions: '=',
11739 11737 ruleDefinitions: '='
11740 11738 },
11741 11739 controller:reportAlertActionController,
11742 11740 controllerAs:'ctrl',
11743 11741 restrict: 'E',
11744 11742 templateUrl: 'templates/directives/report_alert_action.html'
11745 11743 };
11746 11744 function reportAlertActionController(){
11747 11745 var vm = this;
11748 11746 vm.deleteAction = function (actions, action) {
11749 11747 var get = {
11750 11748 key: 'alert_channels_rules',
11751 11749 pkey: action.pkey
11752 11750 };
11753 11751 userSelfPropertyResource.remove(get, function (data) {
11754 11752 actions.splice(actions.indexOf(action), 1);
11755 11753 });
11756 11754
11757 11755 };
11758 11756
11759 11757 vm.bindChannel = function(){
11760 11758 var post = {
11761 11759 channel_pkey: vm.channelToBind.pkey,
11762 11760 action_pkey: vm.action.pkey
11763 11761 };
11764 11762
11765 11763 userSelfPropertyResource.save({key: 'alert_channels_actions_binds'}, post,
11766 11764 function (data) {
11767 11765 vm.action.channels = [];
11768 11766 vm.action.channels = data.channels;
11769 11767 }, function (response) {
11770 11768 if (response.status == 422) {
11771 11769
11772 11770 }
11773 11771 });
11774 11772 };
11775 11773
11776 11774 vm.unBindChannel = function(channel){
11777 11775 userSelfPropertyResource.delete({
11778 11776 key: 'alert_channels_actions_binds',
11779 11777 channel_pkey: channel.pkey,
11780 11778 action_pkey: vm.action.pkey
11781 11779 },
11782 11780 function (data) {
11783 11781 vm.action.channels = [];
11784 11782 vm.action.channels = data.channels;
11785 11783 }, function (response) {
11786 11784 if (response.status == 422) {
11787 11785
11788 11786 }
11789 11787 });
11790 11788 };
11791 11789
11792 11790 vm.saveAction = function () {
11793 11791 var params = {
11794 11792 key: 'alert_channels_rules',
11795 11793 pkey: vm.action.pkey
11796 11794 };
11797 11795 userSelfPropertyResource.update(params, vm.action,
11798 11796 function (data) {
11799 11797 vm.action.dirty = false;
11800 11798 vm.errors = [];
11801 11799 }, function (response) {
11802 11800 if (response.status == 422) {
11803 11801 var errorDict = angular.fromJson(response.data);
11804 11802 vm.errors = _.values(errorDict);
11805 11803 }
11806 11804 });
11807 11805 };
11808 11806
11809 11807 vm.possibleNotifications = [
11810 11808 ['always', 'Always'],
11811 11809 ['only_first', 'Only New'],
11812 11810 ];
11813 11811
11814 11812 vm.possibleChannels = _.filter(vm.possibleChannels, function(c){
11815 11813 return c.supports_report_alerting }
11816 11814 );
11817 11815
11818 11816 if (vm.possibleChannels.length > 0){
11819 11817 vm.channelToBind = vm.possibleChannels[0];
11820 11818 }
11821 11819
11822 11820 vm.setDirty = function() {
11823 11821 vm.action.dirty = true;
11824 11822
11825 11823 };
11826 11824 }
11827 11825
11828 11826 }]);
11829 11827
11830 11828 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11831 11829 // #
11832 11830 // # This program is free software: you can redistribute it and/or modify
11833 11831 // # it under the terms of the GNU Affero General Public License, version 3
11834 11832 // # (only), as published by the Free Software Foundation.
11835 11833 // #
11836 11834 // # This program is distributed in the hope that it will be useful,
11837 11835 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11838 11836 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11839 11837 // # GNU General Public License for more details.
11840 11838 // #
11841 11839 // # You should have received a copy of the GNU Affero General Public License
11842 11840 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11843 11841 // #
11844 11842 // # This program is dual-licensed. If you wish to learn more about the
11845 11843 // # AppEnlight Enterprise Edition, including its added features, Support
11846 11844 // # services, and proprietary license terms, please see
11847 11845 // # https://rhodecode.com/licenses/
11848 11846
11849 11847 angular.module('appenlight.directives.ruleReadOnly', []).directive('ruleReadOnly', ['userSelfPropertyResource', function (userSelfPropertyResource) {
11850 11848 return {
11851 11849 scope: {},
11852 11850 bindToController:{
11853 11851 parentObj: '=',
11854 11852 rule: '=',
11855 11853 ruleDefinitions: '=',
11856 11854 parentRule: "=",
11857 11855 config: "="
11858 11856 },
11859 11857 restrict: 'E',
11860 11858 templateUrl: 'templates/directives/rule_read_only.html',
11861 11859 controller:RuleController,
11862 11860 controllerAs:'rule_ctrlr'
11863 11861 }
11864 11862 function RuleController(){
11865 11863 var vm = this;
11866 11864 vm.readOnlyPossibleFields = {};
11867 11865 var labelPairs = _.pairs(vm.parentObj.config);
11868 11866 _.each(labelPairs, function (entry) {
11869 11867 vm.readOnlyPossibleFields[entry[0]] = entry[1].human_label;
11870 11868 });
11871 11869 }
11872 11870 }]);
11873 11871
11874 11872 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11875 11873 // #
11876 11874 // # This program is free software: you can redistribute it and/or modify
11877 11875 // # it under the terms of the GNU Affero General Public License, version 3
11878 11876 // # (only), as published by the Free Software Foundation.
11879 11877 // #
11880 11878 // # This program is distributed in the hope that it will be useful,
11881 11879 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11882 11880 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11883 11881 // # GNU General Public License for more details.
11884 11882 // #
11885 11883 // # You should have received a copy of the GNU Affero General Public License
11886 11884 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11887 11885 // #
11888 11886 // # This program is dual-licensed. If you wish to learn more about the
11889 11887 // # AppEnlight Enterprise Edition, including its added features, Support
11890 11888 // # services, and proprietary license terms, please see
11891 11889 // # https://rhodecode.com/licenses/
11892 11890
11893 11891 angular.module('appenlight.directives.rule', []).directive('rule', function () {
11894 11892 return {
11895 11893 scope: {},
11896 11894 bindToController:{
11897 11895 parentObj: '=',
11898 11896 rule: '=',
11899 11897 ruleDefinitions: '=',
11900 11898 parentRule: "=",
11901 11899 config: "="
11902 11900 },
11903 11901 restrict: 'E',
11904 11902 templateUrl: 'templates/directives/rule.html',
11905 11903 controller:RuleController,
11906 11904 controllerAs:'rule_ctrlr'
11907 11905 };
11908 11906 function RuleController(){
11909 11907 var vm = this;
11910 11908
11911 11909 vm.rule.dirty = false;
11912 11910 vm.oldField = vm.rule.field;
11913 11911
11914 11912 vm.add = function () {
11915 11913 vm.rule.rules.push(
11916 11914 {op: "eq", field: 'http_status', value: ""}
11917 11915 );
11918 11916 vm.setDirty();
11919 11917 };
11920 11918
11921 11919 vm.setDirty = function() {
11922 11920 vm.rule.dirty = true;
11923 11921
11924 11922 if (vm.parentObj){
11925 11923
11926 11924
11927 11925 vm.parentObj.dirty = true;
11928 11926 }
11929 11927 };
11930 11928
11931 11929 vm.fieldChange = function () {
11932 11930 var compound_types = ['__AND__', '__OR__', '__NOT__'];
11933 11931 var new_is_compound = compound_types.indexOf(vm.rule.field) !== -1;
11934 11932 var old_was_compound = compound_types.indexOf(vm.oldField) !== -1;
11935 11933
11936 11934 if (!new_is_compound) {
11937 11935 vm.rule.op = vm.ruleDefinitions.fieldOps[vm.rule.field][0];
11938 11936 }
11939 11937 if ((new_is_compound && !old_was_compound)) {
11940 11938
11941 11939 delete vm.rule.value;
11942 11940 vm.rule.rules = [];
11943 11941 vm.add();
11944 11942 }
11945 11943 else if (!new_is_compound && old_was_compound) {
11946 11944
11947 11945 delete vm.rule.rules;
11948 11946 vm.rule.value = '';
11949 11947 }
11950 11948 vm.oldField = vm.rule.field;
11951 11949 vm.setDirty();
11952 11950 };
11953 11951
11954 11952 vm.deleteRule = function (parent, rule) {
11955 11953 parent.rules.splice(parent.rules.indexOf(rule), 1);
11956 11954 vm.setDirty();
11957 11955 }
11958 11956 }
11959 11957 });
11960 11958
11961 11959 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11962 11960 // #
11963 11961 // # This program is free software: you can redistribute it and/or modify
11964 11962 // # it under the terms of the GNU Affero General Public License, version 3
11965 11963 // # (only), as published by the Free Software Foundation.
11966 11964 // #
11967 11965 // # This program is distributed in the hope that it will be useful,
11968 11966 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11969 11967 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11970 11968 // # GNU General Public License for more details.
11971 11969 // #
11972 11970 // # You should have received a copy of the GNU Affero General Public License
11973 11971 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11974 11972 // #
11975 11973 // # This program is dual-licensed. If you wish to learn more about the
11976 11974 // # AppEnlight Enterprise Edition, including its added features, Support
11977 11975 // # services, and proprietary license terms, please see
11978 11976 // # https://rhodecode.com/licenses/
11979 11977
11980 11978 angular.module('appenlight.directives.smallReportGroupList',[]).
11981 11979 directive('smallReportGroupList', [function () {
11982 11980 return {
11983 11981 restrict: "A",
11984 11982 scope: {
11985 11983 groups: '=',
11986 11984 applications: '='
11987 11985 },
11988 11986 templateUrl: 'templates/reports/small_report_group_list.html'
11989 11987 }
11990 11988 }])
11991 11989
11992 11990 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11993 11991 // #
11994 11992 // # This program is free software: you can redistribute it and/or modify
11995 11993 // # it under the terms of the GNU Affero General Public License, version 3
11996 11994 // # (only), as published by the Free Software Foundation.
11997 11995 // #
11998 11996 // # This program is distributed in the hope that it will be useful,
11999 11997 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12000 11998 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12001 11999 // # GNU General Public License for more details.
12002 12000 // #
12003 12001 // # You should have received a copy of the GNU Affero General Public License
12004 12002 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12005 12003 // #
12006 12004 // # This program is dual-licensed. If you wish to learn more about the
12007 12005 // # AppEnlight Enterprise Edition, including its added features, Support
12008 12006 // # services, and proprietary license terms, please see
12009 12007 // # https://rhodecode.com/licenses/
12010 12008
12011 12009 angular.module('appenlight.directives.smallReportList', []).
12012 12010 directive('smallReportList', [function () {
12013 12011 return {
12014 12012 restrict: "A",
12015 12013 scope: {
12016 12014 reports: '=',
12017 12015 applications: '='
12018 12016 },
12019 12017 templateUrl: 'templates/reports/small_report_list.html'
12020 12018 }
12021 12019 }])
12022 12020
12023 12021 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12024 12022 // #
12025 12023 // # This program is free software: you can redistribute it and/or modify
12026 12024 // # it under the terms of the GNU Affero General Public License, version 3
12027 12025 // # (only), as published by the Free Software Foundation.
12028 12026 // #
12029 12027 // # This program is distributed in the hope that it will be useful,
12030 12028 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12031 12029 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12032 12030 // # GNU General Public License for more details.
12033 12031 // #
12034 12032 // # You should have received a copy of the GNU Affero General Public License
12035 12033 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12036 12034 // #
12037 12035 // # This program is dual-licensed. If you wish to learn more about the
12038 12036 // # AppEnlight Enterprise Edition, including its added features, Support
12039 12037 // # services, and proprietary license terms, please see
12040 12038 // # https://rhodecode.com/licenses/
12041 12039
12042 12040 'use strict';
12043 12041
12044 12042 /* Filters */
12045 12043
12046 12044 angular.module('appenlight.filters').
12047 12045 filter('interpolate', ['version', function (version) {
12048 12046 return function (text) {
12049 12047 return String(text).replace(/\%VERSION\%/mg, version);
12050 12048 }
12051 12049 }])
12052 12050 .filter('isoToRelativeTime', function () {
12053 12051 return function (input) {
12054 12052 return moment.utc(input).fromNow();
12055 12053 }
12056 12054 })
12057 12055
12058 12056 .filter('round', function () {
12059 12057 return function (input, precision) {
12060 12058 return input.toFixed(precision)
12061 12059 }
12062 12060 })
12063 12061
12064 12062 .filter('numberToThousands', function () {
12065 12063 return function (input) {
12066 12064 if (input > 1000000) {
12067 12065 var i = input / 1000000;
12068 12066 return i.toFixed(1).toString() + 'M'
12069 12067 }
12070 12068 else if (input > 1000) {
12071 12069 var i = input / 1000;
12072 12070 return i.toFixed(1).toString() + 'k'
12073 12071 }
12074 12072 else {
12075 12073 return input;
12076 12074 }
12077 12075 }
12078 12076 })
12079 12077 .filter('getOrdered', function () {
12080 12078 return function (input, filterOn) {
12081 12079 var ordered = {};
12082 12080 for (var key in input) {
12083 12081 ordered[input[key][filterOn]] = input[key];
12084 12082 }
12085 12083 return ordered;
12086 12084 };
12087 12085 })
12088 12086 .filter('objectToOrderedArray', function(){
12089 12087 return function(items, field, reverse) {
12090 12088 var filtered = [];
12091 12089 angular.forEach(items, function(item) {
12092 12090 filtered.push(item);
12093 12091 });
12094 12092 filtered.sort(function (a, b) {
12095 12093 return (a[field] > b[field] ? 1 : -1);
12096 12094 });
12097 12095 if(reverse) filtered.reverse();
12098 12096 return filtered;
12099 12097 };
12100 12098 })
12101 12099 .filter('apdexValue', function () {
12102 12100 return function (input) {
12103 12101 if (input.apdex >= 95) {
12104 12102 return 'satisfactory';
12105 12103 } else if (input.apdex >= 80) {
12106 12104 return 'tolerating';
12107 12105 } else {
12108 12106 return 'frustrating';
12109 12107 }
12110 12108 };
12111 12109 })
12112 12110 .filter('truncate', function(){
12113 12111 return function (text, length, end) {
12114 12112 if (isNaN(length))
12115 12113 length = 10;
12116 12114
12117 12115 if (end === undefined)
12118 12116 end = "...";
12119 12117
12120 12118 if (text.length <= length || text.length - end.length <= length) {
12121 12119 return text;
12122 12120 }
12123 12121 else {
12124 12122 return String(text).substring(0, length-end.length) + end;
12125 12123 }
12126 12124
12127 12125 };
12128 12126 })
12129 12127
12130 12128 ;
12131 12129
12132 12130 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12133 12131 // #
12134 12132 // # This program is free software: you can redistribute it and/or modify
12135 12133 // # it under the terms of the GNU Affero General Public License, version 3
12136 12134 // # (only), as published by the Free Software Foundation.
12137 12135 // #
12138 12136 // # This program is distributed in the hope that it will be useful,
12139 12137 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12140 12138 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12141 12139 // # GNU General Public License for more details.
12142 12140 // #
12143 12141 // # You should have received a copy of the GNU Affero General Public License
12144 12142 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12145 12143 // #
12146 12144 // # This program is dual-licensed. If you wish to learn more about the
12147 12145 // # AppEnlight Enterprise Edition, including its added features, Support
12148 12146 // # services, and proprietary license terms, please see
12149 12147 // # https://rhodecode.com/licenses/
12150 12148
12151 12149 angular.module('appenlight').config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
12152 12150
12153 12151 $urlRouterProvider.otherwise('/ui');
12154 12152
12155 12153 $stateProvider.state('logs', {
12156 12154 url: '/ui/logs?resource',
12157 12155 templateUrl: 'templates/logs.html',
12158 12156 controller: 'LogsController as logs'
12159 12157 });
12160 12158
12161 12159 $stateProvider.state('front_dashboard', {
12162 12160 url: '/ui',
12163 12161 templateUrl: 'templates/dashboard.html',
12164 12162 controller: 'IndexDashboardController as index'
12165 12163 });
12166 12164
12167 12165 $stateProvider.state('report', {
12168 12166 abstract: true,
12169 12167 url: '/ui/report',
12170 12168 templateUrl: 'templates/reports/parent_view.html'
12171 12169 });
12172 12170
12173 12171 $stateProvider.state('report.list', {
12174 12172 url: '?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
12175 12173 templateUrl: 'templates/reports/list.html',
12176 12174 controller: 'ReportsListController as reports_list'
12177 12175 });
12178 12176
12179 12177 $stateProvider.state('report.list_slow', {
12180 12178 url: '/list_slow?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
12181 12179 templateUrl: 'templates/reports/list_slow.html',
12182 12180 controller: 'ReportsListSlowController as reports_list'
12183 12181 });
12184 12182
12185 12183 $stateProvider.state('report.view_detail', {
12186 12184 url: '/:groupId/:reportId',
12187 12185 templateUrl: 'templates/reports/view.html',
12188 12186 controller: 'ReportsViewController as report'
12189 12187 });
12190 12188 $stateProvider.state('report.view_group', {
12191 12189 url: '/:groupId',
12192 12190 templateUrl: 'templates/reports/view.html',
12193 12191 controller: 'ReportsViewController as report'
12194 12192 });
12195 12193 $stateProvider.state('events', {
12196 12194 url: '/ui/events',
12197 12195 templateUrl: 'templates/events.html',
12198 12196 controller: 'EventsController as events'
12199 12197 });
12200 12198 $stateProvider.state('admin', {
12201 12199 url: '/ui/admin',
12202 12200 templateUrl: 'templates/admin/parent_view.html'
12203 12201 });
12204 12202 $stateProvider.state('admin.user', {
12205 12203 abstract: true,
12206 12204 url: '/user',
12207 12205 templateUrl: 'templates/admin/users/parent_view.html'
12208 12206 });
12209 12207 $stateProvider.state('admin.user.list', {
12210 12208 url: '/list',
12211 12209 templateUrl: 'templates/admin/users/users_list.html',
12212 12210 controller: 'AdminUsersController as users'
12213 12211 });
12214 12212 $stateProvider.state('admin.user.create', {
12215 12213 url: '/create',
12216 12214 templateUrl: 'templates/admin/users/users_create.html',
12217 12215 controller: 'AdminUsersCreateController as user'
12218 12216 });
12219 12217 $stateProvider.state('admin.user.update', {
12220 12218 url: '/{userId}/update',
12221 12219 templateUrl: 'templates/admin/users/users_create.html',
12222 12220 controller: 'AdminUsersCreateController as user'
12223 12221 });
12224 12222
12225 12223
12226 12224 $stateProvider.state('admin.group', {
12227 12225 abstract: true,
12228 12226 url: '/group',
12229 12227 templateUrl: 'templates/admin/groups/parent_view.html'
12230 12228 });
12231 12229 $stateProvider.state('admin.group.list', {
12232 12230 url: '/list',
12233 12231 templateUrl: 'templates/admin/groups/groups_list.html',
12234 12232 controller: 'AdminGroupsController as groups'
12235 12233 });
12236 12234 $stateProvider.state('admin.group.create', {
12237 12235 url: '/create',
12238 12236 templateUrl: 'templates/admin/groups/groups_create.html',
12239 12237 controller: 'AdminGroupsCreateController as group'
12240 12238 });
12241 12239 $stateProvider.state('admin.group.update', {
12242 12240 url: '/{groupId}/update',
12243 12241 templateUrl: 'templates/admin/groups/groups_create.html',
12244 12242 controller: 'AdminGroupsCreateController as group'
12245 12243 });
12246 12244
12247 12245 $stateProvider.state('admin.application', {
12248 12246 abstract: true,
12249 12247 url: '/application',
12250 12248 templateUrl: 'templates/admin/users/parent_view.html'
12251 12249 });
12252 12250
12253 12251 $stateProvider.state('admin.application.list', {
12254 12252 url: '/list',
12255 12253 templateUrl: 'templates/admin/applications/applications_list.html',
12256 12254 controller: 'AdminApplicationsListController as applications'
12257 12255 });
12258 12256
12259 12257 $stateProvider.state('admin.partitions', {
12260 12258 url: '/partitions',
12261 12259 templateUrl: 'templates/admin/partitions.html',
12262 12260 controller: 'AdminPartitionsController as partitions'
12263 12261 });
12264 12262 $stateProvider.state('admin.system', {
12265 12263 url: '/system',
12266 12264 templateUrl: 'templates/admin/system.html',
12267 12265 controller: 'AdminSystemController as system'
12268 12266 });
12269 12267
12270 12268 $stateProvider.state('admin.configs', {
12271 12269 abstract: true,
12272 12270 url: '/configs',
12273 12271 templateUrl: 'templates/admin/configs/parent_view.html'
12274 12272 });
12275 12273
12276 12274 $stateProvider.state('admin.configs.list', {
12277 12275 url: '',
12278 12276 templateUrl: 'templates/admin/configs/edit.html',
12279 12277 controller: 'ConfigsListController as configs'
12280 12278 });
12281 12279
12282 12280 $stateProvider.state('user', {
12283 12281 url: '/ui/user',
12284 12282 templateUrl: 'templates/user/parent_view.html'
12285 12283 });
12286 12284
12287 12285 $stateProvider.state('user.profile', {
12288 12286 abstract: true,
12289 12287 url: '/profile',
12290 12288 templateUrl: 'templates/user/profile.html'
12291 12289 });
12292 12290 $stateProvider.state('user.profile.edit', {
12293 12291 url: '',
12294 12292 templateUrl: 'templates/user/profile_edit.html',
12295 12293 controller: 'UserProfileController as profile'
12296 12294 });
12297 12295
12298 12296
12299 12297 $stateProvider.state('user.profile.password', {
12300 12298 url: '/password',
12301 12299 templateUrl: 'templates/user/profile_password.html',
12302 12300 controller: 'UserPasswordController as password'
12303 12301 });
12304 12302
12305 12303 $stateProvider.state('user.profile.identities', {
12306 12304 url: '/identities',
12307 12305 templateUrl: 'templates/user/profile_identities.html',
12308 12306 controller: 'UserIdentitiesController as identities'
12309 12307 });
12310 12308
12311 12309 $stateProvider.state('user.profile.auth_tokens', {
12312 12310 url: '/auth_tokens',
12313 12311 templateUrl: 'templates/user/auth_tokens.html',
12314 12312 controller: 'UserAuthTokensController as auth_tokens'
12315 12313 });
12316 12314
12317 12315 $stateProvider.state('user.alert_channels', {
12318 12316 abstract: true,
12319 12317 url: '/alert_channels',
12320 12318 templateUrl: 'templates/user/alert_channels.html'
12321 12319 });
12322 12320
12323 12321 $stateProvider.state('user.alert_channels.list', {
12324 12322 url: '',
12325 12323 templateUrl: 'templates/user/alert_channels_list.html',
12326 12324 controller: 'AlertChannelsController as channels'
12327 12325 });
12328 12326
12329 12327 $stateProvider.state('user.alert_channels.email', {
12330 12328 url: '/email',
12331 12329 templateUrl: 'templates/user/alert_channels_email.html',
12332 12330 controller: 'AlertChannelsEmailController as email'
12333 12331 });
12334 12332
12335 12333 $stateProvider.state('applications', {
12336 12334 abstract: true,
12337 12335 url: '/ui/applications',
12338 12336 templateUrl: 'templates/applications/parent_view.html'
12339 12337 });
12340 12338
12341 12339 $stateProvider.state('applications.list', {
12342 12340 url: '',
12343 12341 templateUrl: 'templates/applications/list.html',
12344 12342 controller: 'ApplicationsListController as applications'
12345 12343 });
12346 12344 $stateProvider.state('applications.update', {
12347 12345 url: '/{resourceId}/update',
12348 12346 templateUrl: 'templates/applications/applications_update.html',
12349 12347 controller: 'ApplicationsUpdateController as application'
12350 12348 });
12351 12349
12352 12350 $stateProvider.state('applications.integrations', {
12353 12351 url: '/{resourceId}/integrations',
12354 12352 templateUrl: 'templates/applications/integrations.html',
12355 12353 controller: 'IntegrationsListController as integrations',
12356 12354 data: {
12357 12355 resource: null
12358 12356 }
12359 12357 });
12360 12358
12361 12359 $stateProvider.state('applications.purge_logs', {
12362 12360 url: '/purge_logs',
12363 12361 templateUrl: 'templates/applications/applications_purge_logs.html',
12364 12362 controller: 'ApplicationsPurgeLogsController as applications_purge'
12365 12363 });
12366 12364
12367 12365 $stateProvider.state('applications.integrations.edit', {
12368 12366 url: '/{integration}',
12369 12367 templateUrl: function ($stateParams) {
12370 12368 return 'templates/applications/integrations/' + $stateParams.integration + '.html'
12371 12369 },
12372 12370 controller: 'IntegrationController as integration'
12373 12371 });
12374 12372
12375 12373 $stateProvider.state('tests', {
12376 12374 url: '/ui/tests',
12377 12375 templateUrl: 'templates/user/alert_channels_test.html',
12378 12376 controller: 'AlertChannelsTestController as test_action'
12379 12377 });
12380 12378
12381 12379 }]);
12382 12380
12383 12381 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12384 12382 // #
12385 12383 // # This program is free software: you can redistribute it and/or modify
12386 12384 // # it under the terms of the GNU Affero General Public License, version 3
12387 12385 // # (only), as published by the Free Software Foundation.
12388 12386 // #
12389 12387 // # This program is distributed in the hope that it will be useful,
12390 12388 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12391 12389 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12392 12390 // # GNU General Public License for more details.
12393 12391 // #
12394 12392 // # You should have received a copy of the GNU Affero General Public License
12395 12393 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12396 12394 // #
12397 12395 // # This program is dual-licensed. If you wish to learn more about the
12398 12396 // # AppEnlight Enterprise Edition, including its added features, Support
12399 12397 // # services, and proprietary license terms, please see
12400 12398 // # https://rhodecode.com/licenses/
12401 12399
12402 12400 angular.module('appenlight.services.chartResultParser',[]).factory('chartResultParser', function () {
12403 12401
12404 12402 function transform(data) {
12405 12403
12406 12404 /** transform result to a format that is more friendly
12407 12405 * to c3js we don't want to export this way as default
12408 12406 * as TSV stuff is less readable overall
12409 12407 *
12410 12408 * we want format of:
12411 12409 * {x: [unix_timestamps],
12412 12410 * key1: [val,list],
12413 12411 * key2: [val,list]...}
12414 12412 *
12415 12413 * OR
12416 12414 *
12417 12415 * handle special case where we want pie/donut for
12418 12416 * aggregation with a single metric, we need to transform
12419 12417 * the data from:
12420 12418 * [y:list, categories:[cat1,cat2,...]]
12421 12419 * to
12422 12420 * [cat1: val, cat2:val...] format to render properly
12423 12421 */
12424 12422 var chartC3Config = {
12425 12423 data: {
12426 12424 json: [],
12427 12425 type: 'bar'
12428 12426 },
12429 12427 point: {
12430 12428 show: false
12431 12429 },
12432 12430 tooltip: {
12433 12431 format: {
12434 12432 title: function (d) {
12435 12433 if (d) {
12436 12434 return '' + d;
12437 12435 }
12438 12436 return '';
12439 12437 },
12440 12438 value: function (value, ratio, id, index) {
12441 12439 return d3.round(value, 3);
12442 12440 }
12443 12441 }
12444 12442 },
12445 12443 regions: data.rect_regions
12446 12444 };
12447 12445 var labels = _.keys(data.system_labels);
12448 12446 var specialCases = ['pie', 'donut', 'gauge'];
12449 12447 if (labels.length === 1 && _.contains(specialCases,
12450 12448 data.chart_type.type)) {
12451 12449 var transformedData = {};
12452 12450
12453 12451 _.each(data.series, function (item) {
12454 12452 transformedData[item['key']] = item[labels[0]];
12455 12453 });
12456 12454 }
12457 12455 else {
12458 12456 var transformedData = {'key': []};
12459 12457
12460 12458 _.each(labels, function (label) {
12461 12459 transformedData[label] = [];
12462 12460 });
12463 12461
12464 12462 _.each(data.series, function (item) {
12465 12463 for (key in item) {
12466 12464 transformedData[key].push(item[key])
12467 12465 }
12468 12466 });
12469 12467 }
12470 12468
12471 12469
12472 12470 if (data.parent_agg.type === 'time_histogram') {
12473 12471 chartC3Config.axis = {
12474 12472 x: {
12475 12473 type: 'timeseries',
12476 12474 tick: {
12477 12475 format: '%Y-%m-%d'
12478 12476 }
12479 12477 }
12480 12478 };
12481 12479 chartC3Config.data.xFormat = '%Y-%m-%dT%H:%M:%S';
12482 12480 }
12483 12481 else if (data.categories) {
12484 12482 chartC3Config.axis = {
12485 12483 x: {
12486 12484 type: 'category',
12487 12485 categories: data.categories
12488 12486 }
12489 12487 };
12490 12488 // we don't want to show key as label if it is being
12491 12489 // used as a category instead
12492 12490 if (data.categories) {
12493 12491 delete transformedData['key'];
12494 12492 }
12495 12493 }
12496 12494
12497 12495 var human_labels = {};
12498 12496 _.each(_.pairs(data.system_labels), function(entry){
12499 12497 human_labels[entry[0]] = entry[1].human_label;
12500 12498 });
12501 12499 var chartC3Data = {
12502 12500 json: transformedData,
12503 12501 names: human_labels,
12504 12502 groups: data.groups,
12505 12503 type: data.chart_type.type
12506 12504 };
12507 12505
12508 12506 if (data.parent_agg.type == 'time_histogram') {
12509 12507 chartC3Data.x = 'key';
12510 12508 }
12511 12509 return {chartC3Data: chartC3Data, chartC3Config: chartC3Config}
12512 12510 }
12513 12511
12514 12512 return transform
12515 12513 });
12516 12514
12517 12515 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12518 12516 // #
12519 12517 // # This program is free software: you can redistribute it and/or modify
12520 12518 // # it under the terms of the GNU Affero General Public License, version 3
12521 12519 // # (only), as published by the Free Software Foundation.
12522 12520 // #
12523 12521 // # This program is distributed in the hope that it will be useful,
12524 12522 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12525 12523 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12526 12524 // # GNU General Public License for more details.
12527 12525 // #
12528 12526 // # You should have received a copy of the GNU Affero General Public License
12529 12527 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12530 12528 // #
12531 12529 // # This program is dual-licensed. If you wish to learn more about the
12532 12530 // # AppEnlight Enterprise Edition, including its added features, Support
12533 12531 // # services, and proprietary license terms, please see
12534 12532 // # https://rhodecode.com/licenses/
12535 12533
12536 12534 var DEFAULT_ACTIONS = {
12537 12535 'get': {method: 'GET', timeout: 60000 * 2},
12538 12536 'save': {method: 'POST', timeout: 60000 * 2},
12539 12537 'query': {method: 'GET', isArray: true, timeout: 60000 * 2},
12540 12538 'remove': {method: 'DELETE', timeout: 30000},
12541 12539 'update': {method: 'PATCH', timeout: 30000},
12542 12540 'delete': {method: 'DELETE', timeout: 30000}
12543 12541 };
12544 12542
12545 12543 angular.module('appenlight.services.resources', []).factory('usersResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12546 12544 return $resource(AeConfig.urls.users, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12547 12545 }]);
12548 12546
12549 12547 angular.module('appenlight.services.resources').factory('userResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12550 12548 return $resource(AeConfig.urls.user, null, angular.copy(DEFAULT_ACTIONS));
12551 12549 }]);
12552 12550
12553 12551 angular.module('appenlight.services.resources').factory('usersPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12554 12552 return $resource(AeConfig.urls.usersProperty, null, angular.copy(DEFAULT_ACTIONS));
12555 12553 }]);
12556 12554
12557 12555 angular.module('appenlight.services.resources').factory('userSelfResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12558 12556 return $resource(AeConfig.urls.userSelf, null, angular.copy(DEFAULT_ACTIONS));
12559 12557 }]);
12560 12558
12561 12559 angular.module('appenlight.services.resources').factory('userSelfPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12562 12560 return $resource(AeConfig.urls.userSelfProperty, null, angular.copy(DEFAULT_ACTIONS));
12563 12561 }]);
12564 12562
12565 12563 angular.module('appenlight.services.resources').factory('logsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12566 12564 return $resource(AeConfig.urls.logsNoId, null, angular.copy(DEFAULT_ACTIONS));
12567 12565 }]);
12568 12566
12569 12567 angular.module('appenlight.services.resources').factory('reportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12570 12568 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12571 12569 }]);
12572 12570
12573 12571 angular.module('appenlight.services.resources').factory('slowReportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12574 12572 return $resource(AeConfig.urls.slowReports, null, angular.copy(DEFAULT_ACTIONS));
12575 12573 }]);
12576 12574
12577 12575 angular.module('appenlight.services.resources').factory('reportGroupResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12578 12576 return $resource(AeConfig.urls.reportGroup, null, angular.copy(DEFAULT_ACTIONS));
12579 12577 }]);
12580 12578
12581 12579 angular.module('appenlight.services.resources').factory('reportGroupPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12582 12580 return $resource(AeConfig.urls.reportGroupProperty, null, angular.copy(DEFAULT_ACTIONS));
12583 12581 }]);
12584 12582
12585 12583
12586 12584 angular.module('appenlight.services.resources').factory('reportResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12587 12585 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12588 12586 }]);
12589 12587
12590 12588 angular.module('appenlight.services.resources').factory('analyticsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12591 12589 return $resource(AeConfig.urls.analyticsAction, null, angular.copy(DEFAULT_ACTIONS));
12592 12590 }]);
12593 12591
12594 12592 angular.module('appenlight.services.resources').factory('reportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12595 12593 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12596 12594 }]);
12597 12595
12598 12596 angular.module('appenlight.services.resources').factory('integrationResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12599 12597 return $resource(AeConfig.urls.integrationAction, null, angular.copy(DEFAULT_ACTIONS));
12600 12598 }]);
12601 12599
12602 12600
12603 12601 angular.module('appenlight.services.resources').factory('adminResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12604 12602 return $resource(AeConfig.urls.adminAction, null, angular.copy(DEFAULT_ACTIONS));
12605 12603 }]);
12606 12604
12607 12605 angular.module('appenlight.services.resources').factory('applicationsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12608 12606 return $resource(AeConfig.urls.applicationsNoId, null, angular.copy(DEFAULT_ACTIONS));
12609 12607 }]);
12610 12608
12611 12609 angular.module('appenlight.services.resources').factory('applicationsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12612 12610 return $resource(AeConfig.urls.applicationsProperty, null, angular.copy(DEFAULT_ACTIONS));
12613 12611 }]);
12614 12612 angular.module('appenlight.services.resources').factory('applicationsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12615 12613 return $resource(AeConfig.urls.applications, null, angular.copy(DEFAULT_ACTIONS));
12616 12614 }]);
12617 12615
12618 12616 angular.module('appenlight.services.resources').factory('sectionViewResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12619 12617 return $resource(AeConfig.urls.sectionView, null, angular.copy(DEFAULT_ACTIONS));
12620 12618 }]);
12621 12619
12622 12620 angular.module('appenlight.services.resources').factory('groupsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12623 12621 return $resource(AeConfig.urls.groupsNoId, null, angular.copy(DEFAULT_ACTIONS));
12624 12622 }]);
12625 12623
12626 12624
12627 12625 angular.module('appenlight.services.resources').factory('groupsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12628 12626 return $resource(AeConfig.urls.groups, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12629 12627 }]);
12630 12628
12631 12629 angular.module('appenlight.services.resources').factory('groupsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12632 12630 return $resource(AeConfig.urls.groupsProperty, null, angular.copy(DEFAULT_ACTIONS));
12633 12631 }]);
12634 12632
12635 12633
12636 12634 angular.module('appenlight.services.resources').factory('eventsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12637 12635 return $resource(AeConfig.urls.eventsNoId, null, angular.copy(DEFAULT_ACTIONS));
12638 12636 }]);
12639 12637
12640 12638
12641 12639 angular.module('appenlight.services.resources').factory('eventsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12642 12640 return $resource(AeConfig.urls.events, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12643 12641 }]);
12644 12642
12645 12643 angular.module('appenlight.services.resources').factory('eventsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12646 12644 return $resource(AeConfig.urls.eventsProperty, null, angular.copy(DEFAULT_ACTIONS));
12647 12645 }]);
12648 12646
12649 12647 angular.module('appenlight.services.resources').factory('configsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12650 12648 return $resource(AeConfig.urls.configsNoId, null, angular.copy(DEFAULT_ACTIONS));
12651 12649 }]);
12652 12650
12653 12651 angular.module('appenlight.services.resources').factory('configsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12654 12652 return $resource(AeConfig.urls.configs, {
12655 12653 key: '@key',
12656 12654 section: '@section'
12657 12655 }, angular.copy(DEFAULT_ACTIONS));
12658 12656 }]);
12659 12657
12660 12658 angular.module('appenlight.services.resources').factory('pluginConfigsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12661 12659 return $resource(AeConfig.urls.pluginConfigs, {
12662 12660 id: '@id',
12663 12661 plugin_name: '@plugin_name'
12664 12662 }, angular.copy(DEFAULT_ACTIONS));
12665 12663 }]);
12666 12664
12667 12665 angular.module('appenlight.services.resources').factory('resourcesPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12668 12666 return $resource(AeConfig.urls.resourceProperty, null, angular.copy(DEFAULT_ACTIONS));
12669 12667 }]);
12670 12668
12671 12669 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12672 12670 // #
12673 12671 // # This program is free software: you can redistribute it and/or modify
12674 12672 // # it under the terms of the GNU Affero General Public License, version 3
12675 12673 // # (only), as published by the Free Software Foundation.
12676 12674 // #
12677 12675 // # This program is distributed in the hope that it will be useful,
12678 12676 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12679 12677 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12680 12678 // # GNU General Public License for more details.
12681 12679 // #
12682 12680 // # You should have received a copy of the GNU Affero General Public License
12683 12681 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12684 12682 // #
12685 12683 // # This program is dual-licensed. If you wish to learn more about the
12686 12684 // # AppEnlight Enterprise Edition, including its added features, Support
12687 12685 // # services, and proprietary license terms, please see
12688 12686 // # https://rhodecode.com/licenses/
12689 12687
12690 12688 angular.module('appenlight.services.stateHolder', []).factory('stateHolder', ['$timeout', 'AeConfig', function ($timeout, AeConfig) {
12691 12689 /**
12692 12690 * Holds some common stuff like flash messages, but important part is
12693 12691 * plugins property that is a registry that holds all information about
12694 12692 * loaded plugins, its mutated via .run() functions on inclusion
12695 12693 * @type {{list: Array, timeout: null, extend: flashMessages.extend, pop: flashMessages.pop, cancelTimeout: flashMessages.cancelTimeout, removeMessages: flashMessages.removeMessages}}
12696 12694 */
12697 12695 var flashMessages = {
12698 12696 list: [],
12699 12697 timeout: null,
12700 12698 extend: function (values) {
12701 12699
12702 12700 if (this.list.length > 2) {
12703 12701 this.list.splice(0, this.list.length - 2);
12704 12702 }
12705 12703 this.list.push.apply(this.list, values);
12706 12704 this.cancelTimeout();
12707 12705 this.removeMessages();
12708 12706 },
12709 12707 pop: function () {
12710 12708
12711 12709 this.list.pop();
12712 12710 },
12713 12711 cancelTimeout: function () {
12714 12712 if (this.timeout) {
12715 12713 $timeout.cancel(this.timeout);
12716 12714 }
12717 12715 },
12718 12716 removeMessages: function () {
12719 12717 var self = this;
12720 12718 this.timeout = $timeout(function () {
12721 12719 while (self.list.length > 0) {
12722 12720 self.list.pop();
12723 12721 }
12724 12722 }, 10000);
12725 12723 }
12726 12724 };
12727 12725 flashMessages.closeAlert = angular.bind(flashMessages, function (index) {
12728 12726 this.list.splice(index, 1);
12729 12727 this.cancelTimeout();
12730 12728 });
12731 12729 /* add flash messages from template generated on non-xhr request level */
12732 12730 try {
12733 12731 if (AeConfig.flashMessages.length > 0) {
12734 12732 flashMessages.list = AeConfig.flashMessages;
12735 12733 }
12736 12734 }
12737 12735 catch (exc) {
12738 12736
12739 12737 }
12740 12738
12741 12739 var Plugins = {
12742 12740 enabled: [],
12743 12741 configs: {},
12744 12742 inclusions: {},
12745 12743 addInclusion: function (name, inclusion) {
12746 12744 var self = this;
12747 12745 if (self.inclusions.hasOwnProperty(name) === false) {
12748 12746 self.inclusions[name] = [];
12749 12747 }
12750 12748 self.inclusions[name].push(inclusion);
12751 12749 }
12752 12750 }
12753 12751
12754 12752 var stateHolder = {
12755 12753 section: 'settings',
12756 12754 resource: null,
12757 12755 plugins: Plugins,
12758 12756 flashMessages: flashMessages,
12759 12757 };
12760 12758 return stateHolder;
12761 12759 }]);
12762 12760
12763 12761 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12764 12762 // #
12765 12763 // # This program is free software: you can redistribute it and/or modify
12766 12764 // # it under the terms of the GNU Affero General Public License, version 3
12767 12765 // # (only), as published by the Free Software Foundation.
12768 12766 // #
12769 12767 // # This program is distributed in the hope that it will be useful,
12770 12768 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12771 12769 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12772 12770 // # GNU General Public License for more details.
12773 12771 // #
12774 12772 // # You should have received a copy of the GNU Affero General Public License
12775 12773 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12776 12774 // #
12777 12775 // # This program is dual-licensed. If you wish to learn more about the
12778 12776 // # AppEnlight Enterprise Edition, including its added features, Support
12779 12777 // # services, and proprietary license terms, please see
12780 12778 // # https://rhodecode.com/licenses/
12781 12779
12782 12780 angular.module('appenlight.services.typeAheadTagHelper', []).factory('typeAheadTagHelper', function () {
12783 12781 var typeAheadTagHelper = {tags: []};
12784 12782 typeAheadTagHelper.aheadFilter = function (item, viewValue) {
12785 12783 //dont show "deeper" autocomplete like level:foo with exception of application ones
12786 12784 var label_text = item.text || item;
12787 12785 if (label_text.charAt(label_text.length - 1) != ':' && viewValue.indexOf(':') === -1 && label_text.indexOf('resource:') !== 0) {
12788 12786 return false;
12789 12787 }
12790 12788 if (viewValue.length > 2) {
12791 12789 // with apps we need to do it differently
12792 12790 if (viewValue.toLowerCase().indexOf('resource:') == 0) {
12793 12791 viewValue = viewValue.split(':').pop();
12794 12792 }
12795 12793 // check if tags match
12796 12794 if (label_text.toLowerCase().indexOf(viewValue.toLowerCase()) === -1) {
12797 12795 return false;
12798 12796 }
12799 12797 }
12800 12798 return true;
12801 12799 };
12802 12800 typeAheadTagHelper.removeSearchTag = function (tag) {
12803 12801
12804 12802 var indexValue = _.indexOf(typeAheadTagHelper.tags, tag);
12805 12803 typeAheadTagHelper.tags.splice(indexValue, 1);
12806 12804
12807 12805 };
12808 12806 typeAheadTagHelper.addSearchTag = function (tag) {
12809 12807 // do not allow dupes - angular will complain
12810 12808 var found = _.find(typeAheadTagHelper.tags, function (existingTag) {
12811 12809 return existingTag.type == tag.type && existingTag.value == tag.value
12812 12810 });
12813 12811 if (!found) {
12814 12812 typeAheadTagHelper.tags.push(tag);
12815 12813 }
12816 12814 };
12817 12815
12818 12816 return typeAheadTagHelper;
12819 12817 });
12820 12818
12821 12819 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12822 12820 // #
12823 12821 // # This program is free software: you can redistribute it and/or modify
12824 12822 // # it under the terms of the GNU Affero General Public License, version 3
12825 12823 // # (only), as published by the Free Software Foundation.
12826 12824 // #
12827 12825 // # This program is distributed in the hope that it will be useful,
12828 12826 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12829 12827 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12830 12828 // # GNU General Public License for more details.
12831 12829 // #
12832 12830 // # You should have received a copy of the GNU Affero General Public License
12833 12831 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12834 12832 // #
12835 12833 // # This program is dual-licensed. If you wish to learn more about the
12836 12834 // # AppEnlight Enterprise Edition, including its added features, Support
12837 12835 // # services, and proprietary license terms, please see
12838 12836 // # https://rhodecode.com/licenses/
12839 12837
12840 12838 angular.module('appenlight.services.UUIDProvider', []).factory('UUIDProvider', function () {
12841 12839 var provider = {
12842 12840 genUUID4: function () {
12843 12841 return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
12844 12842 /[xy]/g, function (c) {
12845 12843 var r = Math.random() * 16 | 0, v = c == 'x' ? r : r & 0x3 | 0x8;
12846 12844 return v.toString(16);
12847 12845 }
12848 12846 );
12849 12847 }
12850 12848 };
12851 12849 return provider;
12852 12850 });
12853 12851
12854 12852 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12855 12853 // #
12856 12854 // # This program is free software: you can redistribute it and/or modify
12857 12855 // # it under the terms of the GNU Affero General Public License, version 3
12858 12856 // # (only), as published by the Free Software Foundation.
12859 12857 // #
12860 12858 // # This program is distributed in the hope that it will be useful,
12861 12859 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12862 12860 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12863 12861 // # GNU General Public License for more details.
12864 12862 // #
12865 12863 // # You should have received a copy of the GNU Affero General Public License
12866 12864 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12867 12865 // #
12868 12866 // # This program is dual-licensed. If you wish to learn more about the
12869 12867 // # AppEnlight Enterprise Edition, including its added features, Support
12870 12868 // # services, and proprietary license terms, please see
12871 12869 // # https://rhodecode.com/licenses/
12872 12870
12873 12871 var underscore = angular.module('underscore', []);
12874 12872 underscore.factory('_', function () {
12875 12873 return window._; // assumes underscore has already been loaded on the page
12876 12874 });
12877 12875
12878 12876 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12879 12877 // #
12880 12878 // # This program is free software: you can redistribute it and/or modify
12881 12879 // # it under the terms of the GNU Affero General Public License, version 3
12882 12880 // # (only), as published by the Free Software Foundation.
12883 12881 // #
12884 12882 // # This program is distributed in the hope that it will be useful,
12885 12883 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12886 12884 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12887 12885 // # GNU General Public License for more details.
12888 12886 // #
12889 12887 // # You should have received a copy of the GNU Affero General Public License
12890 12888 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12891 12889 // #
12892 12890 // # This program is dual-licensed. If you wish to learn more about the
12893 12891 // # AppEnlight Enterprise Edition, including its added features, Support
12894 12892 // # services, and proprietary license terms, please see
12895 12893 // # https://rhodecode.com/licenses/
12896 12894
12897 12895 var aeuser = angular.module('appenlight.user', []);
12898 12896 aeuser.factory('AeUser', ['AeConfig', function () {
12899 12897 var decodedAeUser = decodeEncodedJSON(window.AE.user);
12900 12898
12901 12899 var AeUser = {
12902 12900 user_name: decodedAeUser.user_name || null,
12903 12901 id: decodedAeUser.id,
12904 12902 assigned_reports: decodedAeUser.assigned_reports || null,
12905 12903 latest_events: decodedAeUser.latest_events || null,
12906 12904 permissions: decodedAeUser.permissions || null,
12907 12905 groups: decodedAeUser.groups || null,
12908 12906 applications: [],
12909 12907 dashboards: []
12910 12908 };
12911 12909
12912 12910 AeUser.applications_map = {};
12913 12911 AeUser.dashboards_map = {};
12914 12912 AeUser.addApplication = function (item) {
12915 12913 AeUser.applications.push(item);
12916 12914 AeUser.applications_map[item.resource_id] = item;
12917 12915 };
12918 12916 AeUser.addDashboard = function (item) {
12919 12917 AeUser.dashboards.push(item);
12920 12918 AeUser.dashboards_map[item.resource_id] = item;
12921 12919 };
12922 12920
12923 12921 AeUser.removeApplicationById = function (applicationId) {
12924 12922 AeUser.applications = _.filter(AeUser.applications, function (item) {
12925 12923 return item.resource_id != applicationId;
12926 12924 });
12927 12925 delete AeUser.applications_map[applicationId];
12928 12926 };
12929 12927 AeUser.removeDashboardById = function (dashboardId) {
12930 12928 AeUser.dashboards = _.filter(AeUser.dashboards, function (item) {
12931 12929 return item.resource_id != dashboardId;
12932 12930 });
12933 12931 delete AeUser.dashboards_map[dashboardId];
12934 12932 };
12935 12933
12936 12934 AeUser.hasAppPermission = function (perm_name) {
12937 12935 if (AeUser.permissions.indexOf('root_administration') !== -1) {
12938 12936 return true
12939 12937 }
12940 12938 return AeUser.permissions.indexOf(perm_name) !== -1;
12941 12939 };
12942 12940
12943 12941 AeUser.hasContextPermission = function (permName, ACLList) {
12944 12942 var hasPerm = false;
12945 12943 _.each(ACLList, function (ACL) {
12946 12944 // is this the right perm?
12947 12945 if (ACL.perm_name == permName ||
12948 12946 ACL.perm_name == '__all_permissions__') {
12949 12947 // perm for this user or a group user belongs to
12950 12948 if (ACL.user_name === AeUser.user_name ||
12951 12949 AeUser.groups.indexOf(ACL.group_name) !== -1) {
12952 12950 hasPerm = true
12953 12951 }
12954 12952 }
12955 12953 });
12956 12954
12957 12955 return hasPerm;
12958 12956 };
12959 12957
12960 12958 _.each(decodedAeUser.applications, function (item) {
12961 12959 AeUser.addApplication(item);
12962 12960 });
12963 12961 _.each(decodedAeUser.dashboards, function (item) {
12964 12962 AeUser.addDashboard(item);
12965 12963 });
12966 12964
12967 12965 return AeUser;
12968 12966 }]);
General Comments 0
You need to be logged in to leave comments. Login now