· 6 years ago · Sep 10, 2019, 03:12 AM
1'use strict';
2!function(m) {
3 /**
4 * @param {number} i
5 * @return {?}
6 */
7 function t(i) {
8 if (n[i]) {
9 return n[i].exports;
10 }
11 var module = n[i] = {
12 i : i,
13 l : false,
14 exports : {}
15 };
16 return m[i].call(module.exports, module, module.exports, t), module.l = true, module.exports;
17 }
18 var n = {};
19 /** @type {!Array} */
20 t.m = m;
21 t.c = n;
22 /**
23 * @param {!Function} d
24 * @param {string} name
25 * @param {string} n
26 * @return {undefined}
27 */
28 t.d = function(d, name, n) {
29 if (!t.o(d, name)) {
30 Object.defineProperty(d, name, {
31 configurable : false,
32 enumerable : true,
33 get : n
34 });
35 }
36 };
37 /**
38 * @param {!Object} module
39 * @return {?}
40 */
41 t.n = function(module) {
42 /** @type {function(): ?} */
43 var n = module && module.__esModule ? function() {
44 return module.default;
45 } : function() {
46 return module;
47 };
48 return t.d(n, "a", n), n;
49 };
50 /**
51 * @param {!Function} t
52 * @param {string} object
53 * @return {?}
54 */
55 t.o = function(t, object) {
56 return Object.prototype.hasOwnProperty.call(t, object);
57 };
58 /** @type {string} */
59 t.p = "";
60 t(t.s = 0);
61}([function(module, canCreateDiscussions, factory) {
62 module.exports = factory(1);
63}, function(canCreateDiscussions, BeautifulProperties, __webpack_require__) {
64 /**
65 * @param {!AudioNode} t
66 * @param {!Function} x
67 * @return {undefined}
68 */
69 function r(t, x) {
70 if (!(t instanceof x)) {
71 throw new TypeError("Cannot call a class as a function");
72 }
73 }
74 /**
75 * @param {string} object
76 * @param {string} t
77 * @return {?}
78 */
79 function o(object, t) {
80 if (!object) {
81 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
82 }
83 return !t || "object" != typeof t && "function" != typeof t ? object : t;
84 }
85 /**
86 * @param {!Object} object
87 * @param {!Object} superClass
88 * @return {undefined}
89 */
90 function define(object, superClass) {
91 if ("function" != typeof superClass && null !== superClass) {
92 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
93 }
94 /** @type {!Object} */
95 object.prototype = Object.create(superClass && superClass.prototype, {
96 constructor : {
97 value : object,
98 enumerable : false,
99 writable : true,
100 configurable : true
101 }
102 });
103 if (superClass) {
104 if (Object.setPrototypeOf) {
105 Object.setPrototypeOf(object, superClass);
106 } else {
107 /** @type {!Object} */
108 object.__proto__ = superClass;
109 }
110 }
111 }
112 /**
113 * @param {!Object} obj
114 * @param {string} key
115 * @param {!Object} value
116 * @return {?}
117 */
118 function defineReadonlyProperty(obj, key, value) {
119 return key in obj ? Object.defineProperty(obj, key, {
120 value : value,
121 enumerable : true,
122 configurable : true,
123 writable : true
124 }) : obj[key] = value, obj;
125 }
126 /**
127 * @param {!Array} arr
128 * @return {?}
129 */
130 function expect(arr) {
131 if (Array.isArray(arr)) {
132 /** @type {number} */
133 var i = 0;
134 /** @type {!Array} */
135 var result = Array(arr.length);
136 for (; i < arr.length; i++) {
137 result[i] = arr[i];
138 }
139 return result;
140 }
141 return Array.from(arr);
142 }
143 /**
144 * @param {!Array} obj
145 * @return {?}
146 */
147 function clone(obj) {
148 if (Array.isArray(obj)) {
149 /** @type {number} */
150 var i = 0;
151 /** @type {!Array} */
152 var ret = Array(obj.length);
153 for (; i < obj.length; i++) {
154 ret[i] = obj[i];
155 }
156 return ret;
157 }
158 return Array.from(obj);
159 }
160 /**
161 * @param {!AudioNode} name
162 * @param {!Function} source
163 * @return {undefined}
164 */
165 function addListener(name, source) {
166 if (!(name instanceof source)) {
167 throw new TypeError("Cannot call a class as a function");
168 }
169 }
170 /**
171 * @param {!NodeList} text
172 * @return {?}
173 */
174 function range(text) {
175 if (Array.isArray(text)) {
176 /** @type {number} */
177 var i = 0;
178 /** @type {!Array} */
179 var ret = Array(text.length);
180 for (; i < text.length; i++) {
181 ret[i] = text[i];
182 }
183 return ret;
184 }
185 return Array.from(text);
186 }
187 /**
188 * @param {!AudioNode} error
189 * @param {!Function} t
190 * @return {undefined}
191 */
192 function p(error, t) {
193 if (!(error instanceof t)) {
194 throw new TypeError("Cannot call a class as a function");
195 }
196 }
197 /**
198 * @param {string} t
199 * @param {string} o
200 * @return {?}
201 */
202 function isFunction(t, o) {
203 if (!t) {
204 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
205 }
206 return !o || "object" != typeof o && "function" != typeof o ? t : o;
207 }
208 /**
209 * @param {!Object} b
210 * @param {!Object} t
211 * @return {undefined}
212 */
213 function copy(b, t) {
214 if ("function" != typeof t && null !== t) {
215 throw new TypeError("Super expression must either be null or a function, not " + typeof t);
216 }
217 /** @type {!Object} */
218 b.prototype = Object.create(t && t.prototype, {
219 constructor : {
220 value : b,
221 enumerable : false,
222 writable : true,
223 configurable : true
224 }
225 });
226 if (t) {
227 if (Object.setPrototypeOf) {
228 Object.setPrototypeOf(b, t);
229 } else {
230 /** @type {!Object} */
231 b.__proto__ = t;
232 }
233 }
234 }
235 /**
236 * @param {!AudioNode} instance
237 * @param {!Function} Constructor
238 * @return {undefined}
239 */
240 function classCallCheck(instance, Constructor) {
241 if (!(instance instanceof Constructor)) {
242 throw new TypeError("Cannot call a class as a function");
243 }
244 }
245 /**
246 * @param {string} self
247 * @param {string} call
248 * @return {?}
249 */
250 function possibleConstructorReturn(self, call) {
251 if (!self) {
252 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
253 }
254 return !call || "object" != typeof call && "function" != typeof call ? self : call;
255 }
256 /**
257 * @param {!Object} subClass
258 * @param {!Object} superClass
259 * @return {undefined}
260 */
261 function createClass(subClass, superClass) {
262 if ("function" != typeof superClass && null !== superClass) {
263 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
264 }
265 /** @type {!Object} */
266 subClass.prototype = Object.create(superClass && superClass.prototype, {
267 constructor : {
268 value : subClass,
269 enumerable : false,
270 writable : true,
271 configurable : true
272 }
273 });
274 if (superClass) {
275 if (Object.setPrototypeOf) {
276 Object.setPrototypeOf(subClass, superClass);
277 } else {
278 /** @type {!Object} */
279 subClass.__proto__ = superClass;
280 }
281 }
282 }
283 /**
284 * @param {!AudioNode} instance
285 * @param {!Function} Constructor
286 * @return {undefined}
287 */
288 function _classCallCheck(instance, Constructor) {
289 if (!(instance instanceof Constructor)) {
290 throw new TypeError("Cannot call a class as a function");
291 }
292 }
293 /**
294 * @param {string} scope
295 * @param {string} o
296 * @return {?}
297 */
298 function keys(scope, o) {
299 if (!scope) {
300 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
301 }
302 return !o || "object" != typeof o && "function" != typeof o ? scope : o;
303 }
304 /**
305 * @param {!Object} subClass
306 * @param {!Object} superClass
307 * @return {undefined}
308 */
309 function _inherits(subClass, superClass) {
310 if ("function" != typeof superClass && null !== superClass) {
311 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
312 }
313 /** @type {!Object} */
314 subClass.prototype = Object.create(superClass && superClass.prototype, {
315 constructor : {
316 value : subClass,
317 enumerable : false,
318 writable : true,
319 configurable : true
320 }
321 });
322 if (superClass) {
323 if (Object.setPrototypeOf) {
324 Object.setPrototypeOf(subClass, superClass);
325 } else {
326 /** @type {!Object} */
327 subClass.__proto__ = superClass;
328 }
329 }
330 }
331 /**
332 * @param {!AudioNode} arg
333 * @param {!Function} instance
334 * @return {undefined}
335 */
336 function emit(arg, instance) {
337 if (!(arg instanceof instance)) {
338 throw new TypeError("Cannot call a class as a function");
339 }
340 }
341 /**
342 * @param {string} encoder
343 * @param {string} t
344 * @return {?}
345 */
346 function toString(encoder, t) {
347 if (!encoder) {
348 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
349 }
350 return !t || "object" != typeof t && "function" != typeof t ? encoder : t;
351 }
352 /**
353 * @param {!Object} subClass
354 * @param {!Object} superClass
355 * @return {undefined}
356 */
357 function inherit(subClass, superClass) {
358 if ("function" != typeof superClass && null !== superClass) {
359 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
360 }
361 /** @type {!Object} */
362 subClass.prototype = Object.create(superClass && superClass.prototype, {
363 constructor : {
364 value : subClass,
365 enumerable : false,
366 writable : true,
367 configurable : true
368 }
369 });
370 if (superClass) {
371 if (Object.setPrototypeOf) {
372 Object.setPrototypeOf(subClass, superClass);
373 } else {
374 /** @type {!Object} */
375 subClass.__proto__ = superClass;
376 }
377 }
378 }
379 /**
380 * @param {!AudioNode} val
381 * @param {!Function} model
382 * @return {undefined}
383 */
384 function fill(val, model) {
385 if (!(val instanceof model)) {
386 throw new TypeError("Cannot call a class as a function");
387 }
388 }
389 /**
390 * @param {!AudioNode} view
391 * @param {!Function} obj
392 * @return {undefined}
393 */
394 function observe(view, obj) {
395 if (!(view instanceof obj)) {
396 throw new TypeError("Cannot call a class as a function");
397 }
398 }
399 /**
400 * @param {string} self
401 * @param {string} call
402 * @return {?}
403 */
404 function _possibleConstructorReturn(self, call) {
405 if (!self) {
406 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
407 }
408 return !call || "object" != typeof call && "function" != typeof call ? self : call;
409 }
410 /**
411 * @param {!Object} subClass
412 * @param {!Object} superClass
413 * @return {undefined}
414 */
415 function __extends(subClass, superClass) {
416 if ("function" != typeof superClass && null !== superClass) {
417 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
418 }
419 /** @type {!Object} */
420 subClass.prototype = Object.create(superClass && superClass.prototype, {
421 constructor : {
422 value : subClass,
423 enumerable : false,
424 writable : true,
425 configurable : true
426 }
427 });
428 if (superClass) {
429 if (Object.setPrototypeOf) {
430 Object.setPrototypeOf(subClass, superClass);
431 } else {
432 /** @type {!Object} */
433 subClass.__proto__ = superClass;
434 }
435 }
436 }
437 /**
438 * @param {!AudioNode} cb
439 * @param {!Function} text
440 * @return {undefined}
441 */
442 function split(cb, text) {
443 if (!(cb instanceof text)) {
444 throw new TypeError("Cannot call a class as a function");
445 }
446 }
447 /**
448 * @param {string} format
449 * @param {string} a
450 * @return {?}
451 */
452 function walk(format, a) {
453 if (!format) {
454 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
455 }
456 return !a || "object" != typeof a && "function" != typeof a ? format : a;
457 }
458 /**
459 * @param {!Object} b
460 * @param {!Object} t
461 * @return {undefined}
462 */
463 function wrap(b, t) {
464 if ("function" != typeof t && null !== t) {
465 throw new TypeError("Super expression must either be null or a function, not " + typeof t);
466 }
467 /** @type {!Object} */
468 b.prototype = Object.create(t && t.prototype, {
469 constructor : {
470 value : b,
471 enumerable : false,
472 writable : true,
473 configurable : true
474 }
475 });
476 if (t) {
477 if (Object.setPrototypeOf) {
478 Object.setPrototypeOf(b, t);
479 } else {
480 /** @type {!Object} */
481 b.__proto__ = t;
482 }
483 }
484 }
485 /**
486 * @param {!Object} obj
487 * @param {string} key
488 * @param {!Object} value
489 * @return {?}
490 */
491 function _defineProperty(obj, key, value) {
492 return key in obj ? Object.defineProperty(obj, key, {
493 value : value,
494 enumerable : true,
495 configurable : true,
496 writable : true
497 }) : obj[key] = value, obj;
498 }
499 /**
500 * @param {!Object} obj
501 * @param {string} key
502 * @param {string} value
503 * @return {?}
504 */
505 function stop(obj, key, value) {
506 return key in obj ? Object.defineProperty(obj, key, {
507 value : value,
508 enumerable : true,
509 configurable : true,
510 writable : true
511 }) : obj[key] = value, obj;
512 }
513 /**
514 * @param {!Object} obj
515 * @param {string} key
516 * @param {!Array} value
517 * @return {?}
518 */
519 function defineProperty(obj, key, value) {
520 return key in obj ? Object.defineProperty(obj, key, {
521 value : value,
522 enumerable : true,
523 configurable : true,
524 writable : true
525 }) : obj[key] = value, obj;
526 }
527 /**
528 * @param {!Object} expected
529 * @param {!Array} s
530 * @return {?}
531 */
532 function j(expected, s) {
533 var obj = {};
534 var property;
535 for (property in expected) {
536 if (!(s.indexOf(property) >= 0)) {
537 if (Object.prototype.hasOwnProperty.call(expected, property)) {
538 obj[property] = expected[property];
539 }
540 }
541 }
542 return obj;
543 }
544 /**
545 * @param {!AudioNode} elem
546 * @param {!Function} type
547 * @return {undefined}
548 */
549 function errorHandler(elem, type) {
550 if (!(elem instanceof type)) {
551 throw new TypeError("Cannot call a class as a function");
552 }
553 }
554 /**
555 * @param {!AudioNode} z
556 * @param {!Function} t
557 * @return {undefined}
558 */
559 function calcLines(z, t) {
560 if (!(z instanceof t)) {
561 throw new TypeError("Cannot call a class as a function");
562 }
563 }
564 /**
565 * @param {string} s
566 * @param {string} o
567 * @return {?}
568 */
569 function destroy(s, o) {
570 if (!s) {
571 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
572 }
573 return !o || "object" != typeof o && "function" != typeof o ? s : o;
574 }
575 /**
576 * @param {!Object} b
577 * @param {!Object} t
578 * @return {undefined}
579 */
580 function i(b, t) {
581 if ("function" != typeof t && null !== t) {
582 throw new TypeError("Super expression must either be null or a function, not " + typeof t);
583 }
584 /** @type {!Object} */
585 b.prototype = Object.create(t && t.prototype, {
586 constructor : {
587 value : b,
588 enumerable : false,
589 writable : true,
590 configurable : true
591 }
592 });
593 if (t) {
594 if (Object.setPrototypeOf) {
595 Object.setPrototypeOf(b, t);
596 } else {
597 /** @type {!Object} */
598 b.__proto__ = t;
599 }
600 }
601 }
602 /**
603 * @param {!Object} obj
604 * @param {string} key
605 * @param {!Object} value
606 * @return {?}
607 */
608 function splice(obj, key, value) {
609 return key in obj ? Object.defineProperty(obj, key, {
610 value : value,
611 enumerable : true,
612 configurable : true,
613 writable : true
614 }) : obj[key] = value, obj;
615 }
616 /**
617 * @param {!NodeList} array
618 * @return {?}
619 */
620 function makeArray(array) {
621 if (Array.isArray(array)) {
622 /** @type {number} */
623 var i = 0;
624 /** @type {!Array} */
625 var ret = Array(array.length);
626 for (; i < array.length; i++) {
627 ret[i] = array[i];
628 }
629 return ret;
630 }
631 return Array.from(array);
632 }
633 /**
634 * @param {string} text
635 * @return {?}
636 */
637 function from(text) {
638 if (Array.isArray(text)) {
639 /** @type {number} */
640 var i = 0;
641 /** @type {!Array} */
642 var ret = Array(text.length);
643 for (; i < text.length; i++) {
644 ret[i] = text[i];
645 }
646 return ret;
647 }
648 return Array.from(text);
649 }
650 /**
651 * @param {!Object} obj
652 * @param {string} key
653 * @param {?} value
654 * @return {?}
655 */
656 function get(obj, key, value) {
657 return key in obj ? Object.defineProperty(obj, key, {
658 value : value,
659 enumerable : true,
660 configurable : true,
661 writable : true
662 }) : obj[key] = value, obj;
663 }
664 /**
665 * @param {string} array
666 * @return {?}
667 */
668 function include(array) {
669 if (Array.isArray(array)) {
670 /** @type {number} */
671 var i = 0;
672 /** @type {!Array} */
673 var ret = Array(array.length);
674 for (; i < array.length; i++) {
675 ret[i] = array[i];
676 }
677 return ret;
678 }
679 return Array.from(array);
680 }
681 /**
682 * @param {!AudioNode} context
683 * @param {!Function} method
684 * @return {undefined}
685 */
686 function throttle(context, method) {
687 if (!(context instanceof method)) {
688 throw new TypeError("Cannot call a class as a function");
689 }
690 }
691 /**
692 * @param {!AudioNode} res
693 * @param {!Function} entry
694 * @return {undefined}
695 */
696 function dispatch(res, entry) {
697 if (!(res instanceof entry)) {
698 throw new TypeError("Cannot call a class as a function");
699 }
700 }
701 /**
702 * @param {!AudioNode} val
703 * @param {!Function} alpha
704 * @return {undefined}
705 */
706 function custom(val, alpha) {
707 if (!(val instanceof alpha)) {
708 throw new TypeError("Cannot call a class as a function");
709 }
710 }
711 /**
712 * @param {!Object} obj
713 * @param {string} key
714 * @param {string} value
715 * @return {?}
716 */
717 function getValue(obj, key, value) {
718 return key in obj ? Object.defineProperty(obj, key, {
719 value : value,
720 enumerable : true,
721 configurable : true,
722 writable : true
723 }) : obj[key] = value, obj;
724 }
725 /**
726 * @param {!Object} p
727 * @param {!Array} set
728 * @return {?}
729 */
730 function pick(p, set) {
731 var v = {};
732 var i;
733 for (i in p) {
734 if (!(set.indexOf(i) >= 0)) {
735 if (Object.prototype.hasOwnProperty.call(p, i)) {
736 v[i] = p[i];
737 }
738 }
739 }
740 return v;
741 }
742 /**
743 * @param {!AudioNode} w
744 * @param {!Function} t
745 * @return {undefined}
746 */
747 function _element_ready(w, t) {
748 if (!(w instanceof t)) {
749 throw new TypeError("Cannot call a class as a function");
750 }
751 }
752 /**
753 * @param {string} ch
754 * @param {string} a
755 * @return {?}
756 */
757 function encode(ch, a) {
758 if (!ch) {
759 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
760 }
761 return !a || "object" != typeof a && "function" != typeof a ? ch : a;
762 }
763 /**
764 * @param {!Object} subClass
765 * @param {!Object} superClass
766 * @return {undefined}
767 */
768 function _inherits$1(subClass, superClass) {
769 if ("function" != typeof superClass && null !== superClass) {
770 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
771 }
772 /** @type {!Object} */
773 subClass.prototype = Object.create(superClass && superClass.prototype, {
774 constructor : {
775 value : subClass,
776 enumerable : false,
777 writable : true,
778 configurable : true
779 }
780 });
781 if (superClass) {
782 if (Object.setPrototypeOf) {
783 Object.setPrototypeOf(subClass, superClass);
784 } else {
785 /** @type {!Object} */
786 subClass.__proto__ = superClass;
787 }
788 }
789 }
790 /**
791 * @param {!Object} obj
792 * @param {!Array} t
793 * @return {?}
794 */
795 function merge(obj, t) {
796 var removed = {};
797 var i;
798 for (i in obj) {
799 if (!(t.indexOf(i) >= 0)) {
800 if (Object.prototype.hasOwnProperty.call(obj, i)) {
801 removed[i] = obj[i];
802 }
803 }
804 }
805 return removed;
806 }
807 /**
808 * @param {!NodeList} arr
809 * @return {?}
810 */
811 function _toConsumableArray(arr) {
812 if (Array.isArray(arr)) {
813 /** @type {number} */
814 var i = 0;
815 /** @type {!Array} */
816 var arr2 = Array(arr.length);
817 for (; i < arr.length; i++) {
818 arr2[i] = arr[i];
819 }
820 return arr2;
821 }
822 return Array.from(arr);
823 }
824 /**
825 * @param {!AudioNode} value
826 * @param {!Function} type
827 * @return {undefined}
828 */
829 function cast(value, type) {
830 if (!(value instanceof type)) {
831 throw new TypeError("Cannot call a class as a function");
832 }
833 }
834 /**
835 * @param {string} type
836 * @param {string} a
837 * @return {?}
838 */
839 function isSupported(type, a) {
840 if (!type) {
841 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
842 }
843 return !a || "object" != typeof a && "function" != typeof a ? type : a;
844 }
845 /**
846 * @param {!Object} subClass
847 * @param {!Object} superClass
848 * @return {undefined}
849 */
850 function inherits(subClass, superClass) {
851 if ("function" != typeof superClass && null !== superClass) {
852 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
853 }
854 /** @type {!Object} */
855 subClass.prototype = Object.create(superClass && superClass.prototype, {
856 constructor : {
857 value : subClass,
858 enumerable : false,
859 writable : true,
860 configurable : true
861 }
862 });
863 if (superClass) {
864 if (Object.setPrototypeOf) {
865 Object.setPrototypeOf(subClass, superClass);
866 } else {
867 /** @type {!Object} */
868 subClass.__proto__ = superClass;
869 }
870 }
871 }
872 /**
873 * @param {!AudioNode} arg
874 * @param {!Function} type
875 * @return {undefined}
876 */
877 function removeEventListener(arg, type) {
878 if (!(arg instanceof type)) {
879 throw new TypeError("Cannot call a class as a function");
880 }
881 }
882 /**
883 * @param {string} obj
884 * @return {?}
885 */
886 function toArray(obj) {
887 if (Array.isArray(obj)) {
888 /** @type {number} */
889 var i = 0;
890 /** @type {!Array} */
891 var result = Array(obj.length);
892 for (; i < obj.length; i++) {
893 result[i] = obj[i];
894 }
895 return result;
896 }
897 return Array.from(obj);
898 }
899 /**
900 * @param {!NodeList} text
901 * @return {?}
902 */
903 function $(text) {
904 if (Array.isArray(text)) {
905 /** @type {number} */
906 var i = 0;
907 /** @type {!Array} */
908 var ret = Array(text.length);
909 for (; i < text.length; i++) {
910 ret[i] = text[i];
911 }
912 return ret;
913 }
914 return Array.from(text);
915 }
916 /**
917 * @param {!Object} obj
918 * @param {!Array} keys
919 * @return {?}
920 */
921 function _objectWithoutProperties(obj, keys) {
922 var target = {};
923 var key;
924 for (key in obj) {
925 if (!(keys.indexOf(key) >= 0)) {
926 if (Object.prototype.hasOwnProperty.call(obj, key)) {
927 target[key] = obj[key];
928 }
929 }
930 }
931 return target;
932 }
933 /**
934 * @param {!Object} obj
935 * @param {string} key
936 * @param {string} value
937 * @return {?}
938 */
939 function setValue(obj, key, value) {
940 return key in obj ? Object.defineProperty(obj, key, {
941 value : value,
942 enumerable : true,
943 configurable : true,
944 writable : true
945 }) : obj[key] = value, obj;
946 }
947 /**
948 * @param {!AudioNode} error
949 * @param {!Function} success
950 * @return {undefined}
951 */
952 function local_storage_get_multi(error, success) {
953 if (!(error instanceof success)) {
954 throw new TypeError("Cannot call a class as a function");
955 }
956 }
957 /**
958 * @param {!Object} value
959 * @param {!Array} properties
960 * @return {?}
961 */
962 function spawn(value, properties) {
963 var result = {};
964 var name;
965 for (name in value) {
966 if (!(properties.indexOf(name) >= 0)) {
967 if (Object.prototype.hasOwnProperty.call(value, name)) {
968 result[name] = value[name];
969 }
970 }
971 }
972 return result;
973 }
974 /**
975 * @param {!Object} o
976 * @param {!Array} value
977 * @return {?}
978 */
979 function m(o, value) {
980 var result = {};
981 var i;
982 for (i in o) {
983 if (!(value.indexOf(i) >= 0)) {
984 if (Object.prototype.hasOwnProperty.call(o, i)) {
985 result[i] = o[i];
986 }
987 }
988 }
989 return result;
990 }
991 /**
992 * @param {!Object} array
993 * @param {!Array} cols
994 * @return {?}
995 */
996 function random(array, cols) {
997 var ret = {};
998 var i;
999 for (i in array) {
1000 if (!(cols.indexOf(i) >= 0)) {
1001 if (Object.prototype.hasOwnProperty.call(array, i)) {
1002 ret[i] = array[i];
1003 }
1004 }
1005 }
1006 return ret;
1007 }
1008 /**
1009 * @param {!NodeList} array
1010 * @return {?}
1011 */
1012 function or(array) {
1013 if (Array.isArray(array)) {
1014 /** @type {number} */
1015 var i = 0;
1016 /** @type {!Array} */
1017 var result = Array(array.length);
1018 for (; i < array.length; i++) {
1019 result[i] = array[i];
1020 }
1021 return result;
1022 }
1023 return Array.from(array);
1024 }
1025 /**
1026 * @param {!Object} options
1027 * @param {!Array} callbacks
1028 * @return {?}
1029 */
1030 function union(options, callbacks) {
1031 var res = {};
1032 var name;
1033 for (name in options) {
1034 if (!(callbacks.indexOf(name) >= 0)) {
1035 if (Object.prototype.hasOwnProperty.call(options, name)) {
1036 res[name] = options[name];
1037 }
1038 }
1039 }
1040 return res;
1041 }
1042 /**
1043 * @param {!AudioNode} url
1044 * @param {!Function} load
1045 * @return {undefined}
1046 */
1047 function loadSwitch(url, load) {
1048 if (!(url instanceof load)) {
1049 throw new TypeError("Cannot call a class as a function");
1050 }
1051 }
1052 /**
1053 * @param {!NodeList} obj
1054 * @return {?}
1055 */
1056 function find(obj) {
1057 if (Array.isArray(obj)) {
1058 /** @type {number} */
1059 var i = 0;
1060 /** @type {!Array} */
1061 var result = Array(obj.length);
1062 for (; i < obj.length; i++) {
1063 result[i] = obj[i];
1064 }
1065 return result;
1066 }
1067 return Array.from(obj);
1068 }
1069 Object.defineProperty(BeautifulProperties, "__esModule", {
1070 value : true
1071 });
1072 var _TOOL2MODE;
1073 var _STRONG_SYS_ESCAPES;
1074 var _COMMENTS;
1075 var _typeMap;
1076 var opDef;
1077 var _pivot;
1078 var _BASE_SYS_ESCAPES;
1079 var InvalidInputException = function(e) {
1080 /**
1081 * @param {?} string
1082 * @return {?}
1083 */
1084 function t(string) {
1085 r(this, t);
1086 var a = o(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, string));
1087 return window.__stripeElementsController && window.__stripeElementsController.reportIntegrationError(string), a.name = "IntegrationError", Object.defineProperty(a, "message", {
1088 value : a.message,
1089 enumerable : true
1090 }), a;
1091 }
1092 return define(t, e), t;
1093 }(Error);
1094 var Date = InvalidInputException;
1095 /**
1096 * @param {!Object} var_args
1097 * @return {undefined}
1098 */
1099 var reject = function(var_args) {
1100 var lastErrorOutput = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "absurd";
1101 throw new Error(lastErrorOutput);
1102 };
1103 var __WEBPACK_IMPORTED_MODULE_1_jsmidgen__ = __webpack_require__(2);
1104 var node = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_jsmidgen__);
1105 var PouchPromise = window.Promise ? Promise : node.a;
1106 var Q = PouchPromise;
1107 /** @type {function(!Array, !Function): ?} */
1108 var setTimeout = ("function" == typeof Symbol && Symbol.iterator, function(content, cb) {
1109 /** @type {number} */
1110 var i = 0;
1111 for (; i < content.length; i++) {
1112 if (cb(content[i])) {
1113 return content[i];
1114 }
1115 }
1116 });
1117 /**
1118 * @param {!NodeList} array
1119 * @param {!Function} callback
1120 * @return {?}
1121 */
1122 var append = function(array, callback) {
1123 /** @type {number} */
1124 var i = 0;
1125 for (; i < array.length; i++) {
1126 if (callback(array[i])) {
1127 return i;
1128 }
1129 }
1130 return -1;
1131 };
1132 /**
1133 * @param {string} time
1134 * @param {!NodeList} keys
1135 * @return {?}
1136 */
1137 var getTime = function(time, keys) {
1138 var groups = {};
1139 /** @type {number} */
1140 var keyIndex = 0;
1141 for (; keyIndex < keys.length; keyIndex++) {
1142 /** @type {boolean} */
1143 groups[keys[keyIndex]] = true;
1144 }
1145 /** @type {!Array} */
1146 var now = [];
1147 /** @type {number} */
1148 var i = 0;
1149 for (; i < time.length; i++) {
1150 if (groups[time[i]]) {
1151 now.push(time[i]);
1152 }
1153 }
1154 return now;
1155 };
1156 /**
1157 * @param {!Array} options
1158 * @param {!Function} cb
1159 * @return {?}
1160 */
1161 var help = function(options, cb) {
1162 /** @type {number} */
1163 var i = 0;
1164 /**
1165 * @param {?} o
1166 * @return {undefined}
1167 */
1168 var done = function validate(o) {
1169 /** @type {number} */
1170 var extraTenMax = Date.now() + 50;
1171 for (; i < options.length && Date.now() < extraTenMax;) {
1172 cb(options[i]);
1173 i++;
1174 }
1175 if (i === options.length) {
1176 o();
1177 } else {
1178 setTimeout(function() {
1179 return validate(o);
1180 });
1181 }
1182 };
1183 return new Q(function(e) {
1184 return done(e);
1185 });
1186 };
1187 /** @type {!Array} */
1188 var cmdargs_template = ["aed", "afn", "all", "amd", "ang", "aoa", "ars", "aud", "awg", "azn", "bam", "bbd", "bdt", "bgn", "bhd", "bif", "bmd", "bnd", "bob", "brl", "bsd", "btn", "bwp", "byr", "bzd", "cad", "cdf", "chf", "clf", "clp", "cny", "cop", "crc", "cuc", "cup", "cve", "czk", "djf", "dkk", "dop", "dzd", "egp", "ern", "etb", "eur", "fjd", "fkp", "gbp", "gel", "ghs", "gip", "gmd", "gnf", "gtq", "gyd", "hkd", "hnl", "hrk", "htg", "huf", "idr", "ils", "inr", "iqd", "irr", "isk", "jmd", "jod",
1189 "jpy", "kes", "kgs", "khr", "kmf", "kpw", "krw", "kwd", "kyd", "kzt", "lak", "lbp", "lkr", "lrd", "lsl", "ltl", "lvl", "lyd", "mad", "mdl", "mga", "mkd", "mmk", "mnt", "mop", "mro", "mur", "mvr", "mwk", "mxn", "myr", "mzn", "nad", "ngn", "nio", "nok", "npr", "nzd", "omr", "pab", "pen", "pgk", "php", "pkr", "pln", "pyg", "qar", "ron", "rsd", "rub", "rwf", "sar", "sbd", "scr", "sdg", "sek", "sgd", "shp", "skk", "sll", "sos", "srd", "ssp", "std", "svc", "syp", "szl", "thb", "tjs", "tmt", "tnd", "top",
1190 "try", "ttd", "twd", "tzs", "uah", "ugx", "usd", "uyu", "uzs", "vef", "vnd", "vuv", "wst", "xaf", "xag", "xau", "xcd", "xdr", "xof", "xpf", "yer", "zar", "zmk", "zmw", "btc", "jep", "eek", "ghc", "mtl", "tmm", "yen", "zwd", "zwl", "zwn", "zwr"];
1191 /** @type {!Array} */
1192 var index = cmdargs_template;
1193 var logData = {
1194 AE : "AE",
1195 AT : "AT",
1196 AU : "AU",
1197 BE : "BE",
1198 BR : "BR",
1199 CA : "CA",
1200 CH : "CH",
1201 DE : "DE",
1202 DK : "DK",
1203 EE : "EE",
1204 ES : "ES",
1205 FI : "FI",
1206 FR : "FR",
1207 GB : "GB",
1208 GR : "GR",
1209 HK : "HK",
1210 IE : "IE",
1211 IN : "IN",
1212 IT : "IT",
1213 JP : "JP",
1214 LT : "LT",
1215 LU : "LU",
1216 LV : "LV",
1217 MX : "MX",
1218 MY : "MY",
1219 NL : "NL",
1220 NO : "NO",
1221 NZ : "NZ",
1222 PH : "PH",
1223 PL : "PL",
1224 PT : "PT",
1225 RO : "RO",
1226 SE : "SE",
1227 SG : "SG",
1228 SI : "SI",
1229 SK : "SK",
1230 US : "US"
1231 };
1232 /** @type {!Array<string>} */
1233 var folderFeeds = Object.keys(logData);
1234 var msg = {
1235 live : "live",
1236 test : "test",
1237 unknown : "unknown"
1238 };
1239 /**
1240 * @param {?} method
1241 * @return {?}
1242 */
1243 var wait = function(method) {
1244 return /^pk_test_/.test(method) ? msg.test : /^pk_live_/.test(method) ? msg.live : msg.unknown;
1245 };
1246 /**
1247 * @param {string} room_id
1248 * @return {undefined}
1249 */
1250 var convertValues = function(room_id) {
1251 if (room_id === msg.unknown) {
1252 throw new Date("It looks like you're using an older Stripe key. In order to use this API, you'll need to use a modern API key, which is prefixed with 'pk_live_' or 'pk_test_'.\n You can roll your publishable key here: https://dashboard.stripe.com/account/apikeys");
1253 }
1254 };
1255 /** @type {function(!Object, ...(Object|null)): !Object} */
1256 var assign = Object.assign || function(links) {
1257 /** @type {number} */
1258 var i = 1;
1259 for (; i < arguments.length; i++) {
1260 var match = arguments[i];
1261 var key;
1262 for (key in match) {
1263 if (Object.prototype.hasOwnProperty.call(match, key)) {
1264 links[key] = match[key];
1265 }
1266 }
1267 }
1268 return links;
1269 };
1270 /** @type {function(!Array): ?} */
1271 var toJSSource = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(lineStringProperty) {
1272 return typeof lineStringProperty;
1273 } : function(obj) {
1274 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
1275 };
1276 /**
1277 * @param {string} n
1278 * @param {string} s
1279 * @param {!Object} o
1280 * @return {?}
1281 */
1282 var print = function(n, s, o) {
1283 return "Invalid value for " + o.label + ": " + (o.path.join(".") || "value") + " should be " + n + ". You specified: " + s + ".";
1284 };
1285 /**
1286 * @param {!Object} object
1287 * @return {?}
1288 */
1289 var resolve = function(object) {
1290 return {
1291 type : "valid",
1292 value : object,
1293 warnings : arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []
1294 };
1295 };
1296 /**
1297 * @param {!Error} fn
1298 * @return {?}
1299 */
1300 var then = function(fn) {
1301 return {
1302 error : fn,
1303 errorType : "full",
1304 type : "error"
1305 };
1306 };
1307 /**
1308 * @param {string} s
1309 * @param {string} key
1310 * @param {!Object} obj
1311 * @return {?}
1312 */
1313 var replace = function(s, key, obj) {
1314 var next = new Date(print(s, key, obj));
1315 return then(next);
1316 };
1317 /**
1318 * @param {string} obj
1319 * @param {?} value
1320 * @param {!Object} object
1321 * @return {?}
1322 */
1323 var forOwn = function(obj, value, object) {
1324 return {
1325 expected : obj,
1326 actual : String(value),
1327 options : object,
1328 errorType : "mismatch",
1329 type : "error"
1330 };
1331 };
1332 /**
1333 * @param {!Function} value
1334 * @return {?}
1335 */
1336 var computed = function(value) {
1337 return function(model, name) {
1338 return void 0 === model ? resolve(model) : value(model, name);
1339 };
1340 };
1341 /**
1342 * @param {!Function} $
1343 * @param {!Function} handler
1344 * @return {?}
1345 */
1346 var create = function($, handler) {
1347 return function(a, data) {
1348 /**
1349 * @param {!Object} result
1350 * @return {?}
1351 */
1352 var parse = function(result) {
1353 var message = result.options.path.join(".") || "value";
1354 return {
1355 error : message + " should be " + result.expected,
1356 actual : message + " as " + result.actual
1357 };
1358 };
1359 /**
1360 * @param {string} msgTxt
1361 * @param {string} context
1362 * @param {string} object
1363 * @return {?}
1364 */
1365 var error = function(msgTxt, context, object) {
1366 return then(new Date("Invalid value for " + msgTxt + ": " + context + ". You specified " + object + "."));
1367 };
1368 var message = $(a, data);
1369 var result = handler(a, data);
1370 if ("error" === message.type && "error" === result.type) {
1371 if ("mismatch" === message.errorType && "mismatch" === result.errorType) {
1372 var record = parse(message);
1373 var offsetStart = record.error;
1374 var name = record.actual;
1375 var results = parse(result);
1376 var startOffset = results.error;
1377 var e = results.actual;
1378 return error(data.label, offsetStart === startOffset ? offsetStart : offsetStart + " or " + startOffset, name === e ? name : name + " and " + e);
1379 }
1380 if ("mismatch" === message.errorType) {
1381 var e = parse(message);
1382 var type = e.error;
1383 var actual = e.actual;
1384 return error(data.label, type, actual);
1385 }
1386 if ("mismatch" === result.errorType) {
1387 var res = parse(result);
1388 var callback = res.error;
1389 var actual = res.actual;
1390 return error(data.label, callback, actual);
1391 }
1392 return then(message.error);
1393 }
1394 return "valid" === message.type ? message : result;
1395 };
1396 };
1397 /**
1398 * @param {!Array} msg
1399 * @param {boolean} err
1400 * @return {?}
1401 */
1402 var each = function(msg, err) {
1403 return function(callback, obj) {
1404 var o = setTimeout(msg, function(force) {
1405 return force === callback;
1406 });
1407 if (void 0 === o) {
1408 var data = err ? "a recognized string." : "one of the following strings: " + msg.join(", ");
1409 return forOwn(data, callback, obj);
1410 }
1411 return resolve(o);
1412 };
1413 };
1414 /**
1415 * @param {string} str
1416 * @return {?}
1417 */
1418 var sanitize = function(str) {
1419 return function(value, obj) {
1420 return "string" == typeof value && 0 === value.indexOf(str) ? resolve(value) : forOwn("a string starting with " + str, value, obj);
1421 };
1422 };
1423 /**
1424 * @return {?}
1425 */
1426 var T = function() {
1427 /** @type {number} */
1428 var _len8 = arguments.length;
1429 /** @type {!Array} */
1430 var args = Array(_len8);
1431 /** @type {number} */
1432 var _key8 = 0;
1433 for (; _key8 < _len8; _key8++) {
1434 args[_key8] = arguments[_key8];
1435 }
1436 return each(args, false);
1437 };
1438 /**
1439 * @return {?}
1440 */
1441 var on = function() {
1442 /** @type {number} */
1443 var _len8 = arguments.length;
1444 /** @type {!Array} */
1445 var args = Array(_len8);
1446 /** @type {number} */
1447 var _key8 = 0;
1448 for (; _key8 < _len8; _key8++) {
1449 args[_key8] = arguments[_key8];
1450 }
1451 return each(args, true);
1452 };
1453 var country = T.apply(void 0, expect(folderFeeds));
1454 var asset = T.apply(void 0, expect(index));
1455 /** @type {function((Object|string), !Object): ?} */
1456 var id = (T.apply(void 0, expect(Object.keys(msg))), function(value, obj) {
1457 return "string" == typeof value ? resolve(value) : forOwn("a string", value, obj);
1458 });
1459 /**
1460 * @param {!Function} $
1461 * @param {!Function} callback
1462 * @return {?}
1463 */
1464 var traverse = function($, callback) {
1465 return function(string, data) {
1466 return void 0 === string ? resolve(callback()) : $(string, data);
1467 };
1468 };
1469 /**
1470 * @param {(Object|string)} val
1471 * @param {!Object} m
1472 * @return {?}
1473 */
1474 var month = function(val, m) {
1475 return "boolean" == typeof val ? resolve(val) : forOwn("a boolean", val, m);
1476 };
1477 /**
1478 * @param {(Object|string)} value
1479 * @param {!Object} obj
1480 * @return {?}
1481 */
1482 var omit = function(value, obj) {
1483 return "number" == typeof value ? resolve(value) : forOwn("a number", value, obj);
1484 };
1485 /**
1486 * @param {number} result
1487 * @return {?}
1488 */
1489 var first = function(result) {
1490 return function(value, obj) {
1491 return "number" == typeof value && value > result ? resolve(value) : forOwn("a number greater than " + result, value, obj);
1492 };
1493 };
1494 /**
1495 * @param {string} deep
1496 * @return {?}
1497 */
1498 var max = function(deep) {
1499 return function(value, obj) {
1500 return "number" == typeof value && value === parseInt(value, 10) && (!deep || value >= 0) ? resolve(value) : forOwn(deep ? "a positive amount in the currency's subunit" : "an amount in the currency's subunit", value, obj);
1501 };
1502 };
1503 /**
1504 * @param {?} e
1505 * @param {?} set
1506 * @return {?}
1507 */
1508 var sum = function(e, set) {
1509 return max(false)(e, set);
1510 };
1511 /**
1512 * @param {?} width
1513 * @param {?} e
1514 * @return {?}
1515 */
1516 var change = function(width, e) {
1517 return max(true)(width, e);
1518 };
1519 /**
1520 * @param {!Array} value
1521 * @param {!Object} obj
1522 * @return {?}
1523 */
1524 var array = function(value, obj) {
1525 return value && "object" === (void 0 === value ? "undefined" : toJSSource(value)) ? resolve(value) : forOwn("an object", value, obj);
1526 };
1527 /**
1528 * @param {!Function} callback
1529 * @return {?}
1530 */
1531 var all = function(callback) {
1532 return function(value, target) {
1533 if (Array.isArray(value)) {
1534 return value.map(function(identifierPositions, slackName) {
1535 return callback(identifierPositions, assign({}, target, {
1536 path : [].concat(expect(target.path), [String(slackName)])
1537 }));
1538 }).reduce(function(result, b) {
1539 return "error" === result.type ? result : "error" === b.type ? b : resolve([].concat(expect(result.value), [b.value]), [].concat(expect(result.warnings), expect(b.warnings)));
1540 }, resolve([]));
1541 }
1542 return forOwn("array", value, target);
1543 };
1544 };
1545 /**
1546 * @param {string} id
1547 * @return {?}
1548 */
1549 var generateBoundHandler = function(id) {
1550 return function(route) {
1551 return function(copy, ctx) {
1552 if (Array.isArray(copy)) {
1553 var result = route(copy, ctx);
1554 if ("valid" === result.type) {
1555 var premultRGBA = {};
1556 /** @type {number} */
1557 var i = 0;
1558 for (; i < result.value.length; i = i + 1) {
1559 var value = result.value[i];
1560 if ("object" === (void 0 === value ? "undefined" : toJSSource(value)) && value && "string" == typeof value[id]) {
1561 var i = value[id];
1562 if (premultRGBA[i]) {
1563 return then(new Date("Duplicate value for " + id + ": " + i + ". The property '" + id + "' of '" + ctx.path.join(".") + "' has to be unique."));
1564 }
1565 /** @type {boolean} */
1566 premultRGBA[i] = true;
1567 }
1568 }
1569 }
1570 return result;
1571 }
1572 return forOwn("array", copy, ctx);
1573 };
1574 };
1575 };
1576 /**
1577 * @param {string} failureType
1578 * @return {?}
1579 */
1580 var runTask = function(failureType) {
1581 return function(callback, obj) {
1582 return void 0 === callback ? resolve(void 0) : forOwn("used in " + failureType + " instead", callback, obj);
1583 };
1584 };
1585 /**
1586 * @param {boolean} a
1587 * @return {?}
1588 */
1589 var when = function(a) {
1590 return function(body) {
1591 return function(value, target) {
1592 if (value && "object" === (void 0 === value ? "undefined" : toJSSource(value)) && !Array.isArray(value)) {
1593 /** @type {!Array} */
1594 var d = value;
1595 var i = setTimeout(Object.keys(d), function(idxRow) {
1596 return !body[idxRow];
1597 });
1598 if (i && a) {
1599 return then(new Date("Invalid " + target.label + " parameter: " + [].concat(expect(target.path), [i]).join(".") + " is not an accepted parameter."));
1600 }
1601 /** @type {!Array<string>} */
1602 var c = Object.keys(d);
1603 var fn = resolve({});
1604 return i && (fn = c.reduce(function(result, n) {
1605 return body[n] ? result : resolve(result.value, [].concat(expect(result.warnings), ["Unrecognized " + target.label + " parameter: " + [].concat(expect(target.path), [n]).join(".") + " is not a recognized parameter. This may cause issues with your integration in the future."]));
1606 }, fn)), Object.keys(body).reduce(function(result, key) {
1607 if ("error" === result.type) {
1608 return result;
1609 }
1610 var callback = body[key];
1611 var out = callback(d[key], assign({}, target, {
1612 path : [].concat(expect(target.path), [key])
1613 }));
1614 return "valid" === out.type && void 0 !== out.value ? resolve(assign({}, result.value, defineReadonlyProperty({}, key, out.value)), [].concat(expect(result.warnings), expect(out.warnings))) : "valid" === out.type ? resolve(result.value, [].concat(expect(result.warnings), expect(out.warnings))) : out;
1615 }, fn);
1616 }
1617 return forOwn("an object", value, target);
1618 };
1619 };
1620 };
1621 var status = when(true);
1622 var test = when(false);
1623 /**
1624 * @param {!Function} callback
1625 * @param {!Function} obj
1626 * @param {string} val
1627 * @param {!Object} options
1628 * @return {?}
1629 */
1630 var set = function(callback, obj, val, options) {
1631 var o = options || {};
1632 var e = callback(obj, {
1633 origin : o.origin || "",
1634 element : o.element || "",
1635 label : val,
1636 path : []
1637 });
1638 return "valid" === e.type ? e : "full" === e.errorType ? e : {
1639 type : "error",
1640 errorType : "full",
1641 error : new Date(print(e.expected, e.actual, e.options))
1642 };
1643 };
1644 /**
1645 * @param {!Function} obj
1646 * @param {!Object} value
1647 * @param {string} text
1648 * @param {!Object} cb
1649 * @return {?}
1650 */
1651 var cb = function(obj, value, text, cb) {
1652 var result = set(obj, value, text, cb);
1653 switch(result.type) {
1654 case "valid":
1655 return {
1656 value : result.value,
1657 warnings : result.warnings
1658 };
1659 case "error":
1660 throw result.error;
1661 default:
1662 return reject(result);
1663 }
1664 };
1665 /** @type {!RegExp} */
1666 var rNum = /^(http(s)?):\/\//;
1667 /**
1668 * @param {!Object} val
1669 * @return {?}
1670 */
1671 var isString = function(val) {
1672 return rNum.test(val);
1673 };
1674 /**
1675 * @param {!Object} value
1676 * @return {?}
1677 */
1678 var parse = function(value) {
1679 if (!isString(value)) {
1680 return null;
1681 }
1682 /** @type {!Element} */
1683 var location = document.createElement("a");
1684 /** @type {!Object} */
1685 location.href = value;
1686 var protocol = location.protocol;
1687 var key = location.host;
1688 /** @type {!RegExp} */
1689 var o = /:80$/;
1690 /** @type {!RegExp} */
1691 var i = /:443$/;
1692 return "http:" === protocol && o.test(key) ? key = key.replace(o, "") : "https:" === protocol && i.test(key) && (key = key.replace(i, "")), {
1693 host : key,
1694 protocol : protocol,
1695 origin : protocol + "//" + key
1696 };
1697 };
1698 /**
1699 * @param {!Object} req
1700 * @return {?}
1701 */
1702 var open = function(req) {
1703 var host = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;
1704 var baseUri = parse(req);
1705 return !!baseUri && baseUri.host !== (host || window.location.host);
1706 };
1707 /**
1708 * @param {string} ctx
1709 * @param {string} f
1710 * @return {?}
1711 */
1712 var resolveHref = function(ctx, f) {
1713 if ("/" === f[0]) {
1714 var p = parse(ctx);
1715 return p ? "" + p.origin + f : f;
1716 }
1717 return "" + ctx.replace(/\/[^\/]*$/, "/") + f;
1718 };
1719 var vec__19941 = {
1720 CARD_ELEMENT : "CARD_ELEMENT",
1721 CONTROLLER : "CONTROLLER",
1722 METRICS_CONTROLLER : "METRICS_CONTROLLER",
1723 PAYMENT_REQUEST_ELEMENT : "PAYMENT_REQUEST_ELEMENT",
1724 PAYMENT_REQUEST_BROWSER : "PAYMENT_REQUEST_BROWSER",
1725 PAYMENT_REQUEST_GOOGLE_PAY : "PAYMENT_REQUEST_GOOGLE_PAY",
1726 IBAN_ELEMENT : "IBAN_ELEMENT",
1727 IDEAL_BANK_ELEMENT : "IDEAL_BANK_ELEMENT",
1728 AUTHORIZE_WITH_URL : "AUTHORIZE_WITH_URL",
1729 CARDINAL_3DS2 : "CARDINAL_3DS2",
1730 STRIPE_3DS2_CHALLENGE : "STRIPE_3DS2_CHALLENGE",
1731 STRIPE_3DS2_FINGERPRINT : "STRIPE_3DS2_FINGERPRINT",
1732 AU_BANK_ACCOUNT_ELEMENT : "AU_BANK_ACCOUNT_ELEMENT"
1733 };
1734 var e = vec__19941;
1735 /** @type {!Object} */
1736 var file = Object({
1737 NODE_ENV : "production",
1738 TEST_ENV : false,
1739 SELENIUM_TEST_ENV : false,
1740 PUBLIC_URL : "",
1741 RELEASE_VERSION : "f0a1c98a",
1742 STRIPE_JS_API_URL : "https://api.stripe.com/v1/",
1743 STRIPE_JS_HOOKS_URL : "https://hooks.stripe.com/",
1744 STRIPE_JS_ALLOW_MUTABLE_API_URL : false,
1745 STRIPE_JS_Q_URL : "https://q.stripe.com",
1746 STRIPE_JS_ROOT_URL : "https://js.stripe.com/v3/",
1747 STRIPE_CHECKOUT_URL : "https://checkout.stripe.com/",
1748 STRIPE_JS_SOURCEMAPS : false,
1749 STRIPE_JS_DEBUG_POSTMESSAGE : false,
1750 STRIPE_JS_DEBUG_LOGGER : true,
1751 CARDINAL_INNER_HTML_NAME : "cardinal-inner-fd76e8dd0648b683c082f9dc93c09565.html",
1752 THREE_DS_2_FINGERPRINT_HTML_NAME : "three-ds-2-fingerprint-6dd218bbcd9a37601d39e4a2207add7b.html",
1753 THREE_DS_2_CHALLENGE_HTML_NAME : "three-ds-2-challenge-81a842c7c08fb502f370be45f909f6bd.html",
1754 AUTHORIZE_WITH_URL_INNER_HTML_NAME : "authorize-with-url-inner-b55e45cb72c0e0bc377e1cb4c9373303.html",
1755 PAYMENT_REQUEST_INNER_GOOGLE_PAY_HTML_NAME : "payment-request-inner-google-pay-efe25bcb5362cf2472d47734f7718be1.html",
1756 PAYMENT_REQUEST_INNER_BROWSER_HTML_NAME : "payment-request-inner-browser-c6e2f33a101a6aa6f8fd16065ba79922.html",
1757 CONTROLLER_HTML_NAME : "controller-3b85837a871e6cc01f2329c46b49a404.html",
1758 RECAPTCHA_HTML_NAME : "recaptcha.html",
1759 ELEMENTS_INNER_FPX_BANK_HTML_NAME : "elements-inner-fpx-bank.html",
1760 ELEMENTS_INNER_AU_BANK_ACCOUNT_HTML_NAME : "elements-inner-au-bank-account-3bdb237d35bd964a803df0e22db88db3.html",
1761 ELEMENTS_INNER_PAYMENT_REQUEST_HTML_NAME : "elements-inner-payment-request-b3b967ee56fb6cc53f98b4e0f773808e.html",
1762 ELEMENTS_INNER_IDEAL_BANK_HTML_NAME : "elements-inner-ideal-bank-59271ccfb4eed2f912e560b8f426bc12.html",
1763 ELEMENTS_INNER_IBAN_HTML_NAME : "elements-inner-iban-f9d45d9f7fd2d6d0923306e5ee6b3b79.html",
1764 ELEMENTS_INNER_CARD_HTML_NAME : "elements-inner-card-9e5b4ba6a9105b462555f64c83be70b9.html",
1765 STRIPE_JS_NO_DEMOS : "1",
1766 STRIPE_JS_NO_REPORTS : "1"
1767 });
1768 /**
1769 * @param {string} salt
1770 * @return {?}
1771 */
1772 var evpBytesToKey = function(salt) {
1773 return "" + (file.STRIPE_JS_ROOT_URL || "") + (salt || "");
1774 };
1775 /**
1776 * @param {!Object} reason
1777 * @return {?}
1778 */
1779 var lib$rsvp$reject$$reject = function(reason) {
1780 switch(reason) {
1781 case "CARD_ELEMENT":
1782 return evpBytesToKey(file.ELEMENTS_INNER_CARD_HTML_NAME);
1783 case "CONTROLLER":
1784 return evpBytesToKey(file.CONTROLLER_HTML_NAME);
1785 case "METRICS_CONTROLLER":
1786 return "https://js.stripe.com/v2/m/outer.html";
1787 case "PAYMENT_REQUEST_ELEMENT":
1788 return evpBytesToKey(file.ELEMENTS_INNER_PAYMENT_REQUEST_HTML_NAME);
1789 case "PAYMENT_REQUEST_BROWSER":
1790 return evpBytesToKey(file.PAYMENT_REQUEST_INNER_BROWSER_HTML_NAME);
1791 case "PAYMENT_REQUEST_GOOGLE_PAY":
1792 return evpBytesToKey(file.PAYMENT_REQUEST_INNER_GOOGLE_PAY_HTML_NAME);
1793 case "IBAN_ELEMENT":
1794 return evpBytesToKey(file.ELEMENTS_INNER_IBAN_HTML_NAME);
1795 case "IDEAL_BANK_ELEMENT":
1796 return evpBytesToKey(file.ELEMENTS_INNER_IDEAL_BANK_HTML_NAME);
1797 case "AUTHORIZE_WITH_URL":
1798 return evpBytesToKey(file.AUTHORIZE_WITH_URL_INNER_HTML_NAME);
1799 case "CARDINAL_3DS2":
1800 return evpBytesToKey(file.CARDINAL_INNER_HTML_NAME);
1801 case "STRIPE_3DS2_CHALLENGE":
1802 return evpBytesToKey(file.THREE_DS_2_CHALLENGE_HTML_NAME);
1803 case "STRIPE_3DS2_FINGERPRINT":
1804 return evpBytesToKey(file.THREE_DS_2_FINGERPRINT_HTML_NAME);
1805 case "AU_BANK_ACCOUNT_ELEMENT":
1806 return evpBytesToKey(file.ELEMENTS_INNER_AU_BANK_ACCOUNT_HTML_NAME);
1807 default:
1808 return reject(reason);
1809 }
1810 };
1811 /** @type {function(!Object): ?} */
1812 var _path = lib$rsvp$reject$$reject;
1813 var propertyOptions = {
1814 card : "card",
1815 cardNumber : "cardNumber",
1816 cardExpiry : "cardExpiry",
1817 cardCvc : "cardCvc",
1818 postalCode : "postalCode",
1819 iban : "iban",
1820 idealBank : "idealBank",
1821 paymentRequestButton : "paymentRequestButton",
1822 auBankAccount : "auBankAccount",
1823 fpxBank : "fpxBank",
1824 idealBankSecondary : "idealBankSecondary",
1825 auBankAccountNumber : "auBankAccountNumber",
1826 auBsb : "auBsb",
1827 fpxBankSecondary : "fpxBankSecondary"
1828 };
1829 var opts = propertyOptions;
1830 var brian = {
1831 PAYMENT_INTENT : "PAYMENT_INTENT",
1832 SETUP_INTENT : "SETUP_INTENT"
1833 };
1834 var user = brian;
1835 /** @type {!Array} */
1836 var jt = [opts.card, opts.cardNumber, opts.cardExpiry, opts.cardCvc, opts.postalCode];
1837 /** @type {!Array} */
1838 var gulpExcludedPackages = jt;
1839 var err = parse("https://js.stripe.com/v3/");
1840 var str = err ? err.origin : "";
1841 var obj = {
1842 family : "font-family",
1843 src : "src",
1844 unicodeRange : "unicode-range",
1845 style : "font-style",
1846 variant : "font-variant",
1847 stretch : "font-stretch",
1848 weight : "font-weight",
1849 display : "font-display"
1850 };
1851 var nextIdLookup = Object.keys(obj).reduce(function(acc, key) {
1852 return acc[obj[key]] = key, acc;
1853 }, {});
1854 /** @type {!Array} */
1855 var related_node_ids = [opts.idealBank, opts.idealBankSecondary, opts.fpxBank, opts.fpxBankSecondary];
1856 /** @type {number} */
1857 var sId = 0;
1858 /**
1859 * @param {string} root
1860 * @return {?}
1861 */
1862 var unique = function(root) {
1863 return "" + root + sId++;
1864 };
1865 /**
1866 * @return {?}
1867 */
1868 var shimMochaProcess = function f() {
1869 var indx_action_0 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
1870 return indx_action_0 ? (parseInt(indx_action_0, 10) ^ 16 * Math.random() >> parseInt(indx_action_0, 10) / 4).toString(16) : "00000000-0000-4000-8000-000000000000".replace(/[08]/g, f);
1871 };
1872 /** @type {function(?): ?} */
1873 var isNull = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(lineStringProperty) {
1874 return typeof lineStringProperty;
1875 } : function(obj) {
1876 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
1877 };
1878 /**
1879 * @param {!Object} val
1880 * @param {string} r
1881 * @return {?}
1882 */
1883 var ActiveXObject = function normalize(val, r) {
1884 /** @type {!Array} */
1885 var e = [];
1886 return Object.keys(val).forEach(function(s) {
1887 var value = val[s];
1888 /** @type {string} */
1889 var p = r ? r + "[" + s + "]" : s;
1890 if (value && "object" === (void 0 === value ? "undefined" : isNull(value))) {
1891 var val = normalize(value, p);
1892 if ("" !== val) {
1893 /** @type {!Array<?>} */
1894 e = [].concat(clone(e), [val]);
1895 }
1896 } else {
1897 if (void 0 !== value && null !== value) {
1898 /** @type {!Array<?>} */
1899 e = [].concat(clone(e), [p + "=" + encodeURIComponent(String(value))]);
1900 }
1901 }
1902 }), e.join("&").replace(/%20/g, "+");
1903 };
1904 /** @type {function(!Object, string): ?} */
1905 var _ = ActiveXObject;
1906 var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(6);
1907 var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);
1908 var elementUnderCursor = function() {
1909 /**
1910 * @param {?} options
1911 * @param {number} index
1912 * @return {?}
1913 */
1914 function flattenElements(options, index) {
1915 /** @type {!Array} */
1916 var result = [];
1917 /** @type {boolean} */
1918 var _iteratorNormalCompletion3 = true;
1919 /** @type {boolean} */
1920 var o = false;
1921 var i = void 0;
1922 try {
1923 var info;
1924 var _iterator3 = options[Symbol.iterator]();
1925 for (; !(_iteratorNormalCompletion3 = (info = _iterator3.next()).done) && (result.push(info.value), !index || result.length !== index); _iteratorNormalCompletion3 = true) {
1926 }
1927 } catch (contactCapacity) {
1928 /** @type {boolean} */
1929 o = true;
1930 i = contactCapacity;
1931 } finally {
1932 try {
1933 if (!_iteratorNormalCompletion3 && _iterator3.return) {
1934 _iterator3.return();
1935 }
1936 } finally {
1937 if (o) {
1938 throw i;
1939 }
1940 }
1941 }
1942 return result;
1943 }
1944 return function(arr, options) {
1945 if (Array.isArray(arr)) {
1946 return arr;
1947 }
1948 if (Symbol.iterator in Object(arr)) {
1949 return flattenElements(arr, options);
1950 }
1951 throw new TypeError("Invalid attempt to destructure non-iterable instance");
1952 };
1953 }();
1954 /**
1955 * @param {!Object} e
1956 * @param {!Array} result
1957 * @return {undefined}
1958 */
1959 var _init = function(e, result) {
1960 var commenters = {};
1961 result.forEach(function(e) {
1962 var target = elementUnderCursor(e, 2);
1963 var href = target[0];
1964 var opts = target[1];
1965 href.split(/\s+/).forEach(function(upvoter) {
1966 if (upvoter) {
1967 commenters[upvoter] = commenters[upvoter] || opts;
1968 }
1969 });
1970 });
1971 e.className = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.className, commenters);
1972 };
1973 /**
1974 * @param {!Element} obj
1975 * @param {!Object} arr
1976 * @return {undefined}
1977 */
1978 var callback = function(obj, arr) {
1979 /** @type {string} */
1980 obj.style.cssText = Object.keys(arr).map(function(i) {
1981 return i + ": " + arr[i] + " !important;";
1982 }).join(" ");
1983 };
1984 /**
1985 * @param {string} num
1986 * @return {?}
1987 */
1988 var fun = function(num) {
1989 try {
1990 return window.parent.frames[num];
1991 } catch (e) {
1992 return null;
1993 }
1994 };
1995 /**
1996 * @param {!Function} cb
1997 * @return {?}
1998 */
1999 var toggle = function(cb) {
2000 if (!document.body) {
2001 throw new Date("Stripe.js requires that your page has a <body> element.");
2002 }
2003 return cb(document.body);
2004 };
2005 /** @type {function(!Object, ...(Object|null)): !Object} */
2006 var allRegisteredPeers = Object.assign || function(links) {
2007 /** @type {number} */
2008 var i = 1;
2009 for (; i < arguments.length; i++) {
2010 var match = arguments[i];
2011 var key;
2012 for (key in match) {
2013 if (Object.prototype.hasOwnProperty.call(match, key)) {
2014 links[key] = match[key];
2015 }
2016 }
2017 }
2018 return links;
2019 };
2020 /**
2021 * @param {!Object} obj
2022 * @return {undefined}
2023 */
2024 var watch = function(obj) {
2025 var i = obj.frameId;
2026 var n = obj.controllerId;
2027 var undefined = obj.type;
2028 var key = str;
2029 var result = void 0;
2030 if ("controller" === undefined) {
2031 result = fun(i);
2032 } else {
2033 if ("group" === undefined) {
2034 result = fun(n);
2035 } else {
2036 if ("outer" === undefined) {
2037 result = window.frames[i];
2038 } else {
2039 if ("inner" === undefined) {
2040 /** @type {string} */
2041 key = "*";
2042 /** @type {!Window} */
2043 result = window.parent;
2044 }
2045 }
2046 }
2047 }
2048 if (result) {
2049 result.postMessage(JSON.stringify(allRegisteredPeers({}, obj, {
2050 __stripeJsV3 : true
2051 })), key);
2052 }
2053 };
2054 /**
2055 * @param {?} id
2056 * @return {?}
2057 */
2058 var formatError = function(id) {
2059 try {
2060 /** @type {*} */
2061 var el = "string" == typeof id ? JSON.parse(id) : id;
2062 return el.__stripeJsV3 ? el : null;
2063 } catch (e) {
2064 return null;
2065 }
2066 };
2067 /** @type {function(!Error, !Object): undefined} */
2068 var onerror = (__webpack_require__(7), function(e, self) {
2069 var n = e._isUserError || "IntegrationError" === e.name;
2070 throw self && !n && self.report("fatal.uncaught_error", {
2071 iframe : false,
2072 name : e.name,
2073 element : "outer",
2074 message : e.message || e.description,
2075 fileName : e.fileName,
2076 lineNumber : e.lineNumber,
2077 columnNumber : e.columnNumber,
2078 stack : e.stack && e.stack.substring(0, 1E3)
2079 }), e;
2080 });
2081 /**
2082 * @param {!Function} process
2083 * @param {(Object|string)} truthy
2084 * @return {?}
2085 */
2086 var passTruthyFalsey = function(process, truthy) {
2087 return function() {
2088 try {
2089 return process.call(this);
2090 } catch (e) {
2091 return onerror(e, truthy || this && this._controller);
2092 }
2093 };
2094 };
2095 /**
2096 * @param {!Function} fn
2097 * @param {!Object} me
2098 * @return {?}
2099 */
2100 var __bind = function(fn, me) {
2101 return function(event) {
2102 try {
2103 return fn.call(this, event);
2104 } catch (e) {
2105 return onerror(e, me || this && this._controller);
2106 }
2107 };
2108 };
2109 /**
2110 * @param {!Function} e
2111 * @param {!Object} devices
2112 * @return {?}
2113 */
2114 var call = function(e, devices) {
2115 return function(change, b) {
2116 try {
2117 return e.call(this, change, b);
2118 } catch (e) {
2119 return onerror(e, devices || this && this._controller);
2120 }
2121 };
2122 };
2123 /**
2124 * @param {!Function} fn
2125 * @param {!Object} errorCode
2126 * @return {?}
2127 */
2128 var require = function(fn, errorCode) {
2129 return function(event, elem, yTmp) {
2130 try {
2131 return fn.call(this, event, elem, yTmp);
2132 } catch (e) {
2133 return onerror(e, errorCode || this && this._controller);
2134 }
2135 };
2136 };
2137 /**
2138 * @param {!Function} _ref
2139 * @param {!Object} endOnly
2140 * @return {?}
2141 */
2142 var avoidReentry = function(_ref, endOnly) {
2143 return function() {
2144 try {
2145 /** @type {number} */
2146 var _len2 = arguments.length;
2147 /** @type {!Array} */
2148 var args = Array(_len2);
2149 /** @type {number} */
2150 var _key2 = 0;
2151 for (; _key2 < _len2; _key2++) {
2152 args[_key2] = arguments[_key2];
2153 }
2154 return _ref.call.apply(_ref, [this].concat(args));
2155 } catch (e) {
2156 return onerror(e, endOnly || this && this._controller);
2157 }
2158 };
2159 };
2160 /**
2161 * @return {undefined}
2162 */
2163 var un = function EventEmitter() {
2164 var self = this;
2165 addListener(this, EventEmitter);
2166 /**
2167 * @param {string} event
2168 * @return {?}
2169 */
2170 this._emit = function(event) {
2171 /** @type {number} */
2172 var length = arguments.length;
2173 /** @type {!Array} */
2174 var a = Array(length > 1 ? length - 1 : 0);
2175 /** @type {number} */
2176 var i = 1;
2177 for (; i < length; i++) {
2178 a[i - 1] = arguments[i];
2179 }
2180 return (self._callbacks[event] || []).forEach(function(movieData) {
2181 var name = movieData.fn;
2182 if (name._isUserCallback) {
2183 try {
2184 name.apply(void 0, a);
2185 } catch (e) {
2186 throw e._isUserError = true, e;
2187 }
2188 } else {
2189 name.apply(void 0, a);
2190 }
2191 }), self;
2192 };
2193 /**
2194 * @param {string} fn
2195 * @param {!Function} event
2196 * @return {?}
2197 */
2198 this._once = function(fn, event) {
2199 /**
2200 * @return {undefined}
2201 */
2202 var handler = function finish() {
2203 self._off(fn, finish);
2204 event.apply(void 0, arguments);
2205 };
2206 return self._on(fn, handler, event);
2207 };
2208 /**
2209 * @return {?}
2210 */
2211 this._removeAllListeners = function() {
2212 return self._callbacks = {}, self;
2213 };
2214 /**
2215 * @param {string} name
2216 * @param {!Function} handler
2217 * @param {!Function} event
2218 * @return {?}
2219 */
2220 this._on = function(name, handler, event) {
2221 return self._callbacks[name] = self._callbacks[name] || [], self._callbacks[name].push({
2222 original : event,
2223 fn : handler
2224 }), self;
2225 };
2226 /**
2227 * @param {string} mql
2228 * @param {!Function} listener
2229 * @return {undefined}
2230 */
2231 this._validateUserOn = function(mql, listener) {
2232 };
2233 /**
2234 * @param {string} fn
2235 * @param {!Function} cb
2236 * @return {?}
2237 */
2238 this._userOn = function(fn, cb) {
2239 if ("string" != typeof fn) {
2240 throw new Date("When adding an event listener, the first argument should be a string event name.");
2241 }
2242 if ("function" != typeof cb) {
2243 throw new Date("When adding an event listener, the second argument should be a function callback.");
2244 }
2245 return self._validateUserOn(fn, cb), cb._isUserCallback = true, self._on(fn, cb);
2246 };
2247 /**
2248 * @param {string} name
2249 * @return {?}
2250 */
2251 this._hasRegisteredListener = function(name) {
2252 return self._callbacks[name] && self._callbacks[name].length > 0;
2253 };
2254 /**
2255 * @param {string} name
2256 * @param {!Function} callback
2257 * @return {?}
2258 */
2259 this._off = function(name, callback) {
2260 if (callback) {
2261 var calls = self._callbacks[name];
2262 var node = void 0;
2263 /** @type {number} */
2264 var i = 0;
2265 for (; i < calls.length; i++) {
2266 if (node = calls[i], node.fn === callback || node.original === callback) {
2267 calls.splice(i, 1);
2268 break;
2269 }
2270 }
2271 } else {
2272 delete self._callbacks[name];
2273 }
2274 return self;
2275 };
2276 this._callbacks = {};
2277 var addEventListenerSpy = call(this._userOn);
2278 var removeEventListener = call(this._off);
2279 var once = call(this._once);
2280 var onKeyPress = __bind(this._hasRegisteredListener);
2281 var onLoad = __bind(this._removeAllListeners);
2282 var emitMessagePacket = avoidReentry(this._emit);
2283 this.on = this.addListener = this.addEventListener = addEventListenerSpy;
2284 this.off = this.removeListener = this.removeEventListener = removeEventListener;
2285 this.once = once;
2286 this.hasRegisteredListener = onKeyPress;
2287 this.removeAllListeners = onLoad;
2288 this.emit = emitMessagePacket;
2289 };
2290 /** @type {function(): undefined} */
2291 var BaseMask = un;
2292 /** @type {function(!Object, ...(Object|null)): !Object} */
2293 var read = Object.assign || function(links) {
2294 /** @type {number} */
2295 var i = 1;
2296 for (; i < arguments.length; i++) {
2297 var match = arguments[i];
2298 var key;
2299 for (key in match) {
2300 if (Object.prototype.hasOwnProperty.call(match, key)) {
2301 links[key] = match[key];
2302 }
2303 }
2304 }
2305 return links;
2306 };
2307 var expandThumbnail = function() {
2308 /**
2309 * @param {!Function} d
2310 * @param {string} props
2311 * @return {undefined}
2312 */
2313 function t(d, props) {
2314 /** @type {number} */
2315 var i = 0;
2316 for (; i < props.length; i++) {
2317 var descriptor = props[i];
2318 descriptor.enumerable = descriptor.enumerable || false;
2319 /** @type {boolean} */
2320 descriptor.configurable = true;
2321 if ("value" in descriptor) {
2322 /** @type {boolean} */
2323 descriptor.writable = true;
2324 }
2325 Object.defineProperty(d, descriptor.key, descriptor);
2326 }
2327 }
2328 return function(p, n, a) {
2329 return n && t(p.prototype, n), a && t(p, a), p;
2330 };
2331 }();
2332 var RegExpMask = function(e) {
2333 /**
2334 * @param {!Object} info
2335 * @param {?} xy
2336 * @param {?} selector
2337 * @return {?}
2338 */
2339 function t(info, xy, selector) {
2340 p(this, t);
2341 var self = isFunction(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this));
2342 return self._sendFAReq = function(node) {
2343 var id = unique(node.tag);
2344 return new Q(function(n, reject) {
2345 self._requests[id] = {
2346 resolve : n,
2347 reject : reject
2348 };
2349 self._send({
2350 message : {
2351 action : "stripe-frame-action",
2352 payload : {
2353 nonce : id,
2354 faReq : node
2355 }
2356 },
2357 type : "outer",
2358 frameId : self.id,
2359 controllerId : self._controllerId
2360 });
2361 });
2362 }, self.action = {
2363 perform3DS2Challenge : function(command_module_id) {
2364 return self._sendFAReq({
2365 tag : "PERFORM_3DS2_CHALLENGE",
2366 value : command_module_id
2367 });
2368 },
2369 perform3DS2Fingerprint : function(e) {
2370 return self._sendFAReq({
2371 tag : "PERFORM_3DS2_FINGERPRINT",
2372 value : e
2373 });
2374 },
2375 show3DS2Spinner : function(e) {
2376 return self._sendFAReq({
2377 tag : "SHOW_3DS2_SPINNER",
2378 value : e
2379 });
2380 },
2381 performCardinal3DS2 : function(testObj) {
2382 return self._sendFAReq({
2383 tag : "PERFORM_CARDINAL_3DS2",
2384 value : testObj
2385 });
2386 },
2387 checkCanMakePayment : function(command_module_id) {
2388 return self._sendFAReq({
2389 tag : "CHECK_CAN_MAKE_PAYMENT",
2390 value : command_module_id
2391 });
2392 }
2393 }, self.type = info, self.loaded = false, self._controllerId = xy, self._persistentMessages = [], self._queuedMessages = [], self._requests = {}, self.id = self._generateId(), self._iframe = self._createIFrame(selector), self._on("load", function() {
2394 /** @type {boolean} */
2395 self.loaded = true;
2396 self._ensureMounted();
2397 if (self.loaded) {
2398 self._persistentMessages.forEach(function(event) {
2399 return self._send(event);
2400 });
2401 self._queuedMessages.forEach(function(event) {
2402 return self._send(event);
2403 });
2404 /** @type {!Array} */
2405 self._queuedMessages = [];
2406 }
2407 }), self;
2408 }
2409 return copy(t, e), expandThumbnail(t, [{
2410 key : "_generateId",
2411 value : function() {
2412 return unique("__privateStripeFrame");
2413 }
2414 }, {
2415 key : "send",
2416 value : function(name) {
2417 this._send({
2418 message : name,
2419 type : "outer",
2420 frameId : this.id,
2421 controllerId : this._controllerId
2422 });
2423 }
2424 }, {
2425 key : "sendPersistent",
2426 value : function(name) {
2427 this._ensureMounted();
2428 var options = {
2429 message : name,
2430 type : "outer",
2431 frameId : this.id,
2432 controllerId : this._controllerId
2433 };
2434 /** @type {!Array<?>} */
2435 this._persistentMessages = [].concat(range(this._persistentMessages), [options]);
2436 if (this.loaded) {
2437 watch(options);
2438 }
2439 }
2440 }, {
2441 key : "resolve",
2442 value : function(i, t) {
2443 if (this._requests[i]) {
2444 this._requests[i].resolve(t);
2445 }
2446 }
2447 }, {
2448 key : "reject",
2449 value : function(key, counter) {
2450 if (this._requests[key]) {
2451 this._requests[key].reject(counter);
2452 }
2453 }
2454 }, {
2455 key : "_send",
2456 value : function(value) {
2457 this._ensureMounted();
2458 if (this.loaded) {
2459 watch(value);
2460 } else {
2461 /** @type {!Array<?>} */
2462 this._queuedMessages = [].concat(range(this._queuedMessages), [value]);
2463 }
2464 }
2465 }, {
2466 key : "appendTo",
2467 value : function(name) {
2468 name.appendChild(this._iframe);
2469 }
2470 }, {
2471 key : "unmount",
2472 value : function() {
2473 /** @type {boolean} */
2474 this.loaded = false;
2475 this._emit("unload");
2476 }
2477 }, {
2478 key : "destroy",
2479 value : function() {
2480 this.unmount();
2481 var win = this._iframe.parentElement;
2482 if (win) {
2483 win.removeChild(this._iframe);
2484 }
2485 this._emit("destroy");
2486 }
2487 }, {
2488 key : "_ensureMounted",
2489 value : function() {
2490 if (!this._isMounted()) {
2491 this.unmount();
2492 }
2493 }
2494 }, {
2495 key : "_isMounted",
2496 value : function() {
2497 return !!document.body && document.body.contains(this._iframe);
2498 }
2499 }, {
2500 key : "_createIFrame",
2501 value : function(options) {
2502 /** @type {string} */
2503 var type = window.location.href.toString();
2504 var ui = parse(type);
2505 var origin = ui ? ui.origin : "";
2506 var name = options.queryString && "string" == typeof options.queryString ? options.queryString : _(read({}, options, {
2507 origin : origin,
2508 referrer : type,
2509 controllerId : this._controllerId
2510 }));
2511 /** @type {!Element} */
2512 var node = document.createElement("iframe");
2513 return node.setAttribute("frameborder", "0"), node.setAttribute("allowTransparency", "true"), node.setAttribute("scrolling", "no"), node.setAttribute("name", this.id), node.setAttribute("allowpaymentrequest", "true"), node.src = _path(this.type) + "#" + name, node;
2514 }
2515 }]), t;
2516 }(BaseMask);
2517 var ObjectProto = RegExpMask;
2518 var styleObj = function() {
2519 /**
2520 * @param {!Function} d
2521 * @param {string} props
2522 * @return {undefined}
2523 */
2524 function t(d, props) {
2525 /** @type {number} */
2526 var i = 0;
2527 for (; i < props.length; i++) {
2528 var descriptor = props[i];
2529 descriptor.enumerable = descriptor.enumerable || false;
2530 /** @type {boolean} */
2531 descriptor.configurable = true;
2532 if ("value" in descriptor) {
2533 /** @type {boolean} */
2534 descriptor.writable = true;
2535 }
2536 Object.defineProperty(d, descriptor.key, descriptor);
2537 }
2538 }
2539 return function(p, n, a) {
2540 return n && t(p.prototype, n), a && t(p, a), p;
2541 };
2542 }();
2543 /**
2544 * @param {!Object} object
2545 * @param {string} x
2546 * @param {?} y
2547 * @return {?}
2548 */
2549 var spinnerModifer = function text(object, x, y) {
2550 if (null === object) {
2551 object = Function.prototype;
2552 }
2553 /** @type {(ObjectPropertyDescriptor<?>|undefined)} */
2554 var result = Object.getOwnPropertyDescriptor(object, x);
2555 if (void 0 === result) {
2556 /** @type {(Object|null)} */
2557 var p = Object.getPrototypeOf(object);
2558 return null === p ? void 0 : text(p, x, y);
2559 }
2560 if ("value" in result) {
2561 return result.value;
2562 }
2563 /** @type {(function(): ?|undefined)} */
2564 var params = result.get;
2565 if (void 0 !== params) {
2566 return params.call(y);
2567 }
2568 };
2569 var options = {
2570 border : "none",
2571 margin : "0",
2572 padding : "0",
2573 width : "1px",
2574 "min-width" : "100%",
2575 overflow : "hidden",
2576 display : "block",
2577 visibility : "hidden",
2578 position : "fixed",
2579 height : "1px",
2580 "pointer-events" : "none",
2581 "user-select" : "none"
2582 };
2583 var protoDesc = function(obj) {
2584 /**
2585 * @param {?} settings
2586 * @param {?} context
2587 * @param {!Object} params
2588 * @return {?}
2589 */
2590 function Dialog(settings, context, params) {
2591 classCallCheck(this, Dialog);
2592 var _this = possibleConstructorReturn(this, (Dialog.__proto__ || Object.getPrototypeOf(Dialog)).call(this, settings, context, params));
2593 if (_this.autoload = params.autoload || false, "complete" === document.readyState) {
2594 _this._ensureMounted();
2595 } else {
2596 var f = _this._ensureMounted.bind(_this);
2597 document.addEventListener("DOMContentLoaded", f);
2598 window.addEventListener("load", f);
2599 setTimeout(f, 5E3);
2600 }
2601 return _this;
2602 }
2603 return createClass(Dialog, obj), styleObj(Dialog, [{
2604 key : "_ensureMounted",
2605 value : function() {
2606 spinnerModifer(Dialog.prototype.__proto__ || Object.getPrototypeOf(Dialog.prototype), "_ensureMounted", this).call(this);
2607 if (!this._isMounted()) {
2608 this._autoMount();
2609 }
2610 }
2611 }, {
2612 key : "_autoMount",
2613 value : function() {
2614 if (document.body) {
2615 this.appendTo(document.body);
2616 } else {
2617 if ("complete" === document.readyState || "interactive" === document.readyState) {
2618 throw new Date("Stripe.js requires that your page has a <body> element.");
2619 }
2620 }
2621 if (this.autoload) {
2622 /** @type {boolean} */
2623 this.loaded = true;
2624 }
2625 }
2626 }, {
2627 key : "_createIFrame",
2628 value : function(props) {
2629 var element = spinnerModifer(Dialog.prototype.__proto__ || Object.getPrototypeOf(Dialog.prototype), "_createIFrame", this).call(this, props);
2630 return element.setAttribute("aria-hidden", "true"), element.setAttribute("allowpaymentrequest", "true"), element.setAttribute("tabIndex", "-1"), callback(element, options), element;
2631 }
2632 }]), Dialog;
2633 }(ObjectProto);
2634 var Buffer = protoDesc;
2635 var _createClass = function() {
2636 /**
2637 * @param {!Function} d
2638 * @param {string} props
2639 * @return {undefined}
2640 */
2641 function t(d, props) {
2642 /** @type {number} */
2643 var i = 0;
2644 for (; i < props.length; i++) {
2645 var descriptor = props[i];
2646 descriptor.enumerable = descriptor.enumerable || false;
2647 /** @type {boolean} */
2648 descriptor.configurable = true;
2649 if ("value" in descriptor) {
2650 /** @type {boolean} */
2651 descriptor.writable = true;
2652 }
2653 Object.defineProperty(d, descriptor.key, descriptor);
2654 }
2655 }
2656 return function(p, n, a) {
2657 return n && t(p.prototype, n), a && t(p, a), p;
2658 };
2659 }();
2660 var Test = function(_EventEmitter) {
2661 /**
2662 * @return {?}
2663 */
2664 function Agent() {
2665 return _classCallCheck(this, Agent), keys(this, (Agent.__proto__ || Object.getPrototypeOf(Agent)).apply(this, arguments));
2666 }
2667 return _inherits(Agent, _EventEmitter), _createClass(Agent, [{
2668 key : "_generateId",
2669 value : function() {
2670 return this._controllerId;
2671 }
2672 }]), Agent;
2673 }(Buffer);
2674 var RangeError = Test;
2675 var explorerObject = function() {
2676 /**
2677 * @param {!Function} d
2678 * @param {string} props
2679 * @return {undefined}
2680 */
2681 function t(d, props) {
2682 /** @type {number} */
2683 var i = 0;
2684 for (; i < props.length; i++) {
2685 var descriptor = props[i];
2686 descriptor.enumerable = descriptor.enumerable || false;
2687 /** @type {boolean} */
2688 descriptor.configurable = true;
2689 if ("value" in descriptor) {
2690 /** @type {boolean} */
2691 descriptor.writable = true;
2692 }
2693 Object.defineProperty(d, descriptor.key, descriptor);
2694 }
2695 }
2696 return function(p, n, a) {
2697 return n && t(p.prototype, n), a && t(p, a), p;
2698 };
2699 }();
2700 /**
2701 * @param {!Object} object
2702 * @param {string} x
2703 * @param {?} y
2704 * @return {?}
2705 */
2706 var getter = function text(object, x, y) {
2707 if (null === object) {
2708 object = Function.prototype;
2709 }
2710 /** @type {(ObjectPropertyDescriptor<?>|undefined)} */
2711 var result = Object.getOwnPropertyDescriptor(object, x);
2712 if (void 0 === result) {
2713 /** @type {(Object|null)} */
2714 var p = Object.getPrototypeOf(object);
2715 return null === p ? void 0 : text(p, x, y);
2716 }
2717 if ("value" in result) {
2718 return result.value;
2719 }
2720 /** @type {(function(): ?|undefined)} */
2721 var params = result.get;
2722 if (void 0 !== params) {
2723 return params.call(y);
2724 }
2725 };
2726 var css = {
2727 border : "none",
2728 margin : "0",
2729 padding : "0",
2730 width : "1px",
2731 "min-width" : "100%",
2732 overflow : "hidden",
2733 display : "block",
2734 "user-select" : "none"
2735 };
2736 var core_Class = function(base) {
2737 /**
2738 * @return {?}
2739 */
2740 function e() {
2741 return emit(this, e), toString(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
2742 }
2743 return inherit(e, base), explorerObject(e, [{
2744 key : "update",
2745 value : function(width) {
2746 this.send({
2747 action : "stripe-user-update",
2748 payload : width
2749 });
2750 }
2751 }, {
2752 key : "updateStyle",
2753 value : function(reply) {
2754 var popup = this;
2755 Object.keys(reply).forEach(function(replyProp) {
2756 popup._iframe.style[replyProp] = reply[replyProp];
2757 });
2758 }
2759 }, {
2760 key : "focus",
2761 value : function() {
2762 if (this.loaded) {
2763 this.send({
2764 action : "stripe-user-focus",
2765 payload : {}
2766 });
2767 }
2768 }
2769 }, {
2770 key : "blur",
2771 value : function() {
2772 if (this.loaded) {
2773 this._iframe.contentWindow.blur();
2774 this._iframe.blur();
2775 }
2776 }
2777 }, {
2778 key : "clear",
2779 value : function() {
2780 this.send({
2781 action : "stripe-user-clear",
2782 payload : {}
2783 });
2784 }
2785 }, {
2786 key : "_createIFrame",
2787 value : function(size) {
2788 var d = getter(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_createIFrame", this).call(this, size);
2789 return d.setAttribute("title", "Secure payment input frame"), callback(d, css), d;
2790 }
2791 }]), e;
2792 }(ObjectProto);
2793 var Class = core_Class;
2794 /**
2795 * @param {!Function} value
2796 * @param {?} expiredTo
2797 * @return {?}
2798 */
2799 var select = function(value, expiredTo) {
2800 /** @type {boolean} */
2801 var heightInner = false;
2802 return function() {
2803 if (heightInner) {
2804 throw new Date(expiredTo);
2805 }
2806 /** @type {boolean} */
2807 heightInner = true;
2808 try {
2809 return value.apply(void 0, arguments).then(function(string) {
2810 return heightInner = false, string;
2811 }, function(string) {
2812 throw heightInner = false, string;
2813 });
2814 } catch (string) {
2815 throw heightInner = false, string;
2816 }
2817 };
2818 };
2819 /**
2820 * @param {!Function} first
2821 * @return {?}
2822 */
2823 var one = function(first) {
2824 /** @type {!Function} */
2825 var f = first;
2826 return function() {
2827 if (f) {
2828 f.apply(void 0, arguments);
2829 /** @type {null} */
2830 f = null;
2831 }
2832 };
2833 };
2834 /**
2835 * @return {?}
2836 */
2837 var resize = function() {
2838 return toggle(function(elem) {
2839 var options = elem.style;
2840 var cachedDOMPosition = options.position;
2841 var top = options.top;
2842 var left = options.left;
2843 var bottom = options.bottom;
2844 var r = options.right;
2845 var overflow = options.overflow;
2846 /** @type {!Window} */
2847 var self = window;
2848 /** @type {number} */
2849 var scrollLeft = self.pageXOffset;
2850 /** @type {number} */
2851 var scrollTop = self.pageYOffset;
2852 /** @type {number} */
2853 var right = document.documentElement ? window.innerWidth - document.documentElement.offsetWidth : 0;
2854 /** @type {number} */
2855 var scroll = document.documentElement ? window.innerHeight - document.documentElement.offsetHeight : 0;
2856 return elem.style.position = "fixed", elem.style.overflow = "hidden", elem.style.top = -scrollTop + "px", elem.style.left = -scrollLeft + "px", elem.style.right = right + "px", elem.style.bottom = scroll + "px", one(function() {
2857 elem.style.position = cachedDOMPosition;
2858 elem.style.top = top;
2859 elem.style.left = left;
2860 elem.style.bottom = bottom;
2861 elem.style.right = r;
2862 elem.style.overflow = overflow;
2863 window.scrollTo(scrollLeft, scrollTop);
2864 });
2865 });
2866 };
2867 /**
2868 * @param {!Node} window
2869 * @param {string} name
2870 * @return {?}
2871 */
2872 var attach = function(window, name) {
2873 /** @type {!Array<?>} */
2874 var letters = Array.prototype.slice.call(document.querySelectorAll("a[href], area[href], input:not([disabled]),\n select:not([disabled]), textarea:not([disabled]), button:not([disabled]),\n object, embed, *[tabindex], *[contenteditable]")).filter(function(selectEl) {
2875 var tabIndex = selectEl.getAttribute("tabindex");
2876 /** @type {boolean} */
2877 var reverseIsSingle = !tabIndex || parseInt(tabIndex, 10) >= 0;
2878 var cssChanges = selectEl.getBoundingClientRect();
2879 /** @type {boolean} */
2880 var reverseValue = cssChanges.width > 0 && cssChanges.height > 0;
2881 return reverseIsSingle && reverseValue;
2882 });
2883 return letters[append(letters, function(selector) {
2884 return selector === window || window.contains(selector);
2885 }) + ("previous" === name ? -1 : 1)];
2886 };
2887 /**
2888 * @param {undefined} parent
2889 * @return {?}
2890 */
2891 var link = function(parent) {
2892 /** @type {!Array} */
2893 var list = [];
2894 var page = help(document.querySelectorAll("*"), function(div) {
2895 var t = div.getAttribute("tabindex") || "";
2896 if (parent !== div) {
2897 /** @type {number} */
2898 div.tabIndex = -1;
2899 }
2900 list.push({
2901 element : div,
2902 tabIndex : t
2903 });
2904 });
2905 return one(function() {
2906 page.then(function() {
2907 return help(list, function(dom) {
2908 var element = dom.element;
2909 var value = dom.tabIndex;
2910 if ("" === value) {
2911 element.removeAttribute("tabindex");
2912 } else {
2913 element.setAttribute("tabindex", value);
2914 }
2915 });
2916 });
2917 });
2918 };
2919 /** @type {function(!Object, ...(Object|null)): !Object} */
2920 var getOfficeNSElement = Object.assign || function(links) {
2921 /** @type {number} */
2922 var i = 1;
2923 for (; i < arguments.length; i++) {
2924 var match = arguments[i];
2925 var key;
2926 for (key in match) {
2927 if (Object.prototype.hasOwnProperty.call(match, key)) {
2928 links[key] = match[key];
2929 }
2930 }
2931 }
2932 return links;
2933 };
2934 var styles = {
2935 display : "block",
2936 position : "fixed",
2937 "z-index" : "2147483647",
2938 background : "rgba(0,0,0,0)",
2939 transition : "background 300ms cubic-bezier(0.4, 0, 0.2, 1)",
2940 "will-change" : "background",
2941 top : "0",
2942 left : "0",
2943 right : "0",
2944 bottom : "0"
2945 };
2946 /** @type {!Object} */
2947 var width = getOfficeNSElement({}, styles, {
2948 background : "rgba(0,0,0,0.5)"
2949 });
2950 /**
2951 * @param {?} oDom
2952 * @return {undefined}
2953 */
2954 var outFile = function init(oDom) {
2955 var component = this;
2956 var oChild = oDom.lockScrolling;
2957 var o = oDom.lockFocus;
2958 var oStyle = oDom.lockFocusOn;
2959 fill(this, init);
2960 /** @type {!Element} */
2961 this.domElement = document.createElement("div");
2962 /** @type {!Array} */
2963 this._runOnHide = [];
2964 /**
2965 * @return {undefined}
2966 */
2967 this.mount = function() {
2968 toggle(function(container) {
2969 /** @type {string} */
2970 component.domElement.style.display = "none";
2971 if (!container.contains(component.domElement)) {
2972 container.insertBefore(component.domElement, container.firstChild);
2973 }
2974 });
2975 };
2976 /**
2977 * @return {undefined}
2978 */
2979 this.show = function() {
2980 if (callback(component.domElement, styles), component._lockScrolling) {
2981 var output = resize();
2982 component._runOnHide.push(output);
2983 }
2984 if (component._lockFocus) {
2985 var cell = link(component._lockFocusOn);
2986 component._runOnHide.push(cell);
2987 }
2988 };
2989 /**
2990 * @return {undefined}
2991 */
2992 this.fadeIn = function() {
2993 setTimeout(function() {
2994 callback(component.domElement, width);
2995 });
2996 };
2997 /**
2998 * @return {?}
2999 */
3000 this.fadeOut = function() {
3001 return (new Q(function(e) {
3002 callback(component.domElement, styles);
3003 setTimeout(e, 500);
3004 component.domElement.addEventListener("transitionend", e);
3005 })).then(function() {
3006 for (; component._runOnHide.length;) {
3007 component._runOnHide.pop()();
3008 }
3009 });
3010 };
3011 /**
3012 * @return {undefined}
3013 */
3014 this.unmount = function() {
3015 toggle(function(dom) {
3016 dom.removeChild(component.domElement);
3017 });
3018 };
3019 /** @type {boolean} */
3020 this._lockScrolling = !!oChild;
3021 /** @type {boolean} */
3022 this._lockFocus = !!o;
3023 this._lockFocusOn = oStyle || null;
3024 };
3025 /** @type {function(?): undefined} */
3026 var Menu = outFile;
3027 /**
3028 * @param {!Object} object
3029 * @param {string} item
3030 * @param {?} options
3031 * @return {?}
3032 */
3033 var _get = function get(object, item, options) {
3034 if (null === object) {
3035 object = Function.prototype;
3036 }
3037 /** @type {(ObjectPropertyDescriptor<?>|undefined)} */
3038 var output = Object.getOwnPropertyDescriptor(object, item);
3039 if (void 0 === output) {
3040 /** @type {(Object|null)} */
3041 var string = Object.getPrototypeOf(object);
3042 return null === string ? void 0 : get(string, item, options);
3043 }
3044 if ("value" in output) {
3045 return output.value;
3046 }
3047 /** @type {(function(): ?|undefined)} */
3048 var params = output.get;
3049 if (void 0 !== params) {
3050 return params.call(options);
3051 }
3052 };
3053 var params = {
3054 position : "absolute",
3055 left : "0",
3056 top : "0",
3057 height : "100%",
3058 width : "100%"
3059 };
3060 var _Uint8Array = function(Base) {
3061 /**
3062 * @param {?} element
3063 * @param {?} options
3064 * @param {?} value
3065 * @return {?}
3066 */
3067 function Modal(element, options, value) {
3068 observe(this, Modal);
3069 var _this = _possibleConstructorReturn(this, (Modal.__proto__ || Object.getPrototypeOf(Modal)).call(this, element, options, value));
3070 return _this._autoMount = function() {
3071 _this.appendTo(_this._backdrop.domElement);
3072 _this._backdrop.mount();
3073 }, _this.show = function() {
3074 _this._backdrop.show();
3075 callback(_this._iframe, params);
3076 }, _this.fadeInBackdrop = function() {
3077 _this._backdrop.fadeIn();
3078 }, _this._backdropFadeoutPromise = null, _this.fadeOutBackdrop = function() {
3079 return _this._backdropFadeoutPromise || (_this._backdropFadeoutPromise = _this._backdrop.fadeOut()), _this._backdropFadeoutPromise;
3080 }, _this.destroy = function() {
3081 return _this.fadeOutBackdrop().then(function() {
3082 _this._backdrop.unmount();
3083 _get(Modal.prototype.__proto__ || Object.getPrototypeOf(Modal.prototype), "destroy", _this).call(_this);
3084 });
3085 }, _this._backdrop = new Menu({
3086 lockScrolling : true,
3087 lockFocus : true,
3088 lockFocusOn : _this._iframe
3089 }), _this._autoMount(), _this;
3090 }
3091 return __extends(Modal, Base), Modal;
3092 }(ObjectProto);
3093 var Uint8Array = _Uint8Array;
3094 /** @type {function(!Object, ...(Object|null)): !Object} */
3095 var accessor = Object.assign || function(links) {
3096 /** @type {number} */
3097 var i = 1;
3098 for (; i < arguments.length; i++) {
3099 var match = arguments[i];
3100 var key;
3101 for (key in match) {
3102 if (Object.prototype.hasOwnProperty.call(match, key)) {
3103 links[key] = match[key];
3104 }
3105 }
3106 }
3107 return links;
3108 };
3109 var setElementTransformProperty = function() {
3110 /**
3111 * @param {!Function} d
3112 * @param {string} props
3113 * @return {undefined}
3114 */
3115 function t(d, props) {
3116 /** @type {number} */
3117 var i = 0;
3118 for (; i < props.length; i++) {
3119 var descriptor = props[i];
3120 descriptor.enumerable = descriptor.enumerable || false;
3121 /** @type {boolean} */
3122 descriptor.configurable = true;
3123 if ("value" in descriptor) {
3124 /** @type {boolean} */
3125 descriptor.writable = true;
3126 }
3127 Object.defineProperty(d, descriptor.key, descriptor);
3128 }
3129 }
3130 return function(p, n, a) {
3131 return n && t(p.prototype, n), a && t(p, a), p;
3132 };
3133 }();
3134 /**
3135 * @param {!Object} object
3136 * @param {string} x
3137 * @param {?} y
3138 * @return {?}
3139 */
3140 var spinner_modifier = function text(object, x, y) {
3141 if (null === object) {
3142 object = Function.prototype;
3143 }
3144 /** @type {(ObjectPropertyDescriptor<?>|undefined)} */
3145 var result = Object.getOwnPropertyDescriptor(object, x);
3146 if (void 0 === result) {
3147 /** @type {(Object|null)} */
3148 var p = Object.getPrototypeOf(object);
3149 return null === p ? void 0 : text(p, x, y);
3150 }
3151 if ("value" in result) {
3152 return result.value;
3153 }
3154 /** @type {(function(): ?|undefined)} */
3155 var params = result.get;
3156 if (void 0 !== params) {
3157 return params.call(y);
3158 }
3159 };
3160 var config = {
3161 display : "block",
3162 position : "absolute",
3163 "z-index" : "1000",
3164 width : "1px",
3165 "min-width" : "100%",
3166 margin : "2px 0 0 0",
3167 padding : "0",
3168 border : "none",
3169 overflow : "hidden"
3170 };
3171 var protoDescriptor = function(fn) {
3172 /**
3173 * @return {?}
3174 */
3175 function e() {
3176 return split(this, e), walk(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
3177 }
3178 return wrap(e, fn), setElementTransformProperty(e, [{
3179 key : "updateStyle",
3180 value : function(reply) {
3181 var popup = this;
3182 Object.keys(reply).forEach(function(replyProp) {
3183 popup._iframe.style[replyProp] = reply[replyProp];
3184 });
3185 }
3186 }, {
3187 key : "update",
3188 value : function(width) {
3189 this.send({
3190 action : "stripe-user-update",
3191 payload : width
3192 });
3193 }
3194 }, {
3195 key : "_createIFrame",
3196 value : function(i) {
3197 var n = spinner_modifier(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_createIFrame", this).call(this, accessor({}, i, {
3198 isSecondaryFrame : true
3199 }));
3200 return callback(n, config), n.style.height = "0", n;
3201 }
3202 }]), e;
3203 }(ObjectProto);
3204 var ZipObject = protoDescriptor;
3205 /**
3206 * @param {!Object} data
3207 * @return {?}
3208 */
3209 var parseDate = function(data) {
3210 var parsedURL = parse(data);
3211 var url = parsedURL ? parsedURL.host : "";
3212 return "stripe.com" === url || !!url.match(/\.stripe\.(com|me)$/);
3213 };
3214 /**
3215 * @param {!Object} val
3216 * @param {!Object} type
3217 * @return {?}
3218 */
3219 var is = function(val, type) {
3220 var path = parse(val);
3221 var url = parse(type);
3222 return !(!path || !url) && path.origin === url.origin;
3223 };
3224 /**
3225 * @param {!Object} val
3226 * @return {?}
3227 */
3228 var isUndefined = function(val) {
3229 return is(val, "https://js.stripe.com/v3/");
3230 };
3231 /**
3232 * @param {!Object} value
3233 * @return {?}
3234 */
3235 var generate = function(value) {
3236 return isUndefined(value) || parseDate(value);
3237 };
3238 /** @type {!Array} */
3239 var nonTypingInputs = ["button", "checkbox", "file", "hidden", "image", "submit", "radio", "reset"];
3240 /**
3241 * @param {!Element} element
3242 * @return {?}
3243 */
3244 var canFocus = function(element) {
3245 var elName = element.tagName;
3246 if (element.isContentEditable || "TEXTAREA" === elName) {
3247 return true;
3248 }
3249 if ("INPUT" !== elName) {
3250 return false;
3251 }
3252 var eventTargetType = element.getAttribute("type");
3253 return -1 === nonTypingInputs.indexOf(eventTargetType);
3254 };
3255 /** @type {function(!Element): ?} */
3256 var recurs = canFocus;
3257 /**
3258 * @param {string} name
3259 * @return {?}
3260 */
3261 var isRecordId = function(name) {
3262 return /Edge\//i.test(name);
3263 };
3264 /**
3265 * @param {string} name
3266 * @return {?}
3267 */
3268 var hasClass = function(name) {
3269 return /(MSIE ([0-9]{1,}[.0-9]{0,})|Trident\/)/i.test(name);
3270 };
3271 /**
3272 * @param {string} group
3273 * @return {?}
3274 */
3275 var haveGroupOnServer = function(group) {
3276 return /SamsungBrowser/.test(group);
3277 };
3278 /**
3279 * @param {string} cell
3280 * @return {?}
3281 */
3282 var updateCellAttributes = function(cell) {
3283 return /iPad|iPhone/i.test(cell) && !hasClass(cell);
3284 };
3285 /**
3286 * @param {string} cell
3287 * @return {?}
3288 */
3289 var scrollToValid = function(cell) {
3290 return /Android/i.test(cell) && !hasClass(cell);
3291 };
3292 /** @type {string} */
3293 var cell = window.navigator.userAgent;
3294 var inputWin = isRecordId(cell);
3295 var winRef = (function(name) {
3296 /Edge\/((1[0-6]\.)|0\.)/i.test(name);
3297 }(cell), hasClass(cell));
3298 var selfCompletionActive = function(name) {
3299 return /MSIE 9/i.test(name);
3300 }(cell);
3301 var forKey = (function(name) {
3302 /MSIE ([0-9]{1,}[.0-9]{0,})/i.test(name);
3303 }(cell), updateCellAttributes(cell));
3304 var nuActive = (function(cell) {
3305 if (!updateCellAttributes(cell)) {
3306 scrollToValid(cell);
3307 }
3308 }(cell), scrollToValid(cell), function(cell) {
3309 if (/Android 4\./i.test(cell) && !/Chrome/i.test(cell)) {
3310 scrollToValid(cell);
3311 }
3312 }(cell), function(e) {
3313 return /^((?!chrome|android).)*safari/i.test(e) && !haveGroupOnServer(e);
3314 }(cell));
3315 var dr = (function(name) {
3316 /Firefox\//i.test(name);
3317 }(cell), function(name) {
3318 /Firefox\/(50|51|[0-4]?\d)([^\d]|$)/i.test(name);
3319 }(cell), haveGroupOnServer(cell));
3320 var hasSongChanged = (function(name) {
3321 /Chrome\/(6[6-9]|[7-9]\d+|[1-9]\d{2,})/i.test(name);
3322 }(cell), function(cell) {
3323 return /AppleWebKit/i.test(cell) && !/Chrome/i.test(cell) && !isRecordId(cell) && !hasClass(cell);
3324 }(cell));
3325 var isReplayingSong = function(cell) {
3326 return /Chrome/i.test(cell) && !isRecordId(cell);
3327 }(cell);
3328 var TOOL2MODE = (_TOOL2MODE = {}, _defineProperty(_TOOL2MODE, opts.card, {
3329 unique : true,
3330 conflict : [opts.cardNumber, opts.cardExpiry, opts.cardCvc, opts.postalCode],
3331 beta : false
3332 }), _defineProperty(_TOOL2MODE, opts.cardNumber, {
3333 unique : true,
3334 conflict : [opts.card],
3335 beta : false
3336 }), _defineProperty(_TOOL2MODE, opts.cardExpiry, {
3337 unique : true,
3338 conflict : [opts.card],
3339 beta : false
3340 }), _defineProperty(_TOOL2MODE, opts.cardCvc, {
3341 unique : true,
3342 conflict : [opts.card],
3343 beta : false
3344 }), _defineProperty(_TOOL2MODE, opts.postalCode, {
3345 unique : true,
3346 conflict : [opts.card],
3347 beta : false
3348 }), _defineProperty(_TOOL2MODE, opts.paymentRequestButton, {
3349 unique : true,
3350 conflict : [],
3351 beta : false
3352 }), _defineProperty(_TOOL2MODE, opts.iban, {
3353 unique : true,
3354 conflict : [],
3355 beta : false
3356 }), _defineProperty(_TOOL2MODE, opts.idealBank, {
3357 unique : true,
3358 conflict : [],
3359 beta : false
3360 }), _defineProperty(_TOOL2MODE, opts.auBankAccount, {
3361 unique : true,
3362 beta : true,
3363 conflict : []
3364 }), _TOOL2MODE);
3365 var object = TOOL2MODE;
3366 var STRONG_SYS_ESCAPES = (_STRONG_SYS_ESCAPES = {}, stop(_STRONG_SYS_ESCAPES, opts.card, e.CARD_ELEMENT), stop(_STRONG_SYS_ESCAPES, opts.cardNumber, e.CARD_ELEMENT), stop(_STRONG_SYS_ESCAPES, opts.cardExpiry, e.CARD_ELEMENT), stop(_STRONG_SYS_ESCAPES, opts.cardCvc, e.CARD_ELEMENT), stop(_STRONG_SYS_ESCAPES, opts.postalCode, e.CARD_ELEMENT), stop(_STRONG_SYS_ESCAPES, opts.paymentRequestButton, e.PAYMENT_REQUEST_ELEMENT), stop(_STRONG_SYS_ESCAPES, opts.iban, e.IBAN_ELEMENT), stop(_STRONG_SYS_ESCAPES,
3367 opts.idealBank, e.IDEAL_BANK_ELEMENT), stop(_STRONG_SYS_ESCAPES, opts.auBankAccount, e.AU_BANK_ACCOUNT_ELEMENT), _STRONG_SYS_ESCAPES);
3368 var subDict = STRONG_SYS_ESCAPES;
3369 /** @type {!Array} */
3370 var SINGLE_COMMENT = ["brand"];
3371 /** @type {!Array} */
3372 var MULT_COMMENT_START = ["country", "bankName"];
3373 /** @type {!Array} */
3374 var MULT_COMMENT_END = ["bankName", "branchName"];
3375 var COMMENTS = (_COMMENTS = {}, defineProperty(_COMMENTS, opts.card, SINGLE_COMMENT), defineProperty(_COMMENTS, opts.cardNumber, SINGLE_COMMENT), defineProperty(_COMMENTS, opts.iban, MULT_COMMENT_START), defineProperty(_COMMENTS, opts.auBankAccount, MULT_COMMENT_END), _COMMENTS);
3376 var rules = (_typeMap = {}, defineProperty(_typeMap, opts.idealBank, {
3377 secondary : opts.idealBankSecondary
3378 }), defineProperty(_typeMap, opts.fpxBank, {
3379 secondary : opts.fpxBankSecondary
3380 }), _typeMap);
3381 /** @type {function(!Object, ...(Object|null)): !Object} */
3382 var testImportWithCommonJSTransform = Object.assign || function(links) {
3383 /** @type {number} */
3384 var i = 1;
3385 for (; i < arguments.length; i++) {
3386 var match = arguments[i];
3387 var key;
3388 for (key in match) {
3389 if (Object.prototype.hasOwnProperty.call(match, key)) {
3390 links[key] = match[key];
3391 }
3392 }
3393 }
3394 return links;
3395 };
3396 /** @type {function(?): ?} */
3397 var setInitialUI = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(lineStringProperty) {
3398 return typeof lineStringProperty;
3399 } : function(obj) {
3400 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
3401 };
3402 /** @type {boolean} */
3403 var inputId = false;
3404 /**
3405 * @param {?} e
3406 * @param {?} input
3407 * @return {?}
3408 */
3409 var listener = function(e, input) {
3410 return document.activeElement === e._iframe || e._iframe.parentElement && document.activeElement === input;
3411 };
3412 /**
3413 * @param {?} value
3414 * @return {?}
3415 */
3416 var ready = function(value) {
3417 return "object" === (void 0 === value ? "undefined" : setInitialUI(value)) && null !== value && "IntegrationError" === value.name ? new Date("string" == typeof value.message ? value.message : "") : value;
3418 };
3419 /**
3420 * @param {!Object} params
3421 * @return {undefined}
3422 */
3423 var height = function get(params) {
3424 errorHandler(this, get);
3425 exports.call(this);
3426 var key = params.apiKey;
3427 var bindDomElem = params.stripeAccount;
3428 var federateRoleArn = params.stripeJsId;
3429 var locale = params.locale;
3430 this._id = unique("__privateStripeController");
3431 this._stripeJsId = federateRoleArn;
3432 this._apiKey = key;
3433 this._stripeAccount = bindDomElem;
3434 this._controllerFrame = new RangeError(e.CONTROLLER, this._id, testImportWithCommonJSTransform({}, params));
3435 this._frames = {};
3436 this._requests = {};
3437 this._setupPostMessage();
3438 this._handleMessage = __bind(this._handleMessage, this);
3439 this.action.fetchLocale({
3440 locale : locale || "auto"
3441 });
3442 };
3443 /**
3444 * @return {undefined}
3445 */
3446 var exports = function() {
3447 var self = this;
3448 /**
3449 * @param {!Object} node
3450 * @return {?}
3451 */
3452 this._sendCAReq = function(node) {
3453 var id = unique(node.tag);
3454 return new Q(function(n, reject) {
3455 self._requests[id] = {
3456 resolve : n,
3457 reject : reject
3458 };
3459 self._controllerFrame.send({
3460 action : "stripe-safe-controller-action-request",
3461 payload : {
3462 nonce : id,
3463 caReq : node
3464 }
3465 });
3466 });
3467 };
3468 /**
3469 * @return {?}
3470 */
3471 this.livemode = function() {
3472 var item = self._apiKey;
3473 return /^pk_test_/.test(item) ? "testmode" : /^pk_live_/.test(item) ? "livemode" : "unknown";
3474 };
3475 this.action = {
3476 retrievePaymentIntent : function(t) {
3477 return self._sendCAReq({
3478 tag : "RETRIEVE_PAYMENT_INTENT",
3479 value : t
3480 });
3481 },
3482 confirmPaymentIntent : function(command_module_id) {
3483 return self._sendCAReq({
3484 tag : "CONFIRM_PAYMENT_INTENT",
3485 value : command_module_id
3486 });
3487 },
3488 confirmSetupIntent : function(command_module_id) {
3489 return self._sendCAReq({
3490 tag : "CONFIRM_SETUP_INTENT",
3491 value : command_module_id
3492 });
3493 },
3494 retrieveSetupIntent : function(t) {
3495 return self._sendCAReq({
3496 tag : "RETRIEVE_SETUP_INTENT",
3497 value : t
3498 });
3499 },
3500 fetchLocale : function(t) {
3501 return self._sendCAReq({
3502 tag : "FETCH_LOCALE",
3503 value : t
3504 });
3505 },
3506 updateCSSFonts : function(t) {
3507 return self._sendCAReq({
3508 tag : "UPDATE_CSS_FONTS",
3509 value : t
3510 });
3511 },
3512 createApplePaySession : function(t) {
3513 return self._sendCAReq({
3514 tag : "CREATE_APPLE_PAY_SESSION",
3515 value : t
3516 });
3517 },
3518 retrieveSource : function(value) {
3519 return self._sendCAReq({
3520 tag : "RETRIEVE_SOURCE",
3521 value : value
3522 });
3523 },
3524 tokenizeWithElement : function(t) {
3525 return self._sendCAReq({
3526 tag : "TOKENIZE_WITH_ELEMENT",
3527 value : t
3528 });
3529 },
3530 tokenizeCvcUpdate : function(t) {
3531 return self._sendCAReq({
3532 tag : "TOKENIZE_CVC_UPDATE",
3533 value : t
3534 });
3535 },
3536 tokenizeWithData : function(t) {
3537 return self._sendCAReq({
3538 tag : "TOKENIZE_WITH_DATA",
3539 value : t
3540 });
3541 },
3542 createSourceWithElement : function(t) {
3543 return self._sendCAReq({
3544 tag : "CREATE_SOURCE_WITH_ELEMENT",
3545 value : t
3546 });
3547 },
3548 createSourceWithData : function(t) {
3549 return self._sendCAReq({
3550 tag : "CREATE_SOURCE_WITH_DATA",
3551 value : t
3552 });
3553 },
3554 createPaymentMethodWithElement : function(t) {
3555 return self._sendCAReq({
3556 tag : "CREATE_PAYMENT_METHOD_WITH_ELEMENT",
3557 value : t
3558 });
3559 },
3560 createPaymentMethodWithData : function(t) {
3561 return self._sendCAReq({
3562 tag : "CREATE_PAYMENT_METHOD_WITH_DATA",
3563 value : t
3564 });
3565 },
3566 createPaymentPage : function(command_module_id) {
3567 return self._sendCAReq({
3568 tag : "CREATE_PAYMENT_PAGE",
3569 value : command_module_id
3570 });
3571 },
3572 createPaymentPageWithSession : function(t) {
3573 return self._sendCAReq({
3574 tag : "CREATE_PAYMENT_PAGE_WITH_SESSION",
3575 value : t
3576 });
3577 },
3578 createRadarSession : function(t) {
3579 return self._sendCAReq({
3580 tag : "CREATE_RADAR_SESSION",
3581 value : t
3582 });
3583 },
3584 authenticate3DS2 : function(t) {
3585 return self._sendCAReq({
3586 tag : "AUTHENTICATE_3DS2",
3587 value : t
3588 });
3589 }
3590 };
3591 /**
3592 * @param {string} name
3593 * @param {!Object} item
3594 * @return {?}
3595 */
3596 this.createElementFrame = function(name, item) {
3597 var groupId = item.groupId;
3598 var output = j(item, ["groupId"]);
3599 var o = new Class(name, self._id, testImportWithCommonJSTransform({}, output, {
3600 keyMode : wait(self._apiKey)
3601 }));
3602 return self._setupFrame(o, name, groupId);
3603 };
3604 /**
3605 * @param {string} name
3606 * @param {!Object} item
3607 * @return {?}
3608 */
3609 this.createSecondaryElementFrame = function(name, item) {
3610 var groupId = item.groupId;
3611 var o = j(item, ["groupId"]);
3612 var object = new ZipObject(name, self._id, o);
3613 return self._setupFrame(object, name, groupId);
3614 };
3615 /**
3616 * @param {string} name
3617 * @param {(Object|string)} length
3618 * @return {?}
3619 */
3620 this.createHiddenFrame = function(name, length) {
3621 var b = new Buffer(name, self._id, length);
3622 return self._setupFrame(b, name);
3623 };
3624 /**
3625 * @param {string} t
3626 * @param {(Object|string)} n
3627 * @return {?}
3628 */
3629 this.createLightboxFrame = function(t, n) {
3630 var p = new Uint8Array(t, self._id, n);
3631 return self._setupFrame(p, t);
3632 };
3633 /**
3634 * @param {?} instance
3635 * @param {string} type
3636 * @param {string} groupId
3637 * @return {?}
3638 */
3639 this._setupFrame = function(instance, type, groupId) {
3640 return self._frames[instance.id] = instance, self._controllerFrame.sendPersistent({
3641 action : "stripe-user-createframe",
3642 payload : {
3643 newFrameId : instance.id,
3644 frameType : type,
3645 groupId : groupId
3646 }
3647 }), instance._on("unload", function() {
3648 self._controllerFrame.sendPersistent({
3649 action : "stripe-frame-unload",
3650 payload : {
3651 unloadedFrameId : instance.id
3652 }
3653 });
3654 }), instance._on("destroy", function() {
3655 delete self._frames[instance.id];
3656 self._controllerFrame.sendPersistent({
3657 action : "stripe-frame-destroy",
3658 payload : {
3659 destroyedFrameId : instance.id
3660 }
3661 });
3662 }), instance._on("load", function() {
3663 self._controllerFrame.sendPersistent({
3664 action : "stripe-frame-load",
3665 payload : {
3666 loadedFrameId : instance.id
3667 }
3668 });
3669 if (self._controllerFrame.loaded) {
3670 instance.send({
3671 action : "stripe-controller-load",
3672 payload : {}
3673 });
3674 }
3675 }), instance;
3676 };
3677 /**
3678 * @param {string} type
3679 * @return {undefined}
3680 */
3681 this.report = function(type) {
3682 var maindata3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
3683 self._controllerFrame.send({
3684 action : "stripe-controller-report",
3685 payload : {
3686 event : type,
3687 data : maindata3
3688 }
3689 });
3690 };
3691 /**
3692 * @return {undefined}
3693 */
3694 this.warn = function() {
3695 /** @type {number} */
3696 var _len8 = arguments.length;
3697 /** @type {!Array} */
3698 var args = Array(_len8);
3699 /** @type {number} */
3700 var _key8 = 0;
3701 for (; _key8 < _len8; _key8++) {
3702 args[_key8] = arguments[_key8];
3703 }
3704 self._controllerFrame.send({
3705 action : "stripe-controller-warn",
3706 payload : {
3707 args : args
3708 }
3709 });
3710 };
3711 /**
3712 * @return {?}
3713 */
3714 this.controllerFor = function() {
3715 return "outer";
3716 };
3717 /**
3718 * @return {undefined}
3719 */
3720 this._setupPostMessage = function() {
3721 window.addEventListener("message", function(token) {
3722 var value = token.data;
3723 var start = token.origin;
3724 var message = formatError(value);
3725 if (message && is(str, start)) {
3726 self._handleMessage(message);
3727 }
3728 });
3729 };
3730 /**
3731 * @param {!Object} request
3732 * @return {undefined}
3733 */
3734 this._handleMessage = function(request) {
3735 var id = request.controllerId;
3736 var url = request.frameId;
3737 var data = request.message;
3738 var options = self._frames[url];
3739 if (id === self._id) {
3740 switch(data.action) {
3741 case "stripe-frame-event":
3742 var args = data.payload;
3743 var type = args.event;
3744 var value = args.data;
3745 if (options) {
3746 if (forKey) {
3747 var el = options._iframe.parentElement;
3748 var value = el && el.querySelector(".__PrivateStripeElement-input");
3749 if ("focus" === type && !inputId && !listener(options, value)) {
3750 if (value) {
3751 value.focus();
3752 }
3753 /** @type {boolean} */
3754 inputId = true;
3755 break;
3756 }
3757 if ("blur" === type && inputId) {
3758 /** @type {boolean} */
3759 inputId = false;
3760 break;
3761 }
3762 if ("blur" === type) {
3763 setTimeout(function() {
3764 var pEl = document.activeElement;
3765 if (pEl && !listener(options, value) && !recurs(pEl)) {
3766 var container = el && el.querySelector(".__PrivateStripeElement-safariInput");
3767 if (container) {
3768 var elem = container;
3769 /** @type {boolean} */
3770 elem.disabled = false;
3771 elem.focus();
3772 elem.blur();
3773 /** @type {boolean} */
3774 elem.disabled = true;
3775 }
3776 pEl.focus();
3777 }
3778 }, 400);
3779 }
3780 }
3781 options._emit(type, value);
3782 }
3783 break;
3784 case "stripe-frame-action-response":
3785 if (options) {
3786 options.resolve(data.payload.nonce, data.payload.faRes);
3787 }
3788 break;
3789 case "stripe-frame-action-error":
3790 if (options) {
3791 options.reject(data.payload.nonce, ready(data.payload.faErr));
3792 }
3793 break;
3794 case "stripe-frame-error":
3795 throw new Date(data.payload.message);
3796 case "stripe-integration-error":
3797 if (options) {
3798 options._emit("__privateIntegrationError", {
3799 message : data.payload.message
3800 });
3801 }
3802 break;
3803 case "stripe-controller-load":
3804 self._controllerFrame._emit("load");
3805 Object.keys(self._frames).forEach(function(url) {
3806 return self._frames[url].send({
3807 action : "stripe-controller-load",
3808 payload : {}
3809 });
3810 });
3811 break;
3812 case "stripe-safe-controller-action-response":
3813 if (self._requests[data.payload.nonce]) {
3814 self._requests[data.payload.nonce].resolve(data.payload.caRes);
3815 }
3816 break;
3817 case "stripe-safe-controller-action-error":
3818 if (self._requests[data.payload.nonce]) {
3819 self._requests[data.payload.nonce].reject(ready(data.payload.caErr));
3820 }
3821 }
3822 }
3823 };
3824 };
3825 /** @type {function(!Object): undefined} */
3826 var whatToScale = height;
3827 /**
3828 * @return {?}
3829 */
3830 var trim = function() {
3831 /** @type {!NodeList<Element>} */
3832 var webhooks = document.querySelectorAll("meta[name=viewport][content]");
3833 /** @type {!Element} */
3834 var options = webhooks[webhooks.length - 1];
3835 return options && options instanceof HTMLMetaElement ? options.content : "";
3836 };
3837 /**
3838 * @param {?} comparer
3839 * @return {undefined}
3840 */
3841 var contains = function(comparer) {
3842 if (!trim().match(/width=device-width/)) {
3843 comparer('Elements requires "width=device-width" be set in your page\'s viewport meta tag.\n For more information: https://stripe.com/docs/stripe-js/elements/quickstart#viewport-meta-requirements');
3844 }
3845 };
3846 var task = {
3847 checkout_beta_2 : "checkout_beta_2",
3848 checkout_beta_3 : "checkout_beta_3",
3849 checkout_beta_4 : "checkout_beta_4",
3850 payment_intent_beta_1 : "payment_intent_beta_1",
3851 payment_intent_beta_2 : "payment_intent_beta_2",
3852 payment_intent_beta_3 : "payment_intent_beta_3",
3853 card_payment_method_beta_1 : "card_payment_method_beta_1",
3854 acknowledge_ie9_deprecation : "acknowledge_ie9_deprecation",
3855 cvc_update_beta_1 : "cvc_update_beta_1",
3856 google_pay_beta_1 : "google_pay_beta_1",
3857 checkout_pm_types : "checkout_pm_types",
3858 au_bank_account_beta_1 : "au_bank_account_beta_1"
3859 };
3860 /** @type {!Array<string>} */
3861 var name = Object.keys(task);
3862 /**
3863 * @param {!Array} tag
3864 * @param {string} obj
3865 * @return {?}
3866 */
3867 var log = function(tag, obj) {
3868 return tag.indexOf(obj) >= 0;
3869 };
3870 var UnsubscriptionError = function(e) {
3871 /**
3872 * @return {?}
3873 */
3874 function t() {
3875 calcLines(this, t);
3876 var err = destroy(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this));
3877 return err.name = "NetworkError", err.type = "network_error", err;
3878 }
3879 return i(t, e), t;
3880 }(Error);
3881 var BinaryFile = UnsubscriptionError;
3882 /** @type {function(!Object, ...(Object|null)): !Object} */
3883 var cleanUp = Object.assign || function(links) {
3884 /** @type {number} */
3885 var i = 1;
3886 for (; i < arguments.length; i++) {
3887 var match = arguments[i];
3888 var key;
3889 for (key in match) {
3890 if (Object.prototype.hasOwnProperty.call(match, key)) {
3891 links[key] = match[key];
3892 }
3893 }
3894 }
3895 return links;
3896 };
3897 var headers = {
3898 Accept : "application/json",
3899 "Content-Type" : "application/x-www-form-urlencoded"
3900 };
3901 /**
3902 * @param {!XMLHttpRequest} xhr
3903 * @return {?}
3904 */
3905 var setHeaders = function(xhr) {
3906 return Object.keys(headers).forEach(function(i) {
3907 xhr.setRequestHeader(i, headers[i]);
3908 }), xhr;
3909 };
3910 /**
3911 * @param {!Object} req
3912 * @return {?}
3913 */
3914 var Hr = function init(req) {
3915 return new Q(function(resolve, callback) {
3916 var method = req.method;
3917 var url = req.url;
3918 var b = req.data;
3919 var withCredentials = req.withCredentials;
3920 var name = b ? _(b) : "";
3921 var u = !window.XMLHttpRequest || open(url) && void 0 === (new XMLHttpRequest).withCredentials;
3922 var path = "GET" === method && name ? url + "?" + name : url;
3923 var text = "GET" === method ? "" : name;
3924 if (u) {
3925 var xhr = new window.XDomainRequest;
3926 try {
3927 xhr.open(method, path);
3928 } catch (identifierPositions) {
3929 callback(identifierPositions);
3930 }
3931 /**
3932 * @return {undefined}
3933 */
3934 xhr.onerror = function() {
3935 resolve({
3936 responseText : JSON.stringify({
3937 error : {
3938 type : "api_error"
3939 }
3940 })
3941 });
3942 };
3943 /**
3944 * @return {undefined}
3945 */
3946 xhr.onload = function() {
3947 resolve({
3948 status : 200,
3949 responseText : xhr.responseText
3950 });
3951 };
3952 setTimeout(function() {
3953 xhr.send(text);
3954 }, 0);
3955 } else {
3956 /** @type {!XMLHttpRequest} */
3957 var xhr = new XMLHttpRequest;
3958 if (withCredentials) {
3959 xhr.withCredentials = withCredentials;
3960 }
3961 xhr.open(method, path, true);
3962 setHeaders(xhr);
3963 /**
3964 * @return {undefined}
3965 */
3966 xhr.onreadystatechange = function() {
3967 if (4 === xhr.readyState) {
3968 /**
3969 * @return {undefined}
3970 */
3971 xhr.onreadystatechange = function() {
3972 };
3973 if (0 === xhr.status) {
3974 if (withCredentials) {
3975 callback(new BinaryFile);
3976 } else {
3977 init(cleanUp({}, req, {
3978 withCredentials : true
3979 })).then(resolve, callback);
3980 }
3981 } else {
3982 resolve(xhr);
3983 }
3984 }
3985 };
3986 try {
3987 xhr.send(text);
3988 } catch (identifierPositions) {
3989 callback(identifierPositions);
3990 }
3991 }
3992 });
3993 };
3994 /** @type {function(!Object): ?} */
3995 var $http = Hr;
3996 /** @type {function(!Object, ...(Object|null)): !Object} */
3997 var afterlogin = Object.assign || function(links) {
3998 /** @type {number} */
3999 var i = 1;
4000 for (; i < arguments.length; i++) {
4001 var match = arguments[i];
4002 var key;
4003 for (key in match) {
4004 if (Object.prototype.hasOwnProperty.call(match, key)) {
4005 links[key] = match[key];
4006 }
4007 }
4008 }
4009 return links;
4010 };
4011 /**
4012 * @param {string} name
4013 * @param {!Object} value
4014 * @return {?}
4015 */
4016 var execute = function(name, value) {
4017 /** @type {!RegExp} */
4018 var foo = /@font-face[ ]?{[^}]*}/g;
4019 var promise = name.match(foo);
4020 if (!promise) {
4021 throw new Date("No @font-face rules found in file from " + value);
4022 }
4023 return promise;
4024 };
4025 /**
4026 * @param {string} n
4027 * @return {?}
4028 */
4029 var numeral = function(n) {
4030 var t = n.match(/@font-face[ ]?{([^}]*)}/);
4031 return t ? t[1] : "";
4032 };
4033 /**
4034 * @param {string} str
4035 * @param {!Object} p
4036 * @return {?}
4037 */
4038 var parseParams = function(str, p) {
4039 var selector = str.replace(/\/\*.*\*\//g, "").trim();
4040 var elem = selector.length && /;$/.test(selector) ? selector : selector + ";";
4041 var result = elem.match(/((([^;(]*\([^()]*\)[^;)]*)|[^;]+)+)(?=;)/g);
4042 if (!result) {
4043 throw new Date("Found @font-face rule containing no valid font-properties in file from " + p);
4044 }
4045 return result;
4046 };
4047 /**
4048 * @param {string} data
4049 * @param {string} identifier
4050 * @return {?}
4051 */
4052 var lookup = function(data, identifier) {
4053 var comma = data.indexOf(":");
4054 if (-1 === comma) {
4055 throw new Date("Invalid css declaration in file from " + identifier + ': "' + data + '"');
4056 }
4057 var indexLookupKey = data.slice(0, comma).trim();
4058 var currentIndex = nextIdLookup[indexLookupKey];
4059 if (!currentIndex) {
4060 throw new Date("Unsupported css property in file from " + identifier + ': "' + indexLookupKey + '"');
4061 }
4062 return {
4063 property : currentIndex,
4064 value : data.slice(comma + 1).trim()
4065 };
4066 };
4067 /**
4068 * @param {!Object} value
4069 * @param {string} name
4070 * @return {?}
4071 */
4072 var func = function(value, name) {
4073 var moduleObject = value.reduce(function(next, d) {
4074 var a = lookup(d, name);
4075 var key = a.property;
4076 var i = a.value;
4077 return afterlogin({}, next, splice({}, key, i));
4078 }, {});
4079 return ["family", "src"].forEach(function(methodName) {
4080 if (!moduleObject[methodName]) {
4081 throw new Date("Missing css property in file from " + name + ': "' + obj[methodName] + '"');
4082 }
4083 }), moduleObject;
4084 };
4085 /**
4086 * @param {!Object} i
4087 * @return {?}
4088 */
4089 var getFile = function(i) {
4090 return $http({
4091 url : i,
4092 method : "GET"
4093 }).then(function(res) {
4094 return res.responseText;
4095 }).then(function(module) {
4096 return execute(module, i).map(function(n) {
4097 var left = numeral(n);
4098 var result = parseParams(left, i);
4099 return func(result, i);
4100 });
4101 });
4102 };
4103 /** @type {function(!Object): ?} */
4104 var config_disks = getFile;
4105 /**
4106 * @param {!Object} o
4107 * @param {!Function} condition
4108 * @return {?}
4109 */
4110 var executePostHooks = function(o, condition) {
4111 return o.reduce(function(actionAsPromise, fetcherPromise) {
4112 return actionAsPromise.then(function(verifiedEvent) {
4113 return "SATISFIED" === verifiedEvent.type ? verifiedEvent : fetcherPromise().then(function(key) {
4114 return condition(key) ? {
4115 type : "SATISFIED",
4116 value : key
4117 } : {
4118 type : "UNSATISFIED"
4119 };
4120 });
4121 });
4122 }, Q.resolve({
4123 type : "UNSATISFIED"
4124 }));
4125 };
4126 /** @type {function(!Object, !Function): ?} */
4127 var server = executePostHooks;
4128 /** @type {function(!Object, ...(Object|null)): !Object} */
4129 var _callback = Object.assign || function(links) {
4130 /** @type {number} */
4131 var i = 1;
4132 for (; i < arguments.length; i++) {
4133 var match = arguments[i];
4134 var key;
4135 for (key in match) {
4136 if (Object.prototype.hasOwnProperty.call(match, key)) {
4137 links[key] = match[key];
4138 }
4139 }
4140 }
4141 return links;
4142 };
4143 var commandList = {
4144 success : "success",
4145 fail : "fail",
4146 invalid_shipping_address : "invalid_shipping_address"
4147 };
4148 var res = {
4149 fail : "fail",
4150 invalid_payer_name : "invalid_payer_name",
4151 invalid_payer_email : "invalid_payer_email",
4152 invalid_payer_phone : "invalid_payer_phone",
4153 invalid_shipping_address : "invalid_shipping_address"
4154 };
4155 var orders = {
4156 shipping : "shipping",
4157 delivery : "delivery",
4158 pickup : "pickup"
4159 };
4160 /** @type {!Object} */
4161 var data = _callback({
4162 success : "success"
4163 }, res);
4164 var opt = {
4165 merchantCapabilities : ["supports3DS"],
4166 displayItems : []
4167 };
4168 var amount = test({
4169 amount : change,
4170 label : id,
4171 pending : computed(month)
4172 });
4173 var scripts = test({
4174 amount : sum,
4175 label : id,
4176 pending : computed(month)
4177 });
4178 var gotError = test({
4179 amount : sum,
4180 label : id,
4181 pending : computed(month),
4182 id : traverse(id, function() {
4183 return unique("shippingOption");
4184 }),
4185 detail : traverse(id, function() {
4186 return "";
4187 })
4188 });
4189 var filteredVisits = T.apply(void 0, makeArray(Object.keys(orders)));
4190 var describe = test({
4191 origin : id,
4192 name : id
4193 });
4194 var error = test({
4195 displayItems : computed(all(scripts)),
4196 shippingOptions : computed(generateBoundHandler("id")(all(gotError))),
4197 total : amount,
4198 requestShipping : computed(month),
4199 requestPayerName : computed(month),
4200 requestPayerEmail : computed(month),
4201 requestPayerPhone : computed(month),
4202 shippingType : computed(filteredVisits),
4203 currency : asset,
4204 country : country,
4205 jcbEnabled : computed(month),
4206 __billingDetailsEmailOverride : computed(id),
4207 __minApplePayVersion : computed(omit),
4208 __merchantDetails : computed(describe),
4209 __skipGooglePayInPaymentRequest : computed(month)
4210 });
4211 var stat = status({
4212 currency : computed(asset),
4213 displayItems : computed(all(scripts)),
4214 shippingOptions : computed(generateBoundHandler("id")(all(gotError))),
4215 total : computed(amount)
4216 });
4217 /**
4218 * @param {number} version
4219 * @param {?} t
4220 * @return {?}
4221 */
4222 var getStatus = function(version, t) {
4223 /** @type {!Array} */
4224 var keyLower = ["invalid_payer_name", "invalid_payer_email", "invalid_payer_phone"];
4225 return T.apply(void 0, makeArray(Object.keys(commandList)))(-1 !== keyLower.indexOf(version) ? "fail" : version, t);
4226 };
4227 var row = test({
4228 displayItems : computed(all(scripts)),
4229 shippingOptions : computed(generateBoundHandler("id")(all(gotError))),
4230 total : computed(amount),
4231 status : getStatus
4232 });
4233 var mutationsMap = T.apply(void 0, makeArray(Object.keys(data)));
4234 /**
4235 * @param {!Array} group
4236 * @return {?}
4237 */
4238 var FGS__initService = function(group) {
4239 var isSingular = log(group, task.google_pay_beta_1);
4240 return nuActive ? isSingular ? ["APPLE_PAY", "GOOGLE_PAY"] : ["APPLE_PAY"] : isSingular ? ["GOOGLE_PAY", "BROWSER"] : ["BROWSER"];
4241 };
4242 /** @type {function(!Array): ?} */
4243 var getName = FGS__initService;
4244 /** @type {function(!Object, ...(Object|null)): !Object} */
4245 var settleWithX = Object.assign || function(links) {
4246 /** @type {number} */
4247 var i = 1;
4248 for (; i < arguments.length; i++) {
4249 var match = arguments[i];
4250 var key;
4251 for (key in match) {
4252 if (Object.prototype.hasOwnProperty.call(match, key)) {
4253 links[key] = match[key];
4254 }
4255 }
4256 }
4257 return links;
4258 };
4259 /** @type {function(?): ?} */
4260 var objectType = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(observable) {
4261 return typeof observable;
4262 } : function(obj) {
4263 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
4264 };
4265 /**
4266 * @param {?} value
4267 * @return {?}
4268 */
4269 var isArray = function(value) {
4270 return value && "object" === (void 0 === value ? "undefined" : objectType(value)) && (value.constructor === Array || value.constructor === Object);
4271 };
4272 /**
4273 * @param {string} val
4274 * @return {?}
4275 */
4276 var slice = function(val) {
4277 return isArray(val) ? Array.isArray(val) ? val.slice(0, val.length) : settleWithX({}, val) : val;
4278 };
4279 /**
4280 * @param {boolean} d
4281 * @return {?}
4282 */
4283 var getResponsesAnalysisDataPrefixCacheKey = function get(d) {
4284 return function() {
4285 /** @type {number} */
4286 var _len = arguments.length;
4287 /** @type {!Array} */
4288 var arr = Array(_len);
4289 /** @type {number} */
4290 var _key = 0;
4291 for (; _key < _len; _key++) {
4292 arr[_key] = arguments[_key];
4293 }
4294 if (Array.isArray(arr[0]) && d) {
4295 return slice(arr[0]);
4296 }
4297 /** @type {(Array|{})} */
4298 var $cookies = Array.isArray(arr[0]) ? [] : {};
4299 return arr.forEach(function(toMerge) {
4300 if (toMerge) {
4301 Object.keys(toMerge).forEach(function(key) {
4302 var value = $cookies[key];
4303 var a = toMerge[key];
4304 var hasKey = isArray(value) && !(d && Array.isArray(value));
4305 if ("object" === (void 0 === a ? "undefined" : objectType(a)) && hasKey) {
4306 $cookies[key] = get(d)(value, slice(a));
4307 } else {
4308 if (void 0 !== a) {
4309 $cookies[key] = isArray(a) ? get(d)(a) : slice(a);
4310 } else {
4311 if (void 0 !== value) {
4312 $cookies[key] = value;
4313 }
4314 }
4315 }
4316 });
4317 }
4318 }), $cookies;
4319 };
4320 };
4321 var write = (getResponsesAnalysisDataPrefixCacheKey(false), getResponsesAnalysisDataPrefixCacheKey(true));
4322 /**
4323 * @return {?}
4324 */
4325 var switchSiteNavigation = function() {
4326 try {
4327 return window.location.origin === window.top.location.origin;
4328 } catch (e) {
4329 return false;
4330 }
4331 };
4332 /** @type {number} */
4333 var e_height = 2;
4334 var getUserId = function(step) {
4335 var control = {};
4336 return function(event) {
4337 if (void 0 !== control[event]) {
4338 return control[event];
4339 }
4340 var callback = step(event);
4341 return control[event] = callback, callback;
4342 };
4343 }(function(type) {
4344 return window.ApplePaySession.canMakePaymentsWithActiveCard(type);
4345 });
4346 /**
4347 * @param {string} id
4348 * @param {string} key
4349 * @param {string} options
4350 * @param {?} cb
4351 * @return {?}
4352 */
4353 var go = function(id, key, options, cb) {
4354 var size = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : e_height;
4355 /** @type {number} */
4356 var puffsize = Math.max(e_height, size);
4357 if (window.ApplePaySession) {
4358 if (switchSiteNavigation()) {
4359 if (options && "https:" !== window.location.protocol) {
4360 return window.console && window.console.warn("To test Apple Pay, you must serve this page over HTTPS."), Q.resolve(false);
4361 }
4362 if (window.ApplePaySession.supportsVersion(puffsize)) {
4363 /** @type {!Array} */
4364 var values = key ? [id, key] : [id];
4365 /** @type {string} */
4366 var req = "merchant." + values.join(".") + ".stripe";
4367 return getUserId(req).then(function(targetsInState) {
4368 if (cb("pr.apple_pay.can_make_payment_native_response", {
4369 available : targetsInState
4370 }), options && !targetsInState && window.console) {
4371 /** @type {string} */
4372 var canonicalKey = key ? "or stripeAccount parameter (" + key + ") " : "";
4373 window.console.warn("Either you do not have a card saved to your Wallet or the current domain (" + id + ") " + canonicalKey + "is not registered for Apple Pay. Visit https://dashboard.stripe.com/account/apple_pay to register this domain.");
4374 }
4375 return targetsInState;
4376 });
4377 }
4378 return options && window.console && window.console.warn("This version of Safari does not support ApplePay JS version " + puffsize + "."), Q.resolve(false);
4379 }
4380 return Q.resolve(false);
4381 }
4382 return Q.resolve(false);
4383 };
4384 /** @type {!Array} */
4385 var platform = ["mastercard", "visa"];
4386 /** @type {!Array} */
4387 var EU = ["AT", "AU", "BE", "CA", "CH", "DE", "DK", "EE", "ES", "FI", "FR", "GB", "GR", "HK", "IE", "IT", "JP", "LT", "LU", "LV", "MX", "NL", "NO", "NZ", "PL", "PT", "SE", "SG", "US"];
4388 /**
4389 * @param {string} value
4390 * @param {boolean} parent
4391 * @return {?}
4392 */
4393 var search = function(value, parent) {
4394 /** @type {!Array<?>} */
4395 var name = "US" === value || parent ? ["discover", "diners", "jcb"].concat(platform) : platform;
4396 return -1 !== EU.indexOf(value) ? ["amex"].concat(from(name)) : name;
4397 };
4398 /**
4399 * @param {string} target
4400 * @param {boolean} opts
4401 * @return {?}
4402 */
4403 var getUnits = function(target, opts) {
4404 return search(target, opts).reduce(function(b, a) {
4405 return "mastercard" === a ? [].concat(from(b), ["masterCard"]) : "diners" === a ? b : [].concat(from(b), [a]);
4406 }, []);
4407 };
4408 var jo = {
4409 bif : 1,
4410 clp : 1,
4411 djf : 1,
4412 gnf : 1,
4413 jpy : 1,
4414 kmf : 1,
4415 krw : 1,
4416 mga : 1,
4417 pyg : 1,
4418 rwf : 1,
4419 vnd : 1,
4420 vuv : 1,
4421 xaf : 1,
4422 xof : 1,
4423 xpf : 1
4424 };
4425 /**
4426 * @param {string} expr
4427 * @return {?}
4428 */
4429 var type = function(expr) {
4430 var maxend = jo[expr.toLowerCase()] || 100;
4431 return {
4432 unitSize : 1 / maxend,
4433 fractionDigits : Math.log(maxend) / Math.log(10)
4434 };
4435 };
4436 /**
4437 * @param {?} i
4438 * @param {string} data
4439 * @return {?}
4440 */
4441 var repeat = function(i, data) {
4442 var config = type(data);
4443 return (i * config.unitSize).toFixed(config.fractionDigits);
4444 };
4445 /** @type {function(!Object, ...(Object|null)): !Object} */
4446 var fn = Object.assign || function(links) {
4447 /** @type {number} */
4448 var i = 1;
4449 for (; i < arguments.length; i++) {
4450 var match = arguments[i];
4451 var key;
4452 for (key in match) {
4453 if (Object.prototype.hasOwnProperty.call(match, key)) {
4454 links[key] = match[key];
4455 }
4456 }
4457 }
4458 return links;
4459 };
4460 /**
4461 * @param {!Object} test
4462 * @param {!Object} options
4463 * @return {?}
4464 */
4465 var currency = function(test, options) {
4466 return {
4467 amount : repeat(test.amount, options.currency),
4468 label : test.label,
4469 type : test.pending ? "pending" : "final"
4470 };
4471 };
4472 /**
4473 * @param {!Object} e
4474 * @param {!Object} data
4475 * @return {?}
4476 */
4477 var checkAnswer = function(e, data) {
4478 return {
4479 amount : repeat(e.amount, data.currency),
4480 label : e.label,
4481 detail : e.detail,
4482 identifier : e.id
4483 };
4484 };
4485 /**
4486 * @param {string} c
4487 * @return {?}
4488 */
4489 var register = function(c) {
4490 return function(m) {
4491 return m[c] && "string" == typeof m[c] ? m[c].toUpperCase() : null;
4492 };
4493 };
4494 var errorMsg = (opDef = {}, get(opDef, data.success, 0), get(opDef, data.fail, 1), get(opDef, data.invalid_payer_name, 2), get(opDef, data.invalid_shipping_address, 3), get(opDef, data.invalid_payer_phone, 4), get(opDef, data.invalid_payer_email, 4), opDef);
4495 var pivot = (_pivot = {}, get(_pivot, orders.pickup, "storePickup"), get(_pivot, orders.shipping, "shipping"), get(_pivot, orders.delivery, "delivery"), _pivot);
4496 var val = {
4497 total : function(config) {
4498 return currency(config.total, config);
4499 },
4500 lineItems : function(config) {
4501 return config.displayItems ? config.displayItems.map(function(result) {
4502 return currency(result, config);
4503 }) : [];
4504 },
4505 shippingMethods : function(result) {
4506 return result.shippingOptions ? result.shippingOptions.map(function(i) {
4507 return checkAnswer(i, result);
4508 }) : [];
4509 }
4510 };
4511 var y = {
4512 shippingType : function(subAssets) {
4513 var i = subAssets.shippingType;
4514 if (!i) {
4515 return null;
4516 }
4517 var key = pivot[i];
4518 if (void 0 !== key) {
4519 return key;
4520 }
4521 throw new Date("Invalid value for shippingType: " + i);
4522 },
4523 requiredBillingContactFields : function(canCreateDiscussions) {
4524 return canCreateDiscussions.requestPayerName ? ["postalAddress"] : null;
4525 },
4526 requiredShippingContactFields : function(bug) {
4527 /** @type {!Array} */
4528 var instance = [];
4529 return bug.requestShipping && instance.push("postalAddress"), bug.requestPayerEmail && instance.push("email"), bug.requestPayerPhone && instance.push("phone"), instance.length ? instance : null;
4530 },
4531 countryCode : register("country"),
4532 currencyCode : register("currency"),
4533 merchantCapabilities : function(event) {
4534 return function(eventsDict) {
4535 return eventsDict[event] || null;
4536 };
4537 }("merchantCapabilities"),
4538 supportedNetworks : function(location) {
4539 return getUnits(location.country, location.jcbEnabled || false);
4540 }
4541 };
4542 var context = {
4543 status : function(response) {
4544 return errorMsg[response.status] || 0;
4545 }
4546 };
4547 /** @type {!Object} */
4548 var b = fn({}, val, y);
4549 /** @type {!Object} */
4550 var key = fn({}, val, context);
4551 /**
4552 * @param {?} url
4553 * @return {?}
4554 */
4555 var transform = function(url) {
4556 /** @type {!Object} */
4557 var o = fn({}, opt, url);
4558 return Object.keys(b).reduce(function(key, params) {
4559 var a = b[params];
4560 var undefined = a(o);
4561 return null !== undefined ? fn({}, key, get({}, params, undefined)) : key;
4562 }, {});
4563 };
4564 /**
4565 * @param {?} num
4566 * @return {?}
4567 */
4568 var getSummary = function(num) {
4569 return Object.keys(key).reduce(function(value, color) {
4570 var type = key[color];
4571 var undefined = type(num);
4572 return null !== undefined ? fn({}, value, get({}, color, undefined)) : value;
4573 }, {});
4574 };
4575 /**
4576 * @param {boolean} item
4577 * @return {?}
4578 */
4579 var encodeURIComponent = function(item) {
4580 return "string" == typeof item ? item : null;
4581 };
4582 /**
4583 * @param {!Object} value
4584 * @return {?}
4585 */
4586 var setItem = function(value) {
4587 return value ? encodeURIComponent(value.phoneNumber) : null;
4588 };
4589 /**
4590 * @param {!Object} user
4591 * @return {?}
4592 */
4593 var push = function(user) {
4594 return user ? encodeURIComponent(user.emailAddress) : null;
4595 };
4596 /**
4597 * @param {!Object} data
4598 * @return {?}
4599 */
4600 var onSuccess = function(data) {
4601 return data ? [data.givenName, data.familyName].filter(function(fn) {
4602 return fn && "string" == typeof fn;
4603 }).join(" ") : null;
4604 };
4605 /**
4606 * @param {!Object} data
4607 * @return {?}
4608 */
4609 var flatten = function(data) {
4610 var l = data.addressLines;
4611 var code = data.countryCode;
4612 var state = data.postalCode;
4613 var cookie_name = data.administrativeArea;
4614 var name = data.locality;
4615 var number = data.phoneNumber;
4616 var country = encodeURIComponent(code);
4617 return {
4618 addressLine : Array.isArray(l) ? l.reduce(function(value, q) {
4619 return "string" == typeof q ? [].concat(include(value), [q]) : value;
4620 }, []) : [],
4621 country : country ? country.toUpperCase() : "",
4622 postalCode : encodeURIComponent(state) || "",
4623 recipient : onSuccess(data) || "",
4624 region : encodeURIComponent(cookie_name) || "",
4625 city : encodeURIComponent(name) || "",
4626 phone : encodeURIComponent(number) || "",
4627 sortingCode : "",
4628 dependentLocality : "",
4629 organization : ""
4630 };
4631 };
4632 /**
4633 * @param {!Object} file
4634 * @param {!Array} errors
4635 * @return {?}
4636 */
4637 var load = function(file, errors) {
4638 var node = file.identifier;
4639 var name = file.label;
4640 return errors.filter(function(connection) {
4641 return connection.id === node && connection.label === name;
4642 })[0];
4643 };
4644 /**
4645 * @param {?} args
4646 * @param {?} options
4647 * @return {?}
4648 */
4649 var saveContact = function(args, options) {
4650 var item = args.shippingContact;
4651 var r = args.shippingMethod;
4652 var entries = args.billingContact;
4653 return {
4654 shippingOption : r && options.shippingOptions && options.shippingOptions.length ? load(r, options.shippingOptions) : null,
4655 shippingAddress : item ? flatten(item) : null,
4656 payerEmail : push(item),
4657 payerPhone : setItem(item),
4658 payerName : onSuccess(entries),
4659 methodName : "apple-pay"
4660 };
4661 };
4662 /** @type {function(?, ?): ?} */
4663 var xtend = saveContact;
4664 /** @type {function(!Object, ...(Object|null)): !Object} */
4665 var _extends = Object.assign || function(links) {
4666 /** @type {number} */
4667 var i = 1;
4668 for (; i < arguments.length; i++) {
4669 var match = arguments[i];
4670 var key;
4671 for (key in match) {
4672 if (Object.prototype.hasOwnProperty.call(match, key)) {
4673 links[key] = match[key];
4674 }
4675 }
4676 }
4677 return links;
4678 };
4679 var calculateFloatContainerPos = function() {
4680 /**
4681 * @param {!Function} d
4682 * @param {string} props
4683 * @return {undefined}
4684 */
4685 function t(d, props) {
4686 /** @type {number} */
4687 var i = 0;
4688 for (; i < props.length; i++) {
4689 var descriptor = props[i];
4690 descriptor.enumerable = descriptor.enumerable || false;
4691 /** @type {boolean} */
4692 descriptor.configurable = true;
4693 if ("value" in descriptor) {
4694 /** @type {boolean} */
4695 descriptor.writable = true;
4696 }
4697 Object.defineProperty(d, descriptor.key, descriptor);
4698 }
4699 }
4700 return function(p, n, a) {
4701 return n && t(p.prototype, n), a && t(p, a), p;
4702 };
4703 }();
4704 /** @type {function(!Array): ?} */
4705 var DOM = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(qline) {
4706 return typeof qline;
4707 } : function(obj) {
4708 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
4709 };
4710 var languages = {
4711 australia : "AU",
4712 austria : "AT",
4713 canada : "CA",
4714 schweiz : "CH",
4715 deutschland : "DE",
4716 hongkong : "HK",
4717 saudiarabia : "SA",
4718 espaa : "ES",
4719 singapore : "SG",
4720 us : "US",
4721 usa : "US",
4722 unitedstatesofamerica : "US",
4723 unitedstates : "US",
4724 england : "GB",
4725 gb : "GB",
4726 uk : "GB",
4727 unitedkingdom : "GB"
4728 };
4729 /**
4730 * @param {!Array} value
4731 * @param {?} fn
4732 * @return {?}
4733 */
4734 var addChildren = function(value, fn) {
4735 return value && "object" === (void 0 === value ? "undefined" : DOM(value)) ? fn(value) : null;
4736 };
4737 var newPath = function() {
4738 /**
4739 * @param {!Object} that
4740 * @return {undefined}
4741 */
4742 function init(that) {
4743 var self = this;
4744 throttle(this, init);
4745 /**
4746 * @return {undefined}
4747 */
4748 this._onEvent = function() {
4749 };
4750 /**
4751 * @param {!Function} handler
4752 * @return {undefined}
4753 */
4754 this.setEventHandler = function(handler) {
4755 /** @type {!Function} */
4756 self._onEvent = handler;
4757 };
4758 /**
4759 * @return {?}
4760 */
4761 this.canMakePayment = function() {
4762 return go(window.location.hostname, self._authentication.accountId, wait(self._authentication.apiKey) === msg.test, self._report, self._minimumVersion);
4763 };
4764 /**
4765 * @param {?} index
4766 * @return {undefined}
4767 */
4768 this.update = function(index) {
4769 self._initialPaymentRequest = write(self._paymentRequestOptions, index);
4770 self._initializeSessionState();
4771 };
4772 /**
4773 * @return {undefined}
4774 */
4775 this.show = function() {
4776 self._initializeSessionState();
4777 var context = void 0;
4778 try {
4779 context = new window.ApplePaySession(self._minimumVersion, transform(self._paymentRequestOptions));
4780 } catch (controlFlowAction) {
4781 throw "Must create a new ApplePaySession from a user gesture handler." === controlFlowAction.message ? new Date("show() must be called from a user gesture handler (such as a click handler, after the user clicks a button).") : controlFlowAction;
4782 }
4783 self._privateSession = context;
4784 self._setupSession(context, self._usesButtonElement());
4785 context.begin();
4786 /** @type {boolean} */
4787 self._isShowing = true;
4788 };
4789 /**
4790 * @return {undefined}
4791 */
4792 this.abort = function() {
4793 if (self._privateSession) {
4794 self._privateSession.abort();
4795 }
4796 };
4797 /**
4798 * @param {string} message
4799 * @return {undefined}
4800 */
4801 this._warn = function(message) {
4802 };
4803 /**
4804 * @param {string} message
4805 * @param {?} data
4806 * @return {undefined}
4807 */
4808 this._report = function(message, data) {
4809 self._controller.report(message, _extends({}, data, {
4810 backingLibrary : "APPLE_PAY",
4811 usesButtonElement : self._usesButtonElement()
4812 }));
4813 };
4814 /**
4815 * @param {!Object} callback
4816 * @param {!Object} shareLevelPassword
4817 * @return {?}
4818 */
4819 this._validateMerchant = function(callback, shareLevelPassword) {
4820 return function(event) {
4821 self._controller.action.createApplePaySession({
4822 data : {
4823 validation_url : event.validationURL,
4824 domain_name : window.location.hostname,
4825 display_name : self._paymentRequestOptions.total.label
4826 },
4827 usesButtonElement : shareLevelPassword
4828 }).then(function(response) {
4829 if (self._isShowing) {
4830 switch(response.type) {
4831 case "object":
4832 callback.completeMerchantValidation(JSON.parse(response.object.session));
4833 break;
4834 case "error":
4835 self._handleValidationError(callback)(response.error);
4836 break;
4837 default:
4838 reject(response);
4839 }
4840 }
4841 }, self._handleValidationError(callback));
4842 };
4843 };
4844 /**
4845 * @param {!Object} args
4846 * @return {?}
4847 */
4848 this._handleValidationError = function(args) {
4849 return function(result) {
4850 self._report("error.pr.apple_pay.session_creation_failed", {
4851 error : result
4852 });
4853 args.abort();
4854 var str = result.message;
4855 if ("string" == typeof str) {
4856 self._controller.warn(str);
4857 }
4858 };
4859 };
4860 /**
4861 * @param {!Object} session
4862 * @return {?}
4863 */
4864 this._paymentAuthorized = function(session) {
4865 return function(options) {
4866 var token = options.payment;
4867 /** @type {(null|string)} */
4868 var name = self._usesButtonElement() ? opts.paymentRequestButton : null;
4869 self._controller.action.tokenizeWithData({
4870 type : "apple_pay",
4871 elementName : name,
4872 tokenData : _extends({}, token, {
4873 billingContact : addChildren(token.billingContact, self._normalizeContact)
4874 }),
4875 mids : self._mids
4876 }).then(function(result) {
4877 if ("error" === result.type) {
4878 session.completePayment(window.ApplePaySession.STATUS_FAILURE);
4879 self._report("error.pr.create_token_failed", {
4880 error : result.error
4881 });
4882 } else {
4883 var defaultLocale = addChildren(token.shippingContact, self._normalizeContact);
4884 var sourceNumbers = addChildren(token.billingContact, self._normalizeContact);
4885 if (defaultLocale && self._paymentRequestOptions.requestShipping && !defaultLocale.countryCode) {
4886 session.completePayment(window.ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS);
4887 }
4888 var props = xtend({
4889 shippingContact : defaultLocale,
4890 billingContact : sourceNumbers
4891 }, self._paymentRequestOptions);
4892 self._onToken(session)(_extends({}, props, {
4893 shippingOption : self._privateShippingOption,
4894 token : result.object
4895 }));
4896 }
4897 });
4898 };
4899 };
4900 /**
4901 * @param {!Object} options
4902 * @return {?}
4903 */
4904 this._normalizeContact = function(options) {
4905 if (options.country && "string" == typeof options.country) {
4906 /** @type {string} */
4907 var id = options.country.toLowerCase().replace(/[^a-z]+/g, "");
4908 var elems = void 0;
4909 return options.countryCode ? "string" == typeof options.countryCode && (elems = options.countryCode.toUpperCase()) : (elems = languages[id]) || self._report("warn.pr.apple_pay.missing_country_code", {
4910 country : options.country
4911 }), _extends({}, options, {
4912 countryCode : elems
4913 });
4914 }
4915 return options;
4916 };
4917 /**
4918 * @param {!Object} cb
4919 * @return {?}
4920 */
4921 this._onToken = function(cb) {
4922 return function(event) {
4923 self._onEvent({
4924 type : "paymentresponse",
4925 payload : _extends({}, event, {
4926 complete : self._completePayment(cb)
4927 })
4928 });
4929 };
4930 };
4931 /**
4932 * @param {!Object} session
4933 * @return {?}
4934 */
4935 this._completePayment = function(session) {
4936 return function(outgoingTweet) {
4937 self._paymentRequestOptions = write(self._paymentRequestOptions, {
4938 status : outgoingTweet
4939 });
4940 var summary = getSummary(self._paymentRequestOptions);
4941 var status = summary.status;
4942 session.completePayment(status);
4943 if (-1 === [window.ApplePaySession.STATUS_INVALID_BILLING_POSTAL_ADDRESS, window.ApplePaySession.STATUS_INVALID_SHIPPING_POSTAL_ADDRESS, window.ApplePaySession.STATUS_INVALID_SHIPPING_CONTACT].indexOf(status)) {
4944 /** @type {boolean} */
4945 self._isShowing = false;
4946 if (self._onEvent) {
4947 self._onEvent({
4948 type : "close"
4949 });
4950 }
4951 }
4952 };
4953 };
4954 /**
4955 * @param {!Object} session
4956 * @return {?}
4957 */
4958 this._shippingContactSelected = function(session) {
4959 return function(incidentsData) {
4960 self._onEvent({
4961 type : "shippingaddresschange",
4962 payload : {
4963 shippingAddress : flatten(self._normalizeContact(incidentsData.shippingContact)),
4964 updateWith : self._completeShippingContactSelection(session)
4965 }
4966 });
4967 };
4968 };
4969 /**
4970 * @param {!Object} session
4971 * @return {?}
4972 */
4973 this._completeShippingContactSelection = function(session) {
4974 return function(num) {
4975 self._paymentRequestOptions = write(self._paymentRequestOptions, num);
4976 if (self._paymentRequestOptions.shippingOptions && self._paymentRequestOptions.shippingOptions.length) {
4977 self._privateShippingOption = self._paymentRequestOptions.shippingOptions[0];
4978 }
4979 var summary = getSummary(self._paymentRequestOptions);
4980 var status = summary.status;
4981 var newShippingMethods = summary.shippingMethods;
4982 var newTotal = summary.total;
4983 var newLineItems = summary.lineItems;
4984 session.completeShippingContactSelection(status, newShippingMethods, newTotal, newLineItems);
4985 };
4986 };
4987 /**
4988 * @param {!Object} session
4989 * @return {?}
4990 */
4991 this._shippingMethodSelected = function(session) {
4992 return function(a) {
4993 if (self._paymentRequestOptions.shippingOptions) {
4994 var abs = load(a.shippingMethod, self._paymentRequestOptions.shippingOptions);
4995 self._privateShippingOption = abs;
4996 self._onEvent({
4997 type : "shippingoptionchange",
4998 payload : {
4999 shippingOption : abs,
5000 updateWith : self._completeShippingMethodSelection(session)
5001 }
5002 });
5003 }
5004 };
5005 };
5006 /**
5007 * @param {!Object} session
5008 * @return {?}
5009 */
5010 this._completeShippingMethodSelection = function(session) {
5011 return function(num) {
5012 self._paymentRequestOptions = write(self._paymentRequestOptions, num);
5013 var summary = getSummary(self._paymentRequestOptions);
5014 var status = summary.status;
5015 var newTotal = summary.total;
5016 var newLineItems = summary.lineItems;
5017 session.completeShippingMethodSelection(status, newTotal, newLineItems);
5018 };
5019 };
5020 var controller = that.controller;
5021 var authentication = that.authentication;
5022 var messageIDs = that.mids;
5023 var times = that.options;
5024 var malakh = that.usesButtonElement;
5025 this._controller = controller;
5026 this._authentication = authentication;
5027 this._mids = messageIDs;
5028 this._minimumVersion = times.__minApplePayVersion || e_height;
5029 this._usesButtonElement = malakh;
5030 this._initialPaymentRequest = times;
5031 /** @type {boolean} */
5032 this._isShowing = false;
5033 this._initializeSessionState();
5034 }
5035 return calculateFloatContainerPos(init, [{
5036 key : "_initializeSessionState",
5037 value : function() {
5038 /** @type {!Object} */
5039 this._paymentRequestOptions = _extends({}, opt, this._initialPaymentRequest, {
5040 status : data.success
5041 });
5042 /** @type {null} */
5043 this._privateSession = null;
5044 /** @type {null} */
5045 this._privateShippingOption = null;
5046 var blockHostsStr = this._paymentRequestOptions.shippingOptions;
5047 if (blockHostsStr && blockHostsStr.length) {
5048 this._privateShippingOption = blockHostsStr[0];
5049 }
5050 }
5051 }, {
5052 key : "_setupSession",
5053 value : function(session, shareLevelPassword) {
5054 var me = this;
5055 session.addEventListener("validatemerchant", __bind(this._validateMerchant(session, shareLevelPassword)));
5056 session.addEventListener("paymentauthorized", __bind(this._paymentAuthorized(session)));
5057 session.addEventListener("cancel", __bind(function() {
5058 /** @type {boolean} */
5059 me._isShowing = false;
5060 me._onEvent({
5061 type : "cancel"
5062 });
5063 me._onEvent({
5064 type : "close"
5065 });
5066 }));
5067 session.addEventListener("shippingcontactselected", __bind(this._shippingContactSelected(session)));
5068 session.addEventListener("shippingmethodselected", __bind(this._shippingMethodSelected(session)));
5069 }
5070 }]), init;
5071 }();
5072 var AttributeTransformer = newPath;
5073 /** @type {null} */
5074 var diff = null;
5075 /**
5076 * @param {!Function} validate
5077 * @return {?}
5078 */
5079 var edit = function(validate) {
5080 return null !== diff ? Q.resolve(diff) : validate().then(function(abDiff) {
5081 return diff = abDiff;
5082 });
5083 };
5084 /** @type {function(!Function): ?} */
5085 var dst = edit;
5086 /**
5087 * @return {?}
5088 */
5089 var isHandleableUrl = function() {
5090 return "https:" === window.location.protocol && !(!hasSongChanged && !isReplayingSong);
5091 };
5092 /** @type {function(): ?} */
5093 var isDialogShow = isHandleableUrl;
5094 /** @type {function(!Object, ...(Object|null)): !Object} */
5095 var pagePreviousNext = Object.assign || function(links) {
5096 /** @type {number} */
5097 var i = 1;
5098 for (; i < arguments.length; i++) {
5099 var match = arguments[i];
5100 var key;
5101 for (key in match) {
5102 if (Object.prototype.hasOwnProperty.call(match, key)) {
5103 links[key] = match[key];
5104 }
5105 }
5106 }
5107 return links;
5108 };
5109 /**
5110 * @param {!Object} options
5111 * @return {undefined}
5112 */
5113 var be3 = function show(options) {
5114 var self = this;
5115 dispatch(this, show);
5116 /** @type {null} */
5117 this._mids = null;
5118 /** @type {null} */
5119 this._frame = null;
5120 this._backdrop = new Menu({
5121 lockScrolling : false,
5122 lockFocus : true,
5123 lockFocusOn : null
5124 });
5125 /**
5126 * @param {!Object} frame
5127 * @return {undefined}
5128 */
5129 this._initFrame = function(frame) {
5130 var connection = self._controller.createHiddenFrame(e.PAYMENT_REQUEST_GOOGLE_PAY, {
5131 authentication : self._authentication,
5132 mids : self._mids
5133 });
5134 connection.send({
5135 action : "stripe-pr-initialize",
5136 payload : {
5137 data : frame
5138 }
5139 });
5140 self._initFrameEventHandlers(connection);
5141 self._frame = connection;
5142 };
5143 /**
5144 * @param {!Object} client
5145 * @return {undefined}
5146 */
5147 this._initFrameEventHandlers = function(client) {
5148 client._on("pr-cancel", function() {
5149 self._onEvent({
5150 type : "cancel"
5151 });
5152 });
5153 client._on("pr-close", function() {
5154 self._backdrop.fadeOut().then(function() {
5155 self._backdrop.unmount();
5156 });
5157 self._onEvent({
5158 type : "close"
5159 });
5160 });
5161 client._on("pr-error", function(error) {
5162 self._onEvent({
5163 type : "error",
5164 payload : {
5165 errorMessage : error.errorMessage,
5166 errorCode : error.errorCode
5167 }
5168 });
5169 });
5170 client._on("pr-callback", function(params) {
5171 var c = params.event;
5172 var o = params.options;
5173 var token = params.nonce;
5174 switch(c) {
5175 case "paymentresponse":
5176 self._handlePaymentResponse(client, o, token);
5177 break;
5178 case "shippingaddresschange":
5179 self._handleShippingAddressChange(client, o, token);
5180 break;
5181 case "shippingoptionchange":
5182 self._handleShippingOptionChange(client, o, token);
5183 break;
5184 default:
5185 throw new Error("Unexpected event name: " + c);
5186 }
5187 });
5188 };
5189 /**
5190 * @param {!Object} c
5191 * @param {?} payload
5192 * @param {string} uri
5193 * @return {undefined}
5194 */
5195 this._handlePaymentResponse = function(c, payload, uri) {
5196 /**
5197 * @param {number} error
5198 * @return {undefined}
5199 */
5200 var cb = function(error) {
5201 c.send({
5202 action : "stripe-pr-callback-complete",
5203 payload : {
5204 nonce : uri,
5205 data : {
5206 status : error
5207 }
5208 }
5209 });
5210 };
5211 self._onEvent({
5212 type : "paymentresponse",
5213 payload : pagePreviousNext({}, payload, {
5214 complete : cb
5215 })
5216 });
5217 };
5218 /**
5219 * @param {!Object} c
5220 * @param {?} payload
5221 * @param {string} uri
5222 * @return {undefined}
5223 */
5224 this._handleShippingAddressChange = function(c, payload, uri) {
5225 /**
5226 * @param {!Object} params
5227 * @return {undefined}
5228 */
5229 var createSSHKey = function(params) {
5230 c.send({
5231 action : "stripe-pr-callback-complete",
5232 payload : {
5233 nonce : uri,
5234 data : params
5235 }
5236 });
5237 };
5238 self._onEvent({
5239 type : "shippingaddresschange",
5240 payload : pagePreviousNext({}, payload, {
5241 updateWith : createSSHKey
5242 })
5243 });
5244 };
5245 /**
5246 * @param {!Object} c
5247 * @param {?} payload
5248 * @param {string} uri
5249 * @return {undefined}
5250 */
5251 this._handleShippingOptionChange = function(c, payload, uri) {
5252 /**
5253 * @param {!Object} params
5254 * @return {undefined}
5255 */
5256 var createSSHKey = function(params) {
5257 c.send({
5258 action : "stripe-pr-callback-complete",
5259 payload : {
5260 nonce : uri,
5261 data : params
5262 }
5263 });
5264 };
5265 self._onEvent({
5266 type : "shippingoptionchange",
5267 payload : pagePreviousNext({}, payload, {
5268 updateWith : createSSHKey
5269 })
5270 });
5271 };
5272 /**
5273 * @param {!Function} handler
5274 * @return {undefined}
5275 */
5276 this.setEventHandler = function(handler) {
5277 /** @type {!Function} */
5278 self._onEvent = handler;
5279 };
5280 /**
5281 * @return {?}
5282 */
5283 this.canMakePayment = function() {
5284 if (!isDialogShow()) {
5285 return Q.resolve(false);
5286 }
5287 if (!self._frame) {
5288 throw new Error("Frame not initialized.");
5289 }
5290 var frame = self._frame;
5291 return dst(function() {
5292 return frame.action.checkCanMakePayment().then(function(addressesDoc) {
5293 return true === addressesDoc.available;
5294 });
5295 });
5296 };
5297 /**
5298 * @return {undefined}
5299 */
5300 this.show = function() {
5301 if (self._frame) {
5302 self._frame.send({
5303 action : "stripe-pr-show",
5304 payload : {
5305 data : {
5306 usesButtonElement : self._usesButtonElement()
5307 }
5308 }
5309 });
5310 self._backdrop.mount();
5311 self._backdrop.show();
5312 self._backdrop.fadeIn();
5313 }
5314 };
5315 /**
5316 * @param {!Object} x
5317 * @return {undefined}
5318 */
5319 this.update = function(x) {
5320 if (self._frame) {
5321 self._frame.send({
5322 action : "stripe-pr-update",
5323 payload : {
5324 data : x
5325 }
5326 });
5327 }
5328 };
5329 /**
5330 * @return {undefined}
5331 */
5332 this.abort = function() {
5333 if (self._frame) {
5334 self._frame.send({
5335 action : "stripe-pr-abort",
5336 payload : {}
5337 });
5338 }
5339 };
5340 this._controller = options.controller;
5341 this._authentication = options.authentication;
5342 this._mids = options.mids;
5343 this._usesButtonElement = options.usesButtonElement;
5344 if (isDialogShow() && this._controller) {
5345 this._controller.action.fetchLocale({
5346 locale : "auto"
5347 });
5348 this._initFrame(options.options);
5349 }
5350 };
5351 /** @type {function(!Object): undefined} */
5352 var OptimizerContext = be3;
5353 var preserveHTML = function() {
5354 if (!window.PaymentRequest) {
5355 return null;
5356 }
5357 if (/CriOS\/59/.test(navigator.userAgent)) {
5358 return null;
5359 }
5360 if (/.*\(.*; wv\).*Chrome\/(?:53|54)\.\d.*/g.test(navigator.userAgent)) {
5361 return null;
5362 }
5363 if (dr) {
5364 return null;
5365 }
5366 var TemporalAttribute = window.PaymentRequest;
5367 return TemporalAttribute.prototype.canMakePayment || (TemporalAttribute.prototype.canMakePayment = function() {
5368 return Q.resolve(false);
5369 }), TemporalAttribute;
5370 }();
5371 /** @type {null} */
5372 var s = null;
5373 /**
5374 * @param {!Object} state
5375 * @param {boolean} line
5376 * @return {?}
5377 */
5378 var process = function(state, line) {
5379 return null !== s ? Q.resolve(s) : preserveHTML ? line && "https:" !== window.location.protocol ? (window.console && window.console.warn("To test Payment Request, you must serve this page over HTTPS."), Q.resolve(false)) : state ? state.action.checkCanMakePayment().then(function(data) {
5380 var available = data.available;
5381 return s = true === available;
5382 }) : Q.resolve(false) : Q.resolve(false);
5383 };
5384 /** @type {function(!Object, ...(Object|null)): !Object} */
5385 var conflictPathWatch = Object.assign || function(links) {
5386 /** @type {number} */
5387 var i = 1;
5388 for (; i < arguments.length; i++) {
5389 var match = arguments[i];
5390 var key;
5391 for (key in match) {
5392 if (Object.prototype.hasOwnProperty.call(match, key)) {
5393 links[key] = match[key];
5394 }
5395 }
5396 }
5397 return links;
5398 };
5399 /**
5400 * @param {!Object} that
5401 * @return {undefined}
5402 */
5403 var be1 = function init(that) {
5404 custom(this, init);
5405 Ajax.call(this);
5406 var authentication = that.authentication;
5407 var controller = that.controller;
5408 var messageIDs = that.mids;
5409 var malakh = that.usesButtonElement;
5410 var op = that.options;
5411 if (this._authentication = authentication, this._controller = controller, this._mids = messageIDs, this._usesButtonElement = malakh, preserveHTML && "https:" === window.location.protocol) {
5412 this._controller.action.fetchLocale({
5413 locale : "auto"
5414 });
5415 var origProvider = this._controller.createHiddenFrame(e.PAYMENT_REQUEST_BROWSER, {
5416 authentication : authentication,
5417 mids : this._mids
5418 });
5419 this._setupPrFrame(origProvider, op);
5420 this._prFrame = origProvider;
5421 } else {
5422 /** @type {null} */
5423 this._prFrame = null;
5424 }
5425 };
5426 /**
5427 * @return {undefined}
5428 */
5429 var Ajax = function() {
5430 var self = this;
5431 /**
5432 * @return {undefined}
5433 */
5434 this._onEvent = function() {
5435 };
5436 /**
5437 * @param {!Function} handler
5438 * @return {undefined}
5439 */
5440 this.setEventHandler = function(handler) {
5441 /** @type {!Function} */
5442 self._onEvent = handler;
5443 };
5444 /**
5445 * @return {?}
5446 */
5447 this.canMakePayment = function() {
5448 return process(self._prFrame, wait(self._authentication.apiKey) === msg.test);
5449 };
5450 /**
5451 * @param {string} x
5452 * @return {undefined}
5453 */
5454 this.update = function(x) {
5455 var worker = self._prFrame;
5456 if (worker) {
5457 worker.send({
5458 action : "stripe-pr-update",
5459 payload : {
5460 data : x
5461 }
5462 });
5463 }
5464 };
5465 /**
5466 * @return {undefined}
5467 */
5468 this.show = function() {
5469 if (!self._prFrame) {
5470 throw new Date("Payment Request is not available in this browser.");
5471 }
5472 self._prFrame.send({
5473 action : "stripe-pr-show",
5474 payload : {
5475 data : {
5476 usesButtonElement : self._usesButtonElement()
5477 }
5478 }
5479 });
5480 };
5481 /**
5482 * @return {undefined}
5483 */
5484 this.abort = function() {
5485 if (self._prFrame) {
5486 self._prFrame.send({
5487 action : "stripe-pr-abort",
5488 payload : {}
5489 });
5490 }
5491 };
5492 /**
5493 * @param {!Object} self
5494 * @param {!Object} p
5495 * @return {undefined}
5496 */
5497 this._setupPrFrame = function(self, p) {
5498 self.send({
5499 action : "stripe-pr-initialize",
5500 payload : {
5501 data : p
5502 }
5503 });
5504 self._on("pr-cancel", function() {
5505 self._onEvent({
5506 type : "cancel"
5507 });
5508 });
5509 self._on("pr-close", function() {
5510 self._onEvent({
5511 type : "close"
5512 });
5513 });
5514 self._on("pr-error", function(t) {
5515 self._onEvent({
5516 type : "error",
5517 payload : {
5518 errorMessage : t.message || "",
5519 errorCode : t.code || ""
5520 }
5521 });
5522 });
5523 self._on("pr-callback", function(data) {
5524 var name = data.event;
5525 var nonce = data.nonce;
5526 var item = data.options;
5527 switch(name) {
5528 case "token":
5529 self._onEvent({
5530 type : "paymentresponse",
5531 payload : conflictPathWatch({}, item, {
5532 complete : function(msg) {
5533 self.send({
5534 action : "stripe-pr-callback-complete",
5535 payload : {
5536 data : {
5537 status : msg
5538 },
5539 nonce : nonce
5540 }
5541 });
5542 }
5543 })
5544 });
5545 break;
5546 case "shippingaddresschange":
5547 self._onEvent({
5548 type : "shippingaddresschange",
5549 payload : {
5550 shippingAddress : item.shippingAddress,
5551 updateWith : function(data) {
5552 self.send({
5553 action : "stripe-pr-callback-complete",
5554 payload : {
5555 nonce : nonce,
5556 data : data
5557 }
5558 });
5559 }
5560 }
5561 });
5562 break;
5563 case "shippingoptionchange":
5564 self._onEvent({
5565 type : "shippingoptionchange",
5566 payload : {
5567 shippingOption : item.shippingOption,
5568 updateWith : function(data) {
5569 self.send({
5570 action : "stripe-pr-callback-complete",
5571 payload : {
5572 nonce : nonce,
5573 data : data
5574 }
5575 });
5576 }
5577 }
5578 });
5579 break;
5580 default:
5581 throw new Error("Unexpected event from PaymentRequest inner: " + name);
5582 }
5583 });
5584 };
5585 };
5586 /** @type {function(!Object): undefined} */
5587 var InlineCompiler = be1;
5588 /** @type {function(!Object, ...(Object|null)): !Object} */
5589 var extend = Object.assign || function(links) {
5590 /** @type {number} */
5591 var i = 1;
5592 for (; i < arguments.length; i++) {
5593 var match = arguments[i];
5594 var key;
5595 for (key in match) {
5596 if (Object.prototype.hasOwnProperty.call(match, key)) {
5597 links[key] = match[key];
5598 }
5599 }
5600 }
5601 return links;
5602 };
5603 var core_user_remove_user_device = function(_Renderer) {
5604 /**
5605 * @param {!Object} params
5606 * @return {?}
5607 */
5608 function fn(params) {
5609 _element_ready(this, fn);
5610 var self = encode(this, (fn.__proto__ || Object.getPrototypeOf(fn)).call(this));
5611 start.call(self);
5612 self._controller = params.controller;
5613 self._authentication = params.authentication;
5614 self._mids = params.mids;
5615 self._report("pr.options", {
5616 options : params.rawOptions
5617 });
5618 var result = cb(error, params.rawOptions || {}, "paymentRequest()");
5619 var options = result.value;
5620 if (result.warnings.forEach(function(msg) {
5621 return self._warn(msg);
5622 }), options.__billingDetailsEmailOverride && options.requestPayerEmail) {
5623 throw new Date("When providing `__billingDetailsEmailOverride`, `requestPayerEmail` has to be `false` so that the customer is not prompted for their email in the payment sheet.");
5624 }
5625 return self._queryStrategy = params.queryStrategyOverride || getName(params.betas), self._report("pr.query_strategy", {
5626 queryStrategy : self._queryStrategy
5627 }), self._initialOptions = extend({}, options, {
5628 __skipGooglePayInPaymentRequest : -1 !== self._queryStrategy.indexOf("GOOGLE_PAY")
5629 }), self._initBackingLibraries(self._initialOptions), self;
5630 }
5631 return _inherits$1(fn, _Renderer), fn;
5632 }(BaseMask);
5633 /**
5634 * @return {undefined}
5635 */
5636 var start = function() {
5637 var self = this;
5638 /** @type {null} */
5639 this._usedByButtonElement = null;
5640 /** @type {boolean} */
5641 this._showCalledByButtonElement = false;
5642 /** @type {boolean} */
5643 this._isShowing = false;
5644 this._backingLibraries = {
5645 APPLE_PAY : null,
5646 GOOGLE_PAY : null,
5647 BROWSER : null
5648 };
5649 /** @type {null} */
5650 this._activeBackingLibraryName = null;
5651 /** @type {null} */
5652 this._activeBackingLibrary = null;
5653 this._canMakePaymentAvailability = {
5654 APPLE_PAY : null,
5655 GOOGLE_PAY : null,
5656 BROWSER : null
5657 };
5658 /** @type {boolean} */
5659 this._canMakePaymentResolved = false;
5660 /**
5661 * @param {string} string
5662 * @param {!Function} users
5663 * @return {undefined}
5664 */
5665 this._validateUserOn = function(string, users) {
5666 if ("string" == typeof string && ("source" === string && self._hasRegisteredListener("paymentmethod") || "paymentmethod" === string && self._hasRegisteredListener("source"))) {
5667 self._report("pr.double_callback_registration");
5668 self._controller.warn("Do not register event listeners for both `source` or `paymentmethod`. Only one of them will succeed.");
5669 }
5670 };
5671 /**
5672 * @param {string} message
5673 * @param {?} context
5674 * @return {undefined}
5675 */
5676 this._report = function(message, context) {
5677 self._controller.report(message, extend({}, context, {
5678 activeBackingLibrary : self._activeBackingLibraryName,
5679 usesButtonElement : self._usedByButtonElement
5680 }));
5681 };
5682 /**
5683 * @param {string} message
5684 * @return {undefined}
5685 */
5686 this._warn = function(message) {
5687 self._controller.warn(message);
5688 };
5689 /**
5690 * @return {undefined}
5691 */
5692 this._registerElement = function() {
5693 /** @type {boolean} */
5694 self._usedByButtonElement = true;
5695 };
5696 /**
5697 * @return {undefined}
5698 */
5699 this._elementShow = function() {
5700 /** @type {boolean} */
5701 self._showCalledByButtonElement = true;
5702 self.show();
5703 };
5704 /**
5705 * @param {!Object} SEVERITIES
5706 * @return {undefined}
5707 */
5708 this._initBackingLibraries = function(SEVERITIES) {
5709 self._queryStrategy.forEach(function(secondErr) {
5710 var context = {
5711 controller : self._controller,
5712 authentication : self._authentication,
5713 mids : self._mids,
5714 options : SEVERITIES,
5715 usesButtonElement : function() {
5716 return true === self._usedByButtonElement;
5717 }
5718 };
5719 switch(secondErr) {
5720 case "APPLE_PAY":
5721 self._backingLibraries.APPLE_PAY = new AttributeTransformer(context);
5722 self._backingLibraries.APPLE_PAY.setEventHandler(self._handleInternalEvent);
5723 break;
5724 case "GOOGLE_PAY":
5725 self._backingLibraries.GOOGLE_PAY = new OptimizerContext(context);
5726 self._backingLibraries.GOOGLE_PAY.setEventHandler(self._handleInternalEvent);
5727 break;
5728 case "BROWSER":
5729 self._backingLibraries.BROWSER = new InlineCompiler(context);
5730 self._backingLibraries.BROWSER.setEventHandler(self._handleInternalEvent);
5731 break;
5732 default:
5733 reject(secondErr);
5734 }
5735 });
5736 };
5737 /**
5738 * @param {!Object} data
5739 * @return {undefined}
5740 */
5741 this._handleInternalEvent = function(data) {
5742 switch(data.type) {
5743 case "paymentresponse":
5744 self._emitPaymentResponse(data.payload);
5745 break;
5746 case "error":
5747 self._report("error.pr.internal_error", {
5748 error : data.payload
5749 });
5750 break;
5751 case "close":
5752 /** @type {boolean} */
5753 self._isShowing = false;
5754 break;
5755 default:
5756 self._emitExternalEvent(data);
5757 }
5758 };
5759 /**
5760 * @param {!Object} args
5761 * @return {undefined}
5762 */
5763 this._emitExternalEvent = function(args) {
5764 switch(args.type) {
5765 case "cancel":
5766 self._emit("cancel");
5767 break;
5768 case "shippingoptionchange":
5769 case "shippingaddresschange":
5770 var event = args.type;
5771 var state = args.payload;
5772 /** @type {null} */
5773 var _takingTooLongTimeout = null;
5774 /** @type {boolean} */
5775 var i = false;
5776 /** @type {boolean} */
5777 var b = false;
5778 /**
5779 * @param {!Object} results
5780 * @return {?}
5781 */
5782 var validate = function(results) {
5783 if (b && i) {
5784 return self._report("pr.update_with_called_after_timeout", {
5785 event : event
5786 }), void self._controller.warn("Call to updateWith() was ignored because it has already timed out. Please ensure that updateWith is called within 30 seconds.");
5787 }
5788 if (i) {
5789 return self._report("pr.update_with_double_call", {
5790 event : event
5791 }), void self._controller.warn("Call to updateWith() was ignored because it has already been called. Do not call updateWith more than once.");
5792 }
5793 if (_takingTooLongTimeout) {
5794 clearTimeout(_takingTooLongTimeout);
5795 }
5796 /** @type {boolean} */
5797 i = true;
5798 self._report("pr.update_with", {
5799 event : event,
5800 updates : results
5801 });
5802 var res = cb(row, results || {}, event + " callback");
5803 var item = res.value;
5804 res.warnings.forEach(function(type) {
5805 return self._controller.warn(type);
5806 });
5807 var blockHostsStr = item.shippingOptions || self._initialOptions.shippingOptions;
5808 if (!("shippingaddresschange" !== args.type || item.status !== data.success || blockHostsStr && blockHostsStr.length)) {
5809 throw new Date("When requesting shipping information, you must specify shippingOptions once a shipping address is selected.\nEither provide shippingOptions in stripe.paymentRequest(...) or listen for the shippingaddresschange event and provide shippingOptions to the updateWith callback there.");
5810 }
5811 state.updateWith(item);
5812 };
5813 if (self._hasRegisteredListener(args.type)) {
5814 /** @type {number} */
5815 _takingTooLongTimeout = setTimeout(function() {
5816 /** @type {boolean} */
5817 b = true;
5818 self._report("pr.update_with_timed_out", {
5819 event : event
5820 });
5821 self._controller.warn('Timed out waiting for a call to updateWith(). If you listen to "' + args.type + '" events, then you must call event.updateWith in the "' + args.type + '" handler within 30 seconds.');
5822 validate({
5823 status : "fail"
5824 });
5825 }, 29900);
5826 self._emit(event, extend({}, state, {
5827 updateWith : validate
5828 }));
5829 } else {
5830 validate({
5831 status : "success"
5832 });
5833 }
5834 break;
5835 case "token":
5836 case "source":
5837 case "paymentmethod":
5838 var type = args.type;
5839 var item = args.payload;
5840 /** @type {null} */
5841 var paintNodesTimeout = null;
5842 /** @type {boolean} */
5843 var reverseIsSingle = false;
5844 /** @type {boolean} */
5845 var reverseValue = false;
5846 /**
5847 * @param {string} msg
5848 * @return {?}
5849 */
5850 var callback = function(msg) {
5851 if (reverseIsSingle && reverseValue) {
5852 return self._report("pr.complete_called_after_timeout"), void self._controller.warn("Call to complete() was ignored because it has already timed out. Please ensure that complete is called within 30 seconds.");
5853 }
5854 if (reverseValue) {
5855 return self._report("pr.complete_double_call"), void self._controller.warn("Call to complete() was ignored because it has already been called. Do not call complete more than once.");
5856 }
5857 if (paintNodesTimeout) {
5858 clearTimeout(paintNodesTimeout);
5859 }
5860 /** @type {boolean} */
5861 reverseValue = true;
5862 var result = cb(mutationsMap, msg, "status for PaymentRequest completion");
5863 var context = result.value;
5864 result.warnings.forEach(function(type) {
5865 return self._controller.warn(type);
5866 });
5867 item.complete(context);
5868 };
5869 /** @type {number} */
5870 paintNodesTimeout = setTimeout(function() {
5871 /** @type {boolean} */
5872 reverseIsSingle = true;
5873 self._report("pr.complete_timed_out");
5874 self._controller.warn('Timed out waiting for a call to complete(). Once you have processed the payment in the "' + args.type + '" handler, you must call event.complete within 30 seconds.');
5875 callback("fail");
5876 }, 29900);
5877 self._emit(type, extend({}, item, {
5878 complete : callback
5879 }));
5880 break;
5881 default:
5882 reject(args);
5883 }
5884 };
5885 /**
5886 * @param {!Object} t
5887 * @return {undefined}
5888 */
5889 this._maybeEmitPaymentResponse = function(t) {
5890 if (self._isShowing) {
5891 self._emitExternalEvent(t);
5892 }
5893 };
5894 /**
5895 * @param {!Object} spec
5896 * @return {undefined}
5897 */
5898 this._emitPaymentResponse = function(spec) {
5899 self._report("pr.payment_authorized");
5900 var options = spec.__googlePayBillingAddress;
5901 var r = pick(spec, ["__googlePayBillingAddress"]);
5902 var t = r.token;
5903 var args = pick(r, ["token"]);
5904 var two_window = args.payerEmail;
5905 var phoneNumber = args.payerPhone;
5906 var cb = args.complete;
5907 /** @type {(null|string)} */
5908 var name = self._showCalledByButtonElement ? opts.paymentRequestButton : null;
5909 if (self._hasRegisteredListener("token")) {
5910 self._maybeEmitPaymentResponse({
5911 type : "token",
5912 payload : r
5913 });
5914 }
5915 if (self._hasRegisteredListener("source")) {
5916 self._controller.action.createSourceWithData({
5917 elementName : name,
5918 type : "card",
5919 sourceData : {
5920 token : t.id,
5921 owner : extend({
5922 email : self._initialOptions.__billingDetailsEmailOverride || two_window,
5923 phone : phoneNumber
5924 }, options ? {
5925 address : options
5926 } : {})
5927 },
5928 mids : null
5929 }).then(function(message) {
5930 if ("error" === message.type) {
5931 self._report("fatal.pr.token_to_source_failed", {
5932 error : message.error,
5933 token : t.id
5934 });
5935 cb("fail");
5936 } else {
5937 self._maybeEmitPaymentResponse({
5938 type : "source",
5939 payload : extend({}, args, {
5940 source : message.object
5941 })
5942 });
5943 }
5944 });
5945 }
5946 if (self._hasRegisteredListener("paymentmethod")) {
5947 self._controller.action.createPaymentMethodWithData({
5948 elementName : name,
5949 type : "card",
5950 paymentMethodData : {
5951 card : {
5952 token : t.id
5953 },
5954 billing_details : extend({
5955 email : self._initialOptions.__billingDetailsEmailOverride || two_window,
5956 phone : phoneNumber
5957 }, options ? {
5958 address : options
5959 } : {})
5960 },
5961 mids : null
5962 }).then(function(data) {
5963 if ("error" === data.type) {
5964 self._report("fatal.pr.token_to_payment_method_failed", {
5965 error : data.error,
5966 token : t.id
5967 });
5968 cb("fail");
5969 } else {
5970 self._maybeEmitPaymentResponse({
5971 type : "paymentmethod",
5972 payload : extend({}, args, {
5973 paymentMethod : data.object
5974 })
5975 });
5976 }
5977 });
5978 }
5979 };
5980 /**
5981 * @param {string} field
5982 * @return {?}
5983 */
5984 this._canMakePaymentForBackingLibrary = function(field) {
5985 var potentialFile = self._backingLibraries[field];
5986 if (!potentialFile) {
5987 throw new Error("Unexpectedly calling canMakePayment on uninitialized backing library.");
5988 }
5989 return Q.race([(new Q(function(_nextEventFunc) {
5990 return setTimeout(_nextEventFunc, 1E4);
5991 })).then(function() {
5992 return false;
5993 }), potentialFile.canMakePayment().then(function(canCreateDiscussions) {
5994 return !!canCreateDiscussions;
5995 })]).then(function(key) {
5996 return self._canMakePaymentAvailability = extend({}, self._canMakePaymentAvailability, getValue({}, field, key)), {
5997 backingLibraryName : field,
5998 available : key
5999 };
6000 });
6001 };
6002 /**
6003 * @return {?}
6004 */
6005 this._constructCanMakePaymentResponse = function() {
6006 return extend({
6007 applePay : !!self._canMakePaymentAvailability.APPLE_PAY
6008 }, -1 !== self._queryStrategy.indexOf("GOOGLE_PAY") ? {
6009 googlePay : !!self._canMakePaymentAvailability.GOOGLE_PAY
6010 } : {});
6011 };
6012 this.canMakePayment = __bind(function() {
6013 if (self._report("pr.can_make_payment"), self._canMakePaymentResolved) {
6014 var value = null !== self._activeBackingLibrary ? self._constructCanMakePaymentResponse() : null;
6015 return self._report("pr.can_make_payment_response", {
6016 response : value,
6017 cached : true
6018 }), Q.resolve(value);
6019 }
6020 if ("https:" !== window.location.protocol) {
6021 return self._canMakePaymentResolved = true, Q.resolve(null);
6022 }
6023 var http = self._queryStrategy.map(function(orderCondition) {
6024 return function() {
6025 return self._canMakePaymentForBackingLibrary(orderCondition);
6026 };
6027 });
6028 /** @type {number} */
6029 var start = Date.now();
6030 return server(http, function(data) {
6031 var n = data.backingLibraryName;
6032 var available = data.available;
6033 return available && (self._activeBackingLibraryName = n, self._activeBackingLibrary = self._backingLibraries[n]), available;
6034 }).then(function(verifiedEvent) {
6035 /** @type {number} */
6036 var end = Date.now();
6037 /** @type {boolean} */
6038 self._canMakePaymentResolved = true;
6039 /** @type {null} */
6040 var stapling = null;
6041 return "SATISFIED" === verifiedEvent.type && (stapling = self._constructCanMakePaymentResponse()), self._report("pr.can_make_payment_response", {
6042 response : stapling,
6043 cached : false,
6044 duration : end - start
6045 }), stapling;
6046 });
6047 });
6048 this.update = __bind(function(results) {
6049 if (self._isShowing) {
6050 throw self._report("pr.update_called_while_showing"), new Date("You cannot update Payment Request options while the payment sheet is showing.");
6051 }
6052 self._report("pr.update", {
6053 updates : results
6054 });
6055 var result = cb(stat, results, "PaymentRequest update()");
6056 var r = result.value;
6057 result.warnings.forEach(function(msg) {
6058 return self._warn(msg);
6059 });
6060 if (self._activeBackingLibrary) {
6061 self._activeBackingLibrary.update(r);
6062 }
6063 });
6064 this.show = __bind(function() {
6065 if (self._usedByButtonElement && !self._showCalledByButtonElement && (self._report("pr.show_called_with_button"), self._warn("Do not call show() yourself if you are using the paymentRequestButton Element. The Element handles showing the payment sheet.")), !self._canMakePaymentResolved) {
6066 throw self._report("pr.show_called_before_can_make_payment"), new Date("You must first check the Payment Request API's availability using paymentRequest.canMakePayment() before calling show().");
6067 }
6068 if (!self._activeBackingLibrary) {
6069 throw self._report("pr.show_called_with_can_make_payment_false"), new Date("Payment Request is not available in this browser.");
6070 }
6071 var t = self._activeBackingLibrary;
6072 self._report("pr.show", {
6073 listeners : Object.keys(self._callbacks).sort()
6074 });
6075 /** @type {boolean} */
6076 self._isShowing = true;
6077 t.show();
6078 });
6079 this.abort = __bind(function() {
6080 if (self._activeBackingLibrary) {
6081 var _event = self._activeBackingLibrary;
6082 self._report("pr.abort");
6083 _event.abort();
6084 }
6085 });
6086 };
6087 var wsFunction = core_user_remove_user_device;
6088 var q = {
6089 base : computed(array),
6090 complete : computed(array),
6091 empty : computed(array),
6092 invalid : computed(array),
6093 paymentRequestButton : computed(array)
6094 };
6095 var defaults = {
6096 classes : computed(test({
6097 base : computed(id),
6098 complete : computed(id),
6099 empty : computed(id),
6100 focus : computed(id),
6101 invalid : computed(id),
6102 webkitAutofill : computed(id)
6103 })),
6104 hidePostalCode : computed(month),
6105 hideIcon : computed(month),
6106 style : computed(test(q)),
6107 iconStyle : computed(T("solid", "default")),
6108 value : computed(create(id, array)),
6109 __privateCvcOptional : computed(month),
6110 __privateValue : computed(create(id, array)),
6111 __privateEmitIbanValue : computed(month),
6112 error : computed(test({
6113 type : id,
6114 code : computed(id),
6115 decline_code : computed(id),
6116 param : computed(id)
6117 })),
6118 locale : runTask("elements()"),
6119 fonts : runTask("elements()"),
6120 placeholder : computed(id),
6121 disabled : computed(month),
6122 placeholderCountry : computed(id),
6123 paymentRequest : computed(function(Array, canCreateDiscussions) {
6124 return function(value, obj) {
6125 return value instanceof Array ? resolve(value) : forOwn("a " + canCreateDiscussions + " instance", value, obj);
6126 };
6127 }(wsFunction, "stripe.paymentRequest(...)")),
6128 supportedCountries : computed(all(id))
6129 };
6130 var result = test(defaults);
6131 /**
6132 * @param {string} name
6133 * @param {string} data
6134 * @param {!Array} obj
6135 * @return {undefined}
6136 */
6137 var insert = function(name, data, obj) {
6138 /** @type {boolean} */
6139 var r = "auBankAccount" === name && !log(obj, "au_bank_account_beta_1");
6140 if (!name || !(name in object) || r) {
6141 throw new Date("A valid Element name must be provided. Valid Elements are:\n" + Object.keys(object).filter(function(name) {
6142 return !object[name].beta;
6143 }).join(", ") + "; you passed: " + name + ".");
6144 }
6145 if (object[name].unique && -1 !== data.indexOf(name)) {
6146 throw new Date("Can only create one Element of type " + name + ".");
6147 }
6148 var c = object[name].conflict;
6149 var i = getTime(data, c);
6150 if (i.length) {
6151 var iid = i[0];
6152 throw new Date("Cannot create an Element of type " + name + " after an Element of type " + iid + " has already been created.");
6153 }
6154 };
6155 /** @type {string} */
6156 var html = "14px";
6157 /**
6158 * @param {string} st
6159 * @return {?}
6160 */
6161 var exec = function(st) {
6162 var t2 = st.split(" ").map(function(commentToCheck) {
6163 return parseInt(commentToCheck.trim(), 10);
6164 });
6165 return 1 === t2.length || 2 === t2.length ? 2 * t2[0] : 3 === t2.length || 4 === t2.length ? t2[0] + t2[2] : 0;
6166 };
6167 /**
6168 * @return {?}
6169 */
6170 var route = function() {
6171 var arg = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "1.2em";
6172 var val = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : html;
6173 var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "0";
6174 var step = exec(options);
6175 if ("string" == typeof arg && /^[0-9.]+px$/.test(arg)) {
6176 return parseFloat(arg.toString().replace(/[^0-9.]/g, "")) + step + "px";
6177 }
6178 /** @type {number} */
6179 var i = parseFloat(arg.toString().replace(/[^0-9.]/g, ""));
6180 /** @type {number} */
6181 var width = parseFloat(html.replace(/[^0-9.]/g, ""));
6182 /** @type {number} */
6183 var value = parseFloat(val.toString().replace(/[^0-9.]/g, ""));
6184 var height = void 0;
6185 if ("string" == typeof val && /^(\d+|\d*\.\d+)px$/.test(val)) {
6186 /** @type {number} */
6187 height = value;
6188 } else {
6189 if ("string" == typeof val && /^(\d+|\d*\.\d+)em$/.test(val)) {
6190 /** @type {number} */
6191 height = value * width;
6192 } else {
6193 if ("string" == typeof val && /^(\d+|\d*\.\d+)%$/.test(val)) {
6194 /** @type {number} */
6195 height = value / 100 * width;
6196 } else {
6197 if ("string" != typeof val || !/^[\d.]+$/.test(val) && !/^\d*\.(px|em|%)$/.test(val)) {
6198 return "100%";
6199 }
6200 /** @type {number} */
6201 height = width;
6202 }
6203 }
6204 }
6205 var now = i * height + step;
6206 /** @type {string} */
6207 var current = now + "px";
6208 return /^[0-9.]+px$/.test(current) ? current : "100%";
6209 };
6210 /** @type {function(): ?} */
6211 var safeRenderBody = route;
6212 /**
6213 * @param {!Object} element
6214 * @param {!Object} style
6215 * @return {?}
6216 */
6217 var awaitTransitionEnd = function(element, style) {
6218 return element ? window.getComputedStyle(element, style) : null;
6219 };
6220 /** @type {function(!Object, !Object): ?} */
6221 var getComputedStyle = awaitTransitionEnd;
6222 /** @type {function(!Object, ...(Object|null)): !Object} */
6223 var equal = Object.assign || function(links) {
6224 /** @type {number} */
6225 var i = 1;
6226 for (; i < arguments.length; i++) {
6227 var match = arguments[i];
6228 var key;
6229 for (key in match) {
6230 if (Object.prototype.hasOwnProperty.call(match, key)) {
6231 links[key] = match[key];
6232 }
6233 }
6234 }
6235 return links;
6236 };
6237 var listProperty = function() {
6238 /**
6239 * @param {!Function} d
6240 * @param {string} props
6241 * @return {undefined}
6242 */
6243 function t(d, props) {
6244 /** @type {number} */
6245 var i = 0;
6246 for (; i < props.length; i++) {
6247 var descriptor = props[i];
6248 descriptor.enumerable = descriptor.enumerable || false;
6249 /** @type {boolean} */
6250 descriptor.configurable = true;
6251 if ("value" in descriptor) {
6252 /** @type {boolean} */
6253 descriptor.writable = true;
6254 }
6255 Object.defineProperty(d, descriptor.key, descriptor);
6256 }
6257 }
6258 return function(p, n, a) {
6259 return n && t(p.prototype, n), a && t(p, a), p;
6260 };
6261 }();
6262 var methods = {
6263 base : "StripeElement",
6264 focus : "StripeElement--focus",
6265 invalid : "StripeElement--invalid",
6266 complete : "StripeElement--complete",
6267 empty : "StripeElement--empty",
6268 webkitAutofill : "StripeElement--webkit-autofill"
6269 };
6270 var mapping = {
6271 margin : "0",
6272 padding : "0",
6273 border : "none",
6274 display : "block",
6275 background : "transparent",
6276 position : "relative",
6277 opacity : "1"
6278 };
6279 var style = {
6280 border : "none",
6281 display : "block",
6282 position : "absolute",
6283 height : "1px",
6284 top : "0",
6285 left : "0",
6286 padding : "0",
6287 margin : "0",
6288 width : "100%",
6289 opacity : "0",
6290 background : "transparent",
6291 "pointer-events" : "none",
6292 "font-size" : "16px"
6293 };
6294 /**
6295 * @param {number} a
6296 * @return {?}
6297 */
6298 var stringify = function(a) {
6299 return parseFloat(a.toFixed(1));
6300 };
6301 /**
6302 * @param {string} str
6303 * @return {?}
6304 */
6305 var isFilePathMetadataKey = function(str) {
6306 return /^\d+(\.\d*)?px$/.test(str);
6307 };
6308 var FuncMask = function(_BaseMask) {
6309 /**
6310 * @param {!Object} options
6311 * @return {?}
6312 */
6313 function Range(options) {
6314 cast(this, Range);
6315 var self = isSupported(this, (Range.__proto__ || Object.getPrototypeOf(Range)).call(this));
6316 init.call(self);
6317 var controller = options.controller;
6318 var desc = options.componentName;
6319 var v = options.paymentRequest;
6320 self._controller = controller;
6321 self._componentName = desc;
6322 /** @type {boolean} */
6323 var isSingleTouch = "paymentRequestButton" === self._componentName;
6324 if (isSingleTouch) {
6325 if (!v) {
6326 throw new Date("You must pass in a stripe.paymentRequest object in order to use this Element.");
6327 }
6328 self._paymentRequest = v;
6329 self._paymentRequest._registerElement();
6330 }
6331 return self._createComponent(options, desc), self._classes = methods, self._changeClasses(options.classes || {}), self._lastBackgroundColor = "", self._destroyed = false, self._focused = false, self._empty = !isSingleTouch, self._invalid = false, self._complete = false, self._autofilled = false, self._lastSubmittedAt = null, self;
6332 }
6333 return inherits(Range, _BaseMask), listProperty(Range, [{
6334 key : "_checkDestroyed",
6335 value : function() {
6336 if (this._destroyed) {
6337 throw new Date("This Element has already been destroyed. Please create a new one.");
6338 }
6339 }
6340 }, {
6341 key : "_isMounted",
6342 value : function() {
6343 return !!document.body && document.body.contains(this._component);
6344 }
6345 }, {
6346 key : "_mountToParent",
6347 value : function(type) {
6348 var dropdown = this._component.parentElement;
6349 var n = this._isMounted();
6350 if (type === dropdown) {
6351 if (n) {
6352 return;
6353 }
6354 this.unmount();
6355 this._mountTo(type);
6356 } else {
6357 if (dropdown) {
6358 if (n) {
6359 throw new Date("This Element is already mounted. Use `unmount()` to unmount the Element before re-mounting.");
6360 }
6361 this.unmount();
6362 this._mountTo(type);
6363 } else {
6364 this._mountTo(type);
6365 }
6366 }
6367 }
6368 }, {
6369 key : "_mountTo",
6370 value : function(parent) {
6371 /** @type {number} */
6372 var t = Date.now();
6373 var computedStyle = getComputedStyle(parent, null);
6374 /** @type {boolean} */
6375 var rtl = !!computedStyle && "rtl" === computedStyle.getPropertyValue("direction");
6376 var o = this._paymentRequest ? this._paymentRequest._activeBackingLibraryName : null;
6377 /** @type {!Object} */
6378 this._parent = parent;
6379 for (; parent.firstChild;) {
6380 parent.removeChild(parent.firstChild);
6381 }
6382 parent.appendChild(this._component);
6383 this._frame.send({
6384 action : "stripe-user-mount",
6385 payload : {
6386 mountTime : t,
6387 rtl : rtl,
6388 paymentRequestButtonType : o
6389 }
6390 });
6391 this._findPossibleLabel();
6392 this._updateClasses();
6393 }
6394 }, {
6395 key : "_updateClasses",
6396 value : function() {
6397 if (this._parent) {
6398 _init(this._parent, [[this._classes.base, true], [this._classes.empty, this._empty], [this._classes.focus, this._focused], [this._classes.invalid, this._invalid], [this._classes.complete, this._complete], [this._classes.webkitAutofill, this._autofilled]]);
6399 }
6400 }
6401 }, {
6402 key : "_removeClasses",
6403 value : function() {
6404 if (this._parent) {
6405 _init(this._parent, [[this._classes.base, false], [this._classes.empty, false], [this._classes.focus, false], [this._classes.invalid, false], [this._classes.complete, false], [this._classes.webkitAutofill, false]]);
6406 }
6407 }
6408 }, {
6409 key : "_findPossibleLabel",
6410 value : function() {
6411 var canvas = this._parent;
6412 if (canvas) {
6413 var salesTeam = canvas.getAttribute("id");
6414 var container = void 0;
6415 if (salesTeam && (container = document.querySelector("label[for='" + salesTeam + "']")), container) {
6416 canvas.addEventListener("click", this.focus);
6417 } else {
6418 container = container || canvas.parentElement;
6419 for (; container && "LABEL" !== container.nodeName;) {
6420 container = container.parentElement;
6421 }
6422 }
6423 if (container) {
6424 this._label = container;
6425 container.addEventListener("click", this.focus);
6426 } else {
6427 canvas.addEventListener("click", this.focus);
6428 }
6429 }
6430 }
6431 }, {
6432 key : "_changeClasses",
6433 value : function(prototype) {
6434 var request = {};
6435 return Object.keys(prototype).forEach(function(key) {
6436 if (!methods[key]) {
6437 throw new Date(key + " is not a customizable class name.\nYou can customize: " + Object.keys(methods).join(", "));
6438 }
6439 var fragmentFilename = prototype[key] || methods[key];
6440 request[key] = fragmentFilename.replace(/\./g, " ");
6441 }), this._classes = equal({}, this._classes, request), this;
6442 }
6443 }, {
6444 key : "_emitEvent",
6445 value : function(event, t) {
6446 return this._emit(event, equal({
6447 elementType : this._componentName
6448 }, t));
6449 }
6450 }, {
6451 key : "_setupEvents",
6452 value : function() {
6453 var self = this;
6454 this._frame._on("redirectfocus", function(rail1) {
6455 var p2 = rail1.focusDirection;
6456 var o2 = attach(self._component, p2);
6457 if (o2) {
6458 o2.focus();
6459 }
6460 });
6461 this._frame._on("focus", function() {
6462 /** @type {boolean} */
6463 self._focused = true;
6464 self._updateClasses();
6465 });
6466 this._frame._on("blur", function() {
6467 /** @type {boolean} */
6468 self._focused = false;
6469 self._updateClasses();
6470 if (self._lastSubmittedAt && "paymentRequestButton" === self._componentName) {
6471 self._controller.report("payment_request_button.sheet_visible", {
6472 latency : new Date - self._lastSubmittedAt
6473 });
6474 /** @type {null} */
6475 self._lastSubmittedAt = null;
6476 }
6477 });
6478 this._frame._on("submit", function() {
6479 if ("paymentRequestButton" === self._componentName) {
6480 /** @type {!Date} */
6481 self._lastSubmittedAt = new Date;
6482 /** @type {boolean} */
6483 var t = false;
6484 /** @type {boolean} */
6485 var zoomIn = false;
6486 self._emitEvent("click", {
6487 preventDefault : function() {
6488 self._controller.report("payment_request_button.default_prevented");
6489 if (t) {
6490 self._controller.warn("event.preventDefault() was called after the payment sheet was shown. Make sure to call it synchronously when handling the `click` event.");
6491 }
6492 /** @type {boolean} */
6493 zoomIn = true;
6494 }
6495 });
6496 if (!zoomIn && self._paymentRequest) {
6497 self._paymentRequest._elementShow();
6498 /** @type {boolean} */
6499 t = true;
6500 }
6501 } else {
6502 self._emitEvent("submit");
6503 self._formSubmit();
6504 }
6505 });
6506 ["ready", "focus", "blur", "escape"].forEach(function(eventName) {
6507 self._frame._on(eventName, function() {
6508 self._emitEvent(eventName);
6509 });
6510 });
6511 this._frame._on("change", function(option) {
6512 var options = {};
6513 ["error", "value", "empty", "complete"].concat(_toConsumableArray(COMMENTS[self._componentName] || [])).forEach(function(name) {
6514 return options[name] = option[name];
6515 });
6516 self._emitEvent("change", options);
6517 self._empty = options.empty;
6518 /** @type {boolean} */
6519 self._invalid = !!options.error;
6520 self._complete = options.complete;
6521 self._updateClasses();
6522 });
6523 this._frame._on("__privateIntegrationError", function(object) {
6524 var message = object.message;
6525 self._emitEvent("__privateIntegrationError", {
6526 message : message
6527 });
6528 });
6529 this._frame._on("dimensions", function(inputField) {
6530 if (self._parent) {
6531 var element = getComputedStyle(self._parent, null);
6532 if (element) {
6533 /** @type {number} */
6534 var innerHeight = parseFloat(element.getPropertyValue("height"));
6535 var value = inputField.height;
6536 if ("border-box" === element.getPropertyValue("box-sizing")) {
6537 /** @type {number} */
6538 var elapsedTimeBeforeLoad = parseFloat(element.getPropertyValue("padding-top"));
6539 /** @type {number} */
6540 var waitTime = parseFloat(element.getPropertyValue("padding-bottom"));
6541 /** @type {number} */
6542 innerHeight = innerHeight - parseFloat(element.getPropertyValue("border-top")) - parseFloat(element.getPropertyValue("border-bottom")) - elapsedTimeBeforeLoad - waitTime;
6543 }
6544 if (0 !== innerHeight && stringify(innerHeight) < stringify(value)) {
6545 self._controller.report("wrapper_height_mismatch", {
6546 height : value,
6547 outer_height : innerHeight
6548 });
6549 }
6550 var alert = self._component.getBoundingClientRect().height;
6551 if (0 !== alert && 0 !== value && stringify(alert) !== stringify(value)) {
6552 self._frame.updateStyle({
6553 height : value + "px"
6554 });
6555 self._controller.report("iframe_height_update", {
6556 height : value,
6557 calculated_height : alert
6558 });
6559 }
6560 }
6561 }
6562 });
6563 this._frame._on("autofill", function() {
6564 if (self._parent) {
6565 var c = self._parent.style.backgroundColor;
6566 /** @type {boolean} */
6567 var into = "#faffbd" === c || "rgb(250, 255, 189)" === c;
6568 self._lastBackgroundColor = into ? self._lastBackgroundColor : c;
6569 /** @type {string} */
6570 self._parent.style.backgroundColor = "#faffbd";
6571 /** @type {boolean} */
6572 self._autofilled = true;
6573 self._updateClasses();
6574 }
6575 });
6576 this._frame._on("autofill-cleared", function() {
6577 /** @type {boolean} */
6578 self._autofilled = false;
6579 if (self._parent) {
6580 self._parent.style.backgroundColor = self._lastBackgroundColor;
6581 }
6582 self._updateClasses();
6583 });
6584 }
6585 }, {
6586 key : "_handleOutsideClick",
6587 value : function() {
6588 if (this._secondaryFrame) {
6589 this._secondaryFrame.send({
6590 action : "stripe-outside-click",
6591 payload : {}
6592 });
6593 }
6594 }
6595 }, {
6596 key : "_createSecondFrame",
6597 value : function(event, component, id) {
6598 var layer = this._controller.createSecondaryElementFrame(event, equal({}, id, {
6599 componentName : component
6600 }));
6601 return layer && layer.on && layer.on("height-change", function(imageElementData) {
6602 layer.updateStyle({
6603 height : imageElementData.height + "px"
6604 });
6605 }), layer;
6606 }
6607 }, {
6608 key : "_createComponent",
6609 value : function(data, index) {
6610 this._createElement(data, index);
6611 this._setupEvents();
6612 this._updateFrameHeight(data, true);
6613 }
6614 }, {
6615 key : "_updateFrameHeight",
6616 value : function(obj) {
6617 var inputWin = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
6618 if ("paymentRequestButton" === this._componentName) {
6619 var doodle = obj.style && obj.style.paymentRequestButton || {};
6620 var index = doodle.height;
6621 /** @type {(string|undefined)} */
6622 var winRef = "string" == typeof index ? index : void 0;
6623 if (inputWin || winRef) {
6624 this._frame.updateStyle({
6625 height : winRef || this._lastHeight || "40px"
6626 });
6627 this._lastHeight = winRef || this._lastHeight;
6628 }
6629 } else {
6630 var o = obj.style && obj.style.base || {};
6631 var a = o.lineHeight;
6632 var index = o.fontSize;
6633 var e = o.padding;
6634 /** @type {(string|undefined)} */
6635 var winRef = "string" != typeof a || isNaN(parseFloat(a)) ? void 0 : a;
6636 /** @type {(string|undefined)} */
6637 var key = "string" == typeof index ? index : void 0;
6638 /** @type {(string|undefined)} */
6639 var msg = "string" == typeof e ? e : void 0;
6640 if (key && !isFilePathMetadataKey(key) && this._controller.warn("The fontSize style you specified (" + key + ") is not in px. We do not recommend using relative css units, as they will be calculated relative to our iframe's styles rather than your site's."), inputWin || winRef || key) {
6641 var data = -1 === related_node_ids.indexOf(this._componentName) ? void 0 : msg || this._lastPadding;
6642 var renderBodyErr = safeRenderBody(winRef || this._lastHeight, key || this._lastFontSize, data);
6643 this._frame.updateStyle({
6644 height : renderBodyErr
6645 });
6646 this._lastFontSize = key || this._lastFontSize;
6647 this._lastHeight = winRef || this._lastHeight;
6648 this._lastPadding = data;
6649 }
6650 }
6651 }
6652 }, {
6653 key : "_createElement",
6654 value : function(e, key) {
6655 var n = this;
6656 var buffersize = (e.classes, e.controller, e.paymentRequest, merge(e, ["classes", "controller", "paymentRequest"]));
6657 /** @type {!Element} */
6658 var val = document.createElement("div");
6659 /** @type {string} */
6660 val.className = "__PrivateStripeElement";
6661 /** @type {!Element} */
6662 var node = document.createElement("input");
6663 /** @type {string} */
6664 node.className = "__PrivateStripeElement-input";
6665 node.setAttribute("aria-hidden", "true");
6666 node.setAttribute("aria-label", " ");
6667 node.setAttribute("autocomplete", "false");
6668 /** @type {number} */
6669 node.maxLength = 1;
6670 /** @type {boolean} */
6671 node.disabled = true;
6672 callback(val, mapping);
6673 callback(node, style);
6674 var computedStyle = getComputedStyle(document.body);
6675 /** @type {boolean} */
6676 var rtl = !!computedStyle && "rtl" === computedStyle.getPropertyValue("direction");
6677 var event = subDict[key];
6678 /** @type {!Object} */
6679 var data = equal({}, buffersize, {
6680 rtl : rtl
6681 });
6682 var frame = this._controller.createElementFrame(event, data);
6683 if (frame._on("load", function() {
6684 /** @type {boolean} */
6685 node.disabled = false;
6686 }), node.addEventListener("focus", function() {
6687 frame.focus();
6688 }), frame.appendTo(val), rules[key]) {
6689 var sec = rules[key].secondary;
6690 this._secondaryFrame = this._createSecondFrame(event, sec, equal({}, data, {
6691 primaryElementType : key
6692 }));
6693 this._secondaryFrame.appendTo(val);
6694 window.addEventListener("click", function() {
6695 return n._handleOutsideClick();
6696 });
6697 }
6698 if (val.appendChild(node), forKey && key !== opts.paymentRequestButton) {
6699 /** @type {!Element} */
6700 var input = document.createElement("input");
6701 /** @type {string} */
6702 input.className = "__PrivateStripeElement-safariInput";
6703 input.setAttribute("aria-hidden", "true");
6704 input.setAttribute("tabindex", "-1");
6705 input.setAttribute("autocomplete", "false");
6706 /** @type {number} */
6707 input.maxLength = 1;
6708 /** @type {boolean} */
6709 input.disabled = true;
6710 callback(input, style);
6711 val.appendChild(input);
6712 }
6713 /** @type {!Element} */
6714 this._component = val;
6715 this._frame = frame;
6716 /** @type {!Element} */
6717 this._fakeInput = node;
6718 }
6719 }]), Range;
6720 }(BaseMask);
6721 /**
6722 * @return {undefined}
6723 */
6724 var init = function() {
6725 var self = this;
6726 /** @type {null} */
6727 this._paymentRequest = null;
6728 this.mount = __bind(function(selector) {
6729 self._checkDestroyed();
6730 var target = void 0;
6731 if (!selector) {
6732 throw new Date("Missing argument. Make sure to call mount() with a valid DOM element or selector.");
6733 }
6734 if ("string" == typeof selector) {
6735 /** @type {!NodeList<Element>} */
6736 var currentTarget = document.querySelectorAll(selector);
6737 if (currentTarget.length > 1 && self._controller.warn("The selector you specified (" + selector + ") applies to " + currentTarget.length + " DOM elements that are currently on the page.\nThe Stripe Element will be mounted to the first one."), !currentTarget.length) {
6738 throw new Date("The selector you specified (" + selector + ") applies to no DOM elements that are currently on the page.\nMake sure the element exists on the page before calling mount().");
6739 }
6740 /** @type {!Element} */
6741 target = currentTarget[0];
6742 } else {
6743 if (!selector.appendChild) {
6744 throw new Date("Invalid DOM element. Make sure to call mount() with a valid DOM element or selector.");
6745 }
6746 /** @type {!Object} */
6747 target = selector;
6748 }
6749 if ("INPUT" === target.nodeName) {
6750 throw new Date("Stripe Elements must be mounted in a DOM element that\ncan contain child nodes. `input` elements are not permitted to have child\nnodes. Try using a `div` element instead.");
6751 }
6752 if (target.children.length && self._controller.warn("This Element will be mounted to a DOM element that contains child nodes."), self._paymentRequest) {
6753 if (!self._paymentRequest._canMakePaymentResolved) {
6754 throw new Date("For the paymentRequestButton Element, you must first check availability using paymentRequest.canMakePayment() before mounting the Element.");
6755 }
6756 if (!self._paymentRequest._activeBackingLibraryName) {
6757 throw new Date("The paymentRequestButton Element is not available in the current environment.");
6758 }
6759 self._mountToParent(target);
6760 } else {
6761 self._mountToParent(target);
6762 }
6763 });
6764 this.update = __bind(function(results) {
6765 self._checkDestroyed();
6766 var content = cb(result, results || {}, "element.update()");
6767 var r = content.value;
6768 if (content.warnings.forEach(function(type) {
6769 return self._controller.warn(type);
6770 }), r) {
6771 var d = r.classes;
6772 var a = merge(r, ["classes"]);
6773 self._changeClasses(d || {});
6774 self._updateFrameHeight(r);
6775 if (Object.keys(a).length) {
6776 self._frame.update(a);
6777 if (self._secondaryFrame) {
6778 self._secondaryFrame.update(a);
6779 }
6780 }
6781 }
6782 return self;
6783 });
6784 this.focus = __bind(function(event) {
6785 return self._checkDestroyed(), event && event.preventDefault(), document.activeElement && document.activeElement.blur && document.activeElement.blur(), self._fakeInput.focus(), self;
6786 });
6787 this.blur = __bind(function() {
6788 return self._checkDestroyed(), self._frame.blur(), self._fakeInput.blur(), self;
6789 });
6790 this.clear = __bind(function() {
6791 return self._checkDestroyed(), self._frame.clear(), self;
6792 });
6793 this.unmount = __bind(function() {
6794 self._checkDestroyed();
6795 var el = self._component.parentElement;
6796 var editor = self._label;
6797 return el && (el.removeChild(self._component), el.removeEventListener("click", self.focus), self._removeClasses()), self._parent = null, editor && (editor.removeEventListener("click", self.focus), self._label = null), self._secondaryFrame && (self._secondaryFrame.unmount(), window.removeEventListener("click", self._handleOutsideClick)), self._fakeInput.disabled = true, self._frame.unmount(), self;
6798 });
6799 this.destroy = __bind(function() {
6800 return self._checkDestroyed(), self.unmount(), self._destroyed = true, self._emitEvent("destroy"), self;
6801 });
6802 /**
6803 * @return {undefined}
6804 */
6805 this._formSubmit = function() {
6806 var parentElement = self._component.parentElement;
6807 for (; parentElement && "FORM" !== parentElement.nodeName;) {
6808 parentElement = parentElement.parentElement;
6809 }
6810 if (parentElement) {
6811 /** @type {(Event|null)} */
6812 var event = document.createEvent("Event");
6813 event.initEvent("submit", true, true);
6814 parentElement.dispatchEvent(event);
6815 }
6816 };
6817 };
6818 var RegExp = FuncMask;
6819 /** @type {function(!Object, ...(Object|null)): !Object} */
6820 var debug = Object.assign || function(links) {
6821 /** @type {number} */
6822 var i = 1;
6823 for (; i < arguments.length; i++) {
6824 var match = arguments[i];
6825 var key;
6826 for (key in match) {
6827 if (Object.prototype.hasOwnProperty.call(match, key)) {
6828 links[key] = match[key];
6829 }
6830 }
6831 }
6832 return links;
6833 };
6834 var self = {
6835 locale : computed(id),
6836 fonts : computed(all(array)),
6837 betas : computed(all(on.apply(void 0, toArray(name))))
6838 };
6839 var buffer = test(self);
6840 /**
6841 * @param {!Object} options
6842 * @param {!Object} data
6843 * @return {?}
6844 */
6845 var Zi = function init(options, data) {
6846 var self = this;
6847 removeEventListener(this, init);
6848 bind.call(this);
6849 var result = cb(buffer, data || {}, "elements()");
6850 var props = result.value;
6851 result.warnings.forEach(function(instance) {
6852 return options.warn(instance);
6853 });
6854 contains(options.warn);
6855 options.report("elements", {
6856 options : data
6857 });
6858 /** @type {!Array} */
6859 this._elements = [];
6860 this._id = unique("elements");
6861 /** @type {!Object} */
6862 this._controller = options;
6863 var locale = props.locale;
6864 var closestXPoints = props.fonts || [];
6865 this._controller.action.fetchLocale({
6866 locale : locale || "auto"
6867 });
6868 this._betas = props.betas || [];
6869 var fonts = closestXPoints.filter(function(canCreateDiscussions) {
6870 return !canCreateDiscussions.cssSrc || "string" != typeof canCreateDiscussions.cssSrc;
6871 }).map(function(engineArgs) {
6872 return debug({}, engineArgs, {
6873 __resolveFontRelativeTo : window.location.href
6874 });
6875 });
6876 var deprecatedStylingMethods = closestXPoints.map(function(canCreateDiscussions) {
6877 return canCreateDiscussions.cssSrc;
6878 }).reduce(function(value, q) {
6879 return "string" == typeof q ? [].concat(toArray(value), [q]) : value;
6880 }, []).map(function(url) {
6881 return isString(url) ? url : resolveHref(window.location.href, url);
6882 });
6883 return this._pendingFonts = deprecatedStylingMethods.length, this._commonOptions = debug({}, props, {
6884 fonts : fonts
6885 }), deprecatedStylingMethods.forEach(function(name) {
6886 if ("string" == typeof name) {
6887 /** @type {number} */
6888 var t = Date.now();
6889 config_disks(name).then(function(rawVersions) {
6890 self._controller.report("font.loaded", {
6891 load_time : Date.now() - t,
6892 font_count : rawVersions.length,
6893 css_src : name
6894 });
6895 var keys = rawVersions.map(function(engineArgs) {
6896 return debug({}, engineArgs, {
6897 __resolveFontRelativeTo : name
6898 });
6899 });
6900 self._controller.action.updateCSSFonts({
6901 fonts : keys,
6902 groupId : self._id
6903 });
6904 /** @type {!Object} */
6905 self._commonOptions = debug({}, self._commonOptions, {
6906 fonts : [].concat(toArray(self._commonOptions.fonts ? self._commonOptions.fonts : []), toArray(keys))
6907 });
6908 }).catch(function(error) {
6909 self._controller.report("error.font.not_loaded", {
6910 load_time : Date.now() - t,
6911 message : error && error.message && error.message,
6912 css_src : name
6913 });
6914 self._controller.warn("Failed to load CSS file at " + name + ".");
6915 });
6916 }
6917 }), this;
6918 };
6919 /**
6920 * @return {undefined}
6921 */
6922 var bind = function() {
6923 var self = this;
6924 this.create = call(function(value, results) {
6925 insert(value, self._elements, self._betas);
6926 var res = cb(result, results || {}, "create()");
6927 var status = res.value;
6928 res.warnings.forEach(function(type) {
6929 return self._controller.warn(type);
6930 });
6931 /** @type {!Object} */
6932 var i = debug({}, status, self._commonOptions, {
6933 componentName : value,
6934 groupId : self._id
6935 });
6936 var a = (inputWin || winRef) && _(i).length > 2E3;
6937 var end = !!self._pendingFonts || a;
6938 var me = new RegExp(debug({}, i, {
6939 fonts : a ? null : self._commonOptions.fonts,
6940 controller : self._controller,
6941 wait : end
6942 }));
6943 return self._elements = [].concat(toArray(self._elements), [value]), me._on("destroy", function() {
6944 self._elements = self._elements.filter(function(scaleX) {
6945 return scaleX !== value;
6946 });
6947 }), a && me._frame.send({
6948 action : "stripe-user-update",
6949 payload : {
6950 fonts : self._commonOptions.fonts
6951 }
6952 }), me;
6953 });
6954 };
6955 /** @type {function(!Object, !Object): ?} */
6956 var UrlBuilder = Zi;
6957 /**
6958 * @param {!Object} expectedPlatformAdmins
6959 * @param {!Object} done
6960 * @param {?} rawOptions
6961 * @param {!Object} connection
6962 * @param {!Array} name
6963 * @param {!Object} callback
6964 * @return {?}
6965 */
6966 var testInstall = function(expectedPlatformAdmins, done, rawOptions, connection, name, callback) {
6967 return new wsFunction({
6968 controller : expectedPlatformAdmins,
6969 authentication : done,
6970 mids : rawOptions,
6971 rawOptions : connection,
6972 betas : name,
6973 queryStrategyOverride : callback
6974 });
6975 };
6976 /** @type {function(!Object, !Object, ?, !Object, !Array, !Object): ?} */
6977 var $resource = testInstall;
6978 /** @type {function(!Object): ?} */
6979 var t = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(num) {
6980 return typeof num;
6981 } : function(obj) {
6982 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
6983 };
6984 /** @type {function(!Object, ...(Object|null)): !Object} */
6985 var logger = Object.assign || function(links) {
6986 /** @type {number} */
6987 var i = 1;
6988 for (; i < arguments.length; i++) {
6989 var match = arguments[i];
6990 var key;
6991 for (key in match) {
6992 if (Object.prototype.hasOwnProperty.call(match, key)) {
6993 links[key] = match[key];
6994 }
6995 }
6996 }
6997 return links;
6998 };
6999 /**
7000 * @param {!Object} item
7001 * @param {!Object} width
7002 * @return {?}
7003 */
7004 var handle = function(item, width) {
7005 switch(item.type) {
7006 case "object":
7007 return {
7008 paymentIntent : item.object
7009 };
7010 case "error":
7011 return {
7012 error : logger({}, width ? {
7013 payment_intent : width
7014 } : {}, item.error)
7015 };
7016 default:
7017 return reject(item);
7018 }
7019 };
7020 /**
7021 * @param {?} fn
7022 * @return {?}
7023 */
7024 var has = function(fn) {
7025 var a = fn.trim().match(/^([a-z]+_[^_]+)_secret_[^-]+$/);
7026 return a ? {
7027 id : a[1],
7028 clientSecret : a[0]
7029 } : null;
7030 };
7031 /**
7032 * @param {!Object} data
7033 * @return {?}
7034 */
7035 var generateToken = function(data) {
7036 return {
7037 id : data.id,
7038 clientSecret : data.client_secret
7039 };
7040 };
7041 /**
7042 * @param {?} callback
7043 * @param {!Object} obj
7044 * @return {?}
7045 */
7046 var path = function(callback, obj) {
7047 if ("string" != typeof callback) {
7048 return forOwn("a client_secret string", callback, obj);
7049 }
7050 var index = has(callback);
7051 return null === index ? forOwn("a client secret of the form ${id}_secret_${secret}", callback, obj) : resolve(index, []);
7052 };
7053 /**
7054 * @param {!Object} data
7055 * @param {!Object} file
7056 * @return {?}
7057 */
7058 var normalize = function(data, file) {
7059 if (null == data) {
7060 return resolve(null);
7061 }
7062 var result = data.type;
7063 var rest = _objectWithoutProperties(data, ["type"]);
7064 /** @type {!Object} */
7065 var currentFile = logger({}, file, {
7066 path : [].concat($(file.path), ["type"])
7067 });
7068 var message = traverse(id, function() {
7069 return null;
7070 })(result, currentFile);
7071 return "error" === message.type ? message : resolve({
7072 type : message.value,
7073 data : rest
7074 });
7075 };
7076 /**
7077 * @param {string} b
7078 * @return {?}
7079 */
7080 var inArray = function(b) {
7081 return "requires_source_action" === b || "requires_action" === b;
7082 };
7083 /**
7084 * @param {!Object} s
7085 * @return {?}
7086 */
7087 var clean = function(s) {
7088 return "requires_source_action" === s.status || "requires_action" === s.status ? s.next_action : null;
7089 };
7090 /**
7091 * @param {!Object} obj
7092 * @param {!Object} json
7093 * @return {?}
7094 */
7095 var update = function(obj, json) {
7096 if (null === obj) {
7097 return replace("object", "null", json);
7098 }
7099 if ("object" !== (void 0 === obj ? "undefined" : t(obj))) {
7100 return replace("object", void 0 === obj ? "undefined" : t(obj), json);
7101 }
7102 var type = obj.client_secret;
7103 var val = obj.status;
7104 var value = obj.next_action;
7105 /** @type {!Object} */
7106 var file = logger({}, json, {
7107 path : [].concat($(json.path), ["client_secret"])
7108 });
7109 var p = path(type, file);
7110 if ("error" === p.type) {
7111 return p;
7112 }
7113 if ("string" != typeof val) {
7114 /** @type {!Object} */
7115 var a = logger({}, json, {
7116 path : [].concat($(json.path), ["status"])
7117 });
7118 return replace("string", void 0 === val ? "undefined" : t(val), a);
7119 }
7120 if (("requires_source_action" === val || "requires_action" === val) && "object" !== (void 0 === value ? "undefined" : t(value))) {
7121 /** @type {!Object} */
7122 var a = logger({}, json, {
7123 path : [].concat($(json.path), ["next_action"])
7124 });
7125 return replace("object", void 0 === value ? "undefined" : t(value), a);
7126 }
7127 if ("payment_intent" === obj.object) {
7128 return resolve(obj, []);
7129 }
7130 return resolve(obj, []);
7131 };
7132 /**
7133 * @param {?} line
7134 * @return {?}
7135 */
7136 var match = function(line) {
7137 return function(data, a) {
7138 if ("object" === (void 0 === data ? "undefined" : t(data)) && null !== data) {
7139 var name = data.source;
7140 var value = data.source_data;
7141 var val = data.payment_method;
7142 var input = data.payment_method_data;
7143 var params = _objectWithoutProperties(data, ["source", "source_data", "payment_method", "payment_method_data"]);
7144 if (null != name && "string" != typeof name) {
7145 /** @type {!Object} */
7146 var value = logger({}, a, {
7147 path : [].concat($(a.path), ["source"])
7148 });
7149 return replace("string", void 0 === name ? "undefined" : t(name), value);
7150 }
7151 if (null != val && "string" != typeof val) {
7152 /** @type {!Object} */
7153 var value = logger({}, a, {
7154 path : [].concat($(a.path), ["payment_method"])
7155 });
7156 return replace("string", void 0 === val ? "undefined" : t(val), value);
7157 }
7158 if (null != value && "object" !== (void 0 === value ? "undefined" : t(value))) {
7159 /** @type {!Object} */
7160 var code = logger({}, a, {
7161 path : [].concat($(a.path), ["source_data"])
7162 });
7163 return replace("object", void 0 === value ? "undefined" : t(value), code);
7164 }
7165 if (null != input && "object" !== (void 0 === input ? "undefined" : t(input))) {
7166 /** @type {!Object} */
7167 var value = logger({}, a, {
7168 path : [].concat($(a.path), ["payment_method_data"])
7169 });
7170 return replace("object", void 0 === input ? "undefined" : t(input), value);
7171 }
7172 /** @type {!Object} */
7173 var count = logger({}, a, {
7174 path : [].concat($(a.path), ["source_data"])
7175 });
7176 var result = normalize(value, count);
7177 if ("error" === result.type) {
7178 return result;
7179 }
7180 var source = result.value;
7181 /** @type {!Object} */
7182 var obj = logger({}, a, {
7183 path : [].concat($(a.path), ["payment_method_data"])
7184 });
7185 var x = normalize(input, obj);
7186 if ("error" === x.type) {
7187 return x;
7188 }
7189 var x_value = x.value;
7190 return resolve({
7191 sourceData : source,
7192 source : null == name ? null : name,
7193 paymentMethodData : x_value,
7194 paymentMethod : null == val ? null : val,
7195 otherParams : logger({}, line, params)
7196 });
7197 }
7198 return null === data ? replace("object", "null", a) : replace("object", void 0 === data ? "undefined" : t(data), a);
7199 };
7200 };
7201 /**
7202 * @param {boolean} item
7203 * @return {?}
7204 */
7205 var build = function(item) {
7206 return function(val, data) {
7207 if (void 0 === val) {
7208 return resolve({
7209 sourceData : null,
7210 paymentMethodData : null,
7211 source : null,
7212 paymentMethod : null,
7213 otherParams : {}
7214 });
7215 }
7216 if ("object" !== (void 0 === val ? "undefined" : t(val))) {
7217 return replace("object", void 0 === val ? "undefined" : t(val), data);
7218 }
7219 if (null === val) {
7220 return replace("object", "null", data);
7221 }
7222 if (item) {
7223 if (!val.payment_intent) {
7224 return resolve({
7225 sourceData : null,
7226 paymentMethodData : null,
7227 source : null,
7228 paymentMethod : null,
7229 otherParams : val
7230 });
7231 }
7232 var url = val.payment_intent;
7233 var regex = _objectWithoutProperties(val, ["payment_intent"]);
7234 /** @type {!Object} */
7235 var instance = logger({}, data, {
7236 path : [].concat($(data.path), ["payment_intent"])
7237 });
7238 return match(regex)(url, instance);
7239 }
7240 return val.payment_intent ? then(new Date("The payment_intent parameter has been removed. To fix, move everything nested under the payment_intent parameter to the top-level object.")) : match({})(val, data);
7241 };
7242 };
7243 var item = {
7244 au_becs_debit : "au_becs_debit",
7245 card : "card",
7246 ideal : "ideal",
7247 sepa_debit : "sepa_debit",
7248 three_d_secure : "three_d_secure"
7249 };
7250 var BASE_SYS_ESCAPES = (_BASE_SYS_ESCAPES = {}, setValue(_BASE_SYS_ESCAPES, opts.card, item.card), setValue(_BASE_SYS_ESCAPES, opts.cardNumber, item.card), setValue(_BASE_SYS_ESCAPES, opts.cardExpiry, item.card), setValue(_BASE_SYS_ESCAPES, opts.cardCvc, item.card), setValue(_BASE_SYS_ESCAPES, opts.postalCode, item.card), setValue(_BASE_SYS_ESCAPES, opts.iban, item.sepa_debit), setValue(_BASE_SYS_ESCAPES, opts.idealBank, item.ideal), _BASE_SYS_ESCAPES);
7251 /**
7252 * @param {?} npmPackageName
7253 * @return {?}
7254 */
7255 var indexOf = function(npmPackageName) {
7256 return -1 === gulpExcludedPackages.indexOf(npmPackageName);
7257 };
7258 /**
7259 * @param {?} name
7260 * @param {string} value
7261 * @return {?}
7262 */
7263 var setHeader = function(name, value) {
7264 return null != value ? value : indexOf(name) ? null : BASE_SYS_ESCAPES[name] || null;
7265 };
7266 /**
7267 * @param {!Object} data
7268 * @return {undefined}
7269 */
7270 var save = function(data) {
7271 var t = data.name;
7272 var post = data.value;
7273 var expiresIn = data.expiresIn;
7274 var path = data.path;
7275 var test = data.domain;
7276 /** @type {!Date} */
7277 var date = new Date;
7278 var UTCToLocalOffset = expiresIn || 31536E6;
7279 date.setTime(date.getTime() + UTCToLocalOffset);
7280 var pathname = path || "/";
7281 var arr = (post || "").replace(/[^!#-+\--:<-[\]-~]/g, encodeURIComponent);
7282 /** @type {string} */
7283 var cookie_string = encodeURIComponent(t) + "=" + arr + ";expires=" + date.toGMTString() + ";path=" + pathname;
7284 if (test) {
7285 /** @type {string} */
7286 cookie_string = cookie_string + (";domain=" + test);
7287 }
7288 /** @type {string} */
7289 document.cookie = cookie_string;
7290 };
7291 /**
7292 * @param {string} name
7293 * @return {?}
7294 */
7295 var getCookie = function(name) {
7296 var t = setTimeout(document.cookie.split("; "), function(t) {
7297 var e = t.indexOf("=");
7298 return decodeURIComponent(t.substr(0, e)) === name;
7299 });
7300 if (t) {
7301 var i = t.indexOf("=");
7302 return decodeURIComponent(t.substr(i + 1));
7303 }
7304 return null;
7305 };
7306 var baseAssignValue = function() {
7307 /**
7308 * @param {!Function} d
7309 * @param {string} props
7310 * @return {undefined}
7311 */
7312 function t(d, props) {
7313 /** @type {number} */
7314 var i = 0;
7315 for (; i < props.length; i++) {
7316 var descriptor = props[i];
7317 descriptor.enumerable = descriptor.enumerable || false;
7318 /** @type {boolean} */
7319 descriptor.configurable = true;
7320 if ("value" in descriptor) {
7321 /** @type {boolean} */
7322 descriptor.writable = true;
7323 }
7324 Object.defineProperty(d, descriptor.key, descriptor);
7325 }
7326 }
7327 return function(p, n, a) {
7328 return n && t(p.prototype, n), a && t(p, a), p;
7329 };
7330 }();
7331 /** @type {string} */
7332 var parts = "__privateStripeMetricsController";
7333 var _storageEnum = {
7334 MERCHANT : "merchant",
7335 SESSION : "session"
7336 };
7337 var be2 = function() {
7338 /**
7339 * @return {undefined}
7340 */
7341 function result() {
7342 var touchSystem = this;
7343 var resolution = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
7344 if (local_storage_get_multi(this, result), resolution.checkoutIds) {
7345 var result = resolution.checkoutIds;
7346 var courseSections = result.muid;
7347 var sessionId = result.sid;
7348 this._muid = courseSections;
7349 this._sid = sessionId;
7350 /** @type {boolean} */
7351 this._doNotPersist = true;
7352 } else {
7353 this._muid = this._getID(_storageEnum.MERCHANT);
7354 this._sid = this._getID(_storageEnum.SESSION);
7355 /** @type {boolean} */
7356 this._doNotPersist = false;
7357 }
7358 this._id = unique(parts);
7359 this._controllerFrame = new RangeError(e.METRICS_CONTROLLER, this._id, {
7360 autoload : true,
7361 queryString : this._buildFrameQueryString()
7362 });
7363 this._guidPromise = new Q(function(e) {
7364 touchSystem._establishMessageChannel(e);
7365 });
7366 this._startIntervalCheck();
7367 setTimeout(this._testLatency.bind(this), 2E3 + 500 * Math.random());
7368 }
7369 return baseAssignValue(result, [{
7370 key : "ids",
7371 value : function() {
7372 return {
7373 guid : this._guid || "NA",
7374 muid : this._muid || "NA",
7375 sid : this._sid || "NA"
7376 };
7377 }
7378 }, {
7379 key : "idsPromise",
7380 value : function() {
7381 var columnCombinations = this;
7382 return this._guidPromise.then(function() {
7383 return columnCombinations.ids();
7384 });
7385 }
7386 }, {
7387 key : "_establishMessageChannel",
7388 value : function(func) {
7389 var that = this;
7390 window.addEventListener("message", function(argument) {
7391 var c = argument.data;
7392 if ("string" == typeof c) {
7393 try {
7394 /** @type {*} */
7395 var group = JSON.parse(c);
7396 var n = group.originatingScript;
7397 var value = group.payload;
7398 if ("m" === n) {
7399 that._guid = value;
7400 func(value);
7401 }
7402 } catch (e) {
7403 }
7404 }
7405 });
7406 }
7407 }, {
7408 key : "_startIntervalCheck",
7409 value : function() {
7410 var worker = this;
7411 /** @type {string} */
7412 var initialLetter = window.location.href;
7413 setInterval(function() {
7414 /** @type {string} */
7415 var letterCandidate = window.location.href;
7416 if (letterCandidate !== initialLetter) {
7417 worker.send({
7418 action : "ping",
7419 payload : {
7420 sid : worker._getID(_storageEnum.SESSION),
7421 muid : worker._getID(_storageEnum.MERCHANT),
7422 title : document.title,
7423 referrer : document.referrer,
7424 url : document.location.href
7425 }
7426 });
7427 /** @type {string} */
7428 initialLetter = letterCandidate;
7429 }
7430 }, 5E3);
7431 }
7432 }, {
7433 key : "report",
7434 value : function(uri, data) {
7435 try {
7436 this.send({
7437 action : "track",
7438 payload : {
7439 sid : this._getID(_storageEnum.SESSION),
7440 muid : this._getID(_storageEnum.MERCHANT),
7441 url : document.location.href,
7442 source : uri,
7443 data : data
7444 }
7445 });
7446 } catch (e) {
7447 }
7448 }
7449 }, {
7450 key : "send",
7451 value : function(uri) {
7452 var firstDayOfWeekYear = _path(e.METRICS_CONTROLLER);
7453 if (isUndefined(firstDayOfWeekYear)) {
7454 this._controllerFrame.send(uri);
7455 }
7456 }
7457 }, {
7458 key : "_testLatency",
7459 value : function() {
7460 var tracker = this;
7461 /** @type {!Array} */
7462 var result = [];
7463 /** @type {!Date} */
7464 var i = new Date;
7465 /**
7466 * @return {undefined}
7467 */
7468 var resetClickFn = function endresize() {
7469 try {
7470 /** @type {!Date} */
7471 var start = new Date;
7472 result.push(start - i);
7473 if (result.length >= 10) {
7474 tracker.report("mouse-timings-10", result);
7475 document.removeEventListener("mousemove", endresize);
7476 }
7477 /** @type {!Date} */
7478 i = start;
7479 } catch (e) {
7480 }
7481 };
7482 document.addEventListener("mousemove", resetClickFn);
7483 }
7484 }, {
7485 key : "_extractMetaReferrerPolicy",
7486 value : function() {
7487 /** @type {(Element|null)} */
7488 var o = document.querySelector("meta[name=referrer]");
7489 return null != o && o instanceof HTMLMetaElement ? o.content.toLowerCase() : null;
7490 }
7491 }, {
7492 key : "_extractUrl",
7493 value : function(key) {
7494 /** @type {string} */
7495 var result = document.location.href;
7496 switch(key) {
7497 case "origin":
7498 case "strict-origin":
7499 case "origin-when-cross-origin":
7500 case "strict-origin-when-cross-origin":
7501 return document.location.origin;
7502 case "unsafe-url":
7503 return result.split("#")[0];
7504 default:
7505 return result;
7506 }
7507 }
7508 }, {
7509 key : "_buildFrameQueryString",
7510 value : function() {
7511 var e = this._extractMetaReferrerPolicy();
7512 var path = this._extractUrl(e);
7513 var params = {
7514 url : path,
7515 title : document.title,
7516 referrer : document.referrer,
7517 muid : this._muid,
7518 sid : this._sid,
7519 preview : generate(path)
7520 };
7521 return null != e && (params.metaReferrerPolicy = e), Object.keys(params).map(function(i) {
7522 return null != params[i] ? i + "=" + encodeURIComponent(params[i].toString()) : null;
7523 }).join("&");
7524 }
7525 }, {
7526 key : "_getID",
7527 value : function(name) {
7528 switch(name) {
7529 case _storageEnum.MERCHANT:
7530 if (this._doNotPersist) {
7531 return this._muid;
7532 }
7533 try {
7534 var command_module_id = getCookie("__stripe_mid") || shimMochaProcess();
7535 return save({
7536 name : "__stripe_mid",
7537 value : command_module_id,
7538 domain : "." + document.location.hostname
7539 }), command_module_id;
7540 } catch (e) {
7541 return "NA";
7542 }
7543 case _storageEnum.SESSION:
7544 if (this._doNotPersist) {
7545 return this._sid;
7546 }
7547 try {
7548 var command_module_id = getCookie("__stripe_sid") || shimMochaProcess();
7549 return save({
7550 name : "__stripe_sid",
7551 value : command_module_id,
7552 domain : "." + document.location.hostname,
7553 expiresIn : 18E5
7554 }), command_module_id;
7555 } catch (e) {
7556 return "NA";
7557 }
7558 default:
7559 throw new Error("Invalid ID type specified: " + name);
7560 }
7561 }
7562 }]), result;
7563 }();
7564 var Module = be2;
7565 var routes = {
7566 _frame : test({
7567 id : id
7568 }),
7569 _componentName : id
7570 };
7571 var output = test(routes);
7572 /**
7573 * @param {!Function} val
7574 * @return {?}
7575 */
7576 var ok = function(val) {
7577 var result = set(output, val, "");
7578 return "error" === result.type ? null : result.value;
7579 };
7580 /**
7581 * @param {!Object} key
7582 * @param {!Object} str
7583 * @param {string} name
7584 * @param {string} check
7585 * @return {?}
7586 */
7587 var a = function(key, str, name, check) {
7588 if (null === key) {
7589 if (null === str) {
7590 throw new Date(name + ": you must additionally specify the type of payment method to create within " + (check ? "source_data" : "payment_method_data") + ".");
7591 }
7592 return str;
7593 }
7594 if (null === str) {
7595 return key;
7596 }
7597 if (str !== key) {
7598 throw new Date(name + ": you specified `type: " + str + "`, but " + name + " will create a " + key + " payment method.");
7599 }
7600 return key;
7601 };
7602 /**
7603 * @param {boolean} source
7604 * @param {boolean} options
7605 * @param {!Object} type
7606 * @param {string} text
7607 * @param {!Object} params
7608 * @param {!Object} param
7609 * @return {?}
7610 */
7611 var filter = function(source, options, type, text, params, param) {
7612 var result = set(output, params, text);
7613 if ("error" === result.type) {
7614 return null;
7615 }
7616 var query = result.value;
7617 var ret = cb(build(options), param, text);
7618 var map = ret.value;
7619 var shrinkwrap = map.sourceData;
7620 var sources = map.source;
7621 var lockfile = map.paymentMethodData;
7622 var typeSuper = map.paymentMethod;
7623 var otherParams = map.otherParams;
7624 if (!source && shrinkwrap) {
7625 throw new Date(text + ": Expected payment_method_data, not source_data.");
7626 }
7627 if (null != sources) {
7628 throw new Date("When calling " + text + " on an Element, you can't pass in a pre-existing source ID, as a source will be created using the Element.");
7629 }
7630 if (null != typeSuper) {
7631 throw new Date("When calling " + text + " on an Element, you can't pass in a pre-existing PaymentMethod ID, as a PaymentMethod will be created using the Element.");
7632 }
7633 var name = query._componentName;
7634 var frameId = query._frame.id;
7635 var transform = shrinkwrap || lockfile || {
7636 type : null,
7637 data : {}
7638 };
7639 /** @type {null} */
7640 var key = transform.type;
7641 var data = transform.data;
7642 var path = setHeader(name, key);
7643 var content = source && !lockfile;
7644 return {
7645 confirmMode : {
7646 tag : "element",
7647 elementName : name,
7648 shouldCreateSource : content,
7649 frameId : frameId,
7650 type : a(type, path, text, content),
7651 data : data
7652 },
7653 otherParams : otherParams
7654 };
7655 };
7656 /**
7657 * @param {boolean} source
7658 * @param {boolean} value
7659 * @param {!Object} object
7660 * @param {string} t
7661 * @param {!Object} time
7662 * @param {?} param
7663 * @return {?}
7664 */
7665 var map = function(source, value, object, t, time, param) {
7666 var result = cb(build(value), time, t);
7667 var options = result.value;
7668 var data = options.sourceData;
7669 var $me = options.source;
7670 var rawData = options.paymentMethodData;
7671 var paymentMethod = options.paymentMethod;
7672 var otherParams = options.otherParams;
7673 if (!source && data) {
7674 throw new Date(t + ": Expected payment_method, source, or payment_method_data, not source_data.");
7675 }
7676 if (null !== $me && null !== data) {
7677 throw new Date(t + ": Expected either source or source_data, but not both.");
7678 }
7679 if (null !== paymentMethod && null !== rawData) {
7680 throw new Date(t + ": Expected either payment_method or payment_method_data, but not both.");
7681 }
7682 if (null !== paymentMethod && null !== $me) {
7683 throw new Date(t + ": Expected either payment_method or source, but not both.");
7684 }
7685 if (data || rawData) {
7686 var action = data || rawData || {};
7687 var path = action.type;
7688 var uri_schemes = action.data;
7689 var content = source && !rawData;
7690 return {
7691 confirmMode : {
7692 tag : "data",
7693 shouldCreateSource : content,
7694 type : a(object, path, t, content),
7695 data : uri_schemes
7696 },
7697 otherParams : otherParams
7698 };
7699 }
7700 return null !== $me ? {
7701 confirmMode : {
7702 tag : "source",
7703 source : $me
7704 },
7705 otherParams : otherParams
7706 } : null !== paymentMethod ? {
7707 confirmMode : {
7708 tag : "paymentMethod",
7709 paymentMethod : paymentMethod
7710 },
7711 otherParams : otherParams
7712 } : {
7713 confirmMode : {
7714 tag : "none"
7715 },
7716 otherParams : otherParams
7717 };
7718 };
7719 /**
7720 * @param {boolean} input
7721 * @param {boolean} data
7722 * @param {string} fn
7723 * @param {string} done
7724 * @return {?}
7725 */
7726 var join = function(input, data, fn, done) {
7727 return function(undefined, lang) {
7728 var promise = filter(input, data, fn, done, undefined, lang);
7729 if (promise) {
7730 return promise;
7731 }
7732 var result = map(input, data, fn, done, undefined);
7733 if (result) {
7734 return result;
7735 }
7736 throw new Date("Expected: stripe." + done + "(intentSecret, element[, data]) or stripe." + done + "(intentSecret[, data]). Please see the docs for more usage examples https://stripe.com/docs/payments/dynamic-authentication");
7737 };
7738 };
7739 /**
7740 * @param {string} format
7741 * @param {!Object} data
7742 * @return {?}
7743 */
7744 var trace = function(format, data) {
7745 var n = {
7746 skipFingerprint : false,
7747 sandboxFingerprintFrame : false,
7748 sandboxChallengeFrame : false
7749 };
7750 return -1 !== format.indexOf("Y") && (data.report("3ds2.optimization.Y"), n.skipFingerprint = true), -1 !== format.indexOf("k") && (data.report("3ds2.optimization.k"), n.sandboxFingerprintFrame = true), -1 !== format.indexOf("5") && (data.report("3ds2.optimization.5"), n.sandboxChallengeFrame = true), n;
7751 };
7752 /**
7753 * @param {string} key
7754 * @return {?}
7755 */
7756 var getInfo = function(key) {
7757 return {
7758 american_express : "amex",
7759 visa : "visa",
7760 mastercard : "mastercard",
7761 discover : "discover"
7762 }[key] || "unknown";
7763 };
7764 /**
7765 * @param {!Object} options
7766 * @param {string} value
7767 * @param {!Object} task
7768 * @return {?}
7769 */
7770 var done = function(options, value, task) {
7771 if (!options) {
7772 return null;
7773 }
7774 if ("use_stripe_sdk" === options.type) {
7775 var data = options.use_stripe_sdk;
7776 switch(data.type) {
7777 case "cardinal_3ds2_fingerprint":
7778 return {
7779 type : "cardinal-sdk-fingerprint",
7780 bin : data.stripe_js.bin,
7781 jwt : data.stripe_js.jwt,
7782 env : data.stripe_js.env
7783 };
7784 case "stripe_3ds2_fingerprint":
7785 return {
7786 type : "3ds2-fingerprint",
7787 threeDS2Source : data.three_d_secure_2_source,
7788 cardBrand : getInfo(data.directory_server_name),
7789 transactionId : data.server_transaction_id,
7790 optimizations : trace(data.three_ds_optimizations, task),
7791 methodUrl : data.three_ds_method_url
7792 };
7793 case "stripe_3ds2_challenge":
7794 return {
7795 type : "3ds2-challenge",
7796 threeDS2Source : data.stripe_js.three_d_secure_2_source,
7797 cardBrand : getInfo(data.stripe_js.directory_server_name),
7798 transactionId : data.stripe_js.server_transaction_id,
7799 optimizations : trace(data.stripe_js.three_ds_optimizations, task),
7800 acsTransactionId : data.stripe_js.acs_transaction_id,
7801 acsUrl : data.stripe_js.acs_url
7802 };
7803 case "three_d_secure_redirect":
7804 return {
7805 type : "3ds1-modal",
7806 url : data.stripe_js
7807 };
7808 }
7809 }
7810 if ("redirect_to_url" === options.type) {
7811 var url = options.redirect_to_url.url;
7812 switch(value) {
7813 case item.ideal:
7814 return {
7815 type : "ideal-redirect",
7816 redirectUrl : url
7817 };
7818 }
7819 }
7820 if ("authorize_with_url" === options.type) {
7821 var url = options.authorize_with_url.url;
7822 switch(value) {
7823 case item.card:
7824 return {
7825 type : "3ds1-modal",
7826 url : url
7827 };
7828 case item.ideal:
7829 return {
7830 type : "ideal-redirect",
7831 redirectUrl : url
7832 };
7833 }
7834 }
7835 return null;
7836 };
7837 /**
7838 * @param {!Object} data
7839 * @return {?}
7840 */
7841 var post = function(data) {
7842 switch(data.type) {
7843 case "error":
7844 return {
7845 error : data.error
7846 };
7847 case "object":
7848 switch(data.object.object) {
7849 case "payment_intent":
7850 return {
7851 paymentIntent : data.object
7852 };
7853 case "setup_intent":
7854 return {
7855 setupIntent : data.object
7856 };
7857 default:
7858 return reject(data.object);
7859 }default:
7860 return reject(data);
7861 }
7862 };
7863 /**
7864 * @param {string} string
7865 * @param {string} i
7866 * @param {!Object} o
7867 * @param {string} value
7868 * @return {?}
7869 */
7870 var format = function(string, i, o, value) {
7871 return i === user.PAYMENT_INTENT ? o.action.retrievePaymentIntent({
7872 hosted : false,
7873 intentSecret : string,
7874 locale : value,
7875 asErrorIfNotSucceeded : true
7876 }).then(post) : o.action.retrieveSetupIntent({
7877 hosted : false,
7878 intentSecret : string,
7879 locale : value,
7880 asErrorIfNotSucceeded : true
7881 }).then(post);
7882 };
7883 var isCommercial = function() {
7884 /**
7885 * @param {?} options
7886 * @param {number} index
7887 * @return {?}
7888 */
7889 function flattenElements(options, index) {
7890 /** @type {!Array} */
7891 var result = [];
7892 /** @type {boolean} */
7893 var _iteratorNormalCompletion3 = true;
7894 /** @type {boolean} */
7895 var o = false;
7896 var i = void 0;
7897 try {
7898 var info;
7899 var _iterator3 = options[Symbol.iterator]();
7900 for (; !(_iteratorNormalCompletion3 = (info = _iterator3.next()).done) && (result.push(info.value), !index || result.length !== index); _iteratorNormalCompletion3 = true) {
7901 }
7902 } catch (contactCapacity) {
7903 /** @type {boolean} */
7904 o = true;
7905 i = contactCapacity;
7906 } finally {
7907 try {
7908 if (!_iteratorNormalCompletion3 && _iterator3.return) {
7909 _iterator3.return();
7910 }
7911 } finally {
7912 if (o) {
7913 throw i;
7914 }
7915 }
7916 }
7917 return result;
7918 }
7919 return function(arr, options) {
7920 if (Array.isArray(arr)) {
7921 return arr;
7922 }
7923 if (Symbol.iterator in Object(arr)) {
7924 return flattenElements(arr, options);
7925 }
7926 throw new TypeError("Invalid attempt to destructure non-iterable instance");
7927 };
7928 }();
7929 /**
7930 * @param {!Object} res
7931 * @param {!Object} value
7932 * @param {string} code
7933 * @return {?}
7934 */
7935 var now = function(res, value, code) {
7936 return res.createLightboxFrame(e.AUTHORIZE_WITH_URL, {
7937 url : value,
7938 locale : code
7939 });
7940 };
7941 /**
7942 * @param {!Object} id
7943 * @param {string} html
7944 * @param {string} name
7945 * @param {!Object} config
7946 * @param {string} data
7947 * @return {?}
7948 */
7949 var success = function(id, html, name, config, data) {
7950 var viewport = trim();
7951 /** @type {number} */
7952 var a = Date.now();
7953 var instance = now(config, id, data);
7954 instance.show();
7955 config.report("authorize_with_url.loading", {
7956 viewport : viewport
7957 });
7958 instance._on("load", function() {
7959 config.report("authorize_with_url.loaded", {
7960 loadDuration : Date.now() - a
7961 });
7962 instance.fadeInBackdrop();
7963 });
7964 /**
7965 * @param {!Object} s
7966 * @return {?}
7967 */
7968 var error = function(s) {
7969 return !(!s.code || !s.type) && !(!s.payment_intent && !s.setup_intent);
7970 };
7971 return new Q(function(checkResult, i) {
7972 instance._once("authorize_with_url_done", function(response) {
7973 config.report("authorize_with_url.done", {
7974 shownDuration : Date.now() - a,
7975 success : !("error" in response)
7976 });
7977 /**
7978 * @return {?}
7979 */
7980 var calculateOfflineData = function() {
7981 return Q.all([format(html, name, config, data), instance.destroy()]).then(function(tile) {
7982 return isCommercial(tile, 1)[0];
7983 });
7984 };
7985 if ("fallback" === response.type) {
7986 calculateOfflineData().then(checkResult);
7987 } else {
7988 if (response.result.error && !error(response.result.error)) {
7989 calculateOfflineData().then(checkResult);
7990 } else {
7991 instance.destroy().then(function() {
7992 return checkResult(response.result);
7993 });
7994 }
7995 }
7996 });
7997 });
7998 };
7999 var isValid = function() {
8000 /**
8001 * @param {?} options
8002 * @param {number} index
8003 * @return {?}
8004 */
8005 function flattenElements(options, index) {
8006 /** @type {!Array} */
8007 var result = [];
8008 /** @type {boolean} */
8009 var _iteratorNormalCompletion3 = true;
8010 /** @type {boolean} */
8011 var o = false;
8012 var i = void 0;
8013 try {
8014 var info;
8015 var _iterator3 = options[Symbol.iterator]();
8016 for (; !(_iteratorNormalCompletion3 = (info = _iterator3.next()).done) && (result.push(info.value), !index || result.length !== index); _iteratorNormalCompletion3 = true) {
8017 }
8018 } catch (contactCapacity) {
8019 /** @type {boolean} */
8020 o = true;
8021 i = contactCapacity;
8022 } finally {
8023 try {
8024 if (!_iteratorNormalCompletion3 && _iterator3.return) {
8025 _iterator3.return();
8026 }
8027 } finally {
8028 if (o) {
8029 throw i;
8030 }
8031 }
8032 }
8033 return result;
8034 }
8035 return function(arr, options) {
8036 if (Array.isArray(arr)) {
8037 return arr;
8038 }
8039 if (Symbol.iterator in Object(arr)) {
8040 return flattenElements(arr, options);
8041 }
8042 throw new TypeError("Invalid attempt to destructure non-iterable instance");
8043 };
8044 }();
8045 /** @type {function(!Object, ...(Object|null)): !Object} */
8046 var time = Object.assign || function(links) {
8047 /** @type {number} */
8048 var i = 1;
8049 for (; i < arguments.length; i++) {
8050 var match = arguments[i];
8051 var key;
8052 for (key in match) {
8053 if (Object.prototype.hasOwnProperty.call(match, key)) {
8054 links[key] = match[key];
8055 }
8056 }
8057 }
8058 return links;
8059 };
8060 /**
8061 * @param {?} a
8062 * @return {?}
8063 */
8064 var connect = function(a) {
8065 return new Q(function(makeLinkCb) {
8066 a._on("load", function() {
8067 return makeLinkCb(a);
8068 });
8069 });
8070 };
8071 /**
8072 * @param {!Object} message
8073 * @param {?} data
8074 * @param {?} noRepeat
8075 * @return {?}
8076 */
8077 var add = function(message, data, noRepeat) {
8078 var events = message.createHiddenFrame(e.STRIPE_3DS2_FINGERPRINT, {
8079 intentId : data,
8080 hosted : noRepeat
8081 });
8082 message.report("3ds2.fingerprint_frame.loading", {
8083 hosted : noRepeat,
8084 intentId : data
8085 });
8086 var test_ident = connect(events);
8087 return test_ident.then(function() {
8088 message.report("3ds2.fingerprint_frame.loaded", {
8089 hosted : noRepeat,
8090 intentId : data
8091 });
8092 }), test_ident;
8093 };
8094 /**
8095 * @param {?} event
8096 * @param {!Object} model
8097 * @param {?} docs
8098 * @param {?} id
8099 * @return {?}
8100 */
8101 var verify = function(event, model, docs, id) {
8102 var target = model.createLightboxFrame(e.STRIPE_3DS2_CHALLENGE, {
8103 intentId : event,
8104 hosted : id
8105 });
8106 model.report("3ds2.challenge_frame.loading", {
8107 intentId : event,
8108 hosted : id
8109 });
8110 target._on("challenge_complete", function() {
8111 target.fadeOutBackdrop();
8112 });
8113 var drop = connect(target);
8114 return drop.then(function() {
8115 return model.report("3ds2.challenge_frame.loaded", {
8116 intentId : event,
8117 hosted : id
8118 });
8119 }), id && (target.show(), target.action.show3DS2Spinner({
8120 cardBrand : docs
8121 })), drop;
8122 };
8123 /**
8124 * @param {string} action
8125 * @param {!Object} data
8126 * @param {!Object} result
8127 * @param {?} index
8128 * @return {?}
8129 */
8130 var position = function(action, data, result, index) {
8131 return data.optimizations.skipFingerprint ? Q.resolve({
8132 fingerprintAttempted : false,
8133 fingerprintData : null
8134 }) : "" === data.methodUrl ? (result.report("3ds2.fingerprint.no_method_url", {
8135 hosted : index,
8136 intentId : action.id
8137 }), Q.resolve({
8138 fingerprintAttempted : false,
8139 fingerprintData : null
8140 })) : add(result, action.id, index).then(function(e) {
8141 return e.action.perform3DS2Fingerprint({
8142 transactionId : data.transactionId,
8143 methodUrl : data.methodUrl,
8144 shouldSandbox : data.optimizations.sandboxFingerprintFrame
8145 }).then(function(canCreateDiscussions) {
8146 return e.destroy(), canCreateDiscussions;
8147 });
8148 });
8149 };
8150 /**
8151 * @param {string} e
8152 * @param {string} g
8153 * @param {!Object} data
8154 * @param {!Object} res
8155 * @param {string} name
8156 * @param {?} value
8157 * @return {?}
8158 */
8159 var next = function(e, g, data, res, name, value) {
8160 /** @type {number} */
8161 var a = Date.now();
8162 var result = verify(e.id, res, data.cardBrand, value);
8163 /**
8164 * @param {!Object} query
8165 * @return {?}
8166 */
8167 var next = function(query) {
8168 return result.then(function(t) {
8169 if (!value) {
8170 t.show();
8171 t.fadeInBackdrop();
8172 }
8173 var n = (query.type, query.optimizations);
8174 var start = spawn(query, ["type", "optimizations"]);
8175 return t.action.perform3DS2Challenge(time({}, start, {
8176 shouldSandbox : n.sandboxChallengeFrame
8177 }));
8178 });
8179 };
8180 /**
8181 * @param {?} planned
8182 * @return {?}
8183 */
8184 var done = function(planned) {
8185 return res.report("3ds2.authenticate", {
8186 hosted : value,
8187 intentId : e.id
8188 }), res.action.authenticate3DS2({
8189 threeDS2Source : data.threeDS2Source,
8190 fingerprintResult : planned
8191 }).then(function(result) {
8192 return "error" === result.type ? res.report("3ds2.authenticate.error", {
8193 error : result.error,
8194 hosted : value,
8195 intentId : e.id
8196 }) : res.report("3ds2.authenticate.success", {
8197 hosted : value,
8198 intentId : e.id
8199 }), result;
8200 });
8201 };
8202 /**
8203 * @return {?}
8204 */
8205 var init = function() {
8206 return Q.all([format(e, g, res, name), result.then(function(anAlertDialog) {
8207 return anAlertDialog.destroy();
8208 })]).then(function(width) {
8209 var err = isValid(width, 1);
8210 var xhr = err[0];
8211 return res.report("3ds2.done", time({
8212 intentId : e.id,
8213 hosted : value,
8214 totalDuration : Date.now() - a
8215 }, xhr.error ? {
8216 error : xhr.error,
8217 success : false
8218 } : {
8219 success : true
8220 })), xhr;
8221 });
8222 };
8223 switch(data.type) {
8224 case "3ds2-challenge":
8225 return next(data).then(init);
8226 case "3ds2-fingerprint":
8227 return position(e, data, res, value).then(done).then(function(b) {
8228 if ("error" === b.type) {
8229 return init();
8230 }
8231 var o = b.object.ares;
8232 return "C" !== o.transStatus ? (res.report("3ds2.frictionless", {
8233 hosted : value,
8234 intentId : e.id
8235 }), init()) : next({
8236 type : "3ds2-challenge",
8237 threeDS2Source : data.threeDS2Source,
8238 cardBrand : data.cardBrand,
8239 transactionId : data.transactionId,
8240 acsUrl : o.acsURL,
8241 acsTransactionId : o.acsTransID,
8242 optimizations : data.optimizations
8243 }).then(init);
8244 });
8245 default:
8246 return reject(data);
8247 }
8248 };
8249 /**
8250 * @param {string} uri
8251 * @return {?}
8252 */
8253 var ajax = function(uri) {
8254 return new Q(function(handler, n) {
8255 /** @type {number} */
8256 var autoResumeTimer = setTimeout(function() {
8257 handler({
8258 type : "error",
8259 error : {
8260 code : "redirect_error",
8261 message : "Failed to redirect to " + uri
8262 },
8263 locale : "en"
8264 });
8265 }, 3E3);
8266 window.addEventListener("pagehide", function() {
8267 clearTimeout(autoResumeTimer);
8268 });
8269 /** @type {string} */
8270 window.top.location.href = uri;
8271 });
8272 };
8273 /**
8274 * @param {!Object} model
8275 * @param {!Object} content
8276 * @param {!Object} event
8277 * @return {undefined}
8278 */
8279 var end = function(model, content, event) {
8280 model.report("redirect_error", {
8281 initiator : content,
8282 error : event.error
8283 });
8284 };
8285 /**
8286 * @param {!Object} value
8287 * @param {string} file
8288 * @param {!Object} i
8289 * @return {?}
8290 */
8291 var query = function(value, file, i) {
8292 return ajax(file).then(function(e) {
8293 return end(i, "ideal redirect", e), handle(e, value);
8294 });
8295 };
8296 /**
8297 * @param {!Object} api
8298 * @param {?} params
8299 * @param {string} code
8300 * @return {?}
8301 */
8302 var download = function(api, params, code) {
8303 return api.createLightboxFrame(e.CARDINAL_3DS2, {
8304 intentSecret : params,
8305 locale : code
8306 });
8307 };
8308 /**
8309 * @param {?} url
8310 * @param {!Object} data
8311 * @param {!Object} config
8312 * @param {string} options
8313 * @return {?}
8314 */
8315 var request = function(url, data, config, options) {
8316 /** @type {number} */
8317 var o = Date.now();
8318 var a = download(config, url, options);
8319 return a.show(), config.report("cardinal_3ds2.frame.loading"), new Q(function(clone) {
8320 a._on("load", function() {
8321 config.report("cardinal_3ds2.frame.loaded", {
8322 loadDuration : Date.now() - o
8323 });
8324 a.fadeInBackdrop();
8325 a.action.performCardinal3DS2(data).then(function(data) {
8326 config.report("cardinal_3ds2.done", {
8327 totalDuration : Date.now() - o,
8328 success : !("error" in data)
8329 });
8330 a.destroy().then(function() {
8331 return clone(data);
8332 });
8333 });
8334 });
8335 });
8336 };
8337 /** @type {function(?): ?} */
8338 var indexOfIt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(objOrTsid) {
8339 return typeof objOrTsid;
8340 } : function(obj) {
8341 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
8342 };
8343 /**
8344 * @param {?} obj
8345 * @return {?}
8346 */
8347 var createElement = function(obj) {
8348 if (!obj || "object" !== (void 0 === obj ? "undefined" : indexOfIt(obj))) {
8349 return null;
8350 }
8351 var type = obj.type;
8352 var e = m(obj, ["type"]);
8353 return {
8354 type : "string" == typeof type ? type : null,
8355 data : e
8356 };
8357 };
8358 /**
8359 * @param {!Object} data
8360 * @return {?}
8361 */
8362 var fail = function(data) {
8363 switch(data.type) {
8364 case "object":
8365 return {
8366 source : data.object
8367 };
8368 case "error":
8369 return {
8370 error : data.error
8371 };
8372 default:
8373 return reject(data);
8374 }
8375 };
8376 var re = {
8377 source : test({
8378 id : sanitize("src_"),
8379 client_secret : sanitize("src_client_secret_")
8380 })
8381 };
8382 var args = test(re);
8383 /**
8384 * @param {!Object} data
8385 * @return {?}
8386 */
8387 var errorMessage = function(data) {
8388 switch(data.type) {
8389 case "object":
8390 return {
8391 paymentMethod : data.object
8392 };
8393 case "error":
8394 return {
8395 error : data.error
8396 };
8397 default:
8398 return reject(data);
8399 }
8400 };
8401 /** @type {function(!Object, ...(Object|null)): !Object} */
8402 var compile = Object.assign || function(links) {
8403 /** @type {number} */
8404 var i = 1;
8405 for (; i < arguments.length; i++) {
8406 var match = arguments[i];
8407 var key;
8408 for (key in match) {
8409 if (Object.prototype.hasOwnProperty.call(match, key)) {
8410 links[key] = match[key];
8411 }
8412 }
8413 }
8414 return links;
8415 };
8416 /** @type {function(?): ?} */
8417 var receiveProtectedData = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(canCreateDiscussions) {
8418 return typeof canCreateDiscussions;
8419 } : function(obj) {
8420 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
8421 };
8422 /**
8423 * @param {!Object} data
8424 * @return {?}
8425 */
8426 var remove = function(data) {
8427 switch(data.type) {
8428 case "error":
8429 var response = data.error;
8430 if ("payment_intent_unexpected_state" === response.code && "object" === receiveProtectedData(response.payment_intent) && null != response.payment_intent && "string" == typeof response.payment_intent.status && inArray(response.payment_intent.status)) {
8431 var message = response.payment_intent;
8432 return {
8433 type : "object",
8434 locale : data.locale,
8435 object : message
8436 };
8437 }
8438 return data;
8439 case "object":
8440 return data;
8441 default:
8442 return reject(data);
8443 }
8444 };
8445 /**
8446 * @param {!Object} body
8447 * @param {!Object} data
8448 * @param {string} res
8449 * @param {string} callback
8450 * @param {?} status
8451 * @return {?}
8452 */
8453 var complete = function(body, data, res, callback, status) {
8454 var options = done(clean(data), res, body);
8455 var token = generateToken(data);
8456 if (!options) {
8457 return Q.resolve({
8458 paymentIntent : data
8459 });
8460 }
8461 switch(options.type) {
8462 case "3ds1-modal":
8463 return success(options.url, token, user.PAYMENT_INTENT, body, callback);
8464 case "3ds2-fingerprint":
8465 case "3ds2-challenge":
8466 return next(token, user.PAYMENT_INTENT, options, body, callback, status);
8467 case "cardinal-sdk-fingerprint":
8468 return request(data.client_secret, {
8469 jwt : options.jwt,
8470 bin : options.bin,
8471 env : options.env
8472 }, body, callback);
8473 case "ideal-redirect":
8474 return query(data, options.redirectUrl, body);
8475 default:
8476 return Q.resolve({
8477 paymentIntent : data
8478 });
8479 }
8480 };
8481 /**
8482 * @param {!Object} contents
8483 * @param {!Object} data
8484 * @param {string} options
8485 * @param {string} name
8486 * @param {boolean} body
8487 * @return {?}
8488 */
8489 var check = function(contents, data, options, name, body) {
8490 return complete(contents, data, options, name, body).then(function(i) {
8491 if (i.setupIntent) {
8492 throw new Error("Got unexpected SetupIntent response");
8493 }
8494 return i;
8495 });
8496 };
8497 /**
8498 * @param {!Object} item
8499 * @param {string} target
8500 * @param {boolean} type
8501 * @return {?}
8502 */
8503 var validate = function(item, target, type) {
8504 var foo = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
8505 return function(self) {
8506 var data = remove(self);
8507 switch(data.type) {
8508 case "error":
8509 var e = data.error;
8510 var obj = e.payment_intent;
8511 return type && obj && "payment_intent_unexpected_state" === e.code && ("succeeded" === obj.status || "requires_capture" === obj.status) ? Q.resolve({
8512 paymentIntent : obj
8513 }) : Q.resolve(handle(self));
8514 case "object":
8515 var source = data.object;
8516 return check(item, source, target, data.locale, foo);
8517 default:
8518 return reject(data);
8519 }
8520 };
8521 };
8522 /**
8523 * @param {!Object} error
8524 * @param {!Object} match
8525 * @param {string} value
8526 * @param {!Function} name
8527 * @param {(Element|!Function)} v
8528 * @return {?}
8529 */
8530 var handler = function(error, match, value, name, v) {
8531 var p = ok(name);
8532 if ("string" != typeof value) {
8533 return Q.reject(new Date("Please provide a PaymentMethod type to createPaymentMethod."));
8534 }
8535 var options = createElement(p ? v : name);
8536 var result = options || {
8537 type : null,
8538 data : {}
8539 };
8540 /** @type {null} */
8541 var key = result.type;
8542 var constraintsToAttach = result.data;
8543 if (key && value !== key) {
8544 return Q.reject(new Date("The type supplied in payment_method_data is not consistent."));
8545 }
8546 if (p) {
8547 var frameId = p._frame.id;
8548 var name = p._componentName;
8549 return error.action.createPaymentMethodWithElement({
8550 frameId : frameId,
8551 elementName : name,
8552 type : value,
8553 paymentMethodData : constraintsToAttach,
8554 mids : match
8555 }).then(errorMessage);
8556 }
8557 return options ? error.action.createPaymentMethodWithData({
8558 elementName : null,
8559 type : value,
8560 paymentMethodData : constraintsToAttach,
8561 mids : match
8562 }).then(errorMessage) : Q.reject(new Date("Please provide either an Element or PaymentMethod creation parameters to createPaymentMethod."));
8563 };
8564 /**
8565 * @param {!Object} value
8566 * @param {!Object} place
8567 * @return {?}
8568 */
8569 var text = function(value, place) {
8570 var ret = cb(path, value, "retrievePaymentIntent");
8571 var ftype = ret.value;
8572 return place.action.retrievePaymentIntent({
8573 intentSecret : ftype,
8574 hosted : false
8575 }).then(handle);
8576 };
8577 /**
8578 * @param {boolean} value
8579 * @param {!Object} key
8580 * @param {!Object} status
8581 * @param {!Object} e
8582 * @param {?} a
8583 * @param {?} b
8584 * @return {?}
8585 */
8586 var compare = function(value, key, status, e, a, b) {
8587 var actual = cb(path, e, "stripe.confirmPaymentIntent intent secret");
8588 var oldPath = actual.value;
8589 var arr = join(value, false, null, "confirmPaymentIntent")(a, b);
8590 return key.action.confirmPaymentIntent(compile({}, arr, {
8591 intentSecret : oldPath,
8592 expectedType : null,
8593 mids : status
8594 })).then(handle);
8595 };
8596 /**
8597 * @param {!Object} name
8598 * @param {!Object} data
8599 * @return {?}
8600 */
8601 var apply = function(name, data) {
8602 var ret = cb(path, name, "[internal] stripe.handleHosted3DS2Setup intent secret");
8603 var ftype = ret.value;
8604 return data.action.retrievePaymentIntent({
8605 intentSecret : ftype,
8606 hosted : true
8607 }).then(validate(data, item.card, false, true));
8608 };
8609 /**
8610 * @param {!Object} result
8611 * @param {!Object} def
8612 * @return {?}
8613 */
8614 var run = function(result, def) {
8615 var ret = cb(path, result, "stripe.handleCardAction intent secret");
8616 var ftype = ret.value;
8617 return def.action.retrievePaymentIntent({
8618 intentSecret : ftype,
8619 hosted : false
8620 }).then(function(item) {
8621 var data = remove(item);
8622 switch(data.type) {
8623 case "error":
8624 return Q.resolve(handle(item));
8625 case "object":
8626 var args = data.object;
8627 if (inArray(args.status)) {
8628 if ("manual" !== args.confirmation_method) {
8629 throw new Date("handleCardAction: The PaymentIntent supplied does not require manual server-side confirmation. Please use handleCardPayment instead to complete the payment.");
8630 }
8631 return check(def, args, item.card, data.locale, false);
8632 }
8633 throw new Date("handleCardAction: The PaymentIntent supplied is not in the requires_action state.");
8634 default:
8635 return reject(data);
8636 }
8637 });
8638 };
8639 /**
8640 * @param {boolean} filename
8641 * @param {!Object} target
8642 * @param {?} html
8643 * @param {boolean} controller
8644 * @param {!Object} config
8645 * @param {?} req
8646 * @param {?} res
8647 * @return {?}
8648 */
8649 var show = function(filename, target, html, controller, config, req, res) {
8650 var actual = cb(path, config, "stripe.handleCardPayment intent secret");
8651 var oldPath = actual.value;
8652 /** @type {string} */
8653 var type = item.card;
8654 var options = join(filename, controller, type, "handleCardPayment")(req, res);
8655 /** @type {boolean} */
8656 var result = !req && !res;
8657 return target.action.confirmPaymentIntent(compile({}, options, {
8658 otherParams : compile({}, options.otherParams, {
8659 use_stripe_sdk : true
8660 }),
8661 intentSecret : oldPath,
8662 expectedType : type,
8663 mids : html
8664 })).then(validate(target, type, result));
8665 };
8666 /**
8667 * @param {!Object} msg
8668 * @param {?} line
8669 * @param {boolean} key
8670 * @param {!Object} hash
8671 * @param {?} data
8672 * @param {?} callback
8673 * @return {?}
8674 */
8675 var constructor = function(msg, line, key, hash, data, callback) {
8676 var actual = cb(path, hash, "stripe.handleSepaDebitPayment intent secret");
8677 var oldPath = actual.value;
8678 /** @type {string} */
8679 var type = item.sepa_debit;
8680 var content = join(true, key, type, "handleSepaDebitPayment")(data, callback);
8681 /** @type {boolean} */
8682 var result = !data && !callback;
8683 return msg.action.confirmPaymentIntent(compile({}, content, {
8684 intentSecret : oldPath,
8685 expectedType : type,
8686 mids : line
8687 })).then(validate(msg, type, result));
8688 };
8689 /**
8690 * @param {!Object} that
8691 * @param {!Object} array
8692 * @param {boolean} key
8693 * @param {!Object} process
8694 * @param {?} data
8695 * @param {?} index
8696 * @return {?}
8697 */
8698 var forEach = function(that, array, key, process, data, index) {
8699 var ret = cb(path, process, "stripe.handleIdealPayment intent secret");
8700 var ftype = ret.value;
8701 /** @type {string} */
8702 var options = item.ideal;
8703 var info = join(true, key, options, "handleIdealPayment")(data, index);
8704 /** @type {boolean} */
8705 var result = !data && !index;
8706 return that.action.confirmPaymentIntent(compile({}, info, {
8707 intentSecret : ftype,
8708 expectedType : options,
8709 mids : array
8710 })).then(validate(that, options, result));
8711 };
8712 /** @type {function(!Object, ...(Object|null)): !Object} */
8713 var template = Object.assign || function(links) {
8714 /** @type {number} */
8715 var i = 1;
8716 for (; i < arguments.length; i++) {
8717 var match = arguments[i];
8718 var key;
8719 for (key in match) {
8720 if (Object.prototype.hasOwnProperty.call(match, key)) {
8721 links[key] = match[key];
8722 }
8723 }
8724 }
8725 return links;
8726 };
8727 /**
8728 * @param {!Object} data
8729 * @param {!Object} options
8730 * @param {string} document
8731 * @param {string} callback
8732 * @param {?} settings
8733 * @return {?}
8734 */
8735 var notify = function(data, options, document, callback, settings) {
8736 var result = done(clean(options), document, data);
8737 var token = generateToken(options);
8738 if (!result) {
8739 return Q.resolve({
8740 setupIntent : options
8741 });
8742 }
8743 switch(result.type) {
8744 case "3ds1-modal":
8745 return success(result.url, token, user.SETUP_INTENT, data, callback);
8746 case "3ds2-fingerprint":
8747 case "3ds2-challenge":
8748 return next(token, user.SETUP_INTENT, result, data, callback, settings);
8749 default:
8750 return Q.resolve({
8751 setupIntent : options
8752 });
8753 }
8754 };
8755 /**
8756 * @param {!Object} msg
8757 * @param {!Object} event
8758 * @param {string} args
8759 * @param {string} data
8760 * @param {boolean} value
8761 * @return {?}
8762 */
8763 var send = function(msg, event, args, data, value) {
8764 return notify(msg, event, args, data, value).then(function(data) {
8765 if (data.paymentIntent) {
8766 throw new Error("Got unexpected PaymentIntent response");
8767 }
8768 return data;
8769 });
8770 };
8771 /**
8772 * @param {!Object} data
8773 * @return {?}
8774 */
8775 var d = function(data) {
8776 switch(data.type) {
8777 case "error":
8778 return {
8779 error : data.error
8780 };
8781 case "object":
8782 return {
8783 setupIntent : data.object
8784 };
8785 default:
8786 return reject(data);
8787 }
8788 };
8789 /**
8790 * @param {!Object} code
8791 * @param {string} cb
8792 * @param {boolean} data
8793 * @param {boolean} input
8794 * @return {?}
8795 */
8796 var runTest = function(code, cb, data, input) {
8797 return function(json) {
8798 switch(json.type) {
8799 case "error":
8800 var e = json.error;
8801 var parent = e.setup_intent;
8802 return data && parent && "succeeded" === parent.status ? Q.resolve({
8803 setupIntent : parent
8804 }) : Q.resolve({
8805 error : e
8806 });
8807 case "object":
8808 var node = json.object;
8809 return send(code, node, cb, json.locale, input);
8810 default:
8811 return reject(json);
8812 }
8813 };
8814 };
8815 /**
8816 * @param {!Object} i
8817 * @param {?} m
8818 * @param {!Object} name
8819 * @param {?} url
8820 * @param {?} data
8821 * @return {?}
8822 */
8823 var f = function(i, m, name, url, data) {
8824 var ret = cb(path, name, "stripe.handleCardSetup intent secret");
8825 var ftype = ret.value;
8826 /** @type {string} */
8827 var next = item.card;
8828 var options = join(false, false, next, "handleCardSetup")(url, data);
8829 /** @type {boolean} */
8830 var version = !url && !data;
8831 return i.action.confirmSetupIntent(template({}, options, {
8832 otherParams : template({}, options.otherParams, {
8833 use_stripe_sdk : true
8834 }),
8835 intentSecret : ftype,
8836 expectedType : next,
8837 mids : m
8838 })).then(runTest(i, next, version, false));
8839 };
8840 /**
8841 * @param {!Object} key
8842 * @param {!Object} fallback
8843 * @return {?}
8844 */
8845 var getWithFallback = function(key, fallback) {
8846 var rc = cb(path, key, "stripe.retrieveSetupIntent intent secret");
8847 var i = rc.value;
8848 return fallback.action.retrieveSetupIntent({
8849 intentSecret : i,
8850 hosted : false
8851 }).then(d);
8852 };
8853 /**
8854 * @param {!Object} value
8855 * @param {?} method
8856 * @param {!Object} data
8857 * @param {?} callback
8858 * @param {?} error
8859 * @return {?}
8860 */
8861 var wrapped = function(value, method, data, callback, error) {
8862 var name = cb(path, data, "stripe.confirmSetupIntent intent secret");
8863 var nt = name.value;
8864 var options = join(false, false, null, "confirmSetupIntent")(callback, error);
8865 return value.action.confirmSetupIntent(template({}, options, {
8866 otherParams : template({}, options.otherParams),
8867 intentSecret : nt,
8868 expectedType : null,
8869 mids : method
8870 })).then(d);
8871 };
8872 /**
8873 * @param {!Object} text
8874 * @param {!Object} args
8875 * @return {?}
8876 */
8877 var _check = function(text, args) {
8878 var ret = cb(path, text, "stripe.handleCardSetup intent secret");
8879 var ftype = ret.value;
8880 return args.action.retrieveSetupIntent({
8881 intentSecret : ftype,
8882 hosted : true
8883 }).then(runTest(args, item.card, false, true));
8884 };
8885 /** @type {!Array} */
8886 var code = [task.checkout_beta_2, task.checkout_beta_3, task.checkout_beta_4];
8887 /** @type {!Array} */
8888 var c = [task.checkout_beta_2, task.checkout_beta_3, task.checkout_beta_4, task.checkout_pm_types];
8889 var langs = {
8890 da : "da",
8891 de : "de",
8892 en : "en",
8893 es : "es",
8894 fi : "fi",
8895 fr : "fr",
8896 it : "it",
8897 ja : "ja",
8898 nl : "nl",
8899 nb : "nb",
8900 pl : "pl",
8901 pt : "pt",
8902 sv : "sv",
8903 zh : "zh"
8904 };
8905 /** @type {!Array<string>} */
8906 var word = Object.keys(langs);
8907 /** @type {function(!Object, ...(Object|null)): !Object} */
8908 var trigger = Object.assign || function(links) {
8909 /** @type {number} */
8910 var i = 1;
8911 for (; i < arguments.length; i++) {
8912 var match = arguments[i];
8913 var key;
8914 for (key in match) {
8915 if (Object.prototype.hasOwnProperty.call(match, key)) {
8916 links[key] = match[key];
8917 }
8918 }
8919 }
8920 return links;
8921 };
8922 var fields = {
8923 sku : computed(id),
8924 plan : computed(id),
8925 clientReferenceId : computed(id),
8926 locale : computed(T.apply(void 0, ["auto"].concat(or(word)))),
8927 customerEmail : computed(id),
8928 billingAddressCollection : computed(T("required", "auto")),
8929 submitType : computed(T("auto", "pay", "book", "donate")),
8930 paymentMethodTypes : computed(all(T("card", "ideal"))),
8931 allowIncompleteSubscriptions : computed(month)
8932 };
8933 /**
8934 * @param {string} f
8935 * @param {!Function} name
8936 * @param {?} n
8937 * @return {?}
8938 */
8939 var getData = function(f, name, n) {
8940 if (f && name || (f || name) && n) {
8941 throw new Date("stripe.redirectToCheckout: Expected only one of sku, plan, or items.");
8942 }
8943 if ("string" == typeof f) {
8944 return [{
8945 sku : f,
8946 quantity : 1
8947 }];
8948 }
8949 if ("string" == typeof name) {
8950 return [{
8951 plan : name,
8952 quantity : 1
8953 }];
8954 }
8955 if (n) {
8956 return n.map(function(product) {
8957 return "sku" === product.type ? {
8958 sku : product.id,
8959 quantity : product.quantity
8960 } : {
8961 plan : product.id,
8962 quantity : product.quantity
8963 };
8964 });
8965 }
8966 throw new Date("stripe.redirectToCheckout: You must provide either sku, plan, or items.");
8967 };
8968 /**
8969 * @param {!Object} e
8970 * @return {?}
8971 */
8972 var render = function(e) {
8973 var data = status(trigger({}, fields, {
8974 items : computed(create(all(status({
8975 type : T("plan"),
8976 quantity : first(0),
8977 id : id
8978 })), all(status({
8979 type : T("sku"),
8980 quantity : first(0),
8981 id : id
8982 })))),
8983 successUrl : id,
8984 cancelUrl : id
8985 }));
8986 var result = cb(data, e, "stripe.redirectToCheckout");
8987 var options = result.value;
8988 var url = options.sku;
8989 var zoom = options.plan;
8990 var i = options.items;
8991 var type = random(options, ["sku", "plan", "items"]);
8992 var point = getData(url, zoom, i);
8993 return trigger({
8994 tag : "no-session",
8995 items : point
8996 }, type);
8997 };
8998 /**
8999 * @param {!Object} err
9000 * @param {string} type
9001 * @return {?}
9002 */
9003 var finish = function(err, type) {
9004 var data = status(trigger({}, fields, {
9005 sessionId : computed(id),
9006 successUrl : computed(id),
9007 cancelUrl : computed(id),
9008 items : computed(create(all(status({
9009 quantity : first(0),
9010 plan : id
9011 })), all(status({
9012 quantity : first(0),
9013 sku : id
9014 }))))
9015 }));
9016 var result = cb(data, err, "stripe.redirectToCheckout");
9017 var options = result.value;
9018 if (options.sessionId) {
9019 var id = options.sessionId;
9020 if (Object.keys(options).length > 1) {
9021 throw new Date("stripe.redirectToCheckout: Do not provide other parameters when providing sessionId. Specify all parameters on your server when creating the CheckoutSession.");
9022 }
9023 if (!/^cs_/.test(id)) {
9024 throw new Date("stripe.redirectToCheckout: Invalid value for sessionId. You specified '" + id + "'.");
9025 }
9026 if ("livemode" === type && /^cs_test_/.test(id)) {
9027 throw new Date("stripe.redirectToCheckout: the provided sessionId is for a test mode Checkout Session, whereas Stripe.js was initialized with a live mode publishable key.");
9028 }
9029 if ("testmode" === type && /^cs_live_/.test(id)) {
9030 throw new Date("stripe.redirectToCheckout: the provided sessionId is for a live mode Checkout Session, whereas Stripe.js was initialized with a test mode publishable key.");
9031 }
9032 return {
9033 tag : "session",
9034 sessionId : id
9035 };
9036 }
9037 var listBoxItems = (options.sessionId, options.sku, options.plan, options.items);
9038 var service_descriptions = options.successUrl;
9039 var onsuccess = options.cancelUrl;
9040 var type = random(options, ["sessionId", "sku", "plan", "items", "successUrl", "cancelUrl"]);
9041 if (!listBoxItems) {
9042 throw new Date("stripe.redirectToCheckout: You must provide one of items or sessionId.");
9043 }
9044 if (!service_descriptions || !onsuccess) {
9045 throw new Date("stripe.redirectToCheckout: You must provide successUrl and cancelUrl.");
9046 }
9047 return trigger({
9048 tag : "no-session",
9049 items : listBoxItems,
9050 successUrl : service_descriptions,
9051 cancelUrl : onsuccess
9052 }, type);
9053 };
9054 /**
9055 * @param {!Object} type
9056 * @param {string} name
9057 * @return {?}
9058 */
9059 var onMessage = function(type, name) {
9060 var msg = finish(type, name);
9061 if ("no-session" === msg.tag) {
9062 var val = msg.successUrl;
9063 var err = msg.cancelUrl;
9064 if (!isString(val)) {
9065 throw new Date("stripe.redirectToCheckout: successUrl must start with either http:// or https://.");
9066 }
9067 if (!isString(err)) {
9068 throw new Date("stripe.redirectToCheckout: cancelUrl must start with either http:// or https://.");
9069 }
9070 return msg;
9071 }
9072 return msg;
9073 };
9074 /**
9075 * @param {string} n
9076 * @param {!Array} data
9077 * @param {!Object} val
9078 * @return {undefined}
9079 */
9080 var g = function(n, data, val) {
9081 if (val && val.paymentMethodTypes) {
9082 if (-1 === data.indexOf("checkout_pm_types")) {
9083 throw new Date("Invalid stripe.redirectToCheckout parameter: paymentMethodTypes is not an accepted parameter.");
9084 }
9085 if (n) {
9086 throw new Date("Invalid stripe.redirectToCheckout parameter: paymentMethodTypes is not an accepted parameter for " + n + ". Please follow our migration guide to update to the final version of Checkout: https://stripe.com/docs/payments/checkout/migration-from-beta");
9087 }
9088 }
9089 };
9090 /**
9091 * @param {string} code
9092 * @param {!Object} event
9093 * @return {?}
9094 */
9095 var expand = function(code, event) {
9096 return "session" === event.tag || null == code || event.locale || -1 === ["auto"].concat(or(word)).indexOf(code) ? event : trigger({}, event, {
9097 locale : code
9098 });
9099 };
9100 /**
9101 * @param {!Array} t
9102 * @param {!Object} result
9103 * @param {string} message
9104 * @return {?}
9105 */
9106 var sendMessage = function(t, result, message) {
9107 var n = setTimeout(code, function(stds) {
9108 return log(t, stds);
9109 });
9110 switch(g(n, t, result), n) {
9111 case "checkout_beta_2":
9112 return render(result);
9113 case "checkout_beta_3":
9114 return finish(result, message);
9115 case "checkout_beta_4":
9116 default:
9117 return onMessage(result, message);
9118 }
9119 };
9120 /**
9121 * @param {!Array} data
9122 * @param {string} context
9123 * @param {!Object} bufDesc
9124 * @return {?}
9125 */
9126 var toAudioBuffer = function(data, context, bufDesc) {
9127 var message = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unknown";
9128 return expand(context, sendMessage(data, bufDesc, message));
9129 };
9130 /** @type {function(!Array, string, !Object): ?} */
9131 var getLoadedRefs = toAudioBuffer;
9132 /** @type {function(!Object, ...(Object|null)): !Object} */
9133 var createWindow = Object.assign || function(links) {
9134 /** @type {number} */
9135 var i = 1;
9136 for (; i < arguments.length; i++) {
9137 var match = arguments[i];
9138 var key;
9139 for (key in match) {
9140 if (Object.prototype.hasOwnProperty.call(match, key)) {
9141 links[key] = match[key];
9142 }
9143 }
9144 }
9145 return links;
9146 };
9147 /**
9148 * @param {!Object} b
9149 * @param {string} str
9150 * @return {?}
9151 */
9152 var equals = function(b, str) {
9153 /**
9154 * @param {!Object} e
9155 * @return {?}
9156 */
9157 var fn = function(e) {
9158 return end(b, "redirectToCheckout", e), {
9159 error : e.error
9160 };
9161 };
9162 return ajax(str).then(fn);
9163 };
9164 /**
9165 * @param {!Object} context
9166 * @param {!Array} v
9167 * @param {!Function} done
9168 * @param {string} root
9169 * @return {?}
9170 */
9171 var initialize = function(context, v, done, root) {
9172 return function(data) {
9173 context.report("redirect_to_checkout.options", {
9174 betas : v,
9175 options : data,
9176 globalLocale : root
9177 });
9178 var result = getLoadedRefs(v, root, data, context.livemode());
9179 if ("session" === result.tag) {
9180 var me = result;
9181 var session = me.sessionId;
9182 return context.action.createPaymentPageWithSession({
9183 betas : v,
9184 mids : done(),
9185 sessionId : session
9186 }).then(function(message) {
9187 if ("error" === message.type) {
9188 return {
9189 error : message.error
9190 };
9191 }
9192 var u = message.object.url;
9193 return equals(context, u);
9194 });
9195 }
9196 var obj = result;
9197 var navLinksArr = (obj.tag, obj.items);
9198 var obj_is = obj.successUrl;
9199 var next = obj.cancelUrl;
9200 var hasCid = obj.clientReferenceId;
9201 var origOverlayCloseandPlay = obj.customerEmail;
9202 var origShowAd = obj.billingAddressCollection;
9203 var obj_has = obj.submitType;
9204 var obj_put = obj.paymentMethodTypes;
9205 var obj_copy = obj.allowIncompleteSubscriptions;
9206 var index = union(obj, ["tag", "items", "successUrl", "cancelUrl", "clientReferenceId", "customerEmail", "billingAddressCollection", "submitType", "paymentMethodTypes", "allowIncompleteSubscriptions"]);
9207 var listBoxItems = navLinksArr.map(function(data) {
9208 if (data.sku) {
9209 return {
9210 type : "sku",
9211 id : data.sku,
9212 quantity : data.quantity
9213 };
9214 }
9215 if (data.plan) {
9216 return {
9217 type : "plan",
9218 id : data.plan,
9219 quantity : data.quantity
9220 };
9221 }
9222 throw new Error("Unexpected item shape.");
9223 });
9224 var autoResumeTimer = setTimeout(code, function(e) {
9225 return log(v, e);
9226 });
9227 return context.action.createPaymentPage(createWindow({
9228 betas : v,
9229 mids : done(),
9230 items : listBoxItems,
9231 success_url : obj_is,
9232 cancel_url : next,
9233 client_reference_id : hasCid,
9234 customer_email : origOverlayCloseandPlay,
9235 billing_address_collection : origShowAd,
9236 submit_type : obj_has,
9237 payment_method_types : obj_put,
9238 use_payment_methods : !autoResumeTimer,
9239 allow_incomplete_subscriptions : obj_copy
9240 }, index)).then(function(message) {
9241 if ("error" === message.type) {
9242 return {
9243 error : message.error
9244 };
9245 }
9246 var u = message.object.url;
9247 return equals(context, u);
9248 });
9249 };
9250 };
9251 /** @type {function(number): ?} */
9252 var baseIsEqual = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(boundsMethod) {
9253 return typeof boundsMethod;
9254 } : function(obj) {
9255 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
9256 };
9257 /**
9258 * @param {!Object} data
9259 * @return {?}
9260 */
9261 var main = function(data) {
9262 switch(data.type) {
9263 case "object":
9264 return {
9265 token : data.object
9266 };
9267 case "error":
9268 return {
9269 error : data.error
9270 };
9271 default:
9272 return reject(data);
9273 }
9274 };
9275 /**
9276 * @param {number} value
9277 * @return {?}
9278 */
9279 var isEqual = function(value) {
9280 return "object" === (void 0 === value ? "undefined" : baseIsEqual(value)) && null !== value ? value : {};
9281 };
9282 /**
9283 * @param {!Object} notify
9284 * @param {!Function} t
9285 * @param {!Object} dt
9286 * @return {?}
9287 */
9288 var action = function(notify, t, dt) {
9289 var _t = ok(t);
9290 if (_t && "cardCvc" === _t._componentName) {
9291 var frameId = _t._frame.id;
9292 return notify.action.tokenizeCvcUpdate({
9293 frameId : frameId,
9294 mids : dt
9295 }).then(main);
9296 }
9297 throw new Date("You must provide a `cardCvc` Element to create a `cvc_update` token.");
9298 };
9299 /**
9300 * @param {!Object} context
9301 * @param {?} pathSolver
9302 * @return {?}
9303 */
9304 var setup = function(context, pathSolver) {
9305 return function(n, params) {
9306 var action = ok(n);
9307 if (action) {
9308 var frameId = action._frame.id;
9309 var name = action._componentName;
9310 var tokenData = isEqual(params);
9311 return context.action.tokenizeWithElement({
9312 frameId : frameId,
9313 elementName : name,
9314 tokenData : tokenData,
9315 mids : pathSolver
9316 }).then(main);
9317 }
9318 if ("string" == typeof n) {
9319 /** @type {!Function} */
9320 var notify = n;
9321 var tokenData = isEqual(params);
9322 return context.action.tokenizeWithData({
9323 elementName : null,
9324 type : notify,
9325 tokenData : tokenData,
9326 mids : pathSolver
9327 }).then(main);
9328 }
9329 throw new Date("You must provide a Stripe Element or a valid token type to create a Token.");
9330 };
9331 };
9332 /**
9333 * @param {!Object} data
9334 * @return {?}
9335 */
9336 var JSONResponse = function(data) {
9337 switch(data.type) {
9338 case "object":
9339 return {
9340 radarSession : data.object
9341 };
9342 case "error":
9343 return {
9344 error : data.error
9345 };
9346 default:
9347 return reject(data);
9348 }
9349 };
9350 /**
9351 * @param {!Object} expression
9352 * @param {?} locals
9353 * @return {?}
9354 */
9355 var $controller = function(expression, locals) {
9356 return expression.action.createRadarSession({
9357 mids : locals
9358 }).then(JSONResponse);
9359 };
9360 /** @type {function(!Object, ...(Object|null)): !Object} */
9361 var mixin = Object.assign || function(links) {
9362 /** @type {number} */
9363 var i = 1;
9364 for (; i < arguments.length; i++) {
9365 var match = arguments[i];
9366 var key;
9367 for (key in match) {
9368 if (Object.prototype.hasOwnProperty.call(match, key)) {
9369 links[key] = match[key];
9370 }
9371 }
9372 }
9373 return links;
9374 };
9375 var raiseImageEvent = function() {
9376 /**
9377 * @param {!Function} d
9378 * @param {string} props
9379 * @return {undefined}
9380 */
9381 function t(d, props) {
9382 /** @type {number} */
9383 var i = 0;
9384 for (; i < props.length; i++) {
9385 var descriptor = props[i];
9386 descriptor.enumerable = descriptor.enumerable || false;
9387 /** @type {boolean} */
9388 descriptor.configurable = true;
9389 if ("value" in descriptor) {
9390 /** @type {boolean} */
9391 descriptor.writable = true;
9392 }
9393 Object.defineProperty(d, descriptor.key, descriptor);
9394 }
9395 }
9396 return function(p, n, a) {
9397 return n && t(p.prototype, n), a && t(p, a), p;
9398 };
9399 }();
9400 var tile = test({
9401 apiKey : id,
9402 stripeAccount : computed(id),
9403 locale : computed(id),
9404 __privateApiUrl : computed(id),
9405 __checkout : computed(test({
9406 mids : test({
9407 muid : id,
9408 sid : id
9409 })
9410 })),
9411 __hosted3DS : computed(month),
9412 canCreateRadarSession : computed(month),
9413 betas : computed(all(on.apply(void 0, find(name))))
9414 });
9415 /**
9416 * @param {string} text
9417 * @return {?}
9418 */
9419 var parseInt = function(text) {
9420 return "You have an in-flight " + text + "! Please be sure to disable your form submit button when " + text + " is called.";
9421 };
9422 var sourceMap = function() {
9423 /**
9424 * @param {number} results
9425 * @param {?} skip
9426 * @return {undefined}
9427 */
9428 function load(results, skip) {
9429 var self = this;
9430 loadSwitch(this, load);
9431 fetch.call(this);
9432 var data = cb(tile, results || {}, "Stripe()");
9433 var params = data.value;
9434 var warnings = data.warnings;
9435 var key = params.apiKey;
9436 var bindDomElem = params.stripeAccount;
9437 var locale = params.locale;
9438 var federateRoleArn = params.__privateApiUrl;
9439 var response = params.__checkout;
9440 var accountRoleArn = params.__hosted3DS;
9441 var fanoutAllDay = params.canCreateRadarSession;
9442 var availableConnectionSources = params.betas;
9443 if ("" === key) {
9444 throw new Date("Please call Stripe() with your publishable key. You used an empty string.");
9445 }
9446 if (0 === key.indexOf("sk_")) {
9447 throw new Date("You should not use your secret key with Stripe.js.\n Please pass a publishable key instead.");
9448 }
9449 if (response && response.mids) {
9450 load._ec = new Module({
9451 checkoutIds : response.mids
9452 });
9453 }
9454 this._apiKey = key;
9455 this._keyMode = wait(key);
9456 this._locale = locale || null;
9457 this._betas = availableConnectionSources || [];
9458 this._stripeAccount = bindDomElem || null;
9459 /** @type {boolean} */
9460 this._isCheckout = !!response;
9461 this._controller = new whatToScale(mixin({
9462 apiKey : key,
9463 __privateApiUrl : federateRoleArn,
9464 stripeAccount : bindDomElem,
9465 betas : this._betas,
9466 stripeJsId : load.stripeJsId
9467 }, this._locale ? {
9468 locale : this._locale
9469 } : {}));
9470 warnings.forEach(function(type) {
9471 return self._controller.warn(type);
9472 });
9473 this._ensureHTTPS();
9474 this._ensureStripeHosted(skip);
9475 this._attachPaymentIntentMethods(this._betas, !!accountRoleArn);
9476 this._attachCheckoutMethods(this._betas);
9477 this._attachPrivateMethodsForCheckout(this._isCheckout);
9478 this._attachCreateRadarSession(fanoutAllDay || false);
9479 this._warnIE9Deprecation();
9480 }
9481 return raiseImageEvent(load, [{
9482 key : "_attachCreateRadarSession",
9483 value : function(deviceID) {
9484 var module = this;
9485 if (deviceID) {
9486 this.createRadarSession = passTruthyFalsey(function() {
9487 var locals = module._mids();
9488 return $controller(module._controller, locals);
9489 });
9490 }
9491 }
9492 }, {
9493 key : "_attachPaymentIntentMethods",
9494 value : function(_, value) {
9495 var self = this;
9496 var pattern = log(this._betas, task.payment_intent_beta_1) || log(this._betas, task.payment_intent_beta_2);
9497 /**
9498 * @return {?}
9499 */
9500 var put_rows = function() {
9501 return self._mids();
9502 };
9503 var CheckDailyStat = require(function() {
9504 /** @type {number} */
9505 var length = arguments.length;
9506 /** @type {!Array} */
9507 var args = Array(length);
9508 /** @type {number} */
9509 var i = 0;
9510 for (; i < length; i++) {
9511 args[i] = arguments[i];
9512 }
9513 return handler.apply(void 0, [self._controller, put_rows()].concat(args));
9514 });
9515 var onKeyPress = __bind(function(normal) {
9516 return text(normal, self._controller);
9517 });
9518 var EffectChain = require(function() {
9519 /** @type {number} */
9520 var _len8 = arguments.length;
9521 /** @type {!Array} */
9522 var args = Array(_len8);
9523 /** @type {number} */
9524 var _key8 = 0;
9525 for (; _key8 < _len8; _key8++) {
9526 args[_key8] = arguments[_key8];
9527 }
9528 return compare.apply(void 0, [true, self._controller, put_rows()].concat(args));
9529 });
9530 var GenerateGif = require(function() {
9531 /** @type {number} */
9532 var _len8 = arguments.length;
9533 /** @type {!Array} */
9534 var args = Array(_len8);
9535 /** @type {number} */
9536 var _key8 = 0;
9537 for (; _key8 < _len8; _key8++) {
9538 args[_key8] = arguments[_key8];
9539 }
9540 return compare.apply(void 0, [false, self._controller, put_rows()].concat(args));
9541 });
9542 var node = select(show, parseInt("handleCardPayment"));
9543 var renderAssign = require(function() {
9544 /** @type {number} */
9545 var _len = arguments.length;
9546 /** @type {!Array} */
9547 var params = Array(_len);
9548 /** @type {number} */
9549 var _key = 0;
9550 for (; _key < _len; _key++) {
9551 params[_key] = arguments[_key];
9552 }
9553 return node.apply(void 0, [true, self._controller, put_rows(), pattern].concat(params));
9554 });
9555 var ThoughtCollection = require(function() {
9556 /** @type {number} */
9557 var _len = arguments.length;
9558 /** @type {!Array} */
9559 var params = Array(_len);
9560 /** @type {number} */
9561 var _key = 0;
9562 for (; _key < _len; _key++) {
9563 params[_key] = arguments[_key];
9564 }
9565 return node.apply(void 0, [false, self._controller, put_rows(), pattern].concat(params));
9566 });
9567 var p = select(run, parseInt("handleCardAction"));
9568 var onLoad = __bind(function(queueResolvee) {
9569 return p(queueResolvee, self._controller);
9570 });
9571 var orig = select(f, parseInt("handleCardSetup"));
9572 var requestHelpers = require(function() {
9573 /** @type {number} */
9574 var _len8 = arguments.length;
9575 /** @type {!Array} */
9576 var args = Array(_len8);
9577 /** @type {number} */
9578 var _key8 = 0;
9579 for (; _key8 < _len8; _key8++) {
9580 args[_key8] = arguments[_key8];
9581 }
9582 return orig.apply(void 0, [self._controller, put_rows()].concat(args));
9583 });
9584 var m = __bind(function(map) {
9585 return getWithFallback(map, self._controller);
9586 });
9587 var CheckHourlyStat = require(function() {
9588 /** @type {number} */
9589 var _len8 = arguments.length;
9590 /** @type {!Array} */
9591 var args = Array(_len8);
9592 /** @type {number} */
9593 var _key8 = 0;
9594 for (; _key8 < _len8; _key8++) {
9595 args[_key8] = arguments[_key8];
9596 }
9597 return wrapped.apply(void 0, [self._controller, put_rows()].concat(args));
9598 });
9599 var TagHourlyStat = require(function() {
9600 /** @type {number} */
9601 var length = arguments.length;
9602 /** @type {!Array} */
9603 var args = Array(length);
9604 /** @type {number} */
9605 var i = 0;
9606 for (; i < length; i++) {
9607 args[i] = arguments[i];
9608 }
9609 return constructor.apply(void 0, [self._controller, put_rows(), pattern].concat(args));
9610 });
9611 var frontEndModuleConfig = require(function() {
9612 /** @type {number} */
9613 var _len2 = arguments.length;
9614 /** @type {!Array} */
9615 var args = Array(_len2);
9616 /** @type {number} */
9617 var _key2 = 0;
9618 for (; _key2 < _len2; _key2++) {
9619 args[_key2] = arguments[_key2];
9620 }
9621 return forEach.apply(void 0, [self._controller, put_rows(), pattern].concat(args));
9622 });
9623 var g = __bind(function(array) {
9624 return apply(array, self._controller);
9625 });
9626 var w = __bind(function(data) {
9627 return _check(data, self._controller);
9628 });
9629 this.createPaymentMethod = CheckDailyStat;
9630 this.retrievePaymentIntent = onKeyPress;
9631 this.handleCardPayment = ThoughtCollection;
9632 this.confirmPaymentIntent = GenerateGif;
9633 this.handleCardAction = onLoad;
9634 this.handleCardSetup = requestHelpers;
9635 this.retrieveSetupIntent = m;
9636 this.confirmSetupIntent = CheckHourlyStat;
9637 /**
9638 * @param {string} table
9639 * @return {?}
9640 */
9641 var getFirstTBody = function(table) {
9642 return function() {
9643 throw new Date("You cannot call `stripe." + table + "` without supplying a PaymentIntents beta flag when initializing Stripe.js. You can find more information including code snippets at https://www.stripe.com/docs/payments/payment-intents/quickstart.");
9644 };
9645 };
9646 this.fulfillPaymentIntent = getFirstTBody("fulfillPaymentIntent");
9647 this.handleSepaDebitPayment = getFirstTBody("handleSepaDebitPayment");
9648 this.handleIdealPayment = getFirstTBody("handleIdealPayment");
9649 if (log(this._betas, task.payment_intent_beta_1)) {
9650 this.fulfillPaymentIntent = renderAssign;
9651 } else {
9652 if (log(this._betas, task.payment_intent_beta_3) || log(this._betas, task.payment_intent_beta_2)) {
9653 this.handleCardPayment = renderAssign;
9654 }
9655 }
9656 if (log(this._betas, task.payment_intent_beta_3)) {
9657 this.confirmPaymentIntent = EffectChain;
9658 this.handleSepaDebitPayment = TagHourlyStat;
9659 this.handleIdealPayment = frontEndModuleConfig;
9660 }
9661 if (value) {
9662 this.handleHosted3DS2Payment = g;
9663 this.handleHosted3DS2Setup = w;
9664 }
9665 }
9666 }, {
9667 key : "_attachPrivateMethodsForCheckout",
9668 value : function(deviceID) {
9669 var config = this;
9670 if (deviceID) {
9671 this.tryNextAction = call(function(cookies, obj) {
9672 var event = cb(update, cookies, "Payment Intent");
9673 var val = event.value;
9674 /** @type {!Array<?>} */
9675 var id = Object.keys(item).map(function(idx_field) {
9676 return item[idx_field];
9677 });
9678 var result = cb(T.apply(void 0, find(id)), obj, "Source type");
9679 var res = result.value;
9680 return "payment_intent" === val.object ? check(config._controller, val, res, "auto", false) : send(config._controller, val, res, "auto", false);
9681 });
9682 }
9683 }
9684 }, {
9685 key : "_attachCheckoutMethods",
9686 value : function(name) {
9687 var t = this;
9688 /**
9689 * @return {?}
9690 */
9691 var next = function() {
9692 return t._mids();
9693 };
9694 var col = name.reduce(function(e, y) {
9695 var n = setTimeout(c, function(x_or_y) {
9696 return x_or_y === y;
9697 });
9698 return n ? [].concat(find(e), [n]) : e;
9699 }, []);
9700 this.redirectToCheckout = initialize(this._controller, col, next, this._locale);
9701 }
9702 }, {
9703 key : "_warnIE9Deprecation",
9704 value : function() {
9705 /** @type {boolean} */
9706 var alreadyMarked = this._keyMode === msg.live;
9707 /** @type {string} */
9708 var result = "Starting in December 2018, stripe.js v3 will no longer support IE9, per Microsoft's lifecycle policy.\n\nThis error is being thrown only in IE9 in testmode so that you have an opportunity to update your integration or your browser testing strategy.\n\nIf you want to suppress this error in testmode until December, initialize stripe.js with the `acknowledge_ie9_deprecation` beta:\nvar stripe = Stripe(key, {betas: ['acknowledge_ie9_deprecation']})";
9709 if (selfCompletionActive && !alreadyMarked && !log(this._betas, task.acknowledge_ie9_deprecation)) {
9710 throw window.console && console.error(result), new Date(result);
9711 }
9712 }
9713 }, {
9714 key : "_ensureHTTPS",
9715 value : function() {
9716 /** @type {string} */
9717 var protocol = window.location.protocol;
9718 /** @type {boolean} */
9719 var t = -1 !== ["https:", "file:"].indexOf(protocol);
9720 /** @type {boolean} */
9721 var isCSVLayer = -1 !== ["localhost", "127.0.0.1", "0.0.0.0"].indexOf(window.location.hostname);
9722 /** @type {boolean} */
9723 var hasLayerUrl = this._keyMode === msg.live;
9724 /** @type {string} */
9725 var message = "Live Stripe.js integrations must use HTTPS. For more information: https://stripe.com/docs/stripe-js/elements/quickstart#http-requirements";
9726 if (!t) {
9727 if (hasLayerUrl && !isCSVLayer) {
9728 throw this._controller.report("user_error.non_https_error", {
9729 protocol : protocol
9730 }), new Date(message);
9731 }
9732 if (!hasLayerUrl || isCSVLayer) {
9733 if (window.console) {
9734 console.warn("You may test your Stripe.js integration over HTTP. However, live Stripe.js integrations must use HTTPS.");
9735 }
9736 } else {
9737 if (window.console) {
9738 console.warn(message);
9739 }
9740 }
9741 }
9742 }
9743 }, {
9744 key : "_ensureStripeHosted",
9745 value : function(deviceID) {
9746 if (!deviceID) {
9747 throw this._controller.report("user_error.self_hosted"), new Date("Stripe.js must be loaded from js.stripe.com. For more information https://stripe.com/docs/stripe-js/reference#including-stripejs");
9748 }
9749 }
9750 }, {
9751 key : "_mids",
9752 value : function() {
9753 return load._ec ? load._ec.ids() : null;
9754 }
9755 }]), load;
9756 }();
9757 /** @type {number} */
9758 sourceMap.version = 3;
9759 sourceMap.stripeJsId = shimMochaProcess();
9760 sourceMap._ec = function() {
9761 return "https://checkout.stripe.com/".match(new RegExp(document.location.protocol + "//" + document.location.host)) ? null : new Module;
9762 }();
9763 /**
9764 * @return {undefined}
9765 */
9766 var fetch = function() {
9767 var self = this;
9768 this.elements = __bind(function(params) {
9769 return new UrlBuilder(self._controller, mixin({}, self._locale ? {
9770 locale : self._locale
9771 } : {}, params, {
9772 betas : self._betas
9773 }));
9774 });
9775 this.createToken = call(function(event, callback) {
9776 var value = self._mids();
9777 if ("cvc_update" === event) {
9778 if (log(self._betas, task.cvc_update_beta_1)) {
9779 return action(self._controller, callback, value);
9780 }
9781 throw new Date("You cannot create a 'cvc_update' token without using the 'cvc_update_beta_1' beta flag.");
9782 }
9783 return setup(self._controller, value)(event, callback);
9784 });
9785 this.createSource = call(function(name, yes) {
9786 var action = ok(name);
9787 var options = createElement(action ? yes : name);
9788 var userOptions = options || {
9789 type : null,
9790 data : {}
9791 };
9792 /** @type {null} */
9793 var handleType = userOptions.type;
9794 var data = userOptions.data;
9795 if (action) {
9796 var frameId = action._frame.id;
9797 var name = action._componentName;
9798 return !options && indexOf(name) ? Q.reject(new Date("Please provide Source creation parameters to createSource.")) : self._controller.action.createSourceWithElement({
9799 frameId : frameId,
9800 elementName : name,
9801 type : handleType,
9802 sourceData : data,
9803 mids : self._mids()
9804 }).then(fail);
9805 }
9806 return options ? handleType ? self._controller.action.createSourceWithData({
9807 elementName : null,
9808 type : handleType,
9809 sourceData : data,
9810 mids : self._mids()
9811 }).then(fail) : Q.reject(new Date("Please provide a source type to createSource.")) : Q.reject(new Date("Please provide either an Element or Source creation parameters to createSource."));
9812 });
9813 this.retrieveSource = __bind(function(BumpMapMaterial) {
9814 var ret = cb(args, {
9815 source : BumpMapMaterial
9816 }, "retrieveSource");
9817 var fid = ret.value;
9818 return ret.warnings.forEach(function(type) {
9819 return self._controller.warn(type);
9820 }), self._controller.action.retrieveSource(fid).then(fail);
9821 });
9822 this.paymentRequest = call(function(options, defaultValue) {
9823 convertValues(self._keyMode);
9824 var val = self._isCheckout && defaultValue ? defaultValue : null;
9825 return $resource(self._controller, {
9826 apiKey : self._apiKey,
9827 accountId : self._stripeAccount
9828 }, self._mids(), options, self._betas, val);
9829 });
9830 };
9831 var json = sourceMap;
9832 /** @type {function(number): ?} */
9833 var _checkString = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(exprCode) {
9834 return typeof exprCode;
9835 } : function(obj) {
9836 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
9837 };
9838 /** @type {function(!Object, ...(Object|null)): !Object} */
9839 var F2Data = Object.assign || function(links) {
9840 /** @type {number} */
9841 var i = 1;
9842 for (; i < arguments.length; i++) {
9843 var match = arguments[i];
9844 var key;
9845 for (key in match) {
9846 if (Object.prototype.hasOwnProperty.call(match, key)) {
9847 links[key] = match[key];
9848 }
9849 }
9850 }
9851 return links;
9852 };
9853 var tabId = function() {
9854 if (document.currentScript) {
9855 var e = parse(document.currentScript.src);
9856 return !e || generate(e.origin);
9857 }
9858 return true;
9859 }();
9860 /**
9861 * @param {string} key
9862 * @param {number} value
9863 * @return {?}
9864 */
9865 var value = function(key, value) {
9866 return new json(F2Data({
9867 apiKey : key
9868 }, value && "object" === (void 0 === value ? "undefined" : _checkString(value)) ? value : {}), tabId);
9869 };
9870 value.version = json.version;
9871 if (window.Stripe && 2 === window.Stripe.version && !window.Stripe.StripeV3) {
9872 /** @type {function(string, number): ?} */
9873 window.Stripe.StripeV3 = value;
9874 } else {
9875 if (window.Stripe) {
9876 if (window.console) {
9877 console.warn("It looks like Stripe.js was loaded more than one time. Please only load it once per page.");
9878 }
9879 } else {
9880 /** @type {function(string, number): ?} */
9881 window.Stripe = value;
9882 }
9883 }
9884 /** @type {function(string, number): ?} */
9885 BeautifulProperties.default = value;
9886}, function(module, canCreateDiscussions, require) {
9887 /**
9888 * @param {string} value
9889 * @return {?}
9890 */
9891 function valuePromise(value) {
9892 var p = new Promise(Promise._61);
9893 return p._81 = 1, p._65 = value, p;
9894 }
9895 var Promise = require(3);
9896 module.exports = Promise;
9897 var FALSE = valuePromise(true);
9898 var NULL = valuePromise(false);
9899 var UNDEFINED = valuePromise(null);
9900 var ZERO = valuePromise(void 0);
9901 var TRUE = valuePromise(0);
9902 var EMPTYSTRING = valuePromise("");
9903 /**
9904 * @param {?} value
9905 * @return {?}
9906 */
9907 Promise.resolve = function(value) {
9908 if (value instanceof Promise) {
9909 return value;
9910 }
9911 if (null === value) {
9912 return UNDEFINED;
9913 }
9914 if (void 0 === value) {
9915 return ZERO;
9916 }
9917 if (true === value) {
9918 return FALSE;
9919 }
9920 if (false === value) {
9921 return NULL;
9922 }
9923 if (0 === value) {
9924 return TRUE;
9925 }
9926 if ("" === value) {
9927 return EMPTYSTRING;
9928 }
9929 if ("object" == typeof value || "function" == typeof value) {
9930 try {
9931 var then = value.then;
9932 if ("function" == typeof then) {
9933 return new Promise(then.bind(value));
9934 }
9935 } catch (formatedList) {
9936 return new Promise(function(canCreateDiscussions, resolve) {
9937 resolve(formatedList);
9938 });
9939 }
9940 }
9941 return valuePromise(value);
9942 };
9943 /**
9944 * @param {!Array} obj
9945 * @return {?}
9946 */
9947 Promise.all = function(obj) {
9948 /** @type {!Array<?>} */
9949 var attr = Array.prototype.slice.call(obj);
9950 return new Promise(function(fn, reject) {
9951 /**
9952 * @param {number} a
9953 * @param {!Object} val
9954 * @return {?}
9955 */
9956 function resolve(a, val) {
9957 if (val && ("object" == typeof val || "function" == typeof val)) {
9958 if (val instanceof Promise && val.then === Promise.prototype.then) {
9959 for (; 3 === val._81;) {
9960 val = val._65;
9961 }
9962 return 1 === val._81 ? resolve(a, val._65) : (2 === val._81 && reject(val._65), void val.then(function(y) {
9963 resolve(a, y);
9964 }, reject));
9965 }
9966 var then = val.then;
9967 if ("function" == typeof then) {
9968 return void(new Promise(then.bind(val))).then(function(y) {
9969 resolve(a, y);
9970 }, reject);
9971 }
9972 }
9973 /** @type {!Object} */
9974 attr[a] = val;
9975 if (0 == --space) {
9976 fn(attr);
9977 }
9978 }
9979 if (0 === attr.length) {
9980 return fn([]);
9981 }
9982 /** @type {number} */
9983 var space = attr.length;
9984 /** @type {number} */
9985 var i = 0;
9986 for (; i < attr.length; i++) {
9987 resolve(i, attr[i]);
9988 }
9989 });
9990 };
9991 /**
9992 * @param {?} reason
9993 * @return {?}
9994 */
9995 Promise.reject = function(reason) {
9996 return new Promise(function(canCreateDiscussions, reject$2) {
9997 reject$2(reason);
9998 });
9999 };
10000 /**
10001 * @param {!Array} answerPs
10002 * @return {?}
10003 */
10004 Promise.race = function(answerPs) {
10005 return new Promise(function(t, throwException) {
10006 answerPs.forEach(function(e) {
10007 Promise.resolve(e).then(t, throwException);
10008 });
10009 });
10010 };
10011 /**
10012 * @param {!Function} rejected
10013 * @return {?}
10014 */
10015 Promise.prototype.catch = function(rejected) {
10016 return this.then(null, rejected);
10017 };
10018}, function(module, canCreateDiscussions, require) {
10019 /**
10020 * @return {undefined}
10021 */
10022 function noop() {
10023 }
10024 /**
10025 * @param {!Object} promise
10026 * @return {?}
10027 */
10028 function getThen(promise) {
10029 try {
10030 return promise.then;
10031 } catch (e) {
10032 return ex = e, undefined;
10033 }
10034 }
10035 /**
10036 * @param {?} fn
10037 * @param {?} a
10038 * @return {?}
10039 */
10040 function tryCallOne(fn, a) {
10041 try {
10042 return fn(a);
10043 } catch (e) {
10044 return ex = e, undefined;
10045 }
10046 }
10047 /**
10048 * @param {!Function} callback
10049 * @param {!Function} oRequest
10050 * @param {!Function} sResponseHandler
10051 * @return {?}
10052 */
10053 function load(callback, oRequest, sResponseHandler) {
10054 try {
10055 callback(oRequest, sResponseHandler);
10056 } catch (e) {
10057 return ex = e, undefined;
10058 }
10059 }
10060 /**
10061 * @param {!Function} callback
10062 * @return {undefined}
10063 */
10064 function Promise(callback) {
10065 if ("object" != typeof this) {
10066 throw new TypeError("Promises must be constructed via new");
10067 }
10068 if ("function" != typeof callback) {
10069 throw new TypeError("not a function");
10070 }
10071 /** @type {number} */
10072 this._45 = 0;
10073 /** @type {number} */
10074 this._81 = 0;
10075 /** @type {null} */
10076 this._65 = null;
10077 /** @type {null} */
10078 this._54 = null;
10079 if (callback !== noop) {
10080 fn(callback, this);
10081 }
10082 }
10083 /**
10084 * @param {string} self
10085 * @param {!Function} onFulfilled
10086 * @param {!Function} onRejected
10087 * @return {?}
10088 */
10089 function safeThen(self, onFulfilled, onRejected) {
10090 return new self.constructor(function(handler, wrapped) {
10091 var promise = new Promise(noop);
10092 promise.then(handler, wrapped);
10093 handle(self, new Handler(onFulfilled, onRejected, promise));
10094 });
10095 }
10096 /**
10097 * @param {string} self
10098 * @param {string} deferred
10099 * @return {?}
10100 */
10101 function handle(self, deferred) {
10102 for (; 3 === self._81;) {
10103 self = self._65;
10104 }
10105 if (Promise._10 && Promise._10(self), 0 === self._81) {
10106 return 0 === self._45 ? (self._45 = 1, void(self._54 = deferred)) : 1 === self._45 ? (self._45 = 2, void(self._54 = [self._54, deferred])) : void self._54.push(deferred);
10107 }
10108 handleResolved(self, deferred);
10109 }
10110 /**
10111 * @param {string} self
10112 * @param {?} deferred
10113 * @return {undefined}
10114 */
10115 function handleResolved(self, deferred) {
10116 asap(function() {
10117 var cb = 1 === self._81 ? deferred.onFulfilled : deferred.onRejected;
10118 if (null === cb) {
10119 return void(1 === self._81 ? resolve(deferred.promise, self._65) : reject(deferred.promise, self._65));
10120 }
10121 var ret = tryCallOne(cb, self._65);
10122 if (ret === undefined) {
10123 reject(deferred.promise, ex);
10124 } else {
10125 resolve(deferred.promise, ret);
10126 }
10127 });
10128 }
10129 /**
10130 * @param {!Object} self
10131 * @param {string} value
10132 * @return {?}
10133 */
10134 function resolve(self, value) {
10135 if (value === self) {
10136 return reject(self, new TypeError("A promise cannot be resolved with itself."));
10137 }
10138 if (value && ("object" == typeof value || "function" == typeof value)) {
10139 var then = getThen(value);
10140 if (then === undefined) {
10141 return reject(self, ex);
10142 }
10143 if (then === self.then && value instanceof Promise) {
10144 return self._81 = 3, self._65 = value, void finale(self);
10145 }
10146 if ("function" == typeof then) {
10147 return void fn(then.bind(value), self);
10148 }
10149 }
10150 /** @type {number} */
10151 self._81 = 1;
10152 /** @type {string} */
10153 self._65 = value;
10154 finale(self);
10155 }
10156 /**
10157 * @param {!Object} self
10158 * @param {?} newValue
10159 * @return {undefined}
10160 */
10161 function reject(self, newValue) {
10162 /** @type {number} */
10163 self._81 = 2;
10164 self._65 = newValue;
10165 if (Promise._97) {
10166 Promise._97(self, newValue);
10167 }
10168 finale(self);
10169 }
10170 /**
10171 * @param {!Function} self
10172 * @return {undefined}
10173 */
10174 function finale(self) {
10175 if (1 === self._45 && (handle(self, self._54), self._54 = null), 2 === self._45) {
10176 /** @type {number} */
10177 var i = 0;
10178 for (; i < self._54.length; i++) {
10179 handle(self, self._54[i]);
10180 }
10181 /** @type {null} */
10182 self._54 = null;
10183 }
10184 }
10185 /**
10186 * @param {!Function} a
10187 * @param {!Function} b
10188 * @param {!Function} p
10189 * @return {undefined}
10190 */
10191 function Handler(a, b, p) {
10192 /** @type {(!Function|null)} */
10193 this.onFulfilled = "function" == typeof a ? a : null;
10194 /** @type {(!Function|null)} */
10195 this.onRejected = "function" == typeof b ? b : null;
10196 /** @type {!Function} */
10197 this.promise = p;
10198 }
10199 /**
10200 * @param {!Function} args
10201 * @param {!Object} self
10202 * @return {undefined}
10203 */
10204 function fn(args, self) {
10205 /** @type {boolean} */
10206 var isSrcArr = false;
10207 var result = load(args, function(link) {
10208 if (!isSrcArr) {
10209 /** @type {boolean} */
10210 isSrcArr = true;
10211 resolve(self, link);
10212 }
10213 }, function(val) {
10214 if (!isSrcArr) {
10215 /** @type {boolean} */
10216 isSrcArr = true;
10217 reject(self, val);
10218 }
10219 });
10220 if (!(isSrcArr || result !== undefined)) {
10221 /** @type {boolean} */
10222 isSrcArr = true;
10223 reject(self, ex);
10224 }
10225 }
10226 var asap = require(4);
10227 /** @type {null} */
10228 var ex = null;
10229 var undefined = {};
10230 /** @type {function(!Function): undefined} */
10231 module.exports = Promise;
10232 /** @type {null} */
10233 Promise._10 = null;
10234 /** @type {null} */
10235 Promise._97 = null;
10236 /** @type {function(): undefined} */
10237 Promise._61 = noop;
10238 /**
10239 * @param {!Function} value
10240 * @param {!Function} onRejected
10241 * @return {?}
10242 */
10243 Promise.prototype.then = function(value, onRejected) {
10244 if (this.constructor !== Promise) {
10245 return safeThen(this, value, onRejected);
10246 }
10247 var prom = new Promise(noop);
10248 return handle(this, new Handler(value, onRejected, prom)), prom;
10249 };
10250}, function(module, gen34_options, moment) {
10251 (function(global) {
10252 /**
10253 * @param {?} _$param5
10254 * @return {undefined}
10255 */
10256 function rawAsap(_$param5) {
10257 if (!r.length) {
10258 requestFlush();
10259 /** @type {boolean} */
10260 s = true;
10261 }
10262 r[r.length] = _$param5;
10263 }
10264 /**
10265 * @return {undefined}
10266 */
10267 function err() {
10268 for (; c < r.length;) {
10269 var tag = c;
10270 if (c = c + 1, r[tag].call(), c > midcolumn) {
10271 /** @type {number} */
10272 var j = 0;
10273 /** @type {number} */
10274 var C = r.length - c;
10275 for (; j < C; j++) {
10276 r[j] = r[j + c];
10277 }
10278 r.length -= c;
10279 /** @type {number} */
10280 c = 0;
10281 }
10282 }
10283 /** @type {number} */
10284 r.length = 0;
10285 /** @type {number} */
10286 c = 0;
10287 /** @type {boolean} */
10288 s = false;
10289 }
10290 /**
10291 * @param {!Function} callback
10292 * @return {?}
10293 */
10294 function makeRequestCallFromTimer(callback) {
10295 return function() {
10296 /**
10297 * @return {undefined}
10298 */
10299 function handleTimer() {
10300 clearTimeout(timeoutHandle);
10301 clearInterval(intervalHandle);
10302 callback();
10303 }
10304 /** @type {number} */
10305 var timeoutHandle = setTimeout(handleTimer, 0);
10306 /** @type {number} */
10307 var intervalHandle = setInterval(handleTimer, 50);
10308 };
10309 }
10310 /** @type {function(?): undefined} */
10311 module.exports = rawAsap;
10312 var requestFlush;
10313 /** @type {!Array} */
10314 var r = [];
10315 /** @type {boolean} */
10316 var s = false;
10317 /** @type {number} */
10318 var c = 0;
10319 /** @type {number} */
10320 var midcolumn = 1024;
10321 var scope = void 0 !== global ? global : self;
10322 var RectObj = scope.MutationObserver || scope.WebKitMutationObserver;
10323 requestFlush = "function" == typeof RectObj ? function(obj) {
10324 /** @type {number} */
10325 var q = 1;
10326 var o = new RectObj(obj);
10327 /** @type {!Text} */
10328 var item = document.createTextNode("");
10329 return o.observe(item, {
10330 characterData : true
10331 }), function() {
10332 /** @type {number} */
10333 q = -q;
10334 /** @type {number} */
10335 item.data = q;
10336 };
10337 }(err) : makeRequestCallFromTimer(err);
10338 rawAsap.requestFlush = requestFlush;
10339 /** @type {function(!Function): ?} */
10340 rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;
10341 }).call(gen34_options, moment(5));
10342}, function(module, canCreateDiscussions) {
10343 var g;
10344 g = function() {
10345 return this;
10346 }();
10347 try {
10348 g = g || Function("return this")() || (0, eval)("this");
10349 } catch (e) {
10350 if ("object" == typeof window) {
10351 /** @type {!Window} */
10352 g = window;
10353 }
10354 }
10355 module.exports = g;
10356}, function(mixin, t, n) {
10357 var word;
10358 var m;
10359 !function() {
10360 var storeMixin = function() {
10361 /**
10362 * @return {undefined}
10363 */
10364 function Node() {
10365 }
10366 /**
10367 * @param {?} t
10368 * @param {!Array} o
10369 * @return {undefined}
10370 */
10371 function push(t, o) {
10372 var pos = o.length;
10373 /** @type {number} */
10374 var p = 0;
10375 for (; p < pos; ++p) {
10376 f(t, o[p]);
10377 }
10378 }
10379 /**
10380 * @param {?} t
10381 * @param {!Array} i
10382 * @return {undefined}
10383 */
10384 function m(t, i) {
10385 /** @type {boolean} */
10386 t[i] = true;
10387 }
10388 /**
10389 * @param {?} instance
10390 * @param {!Object} value
10391 * @return {undefined}
10392 */
10393 function r(instance, value) {
10394 var k;
10395 for (k in value) {
10396 if (_hasOwnProperty.call(value, k)) {
10397 /** @type {boolean} */
10398 instance[k] = !!value[k];
10399 }
10400 }
10401 }
10402 /**
10403 * @param {?} b
10404 * @param {!Object} a
10405 * @return {undefined}
10406 */
10407 function o(b, a) {
10408 var fields = a.split(separator);
10409 var f_l = fields.length;
10410 /** @type {number} */
10411 var i = 0;
10412 for (; i < f_l; ++i) {
10413 /** @type {boolean} */
10414 b[fields[i]] = true;
10415 }
10416 }
10417 /**
10418 * @param {?} a
10419 * @param {!Arguments} b
10420 * @return {undefined}
10421 */
10422 function f(a, b) {
10423 if (b) {
10424 /** @type {string} */
10425 var type = typeof b;
10426 if ("string" === type) {
10427 o(a, b);
10428 } else {
10429 if (Array.isArray(b)) {
10430 push(a, b);
10431 } else {
10432 if ("object" === type) {
10433 r(a, b);
10434 } else {
10435 if ("number" === type) {
10436 m(a, b);
10437 }
10438 }
10439 }
10440 }
10441 }
10442 }
10443 /**
10444 * @return {?}
10445 */
10446 function style() {
10447 /** @type {number} */
10448 var _len8 = arguments.length;
10449 /** @type {!Array} */
10450 var args = Array(_len8);
10451 /** @type {number} */
10452 var _key8 = 0;
10453 for (; _key8 < _len8; _key8++) {
10454 args[_key8] = arguments[_key8];
10455 }
10456 var n = new Node;
10457 push(n, args);
10458 /** @type {!Array} */
10459 var drilldownLevelLabels = [];
10460 var i;
10461 for (i in n) {
10462 if (n[i]) {
10463 drilldownLevelLabels.push(i);
10464 }
10465 }
10466 return drilldownLevelLabels.join(" ");
10467 }
10468 /** @type {!Object} */
10469 Node.prototype = Object.create(null);
10470 /** @type {function(this:Object, *): boolean} */
10471 var _hasOwnProperty = {}.hasOwnProperty;
10472 /** @type {!RegExp} */
10473 var separator = /\s+/;
10474 return style;
10475 }();
10476 if (void 0 !== mixin && mixin.exports) {
10477 mixin.exports = storeMixin;
10478 } else {
10479 /** @type {!Array} */
10480 word = [];
10481 if (void 0 !== (m = function() {
10482 return storeMixin;
10483 }.apply(t, word))) {
10484 mixin.exports = m;
10485 }
10486 }
10487 }();
10488}, function(canCreateDiscussions, isSlidingUp) {
10489}]);